wifi: mt76: connac: refresh tx session timer for WED device
authorRyder Lee <ryder.lee@mediatek.com>
Fri, 17 Feb 2023 17:50:38 +0000 (01:50 +0800)
committerFelix Fietkau <nbd@nbd.name>
Mon, 17 Apr 2023 13:49:09 +0000 (15:49 +0200)
There's no keep-alive packet being received by mac80211 stack when WED
is enabled, which leads to tx BA session timeout. This patch calls
ieee80211_refresh_tx_agg_session_timer() to refresh timer according
to tx status reporting.

Signed-off-by: Ryder Lee <ryder.lee@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
drivers/net/wireless/mediatek/mt76/mt76_connac_mac.c

index aed4ee9..8d316d3 100644 (file)
@@ -582,6 +582,17 @@ bool mt76_connac2_mac_fill_txs(struct mt76_dev *dev, struct mt76_wcid *wcid,
                        le32_get_bits(txs_data[6], MT_TXS6_MPDU_FAIL_CNT);
                stats->tx_retries +=
                        le32_get_bits(txs_data[7], MT_TXS7_MPDU_RETRY_CNT);
+
+               if (wcid->sta) {
+                       struct ieee80211_sta *sta;
+                       u8 tid;
+
+                       sta = container_of((void *)wcid, struct ieee80211_sta,
+                                          drv_priv);
+                       tid = FIELD_GET(MT_TXS0_TID, txs);
+
+                       ieee80211_refresh_tx_agg_session_timer(sta, tid);
+               }
        }
 
        txrate = FIELD_GET(MT_TXS0_TX_RATE, txs);