Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 1 Oct 2001 13:04:55 -0700 (PDT)
From:      Matthew Jacob <mjacob@feral.com>
To:        freebsd-net@freebsd.org
Subject:   review of minor clarifying comments
Message-ID:  <Pine.BSF.4.21.0110011302130.99893-100000@beppo>

next in thread | raw e-mail | index | archive | help

This bit me in the butt yet again about FreeBSD and some assumptions about how
a NIC's softc is laid out- I don't really it stated elsewhere, so a couple
source file comments seem in order.. Frankly, this kind of assumption is
dangerous and unnecessary with methods, but at the very least it ought to be
commented, no?

-matt


Index: net/if_var.h
===================================================================
RCS file: /home/ncvs/src/sys/net/if_var.h,v
retrieving revision 1.37
diff -u -r1.37 if_var.h
--- net/if_var.h	2001/09/18 17:41:42	1.37
+++ net/if_var.h	2001/10/01 20:00:08
@@ -105,6 +105,11 @@
  *
  * (Would like to call this struct ``if'', but C isn't PL/1.)
  */
+
+/*
+ * NB: For FreeBSD, it is assumed that each NIC driver's softc starts with
+ * one of these structures, typically held within an arpcom structure.
+ */
 struct ifnet {
 	void	*if_softc;		/* pointer to driver state */
 	char	*if_name;		/* name, e.g. ``en'' or ``lo'' */
Index: dev/mii/mii.c
===================================================================
RCS file: /home/ncvs/src/sys/dev/mii/mii.c,v
retrieving revision 1.9
diff -u -r1.9 mii.c
--- dev/mii/mii.c	2001/09/29 18:40:06	1.9
+++ dev/mii/mii.c	2001/10/01 20:00:09
@@ -167,6 +167,9 @@
 	struct mii_data		*mii;
 
 	mii = device_get_softc(dev);
+	/*
+	 * Note that each NIC's softc must start with an ifnet structure.
+	 */
 	mii->mii_ifp = device_get_softc(device_get_parent(dev));
 	v = device_get_ivars(dev);
 	ifmedia_upd = v[0];
@@ -233,6 +236,9 @@
 	MIIBUS_LINKCHG(parent);
 
 	mii = device_get_softc(dev);
+	/*
+	 * Note that each NIC's softc must start with an ifnet structure.
+	 */
 	ifp = device_get_softc(parent);
 	
 	if (mii->mii_media_status & IFM_AVALID) {


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-net" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.4.21.0110011302130.99893-100000>