aboutsummaryrefslogtreecommitdiffstats
path: root/net/wireless/mlme.c
diff options
context:
space:
mode:
authorJouni Malinen <j@w1.fi>2012-09-30 12:29:39 -0400
committerJohannes Berg <johannes.berg@intel.com>2012-10-17 05:02:11 -0400
commite39e5b5e7206767a0f1be0e5cb7acbd0db87ae60 (patch)
treee2c8641581e3ff336586bd08fbf978da72c9a514 /net/wireless/mlme.c
parent0f4126e8918985ccc1beb936efd4b9d1e9005a63 (diff)
cfg80211: Allow user space to specify non-IEs to SAE Authentication
SAE extends Authentication frames with fields that are not information elements. NL80211_ATTR_IE is not suitable for these, so introduce a new attribute that can be used to specify the fields needed for SAE in station mode. Signed-off-by: Jouni Malinen <j@w1.fi> [change to verify that SAE is only used with authenticate command] Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'net/wireless/mlme.c')
-rw-r--r--net/wireless/mlme.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/net/wireless/mlme.c b/net/wireless/mlme.c
index 8016fee0752b..460d49325741 100644
--- a/net/wireless/mlme.c
+++ b/net/wireless/mlme.c
@@ -273,7 +273,8 @@ int __cfg80211_mlme_auth(struct cfg80211_registered_device *rdev,
273 const u8 *bssid, 273 const u8 *bssid,
274 const u8 *ssid, int ssid_len, 274 const u8 *ssid, int ssid_len,
275 const u8 *ie, int ie_len, 275 const u8 *ie, int ie_len,
276 const u8 *key, int key_len, int key_idx) 276 const u8 *key, int key_len, int key_idx,
277 const u8 *sae_data, int sae_data_len)
277{ 278{
278 struct wireless_dev *wdev = dev->ieee80211_ptr; 279 struct wireless_dev *wdev = dev->ieee80211_ptr;
279 struct cfg80211_auth_request req; 280 struct cfg80211_auth_request req;
@@ -293,6 +294,8 @@ int __cfg80211_mlme_auth(struct cfg80211_registered_device *rdev,
293 294
294 req.ie = ie; 295 req.ie = ie;
295 req.ie_len = ie_len; 296 req.ie_len = ie_len;
297 req.sae_data = sae_data;
298 req.sae_data_len = sae_data_len;
296 req.auth_type = auth_type; 299 req.auth_type = auth_type;
297 req.bss = cfg80211_get_bss(&rdev->wiphy, chan, bssid, ssid, ssid_len, 300 req.bss = cfg80211_get_bss(&rdev->wiphy, chan, bssid, ssid, ssid_len,
298 WLAN_CAPABILITY_ESS, WLAN_CAPABILITY_ESS); 301 WLAN_CAPABILITY_ESS, WLAN_CAPABILITY_ESS);
@@ -319,7 +322,8 @@ int cfg80211_mlme_auth(struct cfg80211_registered_device *rdev,
319 enum nl80211_auth_type auth_type, const u8 *bssid, 322 enum nl80211_auth_type auth_type, const u8 *bssid,
320 const u8 *ssid, int ssid_len, 323 const u8 *ssid, int ssid_len,
321 const u8 *ie, int ie_len, 324 const u8 *ie, int ie_len,
322 const u8 *key, int key_len, int key_idx) 325 const u8 *key, int key_len, int key_idx,
326 const u8 *sae_data, int sae_data_len)
323{ 327{
324 int err; 328 int err;
325 329
@@ -327,7 +331,8 @@ int cfg80211_mlme_auth(struct cfg80211_registered_device *rdev,
327 wdev_lock(dev->ieee80211_ptr); 331 wdev_lock(dev->ieee80211_ptr);
328 err = __cfg80211_mlme_auth(rdev, dev, chan, auth_type, bssid, 332 err = __cfg80211_mlme_auth(rdev, dev, chan, auth_type, bssid,
329 ssid, ssid_len, ie, ie_len, 333 ssid, ssid_len, ie, ie_len,
330 key, key_len, key_idx); 334 key, key_len, key_idx,
335 sae_data, sae_data_len);
331 wdev_unlock(dev->ieee80211_ptr); 336 wdev_unlock(dev->ieee80211_ptr);
332 mutex_unlock(&rdev->devlist_mtx); 337 mutex_unlock(&rdev->devlist_mtx);
333 338