tx: only send BAR on tx queue schedule if aggregation is active

Signed-off-by: Felix Fietkau <[email protected]>
This commit is contained in:
Felix Fietkau
2015-09-27 23:15:09 +02:00
parent 3e447e7797
commit f411f5bc5f
3 changed files with 5 additions and 1 deletions
+3
View File
@@ -417,10 +417,13 @@ mt76_ampdu_action(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
mt76_clear(dev, MT_WCID_ADDR(msta->wcid.idx)+4, BIT(16 + tid));
break;
case IEEE80211_AMPDU_TX_OPERATIONAL:
mtxq->aggr = true;
mtxq->send_bar = false;
ieee80211_send_bar(vif, sta->addr, tid, cpu_to_le16(mtxq->agg_ssn));
break;
case IEEE80211_AMPDU_TX_STOP_FLUSH:
case IEEE80211_AMPDU_TX_STOP_FLUSH_CONT:
mtxq->aggr = false;
ieee80211_send_bar(vif, sta->addr, tid, cpu_to_le16(mtxq->agg_ssn));
break;
case IEEE80211_AMPDU_TX_START:
+1
View File
@@ -260,6 +260,7 @@ struct mt76_txq {
u16 agg_ssn;
bool send_bar;
bool aggr;
};
struct mt76_reg_pair {
+1 -1
View File
@@ -360,7 +360,7 @@ mt76_txq_schedule_list(struct mt76_dev *dev, struct mt76_queue *hwq)
int cur;
mtxq = list_first_entry(&hwq->swq, struct mt76_txq, list);
if (mtxq->send_bar) {
if (mtxq->send_bar && mtxq->aggr) {
struct ieee80211_txq *txq = mtxq_to_txq(mtxq);
mtxq->send_bar = false;