|
@@ -1639,7 +1639,7 @@ static void ieee80211_rx_mgmt_beacon(struct ieee80211_sub_if_data *sdata,
|
|
|
directed_tim = ieee80211_check_tim(elems.tim, elems.tim_len,
|
|
|
ifmgd->aid);
|
|
|
|
|
|
- if (ncrc != ifmgd->beacon_crc) {
|
|
|
+ if (ncrc != ifmgd->beacon_crc || !ifmgd->beacon_crc_valid) {
|
|
|
ieee80211_rx_bss_info(sdata, mgmt, len, rx_status, &elems,
|
|
|
true);
|
|
|
|
|
@@ -1670,9 +1670,10 @@ static void ieee80211_rx_mgmt_beacon(struct ieee80211_sub_if_data *sdata,
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- if (ncrc == ifmgd->beacon_crc)
|
|
|
+ if (ncrc == ifmgd->beacon_crc && ifmgd->beacon_crc_valid)
|
|
|
return;
|
|
|
ifmgd->beacon_crc = ncrc;
|
|
|
+ ifmgd->beacon_crc_valid = true;
|
|
|
|
|
|
if (elems.erp_info && elems.erp_info_len >= 1) {
|
|
|
erp_valid = true;
|
|
@@ -2214,6 +2215,8 @@ int ieee80211_mgd_assoc(struct ieee80211_sub_if_data *sdata,
|
|
|
ifmgd->flags &= ~IEEE80211_STA_DISABLE_11N;
|
|
|
ifmgd->flags &= ~IEEE80211_STA_NULLFUNC_ACKED;
|
|
|
|
|
|
+ ifmgd->beacon_crc_valid = false;
|
|
|
+
|
|
|
for (i = 0; i < req->crypto.n_ciphers_pairwise; i++)
|
|
|
if (req->crypto.ciphers_pairwise[i] == WLAN_CIPHER_SUITE_WEP40 ||
|
|
|
req->crypto.ciphers_pairwise[i] == WLAN_CIPHER_SUITE_TKIP ||
|