|
@@ -355,6 +355,14 @@ static void ath_tx_complete_aggr(struct ath_softc *sc, struct ath_txq *txq,
|
|
|
an = (struct ath_node *)sta->drv_priv;
|
|
|
tid = ATH_AN_2_TID(an, bf->bf_tidno);
|
|
|
|
|
|
+ /*
|
|
|
+ * The hardware occasionally sends a tx status for the wrong TID.
|
|
|
+ * In this case, the BA status cannot be considered valid and all
|
|
|
+ * subframes need to be retransmitted
|
|
|
+ */
|
|
|
+ if (bf->bf_tidno != ts->tid)
|
|
|
+ txok = false;
|
|
|
+
|
|
|
isaggr = bf_isaggr(bf);
|
|
|
memset(ba, 0, WME_BA_BMP_SIZE >> 3);
|
|
|
|