aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorJouni Malinen <j@w1.fi>2010-12-15 17:52:40 -0500
committerJohn W. Linville <linville@tuxdriver.com>2010-12-16 15:22:30 -0500
commitcf4e594ea7e55555e81647b74a3a8e8b2826a529 (patch)
tree794013429d9613ef253111fb50f993600ab14a55 /include
parent5928b91acae97622a6f2e679eb7a9f19bed68e3e (diff)
nl80211: Add notification for dropped Deauth/Disassoc
Add a new notification to indicate that a received, unprotected Deauthentication or Disassociation frame was dropped due to management frame protection being in use. This notification is needed to allow user space (e.g., wpa_supplicant) to implement SA Query procedure to recover from association state mismatch between an AP and STA. This is needed to avoid getting stuck in non-working state when MFP (IEEE 802.11w) is used and a protected Deauthentication or Disassociation frame is dropped for any reason. After that, the station would silently discard any unprotected Deauthentication or Disassociation frame that could be indicating that the AP does not have association for the STA (when the Reason Code would be 6 or 7). IEEE Std 802.11w-2009, 11.13 describes this recovery mechanism. Signed-off-by: Jouni Malinen <j@w1.fi> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'include')
-rw-r--r--include/linux/nl80211.h10
-rw-r--r--include/net/cfg80211.h26
2 files changed, 36 insertions, 0 deletions
diff --git a/include/linux/nl80211.h b/include/linux/nl80211.h
index 1cee56b3a79a..7483a89cee8f 100644
--- a/include/linux/nl80211.h
+++ b/include/linux/nl80211.h
@@ -399,6 +399,13 @@
399 * @NL80211_CMD_LEAVE_MESH: Leave the mesh network -- no special arguments, the 399 * @NL80211_CMD_LEAVE_MESH: Leave the mesh network -- no special arguments, the
400 * network is determined by the network interface. 400 * network is determined by the network interface.
401 * 401 *
402 * @NL80211_CMD_UNPROT_DEAUTHENTICATE: Unprotected deauthentication frame
403 * notification. This event is used to indicate that an unprotected
404 * deauthentication frame was dropped when MFP is in use.
405 * @NL80211_CMD_UNPROT_DISASSOCIATE: Unprotected disassociation frame
406 * notification. This event is used to indicate that an unprotected
407 * disassociation frame was dropped when MFP is in use.
408 *
402 * @NL80211_CMD_MAX: highest used command number 409 * @NL80211_CMD_MAX: highest used command number
403 * @__NL80211_CMD_AFTER_LAST: internal use 410 * @__NL80211_CMD_AFTER_LAST: internal use
404 */ 411 */
@@ -508,6 +515,9 @@ enum nl80211_commands {
508 NL80211_CMD_JOIN_MESH, 515 NL80211_CMD_JOIN_MESH,
509 NL80211_CMD_LEAVE_MESH, 516 NL80211_CMD_LEAVE_MESH,
510 517
518 NL80211_CMD_UNPROT_DEAUTHENTICATE,
519 NL80211_CMD_UNPROT_DISASSOCIATE,
520
511 /* add new commands above here */ 521 /* add new commands above here */
512 522
513 /* used to define NL80211_CMD_MAX below */ 523 /* used to define NL80211_CMD_MAX below */
diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h
index f45e15f12446..3d1c09b777e8 100644
--- a/include/net/cfg80211.h
+++ b/include/net/cfg80211.h
@@ -2360,6 +2360,32 @@ void __cfg80211_send_disassoc(struct net_device *dev, const u8 *buf,
2360 size_t len); 2360 size_t len);
2361 2361
2362/** 2362/**
2363 * cfg80211_send_unprot_deauth - notification of unprotected deauthentication
2364 * @dev: network device
2365 * @buf: deauthentication frame (header + body)
2366 * @len: length of the frame data
2367 *
2368 * This function is called whenever a received Deauthentication frame has been
2369 * dropped in station mode because of MFP being used but the Deauthentication
2370 * frame was not protected. This function may sleep.
2371 */
2372void cfg80211_send_unprot_deauth(struct net_device *dev, const u8 *buf,
2373 size_t len);
2374
2375/**
2376 * cfg80211_send_unprot_disassoc - notification of unprotected disassociation
2377 * @dev: network device
2378 * @buf: disassociation frame (header + body)
2379 * @len: length of the frame data
2380 *
2381 * This function is called whenever a received Disassociation frame has been
2382 * dropped in station mode because of MFP being used but the Disassociation
2383 * frame was not protected. This function may sleep.
2384 */
2385void cfg80211_send_unprot_disassoc(struct net_device *dev, const u8 *buf,
2386 size_t len);
2387
2388/**
2363 * cfg80211_michael_mic_failure - notification of Michael MIC failure (TKIP) 2389 * cfg80211_michael_mic_failure - notification of Michael MIC failure (TKIP)
2364 * @dev: network device 2390 * @dev: network device
2365 * @addr: The source MAC address of the frame 2391 * @addr: The source MAC address of the frame