diff options
Diffstat (limited to 'include/net/mac80211.h')
-rw-r--r-- | include/net/mac80211.h | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/include/net/mac80211.h b/include/net/mac80211.h index 2a134582fc16..48428a6b9109 100644 --- a/include/net/mac80211.h +++ b/include/net/mac80211.h | |||
@@ -827,6 +827,16 @@ static inline void SET_IEEE80211_PERM_ADDR(struct ieee80211_hw *hw, u8 *addr) | |||
827 | * parameter is guaranteed to be valid until another call to set_key() | 827 | * parameter is guaranteed to be valid until another call to set_key() |
828 | * removes it, but it can only be used as a cookie to differentiate | 828 | * removes it, but it can only be used as a cookie to differentiate |
829 | * keys. | 829 | * keys. |
830 | * | ||
831 | * In TKIP some HW need to be provided a phase 1 key, for RX decryption | ||
832 | * acceleration (i.e. iwlwifi). Those drivers should provide update_tkip_key | ||
833 | * handler. | ||
834 | * The update_tkip_key() call updates the driver with the new phase 1 key. | ||
835 | * This happens everytime the iv16 wraps around (every 65536 packets). The | ||
836 | * set_key() call will happen only once for each key (unless the AP did | ||
837 | * rekeying), it will not include a valid phase 1 key. The valid phase 1 key is | ||
838 | * provided by udpate_tkip_key only. The trigger that makes mac80211 call this | ||
839 | * handler is software decryption with wrap around of iv16. | ||
830 | */ | 840 | */ |
831 | 841 | ||
832 | /** | 842 | /** |
@@ -1003,6 +1013,10 @@ enum ieee80211_ampdu_mlme_action { | |||
1003 | * and remove_interface calls, i.e. while the interface with the | 1013 | * and remove_interface calls, i.e. while the interface with the |
1004 | * given local_address is enabled. | 1014 | * given local_address is enabled. |
1005 | * | 1015 | * |
1016 | * @update_tkip_key: See the section "Hardware crypto acceleration" | ||
1017 | * This callback will be called in the context of Rx. Called for drivers | ||
1018 | * which set IEEE80211_KEY_FLAG_TKIP_REQ_RX_P1_KEY. | ||
1019 | * | ||
1006 | * @hw_scan: Ask the hardware to service the scan request, no need to start | 1020 | * @hw_scan: Ask the hardware to service the scan request, no need to start |
1007 | * the scan state machine in stack. The scan must honour the channel | 1021 | * the scan state machine in stack. The scan must honour the channel |
1008 | * configuration done by the regulatory agent in the wiphy's registered | 1022 | * configuration done by the regulatory agent in the wiphy's registered |
@@ -1094,6 +1108,9 @@ struct ieee80211_ops { | |||
1094 | int (*set_key)(struct ieee80211_hw *hw, enum set_key_cmd cmd, | 1108 | int (*set_key)(struct ieee80211_hw *hw, enum set_key_cmd cmd, |
1095 | const u8 *local_address, const u8 *address, | 1109 | const u8 *local_address, const u8 *address, |
1096 | struct ieee80211_key_conf *key); | 1110 | struct ieee80211_key_conf *key); |
1111 | void (*update_tkip_key)(struct ieee80211_hw *hw, | ||
1112 | struct ieee80211_key_conf *conf, const u8 *address, | ||
1113 | u32 iv32, u16 *phase1key); | ||
1097 | int (*hw_scan)(struct ieee80211_hw *hw, u8 *ssid, size_t len); | 1114 | int (*hw_scan)(struct ieee80211_hw *hw, u8 *ssid, size_t len); |
1098 | int (*get_stats)(struct ieee80211_hw *hw, | 1115 | int (*get_stats)(struct ieee80211_hw *hw, |
1099 | struct ieee80211_low_level_stats *stats); | 1116 | struct ieee80211_low_level_stats *stats); |