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.h51
1 files changed, 33 insertions, 18 deletions
diff --git a/include/net/mac80211.h b/include/net/mac80211.h
index 2c10eac637d8..3754ea405c88 100644
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -219,7 +219,7 @@ struct ieee80211_bss_conf {
219 * 219 *
220 * These flags are used with the @flags member of &ieee80211_tx_info. 220 * These flags are used with the @flags member of &ieee80211_tx_info.
221 * 221 *
222 * @IEEE80211_TX_CTL_REQ_TX_STATUS: request TX status callback for this frame. 222 * @IEEE80211_TX_CTL_REQ_TX_STATUS: require TX status callback for this frame.
223 * @IEEE80211_TX_CTL_ASSIGN_SEQ: The driver has to assign a sequence 223 * @IEEE80211_TX_CTL_ASSIGN_SEQ: The driver has to assign a sequence
224 * number to this frame, taking care of not overwriting the fragment 224 * number to this frame, taking care of not overwriting the fragment
225 * number and increasing the sequence number only when the 225 * number and increasing the sequence number only when the
@@ -390,10 +390,12 @@ struct ieee80211_tx_rate {
390 * @control: union for control data 390 * @control: union for control data
391 * @status: union for status data 391 * @status: union for status data
392 * @driver_data: array of driver_data pointers 392 * @driver_data: array of driver_data pointers
393 * @ampdu_ack_len: number of aggregated frames. 393 * @ampdu_ack_len: number of acked aggregated frames.
394 * relevant only if IEEE80211_TX_STATUS_AMPDU was set. 394 * relevant only if IEEE80211_TX_STATUS_AMPDU was set.
395 * @ampdu_ack_map: block ack bit map for the aggregation. 395 * @ampdu_ack_map: block ack bit map for the aggregation.
396 * relevant only if IEEE80211_TX_STATUS_AMPDU was set. 396 * relevant only if IEEE80211_TX_STATUS_AMPDU was set.
397 * @ampdu_len: number of aggregated frames.
398 * relevant only if IEEE80211_TX_STATUS_AMPDU was set.
397 * @ack_signal: signal strength of the ACK frame 399 * @ack_signal: signal strength of the ACK frame
398 */ 400 */
399struct ieee80211_tx_info { 401struct ieee80211_tx_info {
@@ -428,7 +430,8 @@ struct ieee80211_tx_info {
428 u8 ampdu_ack_len; 430 u8 ampdu_ack_len;
429 u64 ampdu_ack_map; 431 u64 ampdu_ack_map;
430 int ack_signal; 432 int ack_signal;
431 /* 8 bytes free */ 433 u8 ampdu_len;
434 /* 7 bytes free */
432 } status; 435 } status;
433 struct { 436 struct {
434 struct ieee80211_tx_rate driver_rates[ 437 struct ieee80211_tx_rate driver_rates[
@@ -852,6 +855,19 @@ enum ieee80211_tkip_key_type {
852 * any particular flags. There are some exceptions to this rule, 855 * any particular flags. There are some exceptions to this rule,
853 * however, so you are advised to review these flags carefully. 856 * however, so you are advised to review these flags carefully.
854 * 857 *
858 * @IEEE80211_HW_HAS_RATE_CONTROL:
859 * The hardware or firmware includes rate control, and cannot be
860 * controlled by the stack. As such, no rate control algorithm
861 * should be instantiated, and the TX rate reported to userspace
862 * will be taken from the TX status instead of the rate control
863 * algorithm.
864 * Note that this requires that the driver implement a number of
865 * callbacks so it has the correct information, it needs to have
866 * the @set_rts_threshold callback and must look at the BSS config
867 * @use_cts_prot for G/N protection, @use_short_slot for slot
868 * timing in 2.4 GHz and @use_short_preamble for preambles for
869 * CCK frames.
870 *
855 * @IEEE80211_HW_RX_INCLUDES_FCS: 871 * @IEEE80211_HW_RX_INCLUDES_FCS:
856 * Indicates that received frames passed to the stack include 872 * Indicates that received frames passed to the stack include
857 * the FCS at the end. 873 * the FCS at the end.
@@ -910,6 +926,7 @@ enum ieee80211_tkip_key_type {
910 * avoid waking up cpu. 926 * avoid waking up cpu.
911 */ 927 */
912enum ieee80211_hw_flags { 928enum ieee80211_hw_flags {
929 IEEE80211_HW_HAS_RATE_CONTROL = 1<<0,
913 IEEE80211_HW_RX_INCLUDES_FCS = 1<<1, 930 IEEE80211_HW_RX_INCLUDES_FCS = 1<<1,
914 IEEE80211_HW_HOST_BROADCAST_PS_BUFFERING = 1<<2, 931 IEEE80211_HW_HOST_BROADCAST_PS_BUFFERING = 1<<2,
915 IEEE80211_HW_2GHZ_SHORT_SLOT_INCAPABLE = 1<<3, 932 IEEE80211_HW_2GHZ_SHORT_SLOT_INCAPABLE = 1<<3,
@@ -1505,6 +1522,7 @@ struct ieee80211_ops {
1505 void (*reset_tsf)(struct ieee80211_hw *hw); 1522 void (*reset_tsf)(struct ieee80211_hw *hw);
1506 int (*tx_last_beacon)(struct ieee80211_hw *hw); 1523 int (*tx_last_beacon)(struct ieee80211_hw *hw);
1507 int (*ampdu_action)(struct ieee80211_hw *hw, 1524 int (*ampdu_action)(struct ieee80211_hw *hw,
1525 struct ieee80211_vif *vif,
1508 enum ieee80211_ampdu_mlme_action action, 1526 enum ieee80211_ampdu_mlme_action action,
1509 struct ieee80211_sta *sta, u16 tid, u16 *ssn); 1527 struct ieee80211_sta *sta, u16 tid, u16 *ssn);
1510 1528
@@ -2026,8 +2044,7 @@ void ieee80211_queue_delayed_work(struct ieee80211_hw *hw,
2026 2044
2027/** 2045/**
2028 * ieee80211_start_tx_ba_session - Start a tx Block Ack session. 2046 * ieee80211_start_tx_ba_session - Start a tx Block Ack session.
2029 * @hw: pointer as obtained from ieee80211_alloc_hw(). 2047 * @sta: the station for which to start a BA session
2030 * @ra: receiver address of the BA session recipient
2031 * @tid: the TID to BA on. 2048 * @tid: the TID to BA on.
2032 * 2049 *
2033 * Return: success if addBA request was sent, failure otherwise 2050 * Return: success if addBA request was sent, failure otherwise
@@ -2036,22 +2053,22 @@ void ieee80211_queue_delayed_work(struct ieee80211_hw *hw,
2036 * the need to start aggregation on a certain RA/TID, the session level 2053 * the need to start aggregation on a certain RA/TID, the session level
2037 * will be managed by the mac80211. 2054 * will be managed by the mac80211.
2038 */ 2055 */
2039int ieee80211_start_tx_ba_session(struct ieee80211_hw *hw, u8 *ra, u16 tid); 2056int ieee80211_start_tx_ba_session(struct ieee80211_sta *sta, u16 tid);
2040 2057
2041/** 2058/**
2042 * ieee80211_start_tx_ba_cb - low level driver ready to aggregate. 2059 * ieee80211_start_tx_ba_cb - low level driver ready to aggregate.
2043 * @hw: pointer as obtained from ieee80211_alloc_hw(). 2060 * @vif: &struct ieee80211_vif pointer from &struct ieee80211_if_init_conf
2044 * @ra: receiver address of the BA session recipient. 2061 * @ra: receiver address of the BA session recipient.
2045 * @tid: the TID to BA on. 2062 * @tid: the TID to BA on.
2046 * 2063 *
2047 * This function must be called by low level driver once it has 2064 * This function must be called by low level driver once it has
2048 * finished with preparations for the BA session. 2065 * finished with preparations for the BA session.
2049 */ 2066 */
2050void ieee80211_start_tx_ba_cb(struct ieee80211_hw *hw, u8 *ra, u16 tid); 2067void ieee80211_start_tx_ba_cb(struct ieee80211_vif *vif, u8 *ra, u16 tid);
2051 2068
2052/** 2069/**
2053 * ieee80211_start_tx_ba_cb_irqsafe - low level driver ready to aggregate. 2070 * ieee80211_start_tx_ba_cb_irqsafe - low level driver ready to aggregate.
2054 * @hw: pointer as obtained from ieee80211_alloc_hw(). 2071 * @vif: &struct ieee80211_vif pointer from &struct ieee80211_if_init_conf
2055 * @ra: receiver address of the BA session recipient. 2072 * @ra: receiver address of the BA session recipient.
2056 * @tid: the TID to BA on. 2073 * @tid: the TID to BA on.
2057 * 2074 *
@@ -2059,13 +2076,12 @@ void ieee80211_start_tx_ba_cb(struct ieee80211_hw *hw, u8 *ra, u16 tid);
2059 * finished with preparations for the BA session. 2076 * finished with preparations for the BA session.
2060 * This version of the function is IRQ-safe. 2077 * This version of the function is IRQ-safe.
2061 */ 2078 */
2062void ieee80211_start_tx_ba_cb_irqsafe(struct ieee80211_hw *hw, const u8 *ra, 2079void ieee80211_start_tx_ba_cb_irqsafe(struct ieee80211_vif *vif, const u8 *ra,
2063 u16 tid); 2080 u16 tid);
2064 2081
2065/** 2082/**
2066 * ieee80211_stop_tx_ba_session - Stop a Block Ack session. 2083 * ieee80211_stop_tx_ba_session - Stop a Block Ack session.
2067 * @hw: pointer as obtained from ieee80211_alloc_hw(). 2084 * @sta: the station whose BA session to stop
2068 * @ra: receiver address of the BA session recipient
2069 * @tid: the TID to stop BA. 2085 * @tid: the TID to stop BA.
2070 * @initiator: if indicates initiator DELBA frame will be sent. 2086 * @initiator: if indicates initiator DELBA frame will be sent.
2071 * 2087 *
@@ -2075,24 +2091,23 @@ void ieee80211_start_tx_ba_cb_irqsafe(struct ieee80211_hw *hw, const u8 *ra,
2075 * the need to stop aggregation on a certain RA/TID, the session level 2091 * the need to stop aggregation on a certain RA/TID, the session level
2076 * will be managed by the mac80211. 2092 * will be managed by the mac80211.
2077 */ 2093 */
2078int ieee80211_stop_tx_ba_session(struct ieee80211_hw *hw, 2094int ieee80211_stop_tx_ba_session(struct ieee80211_sta *sta, u16 tid,
2079 u8 *ra, u16 tid,
2080 enum ieee80211_back_parties initiator); 2095 enum ieee80211_back_parties initiator);
2081 2096
2082/** 2097/**
2083 * ieee80211_stop_tx_ba_cb - low level driver ready to stop aggregate. 2098 * ieee80211_stop_tx_ba_cb - low level driver ready to stop aggregate.
2084 * @hw: pointer as obtained from ieee80211_alloc_hw(). 2099 * @vif: &struct ieee80211_vif pointer from &struct ieee80211_if_init_conf
2085 * @ra: receiver address of the BA session recipient. 2100 * @ra: receiver address of the BA session recipient.
2086 * @tid: the desired TID to BA on. 2101 * @tid: the desired TID to BA on.
2087 * 2102 *
2088 * This function must be called by low level driver once it has 2103 * This function must be called by low level driver once it has
2089 * finished with preparations for the BA session tear down. 2104 * finished with preparations for the BA session tear down.
2090 */ 2105 */
2091void ieee80211_stop_tx_ba_cb(struct ieee80211_hw *hw, u8 *ra, u8 tid); 2106void ieee80211_stop_tx_ba_cb(struct ieee80211_vif *vif, u8 *ra, u8 tid);
2092 2107
2093/** 2108/**
2094 * ieee80211_stop_tx_ba_cb_irqsafe - low level driver ready to stop aggregate. 2109 * ieee80211_stop_tx_ba_cb_irqsafe - low level driver ready to stop aggregate.
2095 * @hw: pointer as obtained from ieee80211_alloc_hw(). 2110 * @vif: &struct ieee80211_vif pointer from &struct ieee80211_if_init_conf
2096 * @ra: receiver address of the BA session recipient. 2111 * @ra: receiver address of the BA session recipient.
2097 * @tid: the desired TID to BA on. 2112 * @tid: the desired TID to BA on.
2098 * 2113 *
@@ -2100,7 +2115,7 @@ void ieee80211_stop_tx_ba_cb(struct ieee80211_hw *hw, u8 *ra, u8 tid);
2100 * finished with preparations for the BA session tear down. 2115 * finished with preparations for the BA session tear down.
2101 * This version of the function is IRQ-safe. 2116 * This version of the function is IRQ-safe.
2102 */ 2117 */
2103void ieee80211_stop_tx_ba_cb_irqsafe(struct ieee80211_hw *hw, const u8 *ra, 2118void ieee80211_stop_tx_ba_cb_irqsafe(struct ieee80211_vif *vif, const u8 *ra,
2104 u16 tid); 2119 u16 tid);
2105 2120
2106/** 2121/**