Huh. Too bad you didn't point me at the bug- it would have saved me a
morning's debugging.


On Mon, 1 Oct 2001, Jim McGrath wrote:

> I ran into this same problem with the wx driver and submitted a pr.
> http://www.freebsd.org/cgi/query-pr.cgi?pr=29249
> 
> Jim
> 
> 
> -----Original Message-----
> From: Matthew Jacob [mailto:[EMAIL PROTECTED]]
> Sent: Monday, October 01, 2001 4:05 PM
> To: [EMAIL PROTECTED]
> Subject: review of minor clarifying comments
> 
> 
> 
> 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 [EMAIL PROTECTED]
> with "unsubscribe freebsd-net" in the body of the message
> 


To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-net" in the body of the message

Reply via email to