|
@@ -1251,6 +1251,7 @@ void wpa_supplicant_associate(struct wpa_supplicant *wpa_s,
|
|
struct wpa_driver_capa capa;
|
|
struct wpa_driver_capa capa;
|
|
int assoc_failed = 0;
|
|
int assoc_failed = 0;
|
|
struct wpa_ssid *old_ssid;
|
|
struct wpa_ssid *old_ssid;
|
|
|
|
+ u32 ext_capab;
|
|
#ifdef CONFIG_HT_OVERRIDES
|
|
#ifdef CONFIG_HT_OVERRIDES
|
|
struct ieee80211_ht_capabilities htcaps;
|
|
struct ieee80211_ht_capabilities htcaps;
|
|
struct ieee80211_ht_capabilities htcaps_mask;
|
|
struct ieee80211_ht_capabilities htcaps_mask;
|
|
@@ -1461,8 +1462,16 @@ void wpa_supplicant_associate(struct wpa_supplicant *wpa_s,
|
|
}
|
|
}
|
|
#endif
|
|
#endif
|
|
|
|
|
|
|
|
+ ext_capab = 0;
|
|
#ifdef CONFIG_INTERWORKING
|
|
#ifdef CONFIG_INTERWORKING
|
|
- if (wpa_s->conf->interworking) {
|
|
+ if (wpa_s->conf->interworking)
|
|
|
|
+ ext_capab |= BIT(31);
|
|
|
|
+#endif
|
|
|
|
+#ifdef CONFIG_WNM
|
|
|
|
+ ext_capab |= BIT(17);
|
|
|
|
+#endif
|
|
|
|
+
|
|
|
|
+ if (ext_capab) {
|
|
u8 *pos = wpa_ie;
|
|
u8 *pos = wpa_ie;
|
|
if (wpa_ie_len > 0 && pos[0] == WLAN_EID_RSN)
|
|
if (wpa_ie_len > 0 && pos[0] == WLAN_EID_RSN)
|
|
pos += 2 + pos[1];
|
|
pos += 2 + pos[1];
|
|
@@ -1470,12 +1479,8 @@ void wpa_supplicant_associate(struct wpa_supplicant *wpa_s,
|
|
wpa_ie_len += 6;
|
|
wpa_ie_len += 6;
|
|
*pos++ = WLAN_EID_EXT_CAPAB;
|
|
*pos++ = WLAN_EID_EXT_CAPAB;
|
|
*pos++ = 4;
|
|
*pos++ = 4;
|
|
- *pos++ = 0x00;
|
|
+ WPA_PUT_LE32(pos, ext_capab);
|
|
- *pos++ = 0x00;
|
|
|
|
- *pos++ = 0x00;
|
|
|
|
- *pos++ = 0x80;
|
|
|
|
}
|
|
}
|
|
-#endif
|
|
|
|
|
|
|
|
wpa_clear_keys(wpa_s, bss ? bss->bssid : NULL);
|
|
wpa_clear_keys(wpa_s, bss ? bss->bssid : NULL);
|
|
use_crypt = 1;
|
|
use_crypt = 1;
|