]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
nl80211: Fix max_remain_on_chan capability reading
authorIlan Peer <ilan.peer@intel.com>
Sat, 4 May 2013 08:28:54 +0000 (11:28 +0300)
committerJouni Malinen <j@w1.fi>
Sat, 4 May 2013 08:28:54 +0000 (11:28 +0300)
In case that NL80211_PROTOCOL_FEATURE_SPLIT_WIPHY_DUMP is supported,
wiphy_info_handler() is called several times, where
NL80211_ATTR_MAX_REMAIN_ON_CHANNEL_DURATION is present only in one
of these calls. Thus capa->max_remain_on_chan is overridden in
all other calls.

Fix it so the default value is set only after all the wiphy info was
received.

Signed-hostap: Ilan Peer <ilan.peer@intel.com>

src/drivers/driver_nl80211.c

index 1c2f943ea7f2ab8120edec109be4005c568e8331..0433ca64b0a8500704e87b744f9bb087e549d3e7 100644 (file)
@@ -2738,9 +2738,6 @@ static void wiphy_info_supp_cmds(struct wiphy_info_data *info,
 static void wiphy_info_max_roc(struct wpa_driver_capa *capa,
                               struct nlattr *tb)
 {
-       /* default to 5000 since early versions of mac80211 don't set it */
-       capa->max_remain_on_chan = 5000;
-
        if (tb)
                capa->max_remain_on_chan = nla_get_u32(tb);
 }
@@ -2932,6 +2929,11 @@ static int wpa_driver_nl80211_get_info(struct wpa_driver_nl80211_data *drv,
                           "concurrent (driver advertised support)");
                drv->capa.flags |= WPA_DRIVER_FLAGS_MULTI_CHANNEL_CONCURRENT;
        }
+
+       /* default to 5000 since early versions of mac80211 don't set it */
+       if (!drv->capa.max_remain_on_chan)
+               drv->capa.max_remain_on_chan = 5000;
+
        return 0;
 nla_put_failure:
        nlmsg_free(msg);