aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/ath/ar9170/ar9170.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/ath/ar9170/ar9170.h')
-rw-r--r--drivers/net/wireless/ath/ar9170/ar9170.h52
1 files changed, 52 insertions, 0 deletions
diff --git a/drivers/net/wireless/ath/ar9170/ar9170.h b/drivers/net/wireless/ath/ar9170/ar9170.h
index bb97981fb248..e6c3ee3e0581 100644
--- a/drivers/net/wireless/ath/ar9170/ar9170.h
+++ b/drivers/net/wireless/ath/ar9170/ar9170.h
@@ -109,11 +109,52 @@ struct ar9170_rxstream_mpdu_merge {
109 bool has_plcp; 109 bool has_plcp;
110}; 110};
111 111
112#define AR9170_NUM_MAX_BA_RETRY 5
113#define AR9170_NUM_TID 16
114#define WME_BA_BMP_SIZE 64
115#define AR9170_NUM_MAX_AGG_LEN (2 * WME_BA_BMP_SIZE)
116
117#define WME_AC_BE 2
118#define WME_AC_BK 3
119#define WME_AC_VI 1
120#define WME_AC_VO 0
121
122#define TID_TO_WME_AC(_tid) \
123 ((((_tid) == 0) || ((_tid) == 3)) ? WME_AC_BE : \
124 (((_tid) == 1) || ((_tid) == 2)) ? WME_AC_BK : \
125 (((_tid) == 4) || ((_tid) == 5)) ? WME_AC_VI : \
126 WME_AC_VO)
127
128#define BAW_WITHIN(_start, _bawsz, _seqno) \
129 ((((_seqno) - (_start)) & 0xfff) < (_bawsz))
130
131enum ar9170_tid_state {
132 AR9170_TID_STATE_INVALID,
133 AR9170_TID_STATE_SHUTDOWN,
134 AR9170_TID_STATE_PROGRESS,
135 AR9170_TID_STATE_COMPLETE,
136};
137
138struct ar9170_sta_tid {
139 struct list_head list;
140 struct sk_buff_head queue;
141 u8 addr[ETH_ALEN];
142 u16 ssn;
143 u16 tid;
144 enum ar9170_tid_state state;
145 bool active;
146 u8 retry;
147};
148
112#define AR9170_QUEUE_TIMEOUT 64 149#define AR9170_QUEUE_TIMEOUT 64
113#define AR9170_TX_TIMEOUT 8 150#define AR9170_TX_TIMEOUT 8
151#define AR9170_BA_TIMEOUT 4
114#define AR9170_JANITOR_DELAY 128 152#define AR9170_JANITOR_DELAY 128
115#define AR9170_TX_INVALID_RATE 0xffffffff 153#define AR9170_TX_INVALID_RATE 0xffffffff
116 154
155#define AR9170_NUM_TX_STATUS 128
156#define AR9170_NUM_TX_AGG_MAX 30
157
117struct ar9170 { 158struct ar9170 {
118 struct ieee80211_hw *hw; 159 struct ieee80211_hw *hw;
119 struct mutex mutex; 160 struct mutex mutex;
@@ -187,14 +228,25 @@ struct ar9170 {
187 struct sk_buff_head tx_pending[__AR9170_NUM_TXQ]; 228 struct sk_buff_head tx_pending[__AR9170_NUM_TXQ];
188 struct sk_buff_head tx_status[__AR9170_NUM_TXQ]; 229 struct sk_buff_head tx_status[__AR9170_NUM_TXQ];
189 struct delayed_work tx_janitor; 230 struct delayed_work tx_janitor;
231 /* tx ampdu */
232 struct sk_buff_head tx_status_ampdu;
233 spinlock_t tx_ampdu_list_lock;
234 struct list_head tx_ampdu_list;
235 unsigned int tx_ampdu_pending;
190 236
191 /* rxstream mpdu merge */ 237 /* rxstream mpdu merge */
192 struct ar9170_rxstream_mpdu_merge rx_mpdu; 238 struct ar9170_rxstream_mpdu_merge rx_mpdu;
193 struct sk_buff *rx_failover; 239 struct sk_buff *rx_failover;
194 int rx_failover_missing; 240 int rx_failover_missing;
241
242 /* (cached) HW A-MPDU settings */
243 u8 global_ampdu_density;
244 u8 global_ampdu_factor;
195}; 245};
196 246
197struct ar9170_sta_info { 247struct ar9170_sta_info {
248 struct ar9170_sta_tid agg[AR9170_NUM_TID];
249 unsigned int ampdu_max_len;
198}; 250};
199 251
200#define AR9170_TX_FLAG_WAIT_FOR_ACK BIT(0) 252#define AR9170_TX_FLAG_WAIT_FOR_ACK BIT(0)