diff options
Diffstat (limited to 'drivers/net/wireless/ath/ath9k/xmit.c')
-rw-r--r-- | drivers/net/wireless/ath/ath9k/xmit.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/net/wireless/ath/ath9k/xmit.c b/drivers/net/wireless/ath/ath9k/xmit.c index 05ec36ac55f5..bd52ac111795 100644 --- a/drivers/net/wireless/ath/ath9k/xmit.c +++ b/drivers/net/wireless/ath/ath9k/xmit.c | |||
@@ -355,6 +355,14 @@ static void ath_tx_complete_aggr(struct ath_softc *sc, struct ath_txq *txq, | |||
355 | an = (struct ath_node *)sta->drv_priv; | 355 | an = (struct ath_node *)sta->drv_priv; |
356 | tid = ATH_AN_2_TID(an, bf->bf_tidno); | 356 | tid = ATH_AN_2_TID(an, bf->bf_tidno); |
357 | 357 | ||
358 | /* | ||
359 | * The hardware occasionally sends a tx status for the wrong TID. | ||
360 | * In this case, the BA status cannot be considered valid and all | ||
361 | * subframes need to be retransmitted | ||
362 | */ | ||
363 | if (bf->bf_tidno != ts->tid) | ||
364 | txok = false; | ||
365 | |||
358 | isaggr = bf_isaggr(bf); | 366 | isaggr = bf_isaggr(bf); |
359 | memset(ba, 0, WME_BA_BMP_SIZE >> 3); | 367 | memset(ba, 0, WME_BA_BMP_SIZE >> 3); |
360 | 368 | ||