From f5decb274d22bd72793edf5d0c78f2f3ceee04fb Mon Sep 17 00:00:00 2001 From: Denis Kenzior Date: Tue, 30 May 2017 16:55:56 -0500 Subject: [PATCH] netdev: Ignore CMD_SET_STATION errors Certain WiFi drivers do not support using CMD_SET_STATION (e.g. mwifiex). It is not completely clear how such drivers handle the AUTHORIZED state, but they don't seem to take it into account. So for such drivers, ignore the -ENOTSUPP error return from CMD_SET_STATION. --- src/netdev.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/netdev.c b/src/netdev.c index 15d7c190..6cc4e0bd 100644 --- a/src/netdev.c +++ b/src/netdev.c @@ -52,6 +52,10 @@ #include "src/ftutil.h" #include "src/util.h" +#ifndef ENOTSUPP +#define ENOTSUPP 524 +#endif + struct netdev { uint32_t index; char name[IFNAMSIZ]; @@ -766,17 +770,23 @@ static void netdev_setting_keys_failed(struct netdev *netdev, static void netdev_set_station_cb(struct l_genl_msg *msg, void *user_data) { struct netdev *netdev = user_data; + int err; if (!netdev->connected) return; - if (l_genl_msg_get_error(msg) < 0) { + err = l_genl_msg_get_error(msg); + if (err == -ENOTSUPP) + goto done; + + if (err < 0) { l_error("Set Station failed for ifindex %d", netdev->index); netdev_setting_keys_failed(netdev, MPDU_REASON_CODE_UNSPECIFIED); return; } +done: netdev_connect_ok(netdev); }