On Fri, Nov 14, 2014 at 03:57:40PM +0900, Marcel Holtmann wrote:
> Hi Luca,
> 
> >>>>> I've updated wireless code on RHEL and get complain that now
> >>>>> cfg80211 and rfkill modules are loaded on machines that do not have
> >>>>> wireless hardware. Modules are auto-loaded because NetworkManager send
> >>>>> nl80211 messages to check if there are wireless devices in the system.
> >>>>> 
> >>>>> Hence my question, can we revert commit fb4e156886ce
> >>>>> "nl80211: Add generic netlink module alias for cfg80211/nl80211" ?
> >>>> 
> >>>> Realistically, we can't revert it, but only remove the
> >>>> MODULE_ALIAS_GENL_FAMILY() line.
> >>>> 
> >>>>> Auto loading nl80211 does not seems to be necessary, if there are
> >>>>> wireless devices nl80211 will be loaded anyway.
> >>>> 
> >>>> Maybe other applications would like to see an empty list of devices? But
> >>>> OTOH, if they're robust at all, they have to cope with kernels not even
> >>>> compiled with nl80211, so I guess for me I don't really see a big
> >>>> difference in whether the module alias exists or not.
> >>> 
> >>> auto-loading cfg80211 module when userspace requests nl80211 netlink 
> >>> family is exactly the right thing to do. Systems compiled without nl80211 
> >>> support and systems with no wireless device attached are two different 
> >>> things.
> >>> 
> >>> Someone can fix NetworkManager to not send nl80211 messages or just plain 
> >>> accept that cfg80211 will be loaded.
> >> 
> >> NM uses nl80211 initially to determine whether *any* ethernet-type
> >> interface (a) is actually WiFi, and (b) should be driven by nl80211 or
> >> WEXT.  Because of the variety of drivers (both in-kernel and
> >> out-of-kernel) and the variety of kernel versions (NM supports back to
> >> early 3.x series) we cannot rely on specific behavior.
> >> 
> >> So given an ethernet-type interface, how do we determine that it is
> >> wifi?
> >> 
> >> DEVTYPE=wlan - not always reliable due to driver and kernel versions
> >> 
> >> "phy80211" in sysfs: same reason; also doesn't capture WEXT or
> >> out-of-tree drivers
> >> 
> >> nl80211 calls: this is the only 100% reliable mechanism to detect
> >> whether an ethernet-type interface is actually WiFi and nl80211-capable.
> >> 
> >> And unfortunately calling nl80211 loads the module...
> > 
> > So, basically the conclusion is: there's no way around it.  If someone
> > in userspace uses nl80211 it must be loaded, regardless of whether
> > nl80211 is automatically loaded or if depmod bring it in.
> 
> yes, that is how it should be. And actually that is how every other subsystem 
> does. Including modules that get loaded because we have a socket() system 
> call for an address family.

On other subsystems auto loading make sense. For example on netfiler,
we really want to load netfiler modules when user-space want to
configure it and started talking to it by socket. But here situation
is different. If there is no hardware we can not configure it.

Stanislaw
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to