Date: Sat, 31 Jan 2009 22:39:03 +0000 (UTC) From: Andrew Thompson <thompsa@FreeBSD.org> To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r187967 - user/thompsa/usb/sys/dev/usb2/ethernet Message-ID: <200901312239.n0VMd3wc035847@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: thompsa Date: Sat Jan 31 22:39:03 2009 New Revision: 187967 URL: http://svn.freebsd.org/changeset/base/187967 Log: Add sysctl information for the parent device. Suggested by: sam Modified: user/thompsa/usb/sys/dev/usb2/ethernet/usb2_ethernet.c user/thompsa/usb/sys/dev/usb2/ethernet/usb2_ethernet.h Modified: user/thompsa/usb/sys/dev/usb2/ethernet/usb2_ethernet.c ============================================================================== --- user/thompsa/usb/sys/dev/usb2/ethernet/usb2_ethernet.c Sat Jan 31 21:40:27 2009 (r187966) +++ user/thompsa/usb/sys/dev/usb2/ethernet/usb2_ethernet.c Sat Jan 31 22:39:03 2009 (r187967) @@ -29,6 +29,8 @@ #include <dev/usb2/core/usb2_busdma.h> #include <dev/usb2/ethernet/usb2_ethernet.h> +SYSCTL_NODE(_net, OID_AUTO, ue, CTLFLAG_RD, 0, "USB Ethernet parameters"); + #define UE_LOCK(_ue) mtx_lock((_ue)->ue_mtx) #define UE_UNLOCK(_ue) mtx_unlock((_ue)->ue_mtx) #define UE_LOCK_ASSERT(_ue, t) mtx_assert((_ue)->ue_mtx, t) @@ -76,10 +78,21 @@ usb2_ether_getsc(struct usb2_ether *ue) return (ue->ue_sc); } +static int +ue_sysctl_parent(SYSCTL_HANDLER_ARGS) +{ + struct usb2_ether *ue = arg1; + const char *name; + + name = device_get_nameunit(ue->ue_dev); + return SYSCTL_OUT(req, name, strlen(name)); +} + int usb2_ether_ifattach(struct usb2_ether *ue, const u_int8_t *eaddr) { struct ifnet *ifp; + char num[14]; /* sufficient for 32 bits */ int error; ue->ue_unit = alloc_unr(ueunit); @@ -88,6 +101,7 @@ usb2_ether_ifattach(struct usb2_ether *u USB_TASK_INIT(&ue->ue_media_task, ue_ifmedia_task, ue, ue->ue_mtx); USB_TASK_INIT(&ue->ue_tick_task, ue_tick_task, ue, ue->ue_mtx); usb2_callout_init_mtx(&ue->ue_watchdog, ue->ue_mtx, 0); + sysctl_ctx_init(&ue->ue_sysctl_ctx); error = usb2_proc_create(&ue->ue_tq, USB_PRI_MED, device_get_nameunit(ue->ue_dev)); @@ -126,6 +140,15 @@ usb2_ether_ifattach(struct usb2_ether *u if_printf(ifp, "<USB Ethernet> on %s\n", device_get_nameunit(ue->ue_dev)); ether_ifattach(ifp, eaddr); + + snprintf(num, sizeof(num), "%u", ue->ue_unit); + ue->ue_sysctl_oid = SYSCTL_ADD_NODE(&ue->ue_sysctl_ctx, + &SYSCTL_NODE_CHILDREN(_net, ue), + OID_AUTO, num, CTLFLAG_RD, NULL, ""); + SYSCTL_ADD_PROC(&ue->ue_sysctl_ctx, + SYSCTL_CHILDREN(ue->ue_sysctl_oid), OID_AUTO, + "%parent", CTLFLAG_RD, ue, 0, + ue_sysctl_parent, "A", "parent device"); return (0); error: @@ -155,6 +178,7 @@ usb2_ether_ifdetach(struct usb2_ether *u device_delete_child(ue->ue_dev, ue->ue_miibus); ether_ifdetach(ifp); if_free(ifp); + sysctl_ctx_free(&ue->ue_sysctl_ctx); free_unr(ueunit, ue->ue_unit); } Modified: user/thompsa/usb/sys/dev/usb2/ethernet/usb2_ethernet.h ============================================================================== --- user/thompsa/usb/sys/dev/usb2/ethernet/usb2_ethernet.h Sat Jan 31 21:40:27 2009 (r187966) +++ user/thompsa/usb/sys/dev/usb2/ethernet/usb2_ethernet.h Sat Jan 31 22:39:03 2009 (r187967) @@ -58,6 +58,8 @@ struct usb2_ether { void *ue_sc; int ue_unit; + struct sysctl_ctx_list ue_sysctl_ctx; + struct sysctl_oid *ue_sysctl_oid; struct ifqueue ue_rxq;
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200901312239.n0VMd3wc035847>