]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
Revert "wifi: mt76: mt7925: Update mt7925_mcu_uni_[tx,rx]_ba for MLO"
authorSean Wang <sean.wang@mediatek.com>
Wed, 5 Mar 2025 00:08:46 +0000 (16:08 -0800)
committerFelix Fietkau <nbd@nbd.name>
Wed, 19 Mar 2025 13:47:03 +0000 (14:47 +0100)
For MLO, mac80211 will send the BA action for each link to
the driver, so the driver does not need to handle it itself.
Therefore, revert this patch.

Fixes: eb2a9a12c609 ("wifi: mt76: mt7925: Update mt7925_mcu_uni_[tx,rx]_ba for MLO")
Cc: stable@vger.kernel.org
Signed-off-by: Ming Yen Hsieh <mingyen.hsieh@mediatek.com>
Tested-by: Caleb Jorden <cjorden@gmail.com>
Signed-off-by: Sean Wang <sean.wang@mediatek.com>
Link: https://patch.msgid.link/20250305000851.493671-1-sean.wang@kernel.org
Signed-off-by: Felix Fietkau <nbd@nbd.name>
drivers/net/wireless/mediatek/mt76/mt7925/main.c
drivers/net/wireless/mediatek/mt76/mt7925/mcu.c
drivers/net/wireless/mediatek/mt76/mt7925/mt7925.h

index ad47a4b153da58f16aa009d8bf4bc1572b970d38..47a6040381a0e926908d3c4fcd1380cfaa8a5b25 100644 (file)
@@ -1289,22 +1289,22 @@ mt7925_ampdu_action(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
        case IEEE80211_AMPDU_RX_START:
                mt76_rx_aggr_start(&dev->mt76, &msta->deflink.wcid, tid, ssn,
                                   params->buf_size);
-               mt7925_mcu_uni_rx_ba(dev, vif, params, true);
+               mt7925_mcu_uni_rx_ba(dev, params, true);
                break;
        case IEEE80211_AMPDU_RX_STOP:
                mt76_rx_aggr_stop(&dev->mt76, &msta->deflink.wcid, tid);
-               mt7925_mcu_uni_rx_ba(dev, vif, params, false);
+               mt7925_mcu_uni_rx_ba(dev, params, false);
                break;
        case IEEE80211_AMPDU_TX_OPERATIONAL:
                mtxq->aggr = true;
                mtxq->send_bar = false;
-               mt7925_mcu_uni_tx_ba(dev, vif, params, true);
+               mt7925_mcu_uni_tx_ba(dev, params, true);
                break;
        case IEEE80211_AMPDU_TX_STOP_FLUSH:
        case IEEE80211_AMPDU_TX_STOP_FLUSH_CONT:
                mtxq->aggr = false;
                clear_bit(tid, &msta->deflink.wcid.ampdu_state);
-               mt7925_mcu_uni_tx_ba(dev, vif, params, false);
+               mt7925_mcu_uni_tx_ba(dev, params, false);
                break;
        case IEEE80211_AMPDU_TX_START:
                set_bit(tid, &msta->deflink.wcid.ampdu_state);
@@ -1313,7 +1313,7 @@ mt7925_ampdu_action(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
        case IEEE80211_AMPDU_TX_STOP_CONT:
                mtxq->aggr = false;
                clear_bit(tid, &msta->deflink.wcid.ampdu_state);
-               mt7925_mcu_uni_tx_ba(dev, vif, params, false);
+               mt7925_mcu_uni_tx_ba(dev, params, false);
                ieee80211_stop_tx_ba_cb_irqsafe(vif, sta->addr, tid);
                break;
        }
index 7885d71b7a77df03fbf58d23de82b8d70c18af85..ebe7cc30aaf95d98b897162453bf316f03527b09 100644 (file)
@@ -572,10 +572,10 @@ void mt7925_mcu_rx_event(struct mt792x_dev *dev, struct sk_buff *skb)
 
 static int
 mt7925_mcu_sta_ba(struct mt76_dev *dev, struct mt76_vif_link *mvif,
-                 struct mt76_wcid *wcid,
                  struct ieee80211_ampdu_params *params,
                  bool enable, bool tx)
 {
+       struct mt76_wcid *wcid = (struct mt76_wcid *)params->sta->drv_priv;
        struct sta_rec_ba_uni *ba;
        struct sk_buff *skb;
        struct tlv *tlv;
@@ -603,60 +603,28 @@ mt7925_mcu_sta_ba(struct mt76_dev *dev, struct mt76_vif_link *mvif,
 
 /** starec & wtbl **/
 int mt7925_mcu_uni_tx_ba(struct mt792x_dev *dev,
-                        struct ieee80211_vif *vif,
                         struct ieee80211_ampdu_params *params,
                         bool enable)
 {
        struct mt792x_sta *msta = (struct mt792x_sta *)params->sta->drv_priv;
-       struct mt792x_vif *mvif = (struct mt792x_vif *)vif->drv_priv;
-       struct mt792x_link_sta *mlink;
-       struct mt792x_bss_conf *mconf;
-       unsigned long usable_links = ieee80211_vif_usable_links(vif);
-       struct mt76_wcid *wcid;
-       u8 link_id, ret;
-
-       for_each_set_bit(link_id, &usable_links, IEEE80211_MLD_MAX_NUM_LINKS) {
-               mconf = mt792x_vif_to_link(mvif, link_id);
-               mlink = mt792x_sta_to_link(msta, link_id);
-               wcid = &mlink->wcid;
-
-               if (enable && !params->amsdu)
-                       mlink->wcid.amsdu = false;
+       struct mt792x_vif *mvif = msta->vif;
 
-               ret = mt7925_mcu_sta_ba(&dev->mt76, &mconf->mt76, wcid, params,
-                                       enable, true);
-               if (ret < 0)
-                       break;
-       }
+       if (enable && !params->amsdu)
+               msta->deflink.wcid.amsdu = false;
 
-       return ret;
+       return mt7925_mcu_sta_ba(&dev->mt76, &mvif->bss_conf.mt76, params,
+                                enable, true);
 }
 
 int mt7925_mcu_uni_rx_ba(struct mt792x_dev *dev,
-                        struct ieee80211_vif *vif,
                         struct ieee80211_ampdu_params *params,
                         bool enable)
 {
        struct mt792x_sta *msta = (struct mt792x_sta *)params->sta->drv_priv;
-       struct mt792x_vif *mvif = (struct mt792x_vif *)vif->drv_priv;
-       struct mt792x_link_sta *mlink;
-       struct mt792x_bss_conf *mconf;
-       unsigned long usable_links = ieee80211_vif_usable_links(vif);
-       struct mt76_wcid *wcid;
-       u8 link_id, ret;
-
-       for_each_set_bit(link_id, &usable_links, IEEE80211_MLD_MAX_NUM_LINKS) {
-               mconf = mt792x_vif_to_link(mvif, link_id);
-               mlink = mt792x_sta_to_link(msta, link_id);
-               wcid = &mlink->wcid;
-
-               ret = mt7925_mcu_sta_ba(&dev->mt76, &mconf->mt76, wcid, params,
-                                       enable, false);
-               if (ret < 0)
-                       break;
-       }
+       struct mt792x_vif *mvif = msta->vif;
 
-       return ret;
+       return mt7925_mcu_sta_ba(&dev->mt76, &mvif->bss_conf.mt76, params,
+                                enable, false);
 }
 
 static int mt7925_load_clc(struct mt792x_dev *dev, const char *fw_name)
index 8707b5d04743bd91875d05f67927953ffa9697b7..fd5f9d4ea4a7a5a90b5166f471ced3e8f0e0fa09 100644 (file)
@@ -263,11 +263,9 @@ int mt7925_mcu_set_beacon_filter(struct mt792x_dev *dev,
                                 struct ieee80211_vif *vif,
                                 bool enable);
 int mt7925_mcu_uni_tx_ba(struct mt792x_dev *dev,
-                        struct ieee80211_vif *vif,
                         struct ieee80211_ampdu_params *params,
                         bool enable);
 int mt7925_mcu_uni_rx_ba(struct mt792x_dev *dev,
-                        struct ieee80211_vif *vif,
                         struct ieee80211_ampdu_params *params,
                         bool enable);
 void mt7925_scan_work(struct work_struct *work);