Skip site navigation (1)Skip section navigation (2)
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>