summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Zaborowski <andrew.zaborowski@intel.com>2018-10-04 10:05:10 +0200
committerThomas Haller <thaller@redhat.com>2018-10-11 16:07:15 +0200
commit178af026781efed007d60102f8257b56d0f6213a (patch)
tree3786d3433b79af551d23648d5b8ad9a292ae0feb
parent7a6d5ab5a2099783e8ef5eb5e87c9dc3d42c8c71 (diff)
downloadNetworkManager-178af026781efed007d60102f8257b56d0f6213a.tar.gz
wifi: skip nm_platform_wifi_get_capabilities/get_mode for IWD backend
Only call nm_platform_wifi_get_capabilities and nm_platform_wifi_get_mode with the wpa_supplicant backend. They're used to initialize the wireless-capabilities property and to skip creating NMDevices for interfaces in unknown wifi mode which IWD handles already.
-rw-r--r--src/devices/wifi/nm-device-iwd.c2
-rw-r--r--src/devices/wifi/nm-device-iwd.h2
-rw-r--r--src/devices/wifi/nm-wifi-factory.c46
3 files changed, 27 insertions, 23 deletions
diff --git a/src/devices/wifi/nm-device-iwd.c b/src/devices/wifi/nm-device-iwd.c
index 1a29287e17..56ee5e819d 100644
--- a/src/devices/wifi/nm-device-iwd.c
+++ b/src/devices/wifi/nm-device-iwd.c
@@ -2070,7 +2070,7 @@ nm_device_iwd_init (NMDeviceIwd *self)
}
NMDevice *
-nm_device_iwd_new (const char *iface, NMDeviceWifiCapabilities capabilities)
+nm_device_iwd_new (const char *iface)
{
return g_object_new (NM_TYPE_DEVICE_IWD,
NM_DEVICE_IFACE, iface,
diff --git a/src/devices/wifi/nm-device-iwd.h b/src/devices/wifi/nm-device-iwd.h
index 825123b1d8..4a2bd31e1f 100644
--- a/src/devices/wifi/nm-device-iwd.h
+++ b/src/devices/wifi/nm-device-iwd.h
@@ -47,7 +47,7 @@ typedef struct _NMDeviceIwdClass NMDeviceIwdClass;
GType nm_device_iwd_get_type (void);
-NMDevice *nm_device_iwd_new (const char *iface, NMDeviceWifiCapabilities capabilities);
+NMDevice *nm_device_iwd_new (const char *iface);
void nm_device_iwd_set_dbus_object (NMDeviceIwd *device, GDBusObject *object);
diff --git a/src/devices/wifi/nm-wifi-factory.c b/src/devices/wifi/nm-wifi-factory.c
index 6b8e5fb85a..4e9d1ecb20 100644
--- a/src/devices/wifi/nm-wifi-factory.c
+++ b/src/devices/wifi/nm-wifi-factory.c
@@ -75,8 +75,6 @@ create_device (NMDeviceFactory *factory,
NMConnection *connection,
gboolean *out_ignore)
{
- NMDeviceWifiCapabilities capabilities;
- NM80211Mode mode;
gs_free char *backend = NULL;
g_return_val_if_fail (iface != NULL, NULL);
@@ -84,23 +82,6 @@ create_device (NMDeviceFactory *factory,
g_return_val_if_fail (g_strcmp0 (iface, plink->name) == 0, NULL);
g_return_val_if_fail (NM_IN_SET (plink->type, NM_LINK_TYPE_WIFI, NM_LINK_TYPE_OLPC_MESH), NULL);
- if (!nm_platform_wifi_get_capabilities (NM_PLATFORM_GET,
- plink->ifindex,
- &capabilities)) {
- nm_log_warn (LOGD_PLATFORM | LOGD_WIFI, "(%s) failed to initialize Wi-Fi driver for ifindex %d", iface, plink->ifindex);
- return NULL;
- }
-
- /* Ignore monitor-mode and other unhandled interface types.
- * FIXME: keep TYPE_MONITOR devices in UNAVAILABLE state and manage
- * them if/when they change to a handled type.
- */
- mode = nm_platform_wifi_get_mode (NM_PLATFORM_GET, plink->ifindex);
- if (mode == NM_802_11_MODE_UNKNOWN) {
- *out_ignore = TRUE;
- return NULL;
- }
-
if (plink->type != NM_LINK_TYPE_WIFI)
return nm_device_olpc_mesh_new (iface);
@@ -116,11 +97,34 @@ create_device (NMDeviceFactory *factory,
iface,
NM_PRINT_FMT_QUOTE_STRING (backend),
WITH_IWD ? " (iwd support enabled)" : "");
- if (!backend || !strcasecmp (backend, "wpa_supplicant"))
+ if (!backend || !strcasecmp (backend, "wpa_supplicant")) {
+ NMDeviceWifiCapabilities capabilities;
+ NM80211Mode mode;
+
+ if (!nm_platform_wifi_get_capabilities (NM_PLATFORM_GET,
+ plink->ifindex,
+ &capabilities)) {
+ nm_log_warn (LOGD_PLATFORM | LOGD_WIFI,
+ "(%s) failed to initialize Wi-Fi driver for ifindex %d",
+ iface, plink->ifindex);
+ return NULL;
+ }
+
+ /* Ignore monitor-mode and other unhandled interface types.
+ * FIXME: keep TYPE_MONITOR devices in UNAVAILABLE state and manage
+ * them if/when they change to a handled type.
+ */
+ mode = nm_platform_wifi_get_mode (NM_PLATFORM_GET, plink->ifindex);
+ if (mode == NM_802_11_MODE_UNKNOWN) {
+ *out_ignore = TRUE;
+ return NULL;
+ }
+
return nm_device_wifi_new (iface, capabilities);
+ }
#if WITH_IWD
else if (!strcasecmp (backend, "iwd"))
- return nm_device_iwd_new (iface, capabilities);
+ return nm_device_iwd_new (iface);
#endif
nm_log_warn (LOGD_PLATFORM | LOGD_WIFI, "(%s) config: unknown or unsupported wifi-backend %s", iface, backend);