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. > The only way to address Stanislaw's initial concern is, as already > proposed before, to change userspace. Or you just blacklist the module in /etc/modules.conf if you really do not want it loaded. But all of this is a userspace thing and has nothing to do with the kernel exposing the _correct_ module alias. > Or, maybe nl80211/cfg80211 could be unloaded automatically as well? If > no driver uses it from below and nobody from userspace uses it for a > period of time, off it goes... Actually unloading kernel modules is still considered a race condition. So we should not go that direction. Once loaded, they should stay loaded until reboot. Regards Marcel -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html