diff options
author | Johannes Berg <johannes.berg@intel.com> | 2011-07-05 10:35:41 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2011-07-06 15:05:43 -0400 |
commit | c68f4b892c241bdddeb6f1c1864ac26197229471 (patch) | |
tree | 7100d2b756dff22ed1f248a3b0204e500290c89a /include/net/mac80211.h | |
parent | e5497d766adb92bcbd1fa4a147e188f84f34b20a (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.h | 20 |
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); | |||
2585 | void ieee80211_get_tkip_key(struct ieee80211_key_conf *keyconf, | 2594 | void 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 | */ | ||
2605 | void 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(). |