wifi: don't query nl80211 for non-WiFi devices (bgo #740131)
The upstream kernel added module aliases for nl80211 in commit fb4e156886ce6e8309e912d8b370d192330d19d3, so querying nl80211 now auto-loads the module. Previously NM was doing this to determine whether an ethernet-like device was a Wi-Fi device that supported nl80211, but this leads to the nl80211 loading on platforms that will never have or use Wi-Fi. Since every nl80211-capable device will already have DEVTYPE=wlan set (from /sys/class/net/wlan0/uevent), we can use that as an indicator that the ethernet-like device is WiFi instead of asking nl80211. https://bugzilla.gnome.org/show_bug.cgi?id=740131
This commit is contained in:
@@ -162,13 +162,20 @@ wifi_utils_deinit (WifiData *data)
|
||||
}
|
||||
|
||||
gboolean
|
||||
wifi_utils_is_wifi (const char *iface, const char *sysfs_path)
|
||||
wifi_utils_is_wifi (const char *iface, const char *sysfs_path, const char *devtype)
|
||||
{
|
||||
char phy80211_path[255];
|
||||
struct stat s;
|
||||
|
||||
g_return_val_if_fail (iface != NULL, FALSE);
|
||||
|
||||
if (g_strcmp0 (devtype, "wlan") == 0) {
|
||||
/* All Wi-Fi drivers should set DEVTYPE=wlan. Since the kernel's
|
||||
* cfg80211/nl80211 stack does, this check should match any nl80211
|
||||
* capable driver (including mac82011-based ones). */
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
if (sysfs_path) {
|
||||
/* Check for nl80211 sysfs paths */
|
||||
g_snprintf (phy80211_path, sizeof (phy80211_path), "%s/phy80211", sysfs_path);
|
||||
@@ -176,9 +183,6 @@ wifi_utils_is_wifi (const char *iface, const char *sysfs_path)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
if (wifi_nl80211_is_wifi (iface))
|
||||
return TRUE;
|
||||
|
||||
#if HAVE_WEXT
|
||||
if (wifi_wext_is_wifi (iface))
|
||||
return TRUE;
|
||||
|
Reference in New Issue
Block a user