diff options
author | Johannes Berg <johannes@sipsolutions.net> | 2009-12-17 16:16:53 +0100 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2009-12-21 11:32:28 -0500 |
commit | 0183826b58a2712ffe608bc3302447be3e6a3ab8 (patch) | |
tree | df85bb225c3260628fc99d2e1a1b42a160cd49ff /net | |
parent | 9a418af5df03ad133cd8c8f6742b75e542db6392 (diff) | |
download | linux-0183826b58a2712ffe608bc3302447be3e6a3ab8.tar.gz linux-0183826b58a2712ffe608bc3302447be3e6a3ab8.tar.bz2 linux-0183826b58a2712ffe608bc3302447be3e6a3ab8.zip |
mac80211: fix WMM AP settings application
My
commit 77fdaa12cea26c204cc12c312fe40bc0f3dcdfd8
Author: Johannes Berg <johannes@sipsolutions.net>
Date: Tue Jul 7 03:45:17 2009 +0200
mac80211: rework MLME for multiple authentications
inadvertedly broke WMM because it removed, along with
a bunch of other now useless initialisations, the line
initialising sdata->u.mgd.wmm_last_param_set to -1
which would make it adopt any WMM parameter set. If,
as is usually the case, the AP uses WMM parameter set
sequence number zero, we'd never update it until the
AP changes the sequence number.
Add the missing initialisation back to get the WMM
settings from the AP applied locally.
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Cc: stable@kernel.org [2.6.31+]
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net')
-rw-r--r-- | net/mac80211/mlme.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c index d8d50fb5e823..c79e59f82fd9 100644 --- a/net/mac80211/mlme.c +++ b/net/mac80211/mlme.c @@ -915,6 +915,14 @@ static void ieee80211_set_associated(struct ieee80211_sub_if_data *sdata, sdata->u.mgd.flags &= ~(IEEE80211_STA_CONNECTION_POLL | IEEE80211_STA_BEACON_POLL); + /* + * Always handle WMM once after association regardless + * of the first value the AP uses. Setting -1 here has + * that effect because the AP values is an unsigned + * 4-bit value. + */ + sdata->u.mgd.wmm_last_param_set = -1; + ieee80211_led_assoc(local, 1); sdata->vif.bss_conf.assoc = 1; |