USB support in NDIS -- IFF_NEEDSGIANT?

Robert Watson rwatson at FreeBSD.org
Mon Feb 16 03:33:20 PST 2009


Dear all:

As you know, I've been gradually working to eliminate all non-MPSAFE network 
device driver infrastructure for 8.0, having removed non-MPSAFE network 
protocol infrastructure in 7.0.  In reviewing remaining drivers using 
IFF_NEEDSGIANT, I spotted this in the NDIS code:

   718         if_initname(ifp, device_get_name(dev), device_get_unit(dev));
   719         ifp->if_mtu = ETHERMTU;
   720         ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST;
   721         if (sc->ndis_iftype == PNPBus)
   722                 ifp->if_flags |= IFF_NEEDSGIANT;
   723         ifp->if_ioctl = ndis_ioctl;
   724         ifp->if_start = ndis_start;
   725         ifp->if_init = ndis_init;

Having taken a glance, it looks like this was added specifically to support 
USB devices attached via NDIS.  With the new USB code, are NDIS drivers still 
supported?  And in the new world order, is this IFF_NEEDSGIANT still required? 
Can I simply remove it once the old USB code is on the way out the door?

(Note that the plan is to remove all device drivers that still require 
IFF_NEEDSGIANT some time before 8.0, probably starting with disabling them 
from the build in about 2-3 weeks).

Thanks,

Robert N M Watson
Computer Laboratory
University of Cambridge


More information about the freebsd-usb mailing list