aboutsummaryrefslogtreecommitdiffstats
path: root/net/mac80211/mlme.c
diff options
context:
space:
mode:
authorVasanthakumar Thiagarajan <vasanth@atheros.com>2008-12-23 11:00:50 -0500
committerJohn W. Linville <linville@tuxdriver.com>2009-01-29 15:58:47 -0500
commiteb46936b9f2b639f4edeeaf9154d49476fc30fe5 (patch)
tree07c5ba68d5a49c722c019e401d8f8abf53c60e20 /net/mac80211/mlme.c
parent9ee677c2276bfcbcf68042ec2718a504af0c5fd7 (diff)
mac80211: Scale down to non-HT association with TKIP/WEP as pairwise cipher
As TKIP is not updated to new security needs which arise when TKIP is used to encrypt A-MPDU aggregated data frames, IEEE802.11n does not allow any cipher other than CCMP (Which has new extensions defined) as pairwise cipher between HT peers. When such configuration (TKIP/WEP in HT) is forced, we still associate in non-HT mode (11a/b/g). Signed-off-by: Vasanthakumar Thiagarajan <vasanth@atheros.com> Acked-by: Johannes Berg <johannes@sipsolutions.net> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net/mac80211/mlme.c')
-rw-r--r--net/mac80211/mlme.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c
index 2b890af01ba4..b688425d7555 100644
--- a/net/mac80211/mlme.c
+++ b/net/mac80211/mlme.c
@@ -391,10 +391,17 @@ static void ieee80211_send_assoc(struct ieee80211_sub_if_data *sdata,
391 } 391 }
392 392
393 /* wmm support is a must to HT */ 393 /* wmm support is a must to HT */
394 /*
395 * IEEE802.11n does not allow TKIP/WEP as pairwise
396 * ciphers in HT mode. We still associate in non-ht
397 * mode (11a/b/g) if any one of these ciphers is
398 * configured as pairwise.
399 */
394 if (wmm && (ifsta->flags & IEEE80211_STA_WMM_ENABLED) && 400 if (wmm && (ifsta->flags & IEEE80211_STA_WMM_ENABLED) &&
395 sband->ht_cap.ht_supported && 401 sband->ht_cap.ht_supported &&
396 (ht_ie = ieee80211_bss_get_ie(bss, WLAN_EID_HT_INFORMATION)) && 402 (ht_ie = ieee80211_bss_get_ie(bss, WLAN_EID_HT_INFORMATION)) &&
397 ht_ie[1] >= sizeof(struct ieee80211_ht_info)) { 403 ht_ie[1] >= sizeof(struct ieee80211_ht_info) &&
404 (!(ifsta->flags & IEEE80211_STA_TKIP_WEP_USED))) {
398 struct ieee80211_ht_info *ht_info = 405 struct ieee80211_ht_info *ht_info =
399 (struct ieee80211_ht_info *)(ht_ie + 2); 406 (struct ieee80211_ht_info *)(ht_ie + 2);
400 u16 cap = sband->ht_cap.cap; 407 u16 cap = sband->ht_cap.cap;