adding if_dev member to struct ifnet

Brooks Davis brooks at one-eyed-alien.net
Tue Sep 30 11:29:08 PDT 2003


On Tue, Sep 30, 2003 at 02:23:02PM -0400, John Baldwin wrote:
> 
> On 30-Sep-2003 Brooks Davis wrote:
> > On Tue, Sep 30, 2003 at 01:14:39PM -0400, John Baldwin wrote:
> >> 
> >> Fair enough.  I think that Brooks planned to use a NULL device_t for
> >> interfaces w/o a backing new-bus device.  However, that means you
> >> still need if_name for all the non-newbus devices, so this seems
> >> somewhat pointless if if_name is the only reason.  Another counterpoint
> >> is that the new-bus namespace and the netif namespace aren't the same
> >> anyway and that seemed to be the point of this linkage.  The
> >> dev_t <> softc <> device_t linkages aren't about unifying namespaces.
> > 
> > The idea here is that virtually all uses of if_name/if_unit that aren't
> > just there for the users benefit are actually references to the
> > underlying driver not name of the interface.  Currently they are the
> > same (i.e. ifname is nearly always device_get_name(dev) or a bug prone
> > manual version there of), but I would like to separate them so we can
> > rename interfaces.
> > 
> > Since device_t is as close to a repository of driver/instance
> > information as we've got, I though using it would be a reasonable way
> > to go.  As a side benefit, most drivers have a copy of it in their softc
> > already so you'd have a standard place to put it.
> > 
> > I suppose a usable alternative would be to revive if_name and if_unit
> > as something like if_drvname and if_drvunit.
> 
> Are these uses all within the driver itself?  If so, then just giving
> ifnet a void * that is private to the driver would allow ifnet devices
> hung off of new-bus devices to cache their device_t w/o requiring the
> rest of the kernel to know what that private variable is.

All are within other code.  One example is in dev/mii/brgphy.c which a
phy feature is not enabled when it is attached to some MACs.  A messier
example is in the new ATM code where interfaces are looked up by name.
In all cases, usage is limited to a narrow set of code, but it's not
generally in the driver itself (in those cases, the softc is often
already used, say to hold the unit).

-- Brooks

-- 
Any statement of the form "X is the one, true Y" is FALSE.
PGP fingerprint 655D 519C 26A7 82E7 2529  9BF0 5D8E 8BE9 F238 1AD4
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-net/attachments/20030930/6f99e917/attachment.bin


More information about the freebsd-net mailing list