aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/ath/ath9k/xmit.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/ath/ath9k/xmit.c')
-rw-r--r--drivers/net/wireless/ath/ath9k/xmit.c20
1 files changed, 10 insertions, 10 deletions
diff --git a/drivers/net/wireless/ath/ath9k/xmit.c b/drivers/net/wireless/ath/ath9k/xmit.c
index 9d5d102b23bd..1d04ca86df56 100644
--- a/drivers/net/wireless/ath/ath9k/xmit.c
+++ b/drivers/net/wireless/ath/ath9k/xmit.c
@@ -2000,7 +2000,7 @@ static void ath_tx_processq(struct ath_softc *sc, struct ath_txq *txq)
2000 struct ath_buf *bf, *lastbf, *bf_held = NULL; 2000 struct ath_buf *bf, *lastbf, *bf_held = NULL;
2001 struct list_head bf_head; 2001 struct list_head bf_head;
2002 struct ath_desc *ds; 2002 struct ath_desc *ds;
2003 struct ath_tx_status *ts; 2003 struct ath_tx_status ts;
2004 int txok; 2004 int txok;
2005 int status; 2005 int status;
2006 2006
@@ -2039,9 +2039,9 @@ static void ath_tx_processq(struct ath_softc *sc, struct ath_txq *txq)
2039 2039
2040 lastbf = bf->bf_lastbf; 2040 lastbf = bf->bf_lastbf;
2041 ds = lastbf->bf_desc; 2041 ds = lastbf->bf_desc;
2042 ts = &ds->ds_us.tx;
2043 2042
2044 status = ath9k_hw_txprocdesc(ah, ds, ts); 2043 memset(&ts, 0, sizeof(ts));
2044 status = ath9k_hw_txprocdesc(ah, ds, &ts);
2045 if (status == -EINPROGRESS) { 2045 if (status == -EINPROGRESS) {
2046 spin_unlock_bh(&txq->axq_lock); 2046 spin_unlock_bh(&txq->axq_lock);
2047 break; 2047 break;
@@ -2052,7 +2052,7 @@ static void ath_tx_processq(struct ath_softc *sc, struct ath_txq *txq)
2052 * can disable RX. 2052 * can disable RX.
2053 */ 2053 */
2054 if (bf->bf_isnullfunc && 2054 if (bf->bf_isnullfunc &&
2055 (ts->ts_status & ATH9K_TX_ACKED)) { 2055 (ts.ts_status & ATH9K_TX_ACKED)) {
2056 if ((sc->ps_flags & PS_ENABLED)) 2056 if ((sc->ps_flags & PS_ENABLED))
2057 ath9k_enable_ps(sc); 2057 ath9k_enable_ps(sc);
2058 else 2058 else
@@ -2071,7 +2071,7 @@ static void ath_tx_processq(struct ath_softc *sc, struct ath_txq *txq)
2071 &txq->axq_q, lastbf->list.prev); 2071 &txq->axq_q, lastbf->list.prev);
2072 2072
2073 txq->axq_depth--; 2073 txq->axq_depth--;
2074 txok = !(ts->ts_status & ATH9K_TXERR_MASK); 2074 txok = !(ts.ts_status & ATH9K_TXERR_MASK);
2075 txq->axq_tx_inprogress = false; 2075 txq->axq_tx_inprogress = false;
2076 spin_unlock_bh(&txq->axq_lock); 2076 spin_unlock_bh(&txq->axq_lock);
2077 2077
@@ -2086,16 +2086,16 @@ static void ath_tx_processq(struct ath_softc *sc, struct ath_txq *txq)
2086 * This frame is sent out as a single frame. 2086 * This frame is sent out as a single frame.
2087 * Use hardware retry status for this frame. 2087 * Use hardware retry status for this frame.
2088 */ 2088 */
2089 bf->bf_retries = ts->ts_longretry; 2089 bf->bf_retries = ts.ts_longretry;
2090 if (ts->ts_status & ATH9K_TXERR_XRETRY) 2090 if (ts.ts_status & ATH9K_TXERR_XRETRY)
2091 bf->bf_state.bf_type |= BUF_XRETRY; 2091 bf->bf_state.bf_type |= BUF_XRETRY;
2092 ath_tx_rc_status(bf, ts, 0, txok, true); 2092 ath_tx_rc_status(bf, &ts, 0, txok, true);
2093 } 2093 }
2094 2094
2095 if (bf_isampdu(bf)) 2095 if (bf_isampdu(bf))
2096 ath_tx_complete_aggr(sc, txq, bf, &bf_head, ts, txok); 2096 ath_tx_complete_aggr(sc, txq, bf, &bf_head, &ts, txok);
2097 else 2097 else
2098 ath_tx_complete_buf(sc, bf, txq, &bf_head, ts, txok, 0); 2098 ath_tx_complete_buf(sc, bf, txq, &bf_head, &ts, txok, 0);
2099 2099
2100 ath_wake_mac80211_queue(sc, txq); 2100 ath_wake_mac80211_queue(sc, txq);
2101 2101