nl80211: Update the assoc_freq during connect
authorSunil Dutt <c_duttus@qti.qualcomm.com>
Fri, 23 Aug 2013 12:41:05 +0000 (15:41 +0300)
committerJouni Malinen <j@w1.fi>
Fri, 23 Aug 2013 12:41:05 +0000 (15:41 +0300)
drv->assoc_freq was not updated during the connect command (neither
during the command's invocation nor after getting the event) unlike with
auth/assoc case where assoc_freq is updated. This resulted in
nl80211_get_link_noise() (and any other function for that matter) using
the improper drv->assoc_freq value with drivers that use the connect
API. Fix this by updating drv->assoc_freq on connect command and when
fetching the frequency from the driver.

Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>

src/drivers/driver_nl80211.c

index c3c9aff..2865d22 100644 (file)
@@ -1279,7 +1279,9 @@ static unsigned int nl80211_get_assoc_freq(struct wpa_driver_nl80211_data *drv)
                wpa_printf(MSG_DEBUG, "nl80211: Operating frequency for the "
                           "associated BSS from scan results: %u MHz",
                           arg.assoc_freq);
-               return arg.assoc_freq ? arg.assoc_freq : drv->assoc_freq;
+               if (arg.assoc_freq)
+                       drv->assoc_freq = arg.assoc_freq;
+               return drv->assoc_freq;
        }
        wpa_printf(MSG_DEBUG, "nl80211: Scan result fetch failed: ret=%d "
                   "(%s)", ret, strerror(-ret));
@@ -7635,7 +7637,9 @@ static int wpa_driver_nl80211_try_connect(
        if (params->freq) {
                wpa_printf(MSG_DEBUG, "  * freq=%d", params->freq);
                NLA_PUT_U32(msg, NL80211_ATTR_WIPHY_FREQ, params->freq);
-       }
+               drv->assoc_freq = params->freq;
+       } else
+               drv->assoc_freq = 0;
        if (params->bg_scan_period >= 0) {
                wpa_printf(MSG_DEBUG, "  * bg scan period=%d",
                           params->bg_scan_period);