aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--net/mac80211/mlme.c19
1 files changed, 10 insertions, 9 deletions
diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c
index b61a7819867e..54a2a1db98a3 100644
--- a/net/mac80211/mlme.c
+++ b/net/mac80211/mlme.c
@@ -1951,16 +1951,13 @@ static void ieee80211_rx_mgmt_beacon(struct ieee80211_sub_if_data *sdata,
1951 directed_tim = ieee80211_check_tim(elems.tim, elems.tim_len, 1951 directed_tim = ieee80211_check_tim(elems.tim, elems.tim_len,
1952 ifmgd->aid); 1952 ifmgd->aid);
1953 1953
1954 ncrc = crc32_be(ncrc, (void *)&directed_tim, sizeof(directed_tim)); 1954 if (ncrc != ifmgd->beacon_crc) {
1955 ieee80211_rx_bss_info(sdata, mgmt, len, rx_status, &elems,
1956 true);
1955 1957
1956 if (ncrc == ifmgd->beacon_crc) 1958 ieee80211_sta_wmm_params(local, ifmgd, elems.wmm_param,
1957 return; 1959 elems.wmm_param_len);
1958 ifmgd->beacon_crc = ncrc; 1960 }
1959
1960 ieee80211_rx_bss_info(sdata, mgmt, len, rx_status, &elems, true);
1961
1962 ieee80211_sta_wmm_params(local, ifmgd, elems.wmm_param,
1963 elems.wmm_param_len);
1964 1961
1965 if (local->hw.flags & IEEE80211_HW_PS_NULLFUNC_STACK) { 1962 if (local->hw.flags & IEEE80211_HW_PS_NULLFUNC_STACK) {
1966 if (directed_tim) { 1963 if (directed_tim) {
@@ -1985,6 +1982,10 @@ static void ieee80211_rx_mgmt_beacon(struct ieee80211_sub_if_data *sdata,
1985 } 1982 }
1986 } 1983 }
1987 1984
1985 if (ncrc == ifmgd->beacon_crc)
1986 return;
1987 ifmgd->beacon_crc = ncrc;
1988
1988 if (elems.erp_info && elems.erp_info_len >= 1) { 1989 if (elems.erp_info && elems.erp_info_len >= 1) {
1989 erp_valid = true; 1990 erp_valid = true;
1990 erp_value = elems.erp_info[0]; 1991 erp_value = elems.erp_info[0];