From 163f801ef23cd486aab5065c90dd71ad4cbb5fcd Mon Sep 17 00:00:00 2001 From: Jouni Malinen Date: Tue, 25 Mar 2014 17:57:54 +0200 Subject: [PATCH] nl80211: Indicate HS 2.0 OSEN AKM in connect/associate command This allows drivers that build the WPA/RSN IEs internally to use similar design for building the OSEN IE. Signed-off-by: Jouni Malinen --- src/common/ieee802_11_defs.h | 1 + src/drivers/driver_nl80211.c | 7 ++++++- wpa_supplicant/sme.c | 2 ++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/common/ieee802_11_defs.h b/src/common/ieee802_11_defs.h index dcee679d2..6f2173d78 100644 --- a/src/common/ieee802_11_defs.h +++ b/src/common/ieee802_11_defs.h @@ -1099,6 +1099,7 @@ enum wifi_display_subelem { #define WLAN_AKM_SUITE_FT_8021X 0x000FAC03 #define WLAN_AKM_SUITE_FT_PSK 0x000FAC04 #define WLAN_AKM_SUITE_CCKM 0x00409600 +#define WLAN_AKM_SUITE_OSEN 0x506f9a01 /* IEEE 802.11v - WNM Action field values */ diff --git a/src/drivers/driver_nl80211.c b/src/drivers/driver_nl80211.c index c3449ac9c..3ecce1913 100644 --- a/src/drivers/driver_nl80211.c +++ b/src/drivers/driver_nl80211.c @@ -8551,7 +8551,8 @@ static int nl80211_connect_common(struct wpa_driver_nl80211_data *drv, params->key_mgmt_suite == WPA_KEY_MGMT_PSK || params->key_mgmt_suite == WPA_KEY_MGMT_FT_IEEE8021X || params->key_mgmt_suite == WPA_KEY_MGMT_FT_PSK || - params->key_mgmt_suite == WPA_KEY_MGMT_CCKM) { + params->key_mgmt_suite == WPA_KEY_MGMT_CCKM || + params->key_mgmt_suite == WPA_KEY_MGMT_OSEN) { int mgmt = WLAN_AKM_SUITE_PSK; switch (params->key_mgmt_suite) { @@ -8567,11 +8568,15 @@ static int nl80211_connect_common(struct wpa_driver_nl80211_data *drv, case WPA_KEY_MGMT_FT_PSK: mgmt = WLAN_AKM_SUITE_FT_PSK; break; + case WPA_KEY_MGMT_OSEN: + mgmt = WLAN_AKM_SUITE_OSEN; + break; case WPA_KEY_MGMT_PSK: default: mgmt = WLAN_AKM_SUITE_PSK; break; } + wpa_printf(MSG_DEBUG, " * akm=0x%x", mgmt); NLA_PUT_U32(msg, NL80211_ATTR_AKM_SUITES, mgmt); } diff --git a/wpa_supplicant/sme.c b/wpa_supplicant/sme.c index f01844eb4..a860afb86 100644 --- a/wpa_supplicant/sme.c +++ b/wpa_supplicant/sme.c @@ -711,6 +711,8 @@ void sme_associate(struct wpa_supplicant *wpa_s, enum wpas_mode mode, params.wpa_ie_len = wpa_s->sme.assoc_req_ie_len; params.pairwise_suite = wpa_s->pairwise_cipher; params.group_suite = wpa_s->group_cipher; + params.key_mgmt_suite = wpa_s->key_mgmt; + params.wpa_proto = wpa_s->wpa_proto; #ifdef CONFIG_HT_OVERRIDES os_memset(&htcaps, 0, sizeof(htcaps)); os_memset(&htcaps_mask, 0, sizeof(htcaps_mask));