aboutsummaryrefslogtreecommitdiffstats
path: root/include/net/mac80211.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/net/mac80211.h')
-rw-r--r--include/net/mac80211.h49
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 {
1274struct ieee80211_conf { 1272struct 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 */
1499struct ieee80211_key_conf { 1499struct 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 */
1685struct ieee80211_sta { 1685struct 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 */
1899enum ieee80211_hw_flags { 1906enum 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);