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.h42
1 files changed, 42 insertions, 0 deletions
diff --git a/include/net/mac80211.h b/include/net/mac80211.h
index cc6035f1a2f1..f386c480e134 100644
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -829,6 +829,15 @@ ieee80211_tx_info_clear_status(struct ieee80211_tx_info *info)
829 * @RX_FLAG_STBC_MASK: STBC 2 bit bitmask. 1 - Nss=1, 2 - Nss=2, 3 - Nss=3 829 * @RX_FLAG_STBC_MASK: STBC 2 bit bitmask. 1 - Nss=1, 2 - Nss=2, 3 - Nss=3
830 * @RX_FLAG_10MHZ: 10 MHz (half channel) was used 830 * @RX_FLAG_10MHZ: 10 MHz (half channel) was used
831 * @RX_FLAG_5MHZ: 5 MHz (quarter channel) was used 831 * @RX_FLAG_5MHZ: 5 MHz (quarter channel) was used
832 * @RX_FLAG_AMSDU_MORE: Some drivers may prefer to report separate A-MSDU
833 * subframes instead of a one huge frame for performance reasons.
834 * All, but the last MSDU from an A-MSDU should have this flag set. E.g.
835 * if an A-MSDU has 3 frames, the first 2 must have the flag set, while
836 * the 3rd (last) one must not have this flag set. The flag is used to
837 * deal with retransmission/duplication recovery properly since A-MSDU
838 * subframes share the same sequence number. Reported subframes can be
839 * either regular MSDU or singly A-MSDUs. Subframes must not be
840 * interleaved with other frames.
832 */ 841 */
833enum mac80211_rx_flags { 842enum mac80211_rx_flags {
834 RX_FLAG_MMIC_ERROR = BIT(0), 843 RX_FLAG_MMIC_ERROR = BIT(0),
@@ -859,6 +868,7 @@ enum mac80211_rx_flags {
859 RX_FLAG_STBC_MASK = BIT(26) | BIT(27), 868 RX_FLAG_STBC_MASK = BIT(26) | BIT(27),
860 RX_FLAG_10MHZ = BIT(28), 869 RX_FLAG_10MHZ = BIT(28),
861 RX_FLAG_5MHZ = BIT(29), 870 RX_FLAG_5MHZ = BIT(29),
871 RX_FLAG_AMSDU_MORE = BIT(30),
862}; 872};
863 873
864#define RX_FLAG_STBC_SHIFT 26 874#define RX_FLAG_STBC_SHIFT 26
@@ -1492,6 +1502,11 @@ struct ieee80211_tx_control {
1492 * 1502 *
1493 * @IEEE80211_HW_TIMING_BEACON_ONLY: Use sync timing from beacon frames 1503 * @IEEE80211_HW_TIMING_BEACON_ONLY: Use sync timing from beacon frames
1494 * only, to allow getting TBTT of a DTIM beacon. 1504 * only, to allow getting TBTT of a DTIM beacon.
1505 *
1506 * @IEEE80211_HW_CHANCTX_STA_CSA: Support 802.11h based channel-switch (CSA)
1507 * for a single active channel while using channel contexts. When support
1508 * is not enabled the default action is to disconnect when getting the
1509 * CSA frame.
1495 */ 1510 */
1496enum ieee80211_hw_flags { 1511enum ieee80211_hw_flags {
1497 IEEE80211_HW_HAS_RATE_CONTROL = 1<<0, 1512 IEEE80211_HW_HAS_RATE_CONTROL = 1<<0,
@@ -1522,6 +1537,7 @@ enum ieee80211_hw_flags {
1522 IEEE80211_HW_P2P_DEV_ADDR_FOR_INTF = 1<<25, 1537 IEEE80211_HW_P2P_DEV_ADDR_FOR_INTF = 1<<25,
1523 IEEE80211_HW_TIMING_BEACON_ONLY = 1<<26, 1538 IEEE80211_HW_TIMING_BEACON_ONLY = 1<<26,
1524 IEEE80211_HW_SUPPORTS_HT_CCK_RATES = 1<<27, 1539 IEEE80211_HW_SUPPORTS_HT_CCK_RATES = 1<<27,
1540 IEEE80211_HW_CHANCTX_STA_CSA = 1<<28,
1525}; 1541};
1526 1542
1527/** 1543/**
@@ -2666,6 +2682,10 @@ enum ieee80211_roc_type {
2666 * zero using ieee80211_csa_is_complete() after the beacon has been 2682 * zero using ieee80211_csa_is_complete() after the beacon has been
2667 * transmitted and then call ieee80211_csa_finish(). 2683 * transmitted and then call ieee80211_csa_finish().
2668 * 2684 *
2685 * @join_ibss: Join an IBSS (on an IBSS interface); this is called after all
2686 * information in bss_conf is set up and the beacon can be retrieved. A
2687 * channel context is bound before this is called.
2688 * @leave_ibss: Leave the IBSS again.
2669 */ 2689 */
2670struct ieee80211_ops { 2690struct ieee80211_ops {
2671 void (*tx)(struct ieee80211_hw *hw, 2691 void (*tx)(struct ieee80211_hw *hw,
@@ -2857,6 +2877,9 @@ struct ieee80211_ops {
2857 void (*channel_switch_beacon)(struct ieee80211_hw *hw, 2877 void (*channel_switch_beacon)(struct ieee80211_hw *hw,
2858 struct ieee80211_vif *vif, 2878 struct ieee80211_vif *vif,
2859 struct cfg80211_chan_def *chandef); 2879 struct cfg80211_chan_def *chandef);
2880
2881 int (*join_ibss)(struct ieee80211_hw *hw, struct ieee80211_vif *vif);
2882 void (*leave_ibss)(struct ieee80211_hw *hw, struct ieee80211_vif *vif);
2860}; 2883};
2861 2884
2862/** 2885/**
@@ -3920,6 +3943,25 @@ void ieee80211_iterate_active_interfaces_atomic(struct ieee80211_hw *hw,
3920 void *data); 3943 void *data);
3921 3944
3922/** 3945/**
3946 * ieee80211_iterate_active_interfaces_rtnl - iterate active interfaces
3947 *
3948 * This function iterates over the interfaces associated with a given
3949 * hardware that are currently active and calls the callback for them.
3950 * This version can only be used while holding the RTNL.
3951 *
3952 * @hw: the hardware struct of which the interfaces should be iterated over
3953 * @iter_flags: iteration flags, see &enum ieee80211_interface_iteration_flags
3954 * @iterator: the iterator function to call, cannot sleep
3955 * @data: first argument of the iterator function
3956 */
3957void ieee80211_iterate_active_interfaces_rtnl(struct ieee80211_hw *hw,
3958 u32 iter_flags,
3959 void (*iterator)(void *data,
3960 u8 *mac,
3961 struct ieee80211_vif *vif),
3962 void *data);
3963
3964/**
3923 * ieee80211_queue_work - add work onto the mac80211 workqueue 3965 * ieee80211_queue_work - add work onto the mac80211 workqueue
3924 * 3966 *
3925 * Drivers and mac80211 use this to add work onto the mac80211 workqueue. 3967 * Drivers and mac80211 use this to add work onto the mac80211 workqueue.