diff options
Diffstat (limited to 'drivers/net/wireless/ath/ath9k/ath9k.h')
-rw-r--r-- | drivers/net/wireless/ath/ath9k/ath9k.h | 28 |
1 files changed, 21 insertions, 7 deletions
diff --git a/drivers/net/wireless/ath/ath9k/ath9k.h b/drivers/net/wireless/ath/ath9k/ath9k.h index 83c7ea4c007f..fbb7dec6ddeb 100644 --- a/drivers/net/wireless/ath/ath9k/ath9k.h +++ b/drivers/net/wireless/ath/ath9k/ath9k.h | |||
@@ -114,8 +114,10 @@ enum buffer_type { | |||
114 | #define bf_isretried(bf) (bf->bf_state.bf_type & BUF_RETRY) | 114 | #define bf_isretried(bf) (bf->bf_state.bf_type & BUF_RETRY) |
115 | #define bf_isxretried(bf) (bf->bf_state.bf_type & BUF_XRETRY) | 115 | #define bf_isxretried(bf) (bf->bf_state.bf_type & BUF_XRETRY) |
116 | 116 | ||
117 | #define ATH_TXSTATUS_RING_SIZE 64 | ||
118 | |||
117 | struct ath_descdma { | 119 | struct ath_descdma { |
118 | struct ath_desc *dd_desc; | 120 | void *dd_desc; |
119 | dma_addr_t dd_desc_paddr; | 121 | dma_addr_t dd_desc_paddr; |
120 | u32 dd_desc_len; | 122 | u32 dd_desc_len; |
121 | struct ath_buf *dd_bufptr; | 123 | struct ath_buf *dd_bufptr; |
@@ -123,7 +125,7 @@ struct ath_descdma { | |||
123 | 125 | ||
124 | int ath_descdma_setup(struct ath_softc *sc, struct ath_descdma *dd, | 126 | int ath_descdma_setup(struct ath_softc *sc, struct ath_descdma *dd, |
125 | struct list_head *head, const char *name, | 127 | struct list_head *head, const char *name, |
126 | int nbuf, int ndesc); | 128 | int nbuf, int ndesc, bool is_tx); |
127 | void ath_descdma_cleanup(struct ath_softc *sc, struct ath_descdma *dd, | 129 | void ath_descdma_cleanup(struct ath_softc *sc, struct ath_descdma *dd, |
128 | struct list_head *head); | 130 | struct list_head *head); |
129 | 131 | ||
@@ -178,9 +180,6 @@ void ath_descdma_cleanup(struct ath_softc *sc, struct ath_descdma *dd, | |||
178 | #define BAW_WITHIN(_start, _bawsz, _seqno) \ | 180 | #define BAW_WITHIN(_start, _bawsz, _seqno) \ |
179 | ((((_seqno) - (_start)) & 4095) < (_bawsz)) | 181 | ((((_seqno) - (_start)) & 4095) < (_bawsz)) |
180 | 182 | ||
181 | #define ATH_DS_BA_SEQ(_ds) ((_ds)->ds_us.tx.ts_seqnum) | ||
182 | #define ATH_DS_BA_BITMAP(_ds) (&(_ds)->ds_us.tx.ba_low) | ||
183 | #define ATH_DS_TX_BA(_ds) ((_ds)->ds_us.tx.ts_flags & ATH9K_TX_BA) | ||
184 | #define ATH_AN_2_TID(_an, _tidno) (&(_an)->tid[(_tidno)]) | 183 | #define ATH_AN_2_TID(_an, _tidno) (&(_an)->tid[(_tidno)]) |
185 | 184 | ||
186 | #define ATH_TX_COMPLETE_POLL_INT 1000 | 185 | #define ATH_TX_COMPLETE_POLL_INT 1000 |
@@ -191,6 +190,7 @@ enum ATH_AGGR_STATUS { | |||
191 | ATH_AGGR_LIMITED, | 190 | ATH_AGGR_LIMITED, |
192 | }; | 191 | }; |
193 | 192 | ||
193 | #define ATH_TXFIFO_DEPTH 8 | ||
194 | struct ath_txq { | 194 | struct ath_txq { |
195 | u32 axq_qnum; | 195 | u32 axq_qnum; |
196 | u32 *axq_link; | 196 | u32 *axq_link; |
@@ -200,6 +200,10 @@ struct ath_txq { | |||
200 | bool stopped; | 200 | bool stopped; |
201 | bool axq_tx_inprogress; | 201 | bool axq_tx_inprogress; |
202 | struct list_head axq_acq; | 202 | struct list_head axq_acq; |
203 | struct list_head txq_fifo[ATH_TXFIFO_DEPTH]; | ||
204 | struct list_head txq_fifo_pending; | ||
205 | u8 txq_headidx; | ||
206 | u8 txq_tailidx; | ||
203 | }; | 207 | }; |
204 | 208 | ||
205 | #define AGGR_CLEANUP BIT(1) | 209 | #define AGGR_CLEANUP BIT(1) |
@@ -226,6 +230,12 @@ struct ath_tx { | |||
226 | struct ath_descdma txdma; | 230 | struct ath_descdma txdma; |
227 | }; | 231 | }; |
228 | 232 | ||
233 | struct ath_rx_edma { | ||
234 | struct sk_buff_head rx_fifo; | ||
235 | struct sk_buff_head rx_buffers; | ||
236 | u32 rx_fifo_hwsize; | ||
237 | }; | ||
238 | |||
229 | struct ath_rx { | 239 | struct ath_rx { |
230 | u8 defant; | 240 | u8 defant; |
231 | u8 rxotherant; | 241 | u8 rxotherant; |
@@ -235,6 +245,8 @@ struct ath_rx { | |||
235 | spinlock_t rxbuflock; | 245 | spinlock_t rxbuflock; |
236 | struct list_head rxbuf; | 246 | struct list_head rxbuf; |
237 | struct ath_descdma rxdma; | 247 | struct ath_descdma rxdma; |
248 | struct ath_buf *rx_bufptr; | ||
249 | struct ath_rx_edma rx_edma[ATH9K_RX_QUEUE_MAX]; | ||
238 | }; | 250 | }; |
239 | 251 | ||
240 | int ath_startrecv(struct ath_softc *sc); | 252 | int ath_startrecv(struct ath_softc *sc); |
@@ -243,7 +255,7 @@ void ath_flushrecv(struct ath_softc *sc); | |||
243 | u32 ath_calcrxfilter(struct ath_softc *sc); | 255 | u32 ath_calcrxfilter(struct ath_softc *sc); |
244 | int ath_rx_init(struct ath_softc *sc, int nbufs); | 256 | int ath_rx_init(struct ath_softc *sc, int nbufs); |
245 | void ath_rx_cleanup(struct ath_softc *sc); | 257 | void ath_rx_cleanup(struct ath_softc *sc); |
246 | int ath_rx_tasklet(struct ath_softc *sc, int flush); | 258 | int ath_rx_tasklet(struct ath_softc *sc, int flush, bool hp); |
247 | struct ath_txq *ath_txq_setup(struct ath_softc *sc, int qtype, int subtype); | 259 | struct ath_txq *ath_txq_setup(struct ath_softc *sc, int qtype, int subtype); |
248 | void ath_tx_cleanupq(struct ath_softc *sc, struct ath_txq *txq); | 260 | void ath_tx_cleanupq(struct ath_softc *sc, struct ath_txq *txq); |
249 | int ath_tx_setup(struct ath_softc *sc, int haltype); | 261 | int ath_tx_setup(struct ath_softc *sc, int haltype); |
@@ -261,6 +273,7 @@ int ath_txq_update(struct ath_softc *sc, int qnum, | |||
261 | int ath_tx_start(struct ieee80211_hw *hw, struct sk_buff *skb, | 273 | int ath_tx_start(struct ieee80211_hw *hw, struct sk_buff *skb, |
262 | struct ath_tx_control *txctl); | 274 | struct ath_tx_control *txctl); |
263 | void ath_tx_tasklet(struct ath_softc *sc); | 275 | void ath_tx_tasklet(struct ath_softc *sc); |
276 | void ath_tx_edma_tasklet(struct ath_softc *sc); | ||
264 | void ath_tx_cabq(struct ieee80211_hw *hw, struct sk_buff *skb); | 277 | void ath_tx_cabq(struct ieee80211_hw *hw, struct sk_buff *skb); |
265 | bool ath_tx_aggr_check(struct ath_softc *sc, struct ath_node *an, u8 tidno); | 278 | bool ath_tx_aggr_check(struct ath_softc *sc, struct ath_node *an, u8 tidno); |
266 | void ath_tx_aggr_start(struct ath_softc *sc, struct ieee80211_sta *sta, | 279 | void ath_tx_aggr_start(struct ath_softc *sc, struct ieee80211_sta *sta, |
@@ -483,7 +496,6 @@ struct ath_softc { | |||
483 | bool ps_enabled; | 496 | bool ps_enabled; |
484 | bool ps_idle; | 497 | bool ps_idle; |
485 | unsigned long ps_usecount; | 498 | unsigned long ps_usecount; |
486 | enum ath9k_int imask; | ||
487 | 499 | ||
488 | struct ath_config config; | 500 | struct ath_config config; |
489 | struct ath_rx rx; | 501 | struct ath_rx rx; |
@@ -511,6 +523,8 @@ struct ath_softc { | |||
511 | struct ath_beacon_config cur_beacon_conf; | 523 | struct ath_beacon_config cur_beacon_conf; |
512 | struct delayed_work tx_complete_work; | 524 | struct delayed_work tx_complete_work; |
513 | struct ath_btcoex btcoex; | 525 | struct ath_btcoex btcoex; |
526 | |||
527 | struct ath_descdma txsdma; | ||
514 | }; | 528 | }; |
515 | 529 | ||
516 | struct ath_wiphy { | 530 | struct ath_wiphy { |