diff options
Diffstat (limited to 'drivers/net/wireless/ath/ath9k/xmit.c')
-rw-r--r-- | drivers/net/wireless/ath/ath9k/xmit.c | 20 |
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 | ||