mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-05-05 00:38:07 +02:00
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.
This commit is contained in:
parent
7a6d5ab5a2
commit
178af02678
3 changed files with 27 additions and 23 deletions
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue