diff options
Diffstat (limited to 'include/net/mac80211.h')
-rw-r--r-- | include/net/mac80211.h | 49 |
1 files changed, 39 insertions, 10 deletions
diff --git a/include/net/mac80211.h b/include/net/mac80211.h index bfc569498bfa..82045fca388b 100644 --- a/include/net/mac80211.h +++ b/include/net/mac80211.h | |||
@@ -5,6 +5,7 @@ | |||
5 | * Copyright 2006-2007 Jiri Benc <jbenc@suse.cz> | 5 | * Copyright 2006-2007 Jiri Benc <jbenc@suse.cz> |
6 | * Copyright 2007-2010 Johannes Berg <johannes@sipsolutions.net> | 6 | * Copyright 2007-2010 Johannes Berg <johannes@sipsolutions.net> |
7 | * Copyright 2013-2014 Intel Mobile Communications GmbH | 7 | * Copyright 2013-2014 Intel Mobile Communications GmbH |
8 | * Copyright (C) 2015 Intel Deutschland GmbH | ||
8 | * | 9 | * |
9 | * This program is free software; you can redistribute it and/or modify | 10 | * This program is free software; you can redistribute it and/or modify |
10 | * it under the terms of the GNU General Public License version 2 as | 11 | * it under the terms of the GNU General Public License version 2 as |
@@ -481,7 +482,9 @@ struct ieee80211_event { | |||
481 | * Note that with TDLS this can be the case (channel is HT, protection must | 482 | * Note that with TDLS this can be the case (channel is HT, protection must |
482 | * be used from this field) even when the BSS association isn't using HT. | 483 | * be used from this field) even when the BSS association isn't using HT. |
483 | * @cqm_rssi_thold: Connection quality monitor RSSI threshold, a zero value | 484 | * @cqm_rssi_thold: Connection quality monitor RSSI threshold, a zero value |
484 | * implies disabled | 485 | * implies disabled. As with the cfg80211 callback, a change here should |
486 | * cause an event to be sent indicating where the current value is in | ||
487 | * relation to the newly configured threshold. | ||
485 | * @cqm_rssi_hyst: Connection quality monitor RSSI hysteresis | 488 | * @cqm_rssi_hyst: Connection quality monitor RSSI hysteresis |
486 | * @arp_addr_list: List of IPv4 addresses for hardware ARP filtering. The | 489 | * @arp_addr_list: List of IPv4 addresses for hardware ARP filtering. The |
487 | * may filter ARP queries targeted for other addresses than listed here. | 490 | * may filter ARP queries targeted for other addresses than listed here. |
@@ -1240,11 +1243,6 @@ enum ieee80211_smps_mode { | |||
1240 | * @flags: configuration flags defined above | 1243 | * @flags: configuration flags defined above |
1241 | * | 1244 | * |
1242 | * @listen_interval: listen interval in units of beacon interval | 1245 | * @listen_interval: listen interval in units of beacon interval |
1243 | * @max_sleep_period: the maximum number of beacon intervals to sleep for | ||
1244 | * before checking the beacon for a TIM bit (managed mode only); this | ||
1245 | * value will be only achievable between DTIM frames, the hardware | ||
1246 | * needs to check for the multicast traffic bit in DTIM beacons. | ||
1247 | * This variable is valid only when the CONF_PS flag is set. | ||
1248 | * @ps_dtim_period: The DTIM period of the AP we're connected to, for use | 1246 | * @ps_dtim_period: The DTIM period of the AP we're connected to, for use |
1249 | * in power saving. Power saving will not be enabled until a beacon | 1247 | * in power saving. Power saving will not be enabled until a beacon |
1250 | * has been received and the DTIM period is known. | 1248 | * has been received and the DTIM period is known. |
@@ -1274,7 +1272,6 @@ enum ieee80211_smps_mode { | |||
1274 | struct ieee80211_conf { | 1272 | struct ieee80211_conf { |
1275 | u32 flags; | 1273 | u32 flags; |
1276 | int power_level, dynamic_ps_timeout; | 1274 | int power_level, dynamic_ps_timeout; |
1277 | int max_sleep_period; | ||
1278 | 1275 | ||
1279 | u16 listen_interval; | 1276 | u16 listen_interval; |
1280 | u8 ps_dtim_period; | 1277 | u8 ps_dtim_period; |
@@ -1360,6 +1357,8 @@ enum ieee80211_vif_flags { | |||
1360 | * @debugfs_dir: debugfs dentry, can be used by drivers to create own per | 1357 | * @debugfs_dir: debugfs dentry, can be used by drivers to create own per |
1361 | * interface debug files. Note that it will be NULL for the virtual | 1358 | * interface debug files. Note that it will be NULL for the virtual |
1362 | * monitor interface (if that is requested.) | 1359 | * monitor interface (if that is requested.) |
1360 | * @probe_req_reg: probe requests should be reported to mac80211 for this | ||
1361 | * interface. | ||
1363 | * @drv_priv: data area for driver use, will always be aligned to | 1362 | * @drv_priv: data area for driver use, will always be aligned to |
1364 | * sizeof(void *). | 1363 | * sizeof(void *). |
1365 | * @txq: the multicast data TX queue (if driver uses the TXQ abstraction) | 1364 | * @txq: the multicast data TX queue (if driver uses the TXQ abstraction) |
@@ -1384,6 +1383,8 @@ struct ieee80211_vif { | |||
1384 | struct dentry *debugfs_dir; | 1383 | struct dentry *debugfs_dir; |
1385 | #endif | 1384 | #endif |
1386 | 1385 | ||
1386 | unsigned int probe_req_reg; | ||
1387 | |||
1387 | /* must be last */ | 1388 | /* must be last */ |
1388 | u8 drv_priv[0] __aligned(sizeof(void *)); | 1389 | u8 drv_priv[0] __aligned(sizeof(void *)); |
1389 | }; | 1390 | }; |
@@ -1494,10 +1495,8 @@ enum ieee80211_key_flags { | |||
1494 | * - Temporal Authenticator Rx MIC Key (64 bits) | 1495 | * - Temporal Authenticator Rx MIC Key (64 bits) |
1495 | * @icv_len: The ICV length for this key type | 1496 | * @icv_len: The ICV length for this key type |
1496 | * @iv_len: The IV length for this key type | 1497 | * @iv_len: The IV length for this key type |
1497 | * @drv_priv: pointer for driver use | ||
1498 | */ | 1498 | */ |
1499 | struct ieee80211_key_conf { | 1499 | struct ieee80211_key_conf { |
1500 | void *drv_priv; | ||
1501 | atomic64_t tx_pn; | 1500 | atomic64_t tx_pn; |
1502 | u32 cipher; | 1501 | u32 cipher; |
1503 | u8 icv_len; | 1502 | u8 icv_len; |
@@ -1680,6 +1679,7 @@ struct ieee80211_sta_rates { | |||
1680 | * @tdls: indicates whether the STA is a TDLS peer | 1679 | * @tdls: indicates whether the STA is a TDLS peer |
1681 | * @tdls_initiator: indicates the STA is an initiator of the TDLS link. Only | 1680 | * @tdls_initiator: indicates the STA is an initiator of the TDLS link. Only |
1682 | * valid if the STA is a TDLS peer in the first place. | 1681 | * valid if the STA is a TDLS peer in the first place. |
1682 | * @mfp: indicates whether the STA uses management frame protection or not. | ||
1683 | * @txq: per-TID data TX queues (if driver uses the TXQ abstraction) | 1683 | * @txq: per-TID data TX queues (if driver uses the TXQ abstraction) |
1684 | */ | 1684 | */ |
1685 | struct ieee80211_sta { | 1685 | struct ieee80211_sta { |
@@ -1697,6 +1697,7 @@ struct ieee80211_sta { | |||
1697 | struct ieee80211_sta_rates __rcu *rates; | 1697 | struct ieee80211_sta_rates __rcu *rates; |
1698 | bool tdls; | 1698 | bool tdls; |
1699 | bool tdls_initiator; | 1699 | bool tdls_initiator; |
1700 | bool mfp; | ||
1700 | 1701 | ||
1701 | struct ieee80211_txq *txq[IEEE80211_NUM_TIDS]; | 1702 | struct ieee80211_txq *txq[IEEE80211_NUM_TIDS]; |
1702 | 1703 | ||
@@ -1894,6 +1895,12 @@ struct ieee80211_txq { | |||
1894 | * @IEEE80211_HW_TDLS_WIDER_BW: The device/driver supports wider bandwidth | 1895 | * @IEEE80211_HW_TDLS_WIDER_BW: The device/driver supports wider bandwidth |
1895 | * than then BSS bandwidth for a TDLS link on the base channel. | 1896 | * than then BSS bandwidth for a TDLS link on the base channel. |
1896 | * | 1897 | * |
1898 | * @IEEE80211_HW_SUPPORTS_AMSDU_IN_AMPDU: The driver supports receiving A-MSDUs | ||
1899 | * within A-MPDU. | ||
1900 | * | ||
1901 | * @IEEE80211_HW_BEACON_TX_STATUS: The device/driver provides TX status | ||
1902 | * for sent beacons. | ||
1903 | * | ||
1897 | * @NUM_IEEE80211_HW_FLAGS: number of hardware flags, used for sizing arrays | 1904 | * @NUM_IEEE80211_HW_FLAGS: number of hardware flags, used for sizing arrays |
1898 | */ | 1905 | */ |
1899 | enum ieee80211_hw_flags { | 1906 | enum ieee80211_hw_flags { |
@@ -1927,6 +1934,8 @@ enum ieee80211_hw_flags { | |||
1927 | IEEE80211_HW_SUPPORTS_CLONED_SKBS, | 1934 | IEEE80211_HW_SUPPORTS_CLONED_SKBS, |
1928 | IEEE80211_HW_SINGLE_SCAN_ON_ALL_BANDS, | 1935 | IEEE80211_HW_SINGLE_SCAN_ON_ALL_BANDS, |
1929 | IEEE80211_HW_TDLS_WIDER_BW, | 1936 | IEEE80211_HW_TDLS_WIDER_BW, |
1937 | IEEE80211_HW_SUPPORTS_AMSDU_IN_AMPDU, | ||
1938 | IEEE80211_HW_BEACON_TX_STATUS, | ||
1930 | 1939 | ||
1931 | /* keep last, obviously */ | 1940 | /* keep last, obviously */ |
1932 | NUM_IEEE80211_HW_FLAGS | 1941 | NUM_IEEE80211_HW_FLAGS |
@@ -2827,6 +2836,13 @@ enum ieee80211_reconfig_type { | |||
2827 | * See the section "Frame filtering" for more information. | 2836 | * See the section "Frame filtering" for more information. |
2828 | * This callback must be implemented and can sleep. | 2837 | * This callback must be implemented and can sleep. |
2829 | * | 2838 | * |
2839 | * @config_iface_filter: Configure the interface's RX filter. | ||
2840 | * This callback is optional and is used to configure which frames | ||
2841 | * should be passed to mac80211. The filter_flags is the combination | ||
2842 | * of FIF_* flags. The changed_flags is a bit mask that indicates | ||
2843 | * which flags are changed. | ||
2844 | * This callback can sleep. | ||
2845 | * | ||
2830 | * @set_tim: Set TIM bit. mac80211 calls this function when a TIM bit | 2846 | * @set_tim: Set TIM bit. mac80211 calls this function when a TIM bit |
2831 | * must be set or cleared for a given STA. Must be atomic. | 2847 | * must be set or cleared for a given STA. Must be atomic. |
2832 | * | 2848 | * |
@@ -3016,6 +3032,9 @@ enum ieee80211_reconfig_type { | |||
3016 | * buffer size of 8. Correct ways to retransmit #1 would be: | 3032 | * buffer size of 8. Correct ways to retransmit #1 would be: |
3017 | * - TX: 1 or 18 or 81 | 3033 | * - TX: 1 or 18 or 81 |
3018 | * Even "189" would be wrong since 1 could be lost again. | 3034 | * Even "189" would be wrong since 1 could be lost again. |
3035 | * The @amsdu parameter is valid when the action is set to | ||
3036 | * %IEEE80211_AMPDU_TX_OPERATIONAL and indicates the peer's ability | ||
3037 | * to receive A-MSDU within A-MPDU. | ||
3019 | * | 3038 | * |
3020 | * Returns a negative error code on failure. | 3039 | * Returns a negative error code on failure. |
3021 | * The callback can sleep. | 3040 | * The callback can sleep. |
@@ -3153,18 +3172,24 @@ enum ieee80211_reconfig_type { | |||
3153 | * The callback is optional and can sleep. | 3172 | * The callback is optional and can sleep. |
3154 | * | 3173 | * |
3155 | * @add_chanctx: Notifies device driver about new channel context creation. | 3174 | * @add_chanctx: Notifies device driver about new channel context creation. |
3175 | * This callback may sleep. | ||
3156 | * @remove_chanctx: Notifies device driver about channel context destruction. | 3176 | * @remove_chanctx: Notifies device driver about channel context destruction. |
3177 | * This callback may sleep. | ||
3157 | * @change_chanctx: Notifies device driver about channel context changes that | 3178 | * @change_chanctx: Notifies device driver about channel context changes that |
3158 | * may happen when combining different virtual interfaces on the same | 3179 | * may happen when combining different virtual interfaces on the same |
3159 | * channel context with different settings | 3180 | * channel context with different settings |
3181 | * This callback may sleep. | ||
3160 | * @assign_vif_chanctx: Notifies device driver about channel context being bound | 3182 | * @assign_vif_chanctx: Notifies device driver about channel context being bound |
3161 | * to vif. Possible use is for hw queue remapping. | 3183 | * to vif. Possible use is for hw queue remapping. |
3184 | * This callback may sleep. | ||
3162 | * @unassign_vif_chanctx: Notifies device driver about channel context being | 3185 | * @unassign_vif_chanctx: Notifies device driver about channel context being |
3163 | * unbound from vif. | 3186 | * unbound from vif. |
3187 | * This callback may sleep. | ||
3164 | * @switch_vif_chanctx: switch a number of vifs from one chanctx to | 3188 | * @switch_vif_chanctx: switch a number of vifs from one chanctx to |
3165 | * another, as specified in the list of | 3189 | * another, as specified in the list of |
3166 | * @ieee80211_vif_chanctx_switch passed to the driver, according | 3190 | * @ieee80211_vif_chanctx_switch passed to the driver, according |
3167 | * to the mode defined in &ieee80211_chanctx_switch_mode. | 3191 | * to the mode defined in &ieee80211_chanctx_switch_mode. |
3192 | * This callback may sleep. | ||
3168 | * | 3193 | * |
3169 | * @start_ap: Start operation on the AP interface, this is called after all the | 3194 | * @start_ap: Start operation on the AP interface, this is called after all the |
3170 | * information in bss_conf is set and beacon can be retrieved. A channel | 3195 | * information in bss_conf is set and beacon can be retrieved. A channel |
@@ -3266,6 +3291,10 @@ struct ieee80211_ops { | |||
3266 | unsigned int changed_flags, | 3291 | unsigned int changed_flags, |
3267 | unsigned int *total_flags, | 3292 | unsigned int *total_flags, |
3268 | u64 multicast); | 3293 | u64 multicast); |
3294 | void (*config_iface_filter)(struct ieee80211_hw *hw, | ||
3295 | struct ieee80211_vif *vif, | ||
3296 | unsigned int filter_flags, | ||
3297 | unsigned int changed_flags); | ||
3269 | int (*set_tim)(struct ieee80211_hw *hw, struct ieee80211_sta *sta, | 3298 | int (*set_tim)(struct ieee80211_hw *hw, struct ieee80211_sta *sta, |
3270 | bool set); | 3299 | bool set); |
3271 | int (*set_key)(struct ieee80211_hw *hw, enum set_key_cmd cmd, | 3300 | int (*set_key)(struct ieee80211_hw *hw, enum set_key_cmd cmd, |
@@ -3349,7 +3378,7 @@ struct ieee80211_ops { | |||
3349 | struct ieee80211_vif *vif, | 3378 | struct ieee80211_vif *vif, |
3350 | enum ieee80211_ampdu_mlme_action action, | 3379 | enum ieee80211_ampdu_mlme_action action, |
3351 | struct ieee80211_sta *sta, u16 tid, u16 *ssn, | 3380 | struct ieee80211_sta *sta, u16 tid, u16 *ssn, |
3352 | u8 buf_size); | 3381 | u8 buf_size, bool amsdu); |
3353 | int (*get_survey)(struct ieee80211_hw *hw, int idx, | 3382 | int (*get_survey)(struct ieee80211_hw *hw, int idx, |
3354 | struct survey_info *survey); | 3383 | struct survey_info *survey); |
3355 | void (*rfkill_poll)(struct ieee80211_hw *hw); | 3384 | void (*rfkill_poll)(struct ieee80211_hw *hw); |