platform: detect non-mac80211 WiFi devices as WiFi (rh #1015598)
Before NMPlatform landed, the old NMManager code looked at either DEVTYPE=wlan or asked the internal wifi utilities whether the device was WiFi or not. This got lost when moving to NMPlatform. It turns out that only mac80211-based drivers set the DEVTYPE=wlan flag in sysfs, while older WEXT, out-of-tree, and staging drivers often do not (though they should). To avoid breaking recognition of these crappy drivers that used to work, re-add the wifi utils checks.
This commit is contained in:
@@ -45,6 +45,7 @@
|
|||||||
|
|
||||||
#include "nm-linux-platform.h"
|
#include "nm-linux-platform.h"
|
||||||
#include "nm-logging.h"
|
#include "nm-logging.h"
|
||||||
|
#include "wifi/wifi-utils.h"
|
||||||
|
|
||||||
/* This is only included for the translation of VLAN flags */
|
/* This is only included for the translation of VLAN flags */
|
||||||
#include "nm-setting-vlan.h"
|
#include "nm-setting-vlan.h"
|
||||||
@@ -477,7 +478,7 @@ link_type_from_udev (NMPlatform *platform, int ifindex, int arptype, const char
|
|||||||
{
|
{
|
||||||
NMLinuxPlatformPrivate *priv = NM_LINUX_PLATFORM_GET_PRIVATE (platform);
|
NMLinuxPlatformPrivate *priv = NM_LINUX_PLATFORM_GET_PRIVATE (platform);
|
||||||
GUdevDevice *udev_device;
|
GUdevDevice *udev_device;
|
||||||
const char *prop;
|
const char *prop, *name, *sysfs_path;
|
||||||
|
|
||||||
udev_device = g_hash_table_lookup (priv->udev_devices, GINT_TO_POINTER (ifindex));
|
udev_device = g_hash_table_lookup (priv->udev_devices, GINT_TO_POINTER (ifindex));
|
||||||
if (!udev_device)
|
if (!udev_device)
|
||||||
@@ -488,7 +489,9 @@ link_type_from_udev (NMPlatform *platform, int ifindex, int arptype, const char
|
|||||||
return_type (NM_LINK_TYPE_OLPC_MESH, "olpc-mesh");
|
return_type (NM_LINK_TYPE_OLPC_MESH, "olpc-mesh");
|
||||||
|
|
||||||
prop = g_udev_device_get_property (udev_device, "DEVTYPE");
|
prop = g_udev_device_get_property (udev_device, "DEVTYPE");
|
||||||
if (g_strcmp0 (prop, "wlan") == 0)
|
name = g_udev_device_get_name (udev_device);
|
||||||
|
sysfs_path = g_udev_device_get_sysfs_path (udev_device);
|
||||||
|
if (g_strcmp0 (prop, "wlan") == 0 || wifi_utils_is_wifi (name, sysfs_path))
|
||||||
return_type (NM_LINK_TYPE_WIFI, "wifi");
|
return_type (NM_LINK_TYPE_WIFI, "wifi");
|
||||||
else if (g_strcmp0 (prop, "wwan") == 0)
|
else if (g_strcmp0 (prop, "wwan") == 0)
|
||||||
return_type (NM_LINK_TYPE_WWAN_ETHERNET, "wwan");
|
return_type (NM_LINK_TYPE_WWAN_ETHERNET, "wwan");
|
||||||
|
Reference in New Issue
Block a user