diff options
Diffstat (limited to 'package/wpa_supplicant/wpa_supplicant-0.7.3-nl80211-cipher-suites.patch')
-rw-r--r-- | package/wpa_supplicant/wpa_supplicant-0.7.3-nl80211-cipher-suites.patch | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/package/wpa_supplicant/wpa_supplicant-0.7.3-nl80211-cipher-suites.patch b/package/wpa_supplicant/wpa_supplicant-0.7.3-nl80211-cipher-suites.patch new file mode 100644 index 000000000..231498e99 --- /dev/null +++ b/package/wpa_supplicant/wpa_supplicant-0.7.3-nl80211-cipher-suites.patch @@ -0,0 +1,89 @@ +From d0f3f451f0002339ad75b43e79f1322f2e2e4ed1 Mon Sep 17 00:00:00 2001 +From: Jouni Malinen <jouni.malinen@atheros.com> +Date: Mon, 13 Dec 2010 21:08:53 +0200 +Subject: [PATCH] nl80211: Set cipher suites when using user space SME + +Previously, pairwise and group cipher suites were configured only +when kernel SME (nl80211 connect API) was used. However, mac80211 +needs this information even in the user space SME case for one +thing: to disable HT when TKIP/WEP is used. Add +NL80211_ATTR_CIPHER_SUITES_PAIRWISE to fix this special case with +user space SME. This allows mac80211 to disable HT properly when +the AP is configured with configuration that is not allowed. +(cherry picked from commit aca016054885c17d58c41888698761f2e1ce2b39) +--- + src/drivers/driver_nl80211.c | 44 ++++++++++++++++++++++++++++++++++++++++++ + wpa_supplicant/sme.c | 2 + + 2 files changed, 46 insertions(+), 0 deletions(-) + +diff --git a/src/drivers/driver_nl80211.c b/src/drivers/driver_nl80211.c +index 364158c..fb75c2e 100644 +--- a/src/drivers/driver_nl80211.c ++++ b/src/drivers/driver_nl80211.c +@@ -3940,6 +3940,50 @@ static int wpa_driver_nl80211_associate( + NLA_PUT(msg, NL80211_ATTR_IE, params->wpa_ie_len, + params->wpa_ie); + ++ if (params->pairwise_suite != CIPHER_NONE) { ++ int cipher; ++ ++ switch (params->pairwise_suite) { ++ case CIPHER_WEP40: ++ cipher = WLAN_CIPHER_SUITE_WEP40; ++ break; ++ case CIPHER_WEP104: ++ cipher = WLAN_CIPHER_SUITE_WEP104; ++ break; ++ case CIPHER_CCMP: ++ cipher = WLAN_CIPHER_SUITE_CCMP; ++ break; ++ case CIPHER_TKIP: ++ default: ++ cipher = WLAN_CIPHER_SUITE_TKIP; ++ break; ++ } ++ wpa_printf(MSG_DEBUG, " * pairwise=0x%x\n", cipher); ++ NLA_PUT_U32(msg, NL80211_ATTR_CIPHER_SUITES_PAIRWISE, cipher); ++ } ++ ++ if (params->group_suite != CIPHER_NONE) { ++ int cipher; ++ ++ switch (params->group_suite) { ++ case CIPHER_WEP40: ++ cipher = WLAN_CIPHER_SUITE_WEP40; ++ break; ++ case CIPHER_WEP104: ++ cipher = WLAN_CIPHER_SUITE_WEP104; ++ break; ++ case CIPHER_CCMP: ++ cipher = WLAN_CIPHER_SUITE_CCMP; ++ break; ++ case CIPHER_TKIP: ++ default: ++ cipher = WLAN_CIPHER_SUITE_TKIP; ++ break; ++ } ++ wpa_printf(MSG_DEBUG, " * group=0x%x\n", cipher); ++ NLA_PUT_U32(msg, NL80211_ATTR_CIPHER_SUITE_GROUP, cipher); ++ } ++ + #ifdef CONFIG_IEEE80211W + if (params->mgmt_frame_protection == MGMT_FRAME_PROTECTION_REQUIRED) + NLA_PUT_U32(msg, NL80211_ATTR_USE_MFP, NL80211_MFP_REQUIRED); +diff --git a/wpa_supplicant/sme.c b/wpa_supplicant/sme.c +index 5604e97..878bbf0 100644 +--- a/wpa_supplicant/sme.c ++++ b/wpa_supplicant/sme.c +@@ -333,6 +333,8 @@ void sme_associate(struct wpa_supplicant *wpa_s, enum wpas_mode mode, + params.wpa_ie = wpa_s->sme.assoc_req_ie_len ? + wpa_s->sme.assoc_req_ie : NULL; + params.wpa_ie_len = wpa_s->sme.assoc_req_ie_len; ++ params.pairwise_suite = cipher_suite2driver(wpa_s->pairwise_cipher); ++ params.group_suite = cipher_suite2driver(wpa_s->group_cipher); + #ifdef CONFIG_IEEE80211R + if (auth_type == WLAN_AUTH_FT && wpa_s->sme.ft_ies) { + params.wpa_ie = wpa_s->sme.ft_ies; +-- +1.7.4-rc1 + |