aboutsummaryrefslogtreecommitdiffstats
path: root/include/net/mac80211.h
diff options
context:
space:
mode:
authorJohannes Berg <johannes.berg@intel.com>2011-07-05 10:35:41 -0400
committerJohn W. Linville <linville@tuxdriver.com>2011-07-06 15:05:43 -0400
commitc68f4b892c241bdddeb6f1c1864ac26197229471 (patch)
tree7100d2b756dff22ed1f248a3b0204e500290c89a /include/net/mac80211.h
parente5497d766adb92bcbd1fa4a147e188f84f34b20a (diff)
mac80211: support GTK rekey offload
This adds the necessary mac80211 APIs to support GTK rekey offload, mirroring the functionality from cfg80211. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'include/net/mac80211.h')
-rw-r--r--include/net/mac80211.h20
1 files changed, 20 insertions, 0 deletions
diff --git a/include/net/mac80211.h b/include/net/mac80211.h
index 4703c0f07ba4..2474019f47d3 100644
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -1700,6 +1700,12 @@ enum ieee80211_ampdu_mlme_action {
1700 * which set IEEE80211_KEY_FLAG_TKIP_REQ_RX_P1_KEY. 1700 * which set IEEE80211_KEY_FLAG_TKIP_REQ_RX_P1_KEY.
1701 * The callback must be atomic. 1701 * The callback must be atomic.
1702 * 1702 *
1703 * @set_rekey_data: If the device supports GTK rekeying, for example while the
1704 * host is suspended, it can assign this callback to retrieve the data
1705 * necessary to do GTK rekeying, this is the KEK, KCK and replay counter.
1706 * After rekeying was done it should (for example during resume) notify
1707 * userspace of the new replay counter using ieee80211_gtk_rekey_notify().
1708 *
1703 * @hw_scan: Ask the hardware to service the scan request, no need to start 1709 * @hw_scan: Ask the hardware to service the scan request, no need to start
1704 * the scan state machine in stack. The scan must honour the channel 1710 * the scan state machine in stack. The scan must honour the channel
1705 * configuration done by the regulatory agent in the wiphy's 1711 * configuration done by the regulatory agent in the wiphy's
@@ -1912,6 +1918,9 @@ struct ieee80211_ops {
1912 struct ieee80211_key_conf *conf, 1918 struct ieee80211_key_conf *conf,
1913 struct ieee80211_sta *sta, 1919 struct ieee80211_sta *sta,
1914 u32 iv32, u16 *phase1key); 1920 u32 iv32, u16 *phase1key);
1921 void (*set_rekey_data)(struct ieee80211_hw *hw,
1922 struct ieee80211_vif *vif,
1923 struct cfg80211_gtk_rekey_data *data);
1915 int (*hw_scan)(struct ieee80211_hw *hw, struct ieee80211_vif *vif, 1924 int (*hw_scan)(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
1916 struct cfg80211_scan_request *req); 1925 struct cfg80211_scan_request *req);
1917 void (*cancel_hw_scan)(struct ieee80211_hw *hw, 1926 void (*cancel_hw_scan)(struct ieee80211_hw *hw,
@@ -2585,6 +2594,17 @@ ieee80211_get_buffered_bc(struct ieee80211_hw *hw, struct ieee80211_vif *vif);
2585void ieee80211_get_tkip_key(struct ieee80211_key_conf *keyconf, 2594void ieee80211_get_tkip_key(struct ieee80211_key_conf *keyconf,
2586 struct sk_buff *skb, 2595 struct sk_buff *skb,
2587 enum ieee80211_tkip_key_type type, u8 *key); 2596 enum ieee80211_tkip_key_type type, u8 *key);
2597
2598/**
2599 * ieee80211_gtk_rekey_notify - notify userspace supplicant of rekeying
2600 * @vif: virtual interface the rekeying was done on
2601 * @bssid: The BSSID of the AP, for checking association
2602 * @replay_ctr: the new replay counter after GTK rekeying
2603 * @gfp: allocation flags
2604 */
2605void ieee80211_gtk_rekey_notify(struct ieee80211_vif *vif, const u8 *bssid,
2606 const u8 *replay_ctr, gfp_t gfp);
2607
2588/** 2608/**
2589 * ieee80211_wake_queue - wake specific queue 2609 * ieee80211_wake_queue - wake specific queue
2590 * @hw: pointer as obtained from ieee80211_alloc_hw(). 2610 * @hw: pointer as obtained from ieee80211_alloc_hw().