diff options
Diffstat (limited to 'net/mac80211/mlme.c')
-rw-r--r-- | net/mac80211/mlme.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c index acb04133a95d..591e6331c427 100644 --- a/net/mac80211/mlme.c +++ b/net/mac80211/mlme.c | |||
@@ -551,6 +551,7 @@ static void ieee80211_set_associated(struct net_device *dev, | |||
551 | /* set timing information */ | 551 | /* set timing information */ |
552 | sdata->bss_conf.beacon_int = bss->beacon_int; | 552 | sdata->bss_conf.beacon_int = bss->beacon_int; |
553 | sdata->bss_conf.timestamp = bss->timestamp; | 553 | sdata->bss_conf.timestamp = bss->timestamp; |
554 | sdata->bss_conf.dtim_period = bss->dtim_period; | ||
554 | 555 | ||
555 | changed |= ieee80211_handle_bss_capability(sdata, bss); | 556 | changed |= ieee80211_handle_bss_capability(sdata, bss); |
556 | 557 | ||
@@ -2688,6 +2689,16 @@ static void ieee80211_rx_bss_info(struct net_device *dev, | |||
2688 | bss->beacon_int = le16_to_cpu(mgmt->u.beacon.beacon_int); | 2689 | bss->beacon_int = le16_to_cpu(mgmt->u.beacon.beacon_int); |
2689 | bss->capability = le16_to_cpu(mgmt->u.beacon.capab_info); | 2690 | bss->capability = le16_to_cpu(mgmt->u.beacon.capab_info); |
2690 | 2691 | ||
2692 | if (elems->tim) { | ||
2693 | struct ieee80211_tim_ie *tim_ie = | ||
2694 | (struct ieee80211_tim_ie *)elems->tim; | ||
2695 | bss->dtim_period = tim_ie->dtim_period; | ||
2696 | } | ||
2697 | |||
2698 | /* set default value for buggy APs */ | ||
2699 | if (!elems->tim || bss->dtim_period == 0) | ||
2700 | bss->dtim_period = 1; | ||
2701 | |||
2691 | bss->supp_rates_len = 0; | 2702 | bss->supp_rates_len = 0; |
2692 | if (elems->supp_rates) { | 2703 | if (elems->supp_rates) { |
2693 | clen = IEEE80211_MAX_SUPP_RATES - bss->supp_rates_len; | 2704 | clen = IEEE80211_MAX_SUPP_RATES - bss->supp_rates_len; |