diff options
Diffstat (limited to 'include/net/mac80211.h')
-rw-r--r-- | include/net/mac80211.h | 100 |
1 files changed, 73 insertions, 27 deletions
diff --git a/include/net/mac80211.h b/include/net/mac80211.h index 29c7be8808d5..d52914b75331 100644 --- a/include/net/mac80211.h +++ b/include/net/mac80211.h | |||
@@ -376,6 +376,12 @@ enum ieee80211_rssi_event { | |||
376 | * @ssid_len: Length of SSID given in @ssid. | 376 | * @ssid_len: Length of SSID given in @ssid. |
377 | * @hidden_ssid: The SSID of the current vif is hidden. Only valid in AP-mode. | 377 | * @hidden_ssid: The SSID of the current vif is hidden. Only valid in AP-mode. |
378 | * @txpower: TX power in dBm | 378 | * @txpower: TX power in dBm |
379 | * @txpower_type: TX power adjustment used to control per packet Transmit | ||
380 | * Power Control (TPC) in lower driver for the current vif. In particular | ||
381 | * TPC is enabled if value passed in %txpower_type is | ||
382 | * NL80211_TX_POWER_LIMITED (allow using less than specified from | ||
383 | * userspace), whereas TPC is disabled if %txpower_type is set to | ||
384 | * NL80211_TX_POWER_FIXED (use value configured from userspace) | ||
379 | * @p2p_noa_attr: P2P NoA attribute for P2P powersave | 385 | * @p2p_noa_attr: P2P NoA attribute for P2P powersave |
380 | */ | 386 | */ |
381 | struct ieee80211_bss_conf { | 387 | struct ieee80211_bss_conf { |
@@ -411,6 +417,7 @@ struct ieee80211_bss_conf { | |||
411 | size_t ssid_len; | 417 | size_t ssid_len; |
412 | bool hidden_ssid; | 418 | bool hidden_ssid; |
413 | int txpower; | 419 | int txpower; |
420 | enum nl80211_tx_power_setting txpower_type; | ||
414 | struct ieee80211_p2p_noa_attr p2p_noa_attr; | 421 | struct ieee80211_p2p_noa_attr p2p_noa_attr; |
415 | }; | 422 | }; |
416 | 423 | ||
@@ -505,8 +512,11 @@ struct ieee80211_bss_conf { | |||
505 | * @IEEE80211_TX_CTL_DONTFRAG: Don't fragment this packet even if it | 512 | * @IEEE80211_TX_CTL_DONTFRAG: Don't fragment this packet even if it |
506 | * would be fragmented by size (this is optional, only used for | 513 | * would be fragmented by size (this is optional, only used for |
507 | * monitor injection). | 514 | * monitor injection). |
508 | * @IEEE80211_TX_CTL_PS_RESPONSE: This frame is a response to a poll | 515 | * @IEEE80211_TX_STAT_NOACK_TRANSMITTED: A frame that was marked with |
509 | * frame (PS-Poll or uAPSD). | 516 | * IEEE80211_TX_CTL_NO_ACK has been successfully transmitted without |
517 | * any errors (like issues specific to the driver/HW). | ||
518 | * This flag must not be set for frames that don't request no-ack | ||
519 | * behaviour with IEEE80211_TX_CTL_NO_ACK. | ||
510 | * | 520 | * |
511 | * Note: If you have to add new flags to the enumeration, then don't | 521 | * Note: If you have to add new flags to the enumeration, then don't |
512 | * forget to update %IEEE80211_TX_TEMPORARY_FLAGS when necessary. | 522 | * forget to update %IEEE80211_TX_TEMPORARY_FLAGS when necessary. |
@@ -542,7 +552,7 @@ enum mac80211_tx_info_flags { | |||
542 | IEEE80211_TX_STATUS_EOSP = BIT(28), | 552 | IEEE80211_TX_STATUS_EOSP = BIT(28), |
543 | IEEE80211_TX_CTL_USE_MINRATE = BIT(29), | 553 | IEEE80211_TX_CTL_USE_MINRATE = BIT(29), |
544 | IEEE80211_TX_CTL_DONTFRAG = BIT(30), | 554 | IEEE80211_TX_CTL_DONTFRAG = BIT(30), |
545 | IEEE80211_TX_CTL_PS_RESPONSE = BIT(31), | 555 | IEEE80211_TX_STAT_NOACK_TRANSMITTED = BIT(31), |
546 | }; | 556 | }; |
547 | 557 | ||
548 | #define IEEE80211_TX_CTL_STBC_SHIFT 23 | 558 | #define IEEE80211_TX_CTL_STBC_SHIFT 23 |
@@ -552,11 +562,14 @@ enum mac80211_tx_info_flags { | |||
552 | * | 562 | * |
553 | * @IEEE80211_TX_CTRL_PORT_CTRL_PROTO: this frame is a port control | 563 | * @IEEE80211_TX_CTRL_PORT_CTRL_PROTO: this frame is a port control |
554 | * protocol frame (e.g. EAP) | 564 | * protocol frame (e.g. EAP) |
565 | * @IEEE80211_TX_CTRL_PS_RESPONSE: This frame is a response to a poll | ||
566 | * frame (PS-Poll or uAPSD). | ||
555 | * | 567 | * |
556 | * These flags are used in tx_info->control.flags. | 568 | * These flags are used in tx_info->control.flags. |
557 | */ | 569 | */ |
558 | enum mac80211_tx_control_flags { | 570 | enum mac80211_tx_control_flags { |
559 | IEEE80211_TX_CTRL_PORT_CTRL_PROTO = BIT(0), | 571 | IEEE80211_TX_CTRL_PORT_CTRL_PROTO = BIT(0), |
572 | IEEE80211_TX_CTRL_PS_RESPONSE = BIT(1), | ||
560 | }; | 573 | }; |
561 | 574 | ||
562 | /* | 575 | /* |
@@ -925,15 +938,13 @@ enum mac80211_rx_flags { | |||
925 | * These flags are used with the @vht_flag member of | 938 | * These flags are used with the @vht_flag member of |
926 | * &struct ieee80211_rx_status. | 939 | * &struct ieee80211_rx_status. |
927 | * @RX_VHT_FLAG_80MHZ: 80 MHz was used | 940 | * @RX_VHT_FLAG_80MHZ: 80 MHz was used |
928 | * @RX_VHT_FLAG_80P80MHZ: 80+80 MHz was used | ||
929 | * @RX_VHT_FLAG_160MHZ: 160 MHz was used | 941 | * @RX_VHT_FLAG_160MHZ: 160 MHz was used |
930 | * @RX_VHT_FLAG_BF: packet was beamformed | 942 | * @RX_VHT_FLAG_BF: packet was beamformed |
931 | */ | 943 | */ |
932 | enum mac80211_rx_vht_flags { | 944 | enum mac80211_rx_vht_flags { |
933 | RX_VHT_FLAG_80MHZ = BIT(0), | 945 | RX_VHT_FLAG_80MHZ = BIT(0), |
934 | RX_VHT_FLAG_80P80MHZ = BIT(1), | 946 | RX_VHT_FLAG_160MHZ = BIT(1), |
935 | RX_VHT_FLAG_160MHZ = BIT(2), | 947 | RX_VHT_FLAG_BF = BIT(2), |
936 | RX_VHT_FLAG_BF = BIT(3), | ||
937 | }; | 948 | }; |
938 | 949 | ||
939 | /** | 950 | /** |
@@ -1181,10 +1192,15 @@ struct ieee80211_channel_switch { | |||
1181 | * monitoring on this virtual interface -- i.e. it can monitor | 1192 | * monitoring on this virtual interface -- i.e. it can monitor |
1182 | * connection quality related parameters, such as the RSSI level and | 1193 | * connection quality related parameters, such as the RSSI level and |
1183 | * provide notifications if configured trigger levels are reached. | 1194 | * provide notifications if configured trigger levels are reached. |
1195 | * @IEEE80211_VIF_SUPPORTS_UAPSD: The device can do U-APSD for this | ||
1196 | * interface. This flag should be set during interface addition, | ||
1197 | * but may be set/cleared as late as authentication to an AP. It is | ||
1198 | * only valid for managed/station mode interfaces. | ||
1184 | */ | 1199 | */ |
1185 | enum ieee80211_vif_flags { | 1200 | enum ieee80211_vif_flags { |
1186 | IEEE80211_VIF_BEACON_FILTER = BIT(0), | 1201 | IEEE80211_VIF_BEACON_FILTER = BIT(0), |
1187 | IEEE80211_VIF_SUPPORTS_CQM_RSSI = BIT(1), | 1202 | IEEE80211_VIF_SUPPORTS_CQM_RSSI = BIT(1), |
1203 | IEEE80211_VIF_SUPPORTS_UAPSD = BIT(2), | ||
1188 | }; | 1204 | }; |
1189 | 1205 | ||
1190 | /** | 1206 | /** |
@@ -1270,19 +1286,22 @@ struct ieee80211_vif *wdev_to_ieee80211_vif(struct wireless_dev *wdev); | |||
1270 | * | 1286 | * |
1271 | * @IEEE80211_KEY_FLAG_GENERATE_IV: This flag should be set by the | 1287 | * @IEEE80211_KEY_FLAG_GENERATE_IV: This flag should be set by the |
1272 | * driver to indicate that it requires IV generation for this | 1288 | * driver to indicate that it requires IV generation for this |
1273 | * particular key. | 1289 | * particular key. Setting this flag does not necessarily mean that SKBs |
1290 | * will have sufficient tailroom for ICV or MIC. | ||
1274 | * @IEEE80211_KEY_FLAG_GENERATE_MMIC: This flag should be set by | 1291 | * @IEEE80211_KEY_FLAG_GENERATE_MMIC: This flag should be set by |
1275 | * the driver for a TKIP key if it requires Michael MIC | 1292 | * the driver for a TKIP key if it requires Michael MIC |
1276 | * generation in software. | 1293 | * generation in software. |
1277 | * @IEEE80211_KEY_FLAG_PAIRWISE: Set by mac80211, this flag indicates | 1294 | * @IEEE80211_KEY_FLAG_PAIRWISE: Set by mac80211, this flag indicates |
1278 | * that the key is pairwise rather then a shared key. | 1295 | * that the key is pairwise rather then a shared key. |
1279 | * @IEEE80211_KEY_FLAG_SW_MGMT_TX: This flag should be set by the driver for a | 1296 | * @IEEE80211_KEY_FLAG_SW_MGMT_TX: This flag should be set by the driver for a |
1280 | * CCMP key if it requires CCMP encryption of management frames (MFP) to | 1297 | * CCMP/GCMP key if it requires CCMP/GCMP encryption of management frames |
1281 | * be done in software. | 1298 | * (MFP) to be done in software. |
1282 | * @IEEE80211_KEY_FLAG_PUT_IV_SPACE: This flag should be set by the driver | 1299 | * @IEEE80211_KEY_FLAG_PUT_IV_SPACE: This flag should be set by the driver |
1283 | * if space should be prepared for the IV, but the IV | 1300 | * if space should be prepared for the IV, but the IV |
1284 | * itself should not be generated. Do not set together with | 1301 | * itself should not be generated. Do not set together with |
1285 | * @IEEE80211_KEY_FLAG_GENERATE_IV on the same key. | 1302 | * @IEEE80211_KEY_FLAG_GENERATE_IV on the same key. Setting this flag does |
1303 | * not necessarily mean that SKBs will have sufficient tailroom for ICV or | ||
1304 | * MIC. | ||
1286 | * @IEEE80211_KEY_FLAG_RX_MGMT: This key will be used to decrypt received | 1305 | * @IEEE80211_KEY_FLAG_RX_MGMT: This key will be used to decrypt received |
1287 | * management frames. The flag can help drivers that have a hardware | 1306 | * management frames. The flag can help drivers that have a hardware |
1288 | * crypto implementation that doesn't deal with management frames | 1307 | * crypto implementation that doesn't deal with management frames |
@@ -1291,8 +1310,11 @@ struct ieee80211_vif *wdev_to_ieee80211_vif(struct wireless_dev *wdev); | |||
1291 | * RX, if your crypto engine can't deal with TX you can also set the | 1310 | * RX, if your crypto engine can't deal with TX you can also set the |
1292 | * %IEEE80211_KEY_FLAG_SW_MGMT_TX flag to encrypt such frames in SW. | 1311 | * %IEEE80211_KEY_FLAG_SW_MGMT_TX flag to encrypt such frames in SW. |
1293 | * @IEEE80211_KEY_FLAG_GENERATE_IV_MGMT: This flag should be set by the | 1312 | * @IEEE80211_KEY_FLAG_GENERATE_IV_MGMT: This flag should be set by the |
1294 | * driver for a CCMP key to indicate that is requires IV generation | 1313 | * driver for a CCMP/GCMP key to indicate that is requires IV generation |
1295 | * only for managment frames (MFP). | 1314 | * only for managment frames (MFP). |
1315 | * @IEEE80211_KEY_FLAG_RESERVE_TAILROOM: This flag should be set by the | ||
1316 | * driver for a key to indicate that sufficient tailroom must always | ||
1317 | * be reserved for ICV or MIC, even when HW encryption is enabled. | ||
1296 | */ | 1318 | */ |
1297 | enum ieee80211_key_flags { | 1319 | enum ieee80211_key_flags { |
1298 | IEEE80211_KEY_FLAG_GENERATE_IV_MGMT = BIT(0), | 1320 | IEEE80211_KEY_FLAG_GENERATE_IV_MGMT = BIT(0), |
@@ -1302,6 +1324,7 @@ enum ieee80211_key_flags { | |||
1302 | IEEE80211_KEY_FLAG_SW_MGMT_TX = BIT(4), | 1324 | IEEE80211_KEY_FLAG_SW_MGMT_TX = BIT(4), |
1303 | IEEE80211_KEY_FLAG_PUT_IV_SPACE = BIT(5), | 1325 | IEEE80211_KEY_FLAG_PUT_IV_SPACE = BIT(5), |
1304 | IEEE80211_KEY_FLAG_RX_MGMT = BIT(6), | 1326 | IEEE80211_KEY_FLAG_RX_MGMT = BIT(6), |
1327 | IEEE80211_KEY_FLAG_RESERVE_TAILROOM = BIT(7), | ||
1305 | }; | 1328 | }; |
1306 | 1329 | ||
1307 | /** | 1330 | /** |
@@ -1580,11 +1603,6 @@ struct ieee80211_tx_control { | |||
1580 | * @IEEE80211_HW_MFP_CAPABLE: | 1603 | * @IEEE80211_HW_MFP_CAPABLE: |
1581 | * Hardware supports management frame protection (MFP, IEEE 802.11w). | 1604 | * Hardware supports management frame protection (MFP, IEEE 802.11w). |
1582 | * | 1605 | * |
1583 | * @IEEE80211_HW_SUPPORTS_UAPSD: | ||
1584 | * Hardware supports Unscheduled Automatic Power Save Delivery | ||
1585 | * (U-APSD) in managed mode. The mode is configured with | ||
1586 | * conf_tx() operation. | ||
1587 | * | ||
1588 | * @IEEE80211_HW_REPORTS_TX_ACK_STATUS: | 1606 | * @IEEE80211_HW_REPORTS_TX_ACK_STATUS: |
1589 | * Hardware can provide ack status reports of Tx frames to | 1607 | * Hardware can provide ack status reports of Tx frames to |
1590 | * the stack. | 1608 | * the stack. |
@@ -1623,6 +1641,12 @@ struct ieee80211_tx_control { | |||
1623 | * be created. It is expected user-space will create vifs as | 1641 | * be created. It is expected user-space will create vifs as |
1624 | * desired (and thus have them named as desired). | 1642 | * desired (and thus have them named as desired). |
1625 | * | 1643 | * |
1644 | * @IEEE80211_HW_SW_CRYPTO_CONTROL: The driver wants to control which of the | ||
1645 | * crypto algorithms can be done in software - so don't automatically | ||
1646 | * try to fall back to it if hardware crypto fails, but do so only if | ||
1647 | * the driver returns 1. This also forces the driver to advertise its | ||
1648 | * supported cipher suites. | ||
1649 | * | ||
1626 | * @IEEE80211_HW_QUEUE_CONTROL: The driver wants to control per-interface | 1650 | * @IEEE80211_HW_QUEUE_CONTROL: The driver wants to control per-interface |
1627 | * queue mapping in order to use different queues (not just one per AC) | 1651 | * queue mapping in order to use different queues (not just one per AC) |
1628 | * for different virtual interfaces. See the doc section on HW queue | 1652 | * for different virtual interfaces. See the doc section on HW queue |
@@ -1670,8 +1694,8 @@ enum ieee80211_hw_flags { | |||
1670 | IEEE80211_HW_MFP_CAPABLE = 1<<13, | 1694 | IEEE80211_HW_MFP_CAPABLE = 1<<13, |
1671 | IEEE80211_HW_WANT_MONITOR_VIF = 1<<14, | 1695 | IEEE80211_HW_WANT_MONITOR_VIF = 1<<14, |
1672 | IEEE80211_HW_NO_AUTO_VIF = 1<<15, | 1696 | IEEE80211_HW_NO_AUTO_VIF = 1<<15, |
1673 | /* free slot */ | 1697 | IEEE80211_HW_SW_CRYPTO_CONTROL = 1<<16, |
1674 | IEEE80211_HW_SUPPORTS_UAPSD = 1<<17, | 1698 | /* free slots */ |
1675 | IEEE80211_HW_REPORTS_TX_ACK_STATUS = 1<<18, | 1699 | IEEE80211_HW_REPORTS_TX_ACK_STATUS = 1<<18, |
1676 | IEEE80211_HW_CONNECTION_MONITOR = 1<<19, | 1700 | IEEE80211_HW_CONNECTION_MONITOR = 1<<19, |
1677 | IEEE80211_HW_QUEUE_CONTROL = 1<<20, | 1701 | IEEE80211_HW_QUEUE_CONTROL = 1<<20, |
@@ -1945,6 +1969,11 @@ void ieee80211_free_txskb(struct ieee80211_hw *hw, struct sk_buff *skb); | |||
1945 | * added; if you return 0 then hw_key_idx must be assigned to the | 1969 | * added; if you return 0 then hw_key_idx must be assigned to the |
1946 | * hardware key index, you are free to use the full u8 range. | 1970 | * hardware key index, you are free to use the full u8 range. |
1947 | * | 1971 | * |
1972 | * Note that in the case that the @IEEE80211_HW_SW_CRYPTO_CONTROL flag is | ||
1973 | * set, mac80211 will not automatically fall back to software crypto if | ||
1974 | * enabling hardware crypto failed. The set_key() call may also return the | ||
1975 | * value 1 to permit this specific key/algorithm to be done in software. | ||
1976 | * | ||
1948 | * When the cmd is %DISABLE_KEY then it must succeed. | 1977 | * When the cmd is %DISABLE_KEY then it must succeed. |
1949 | * | 1978 | * |
1950 | * Note that it is permissible to not decrypt a frame even if a key | 1979 | * Note that it is permissible to not decrypt a frame even if a key |
@@ -2023,7 +2052,7 @@ void ieee80211_free_txskb(struct ieee80211_hw *hw, struct sk_buff *skb); | |||
2023 | * enabled whenever user has enabled powersave. | 2052 | * enabled whenever user has enabled powersave. |
2024 | * | 2053 | * |
2025 | * Driver informs U-APSD client support by enabling | 2054 | * Driver informs U-APSD client support by enabling |
2026 | * %IEEE80211_HW_SUPPORTS_UAPSD flag. The mode is configured through the | 2055 | * %IEEE80211_VIF_SUPPORTS_UAPSD flag. The mode is configured through the |
2027 | * uapsd parameter in conf_tx() operation. Hardware needs to send the QoS | 2056 | * uapsd parameter in conf_tx() operation. Hardware needs to send the QoS |
2028 | * Nullfunc frames and stay awake until the service period has ended. To | 2057 | * Nullfunc frames and stay awake until the service period has ended. To |
2029 | * utilize U-APSD, dynamic powersave is disabled for voip AC and all frames | 2058 | * utilize U-APSD, dynamic powersave is disabled for voip AC and all frames |
@@ -2696,6 +2725,14 @@ enum ieee80211_reconfig_type { | |||
2696 | * is only used if the configured rate control algorithm actually uses | 2725 | * is only used if the configured rate control algorithm actually uses |
2697 | * the new rate table API, and is therefore optional. Must be atomic. | 2726 | * the new rate table API, and is therefore optional. Must be atomic. |
2698 | * | 2727 | * |
2728 | * @sta_statistics: Get statistics for this station. For example with beacon | ||
2729 | * filtering, the statistics kept by mac80211 might not be accurate, so | ||
2730 | * let the driver pre-fill the statistics. The driver can fill most of | ||
2731 | * the values (indicating which by setting the filled bitmap), but not | ||
2732 | * all of them make sense - see the source for which ones are possible. | ||
2733 | * Statistics that the driver doesn't fill will be filled by mac80211. | ||
2734 | * The callback can sleep. | ||
2735 | * | ||
2699 | * @conf_tx: Configure TX queue parameters (EDCF (aifs, cw_min, cw_max), | 2736 | * @conf_tx: Configure TX queue parameters (EDCF (aifs, cw_min, cw_max), |
2700 | * bursting) for a hardware TX queue. | 2737 | * bursting) for a hardware TX queue. |
2701 | * Returns a negative error code on failure. | 2738 | * Returns a negative error code on failure. |
@@ -2856,9 +2893,6 @@ enum ieee80211_reconfig_type { | |||
2856 | * @get_et_strings: Ethtool API to get a set of strings to describe stats | 2893 | * @get_et_strings: Ethtool API to get a set of strings to describe stats |
2857 | * and perhaps other supported types of ethtool data-sets. | 2894 | * and perhaps other supported types of ethtool data-sets. |
2858 | * | 2895 | * |
2859 | * @get_rssi: Get current signal strength in dBm, the function is optional | ||
2860 | * and can sleep. | ||
2861 | * | ||
2862 | * @mgd_prepare_tx: Prepare for transmitting a management frame for association | 2896 | * @mgd_prepare_tx: Prepare for transmitting a management frame for association |
2863 | * before associated. In multi-channel scenarios, a virtual interface is | 2897 | * before associated. In multi-channel scenarios, a virtual interface is |
2864 | * bound to a channel before it is associated, but as it isn't associated | 2898 | * bound to a channel before it is associated, but as it isn't associated |
@@ -3059,6 +3093,10 @@ struct ieee80211_ops { | |||
3059 | void (*sta_rate_tbl_update)(struct ieee80211_hw *hw, | 3093 | void (*sta_rate_tbl_update)(struct ieee80211_hw *hw, |
3060 | struct ieee80211_vif *vif, | 3094 | struct ieee80211_vif *vif, |
3061 | struct ieee80211_sta *sta); | 3095 | struct ieee80211_sta *sta); |
3096 | void (*sta_statistics)(struct ieee80211_hw *hw, | ||
3097 | struct ieee80211_vif *vif, | ||
3098 | struct ieee80211_sta *sta, | ||
3099 | struct station_info *sinfo); | ||
3062 | int (*conf_tx)(struct ieee80211_hw *hw, | 3100 | int (*conf_tx)(struct ieee80211_hw *hw, |
3063 | struct ieee80211_vif *vif, u16 ac, | 3101 | struct ieee80211_vif *vif, u16 ac, |
3064 | const struct ieee80211_tx_queue_params *params); | 3102 | const struct ieee80211_tx_queue_params *params); |
@@ -3126,8 +3164,6 @@ struct ieee80211_ops { | |||
3126 | void (*get_et_strings)(struct ieee80211_hw *hw, | 3164 | void (*get_et_strings)(struct ieee80211_hw *hw, |
3127 | struct ieee80211_vif *vif, | 3165 | struct ieee80211_vif *vif, |
3128 | u32 sset, u8 *data); | 3166 | u32 sset, u8 *data); |
3129 | int (*get_rssi)(struct ieee80211_hw *hw, struct ieee80211_vif *vif, | ||
3130 | struct ieee80211_sta *sta, s8 *rssi_dbm); | ||
3131 | 3167 | ||
3132 | void (*mgd_prepare_tx)(struct ieee80211_hw *hw, | 3168 | void (*mgd_prepare_tx)(struct ieee80211_hw *hw, |
3133 | struct ieee80211_vif *vif); | 3169 | struct ieee80211_vif *vif); |
@@ -4062,6 +4098,10 @@ void ieee80211_aes_cmac_calculate_k1_k2(struct ieee80211_key_conf *keyconf, | |||
4062 | * reverse order than in packet) | 4098 | * reverse order than in packet) |
4063 | * @aes_cmac: PN data, most significant byte first (big endian, | 4099 | * @aes_cmac: PN data, most significant byte first (big endian, |
4064 | * reverse order than in packet) | 4100 | * reverse order than in packet) |
4101 | * @aes_gmac: PN data, most significant byte first (big endian, | ||
4102 | * reverse order than in packet) | ||
4103 | * @gcmp: PN data, most significant byte first (big endian, | ||
4104 | * reverse order than in packet) | ||
4065 | */ | 4105 | */ |
4066 | struct ieee80211_key_seq { | 4106 | struct ieee80211_key_seq { |
4067 | union { | 4107 | union { |
@@ -4075,6 +4115,12 @@ struct ieee80211_key_seq { | |||
4075 | struct { | 4115 | struct { |
4076 | u8 pn[6]; | 4116 | u8 pn[6]; |
4077 | } aes_cmac; | 4117 | } aes_cmac; |
4118 | struct { | ||
4119 | u8 pn[6]; | ||
4120 | } aes_gmac; | ||
4121 | struct { | ||
4122 | u8 pn[6]; | ||
4123 | } gcmp; | ||
4078 | }; | 4124 | }; |
4079 | }; | 4125 | }; |
4080 | 4126 | ||
@@ -4099,7 +4145,7 @@ void ieee80211_get_key_tx_seq(struct ieee80211_key_conf *keyconf, | |||
4099 | * ieee80211_get_key_rx_seq - get key RX sequence counter | 4145 | * ieee80211_get_key_rx_seq - get key RX sequence counter |
4100 | * | 4146 | * |
4101 | * @keyconf: the parameter passed with the set key | 4147 | * @keyconf: the parameter passed with the set key |
4102 | * @tid: The TID, or -1 for the management frame value (CCMP only); | 4148 | * @tid: The TID, or -1 for the management frame value (CCMP/GCMP only); |
4103 | * the value on TID 0 is also used for non-QoS frames. For | 4149 | * the value on TID 0 is also used for non-QoS frames. For |
4104 | * CMAC, only TID 0 is valid. | 4150 | * CMAC, only TID 0 is valid. |
4105 | * @seq: buffer to receive the sequence data | 4151 | * @seq: buffer to receive the sequence data |
@@ -4135,7 +4181,7 @@ void ieee80211_set_key_tx_seq(struct ieee80211_key_conf *keyconf, | |||
4135 | * ieee80211_set_key_rx_seq - set key RX sequence counter | 4181 | * ieee80211_set_key_rx_seq - set key RX sequence counter |
4136 | * | 4182 | * |
4137 | * @keyconf: the parameter passed with the set key | 4183 | * @keyconf: the parameter passed with the set key |
4138 | * @tid: The TID, or -1 for the management frame value (CCMP only); | 4184 | * @tid: The TID, or -1 for the management frame value (CCMP/GCMP only); |
4139 | * the value on TID 0 is also used for non-QoS frames. For | 4185 | * the value on TID 0 is also used for non-QoS frames. For |
4140 | * CMAC, only TID 0 is valid. | 4186 | * CMAC, only TID 0 is valid. |
4141 | * @seq: new sequence data | 4187 | * @seq: new sequence data |