Skip to content

Commit b63eb95

Browse files
moore-brosgregkh
authored andcommitted
Revert "wifi: mt76: mt7925: Update mt7925_mcu_uni_[tx,rx]_ba for MLO"
[ Upstream commit 766ea2c ] 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: eb2a9a1 ("wifi: mt76: mt7925: Update mt7925_mcu_uni_[tx,rx]_ba for MLO") Cc: [email protected] Signed-off-by: Ming Yen Hsieh <[email protected]> Tested-by: Caleb Jorden <[email protected]> Signed-off-by: Sean Wang <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: Felix Fietkau <[email protected]> [ struct mt76_vif_link -> struct mt76_vif ] Signed-off-by: Sasha Levin <[email protected]> Signed-off-by: Greg Kroah-Hartman <[email protected]>
1 parent 9893758 commit b63eb95

File tree

3 files changed

+14
-48
lines changed

3 files changed

+14
-48
lines changed

drivers/net/wireless/mediatek/mt76/mt7925/main.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1296,22 +1296,22 @@ mt7925_ampdu_action(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
12961296
case IEEE80211_AMPDU_RX_START:
12971297
mt76_rx_aggr_start(&dev->mt76, &msta->deflink.wcid, tid, ssn,
12981298
params->buf_size);
1299-
mt7925_mcu_uni_rx_ba(dev, vif, params, true);
1299+
mt7925_mcu_uni_rx_ba(dev, params, true);
13001300
break;
13011301
case IEEE80211_AMPDU_RX_STOP:
13021302
mt76_rx_aggr_stop(&dev->mt76, &msta->deflink.wcid, tid);
1303-
mt7925_mcu_uni_rx_ba(dev, vif, params, false);
1303+
mt7925_mcu_uni_rx_ba(dev, params, false);
13041304
break;
13051305
case IEEE80211_AMPDU_TX_OPERATIONAL:
13061306
mtxq->aggr = true;
13071307
mtxq->send_bar = false;
1308-
mt7925_mcu_uni_tx_ba(dev, vif, params, true);
1308+
mt7925_mcu_uni_tx_ba(dev, params, true);
13091309
break;
13101310
case IEEE80211_AMPDU_TX_STOP_FLUSH:
13111311
case IEEE80211_AMPDU_TX_STOP_FLUSH_CONT:
13121312
mtxq->aggr = false;
13131313
clear_bit(tid, &msta->deflink.wcid.ampdu_state);
1314-
mt7925_mcu_uni_tx_ba(dev, vif, params, false);
1314+
mt7925_mcu_uni_tx_ba(dev, params, false);
13151315
break;
13161316
case IEEE80211_AMPDU_TX_START:
13171317
set_bit(tid, &msta->deflink.wcid.ampdu_state);
@@ -1320,7 +1320,7 @@ mt7925_ampdu_action(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
13201320
case IEEE80211_AMPDU_TX_STOP_CONT:
13211321
mtxq->aggr = false;
13221322
clear_bit(tid, &msta->deflink.wcid.ampdu_state);
1323-
mt7925_mcu_uni_tx_ba(dev, vif, params, false);
1323+
mt7925_mcu_uni_tx_ba(dev, params, false);
13241324
ieee80211_stop_tx_ba_cb_irqsafe(vif, sta->addr, tid);
13251325
break;
13261326
}

drivers/net/wireless/mediatek/mt76/mt7925/mcu.c

Lines changed: 9 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -529,10 +529,10 @@ void mt7925_mcu_rx_event(struct mt792x_dev *dev, struct sk_buff *skb)
529529

530530
static int
531531
mt7925_mcu_sta_ba(struct mt76_dev *dev, struct mt76_vif *mvif,
532-
struct mt76_wcid *wcid,
533532
struct ieee80211_ampdu_params *params,
534533
bool enable, bool tx)
535534
{
535+
struct mt76_wcid *wcid = (struct mt76_wcid *)params->sta->drv_priv;
536536
struct sta_rec_ba_uni *ba;
537537
struct sk_buff *skb;
538538
struct tlv *tlv;
@@ -560,60 +560,28 @@ mt7925_mcu_sta_ba(struct mt76_dev *dev, struct mt76_vif *mvif,
560560

561561
/** starec & wtbl **/
562562
int mt7925_mcu_uni_tx_ba(struct mt792x_dev *dev,
563-
struct ieee80211_vif *vif,
564563
struct ieee80211_ampdu_params *params,
565564
bool enable)
566565
{
567566
struct mt792x_sta *msta = (struct mt792x_sta *)params->sta->drv_priv;
568-
struct mt792x_vif *mvif = (struct mt792x_vif *)vif->drv_priv;
569-
struct mt792x_link_sta *mlink;
570-
struct mt792x_bss_conf *mconf;
571-
unsigned long usable_links = ieee80211_vif_usable_links(vif);
572-
struct mt76_wcid *wcid;
573-
u8 link_id, ret;
574-
575-
for_each_set_bit(link_id, &usable_links, IEEE80211_MLD_MAX_NUM_LINKS) {
576-
mconf = mt792x_vif_to_link(mvif, link_id);
577-
mlink = mt792x_sta_to_link(msta, link_id);
578-
wcid = &mlink->wcid;
579-
580-
if (enable && !params->amsdu)
581-
mlink->wcid.amsdu = false;
567+
struct mt792x_vif *mvif = msta->vif;
582568

583-
ret = mt7925_mcu_sta_ba(&dev->mt76, &mconf->mt76, wcid, params,
584-
enable, true);
585-
if (ret < 0)
586-
break;
587-
}
569+
if (enable && !params->amsdu)
570+
msta->deflink.wcid.amsdu = false;
588571

589-
return ret;
572+
return mt7925_mcu_sta_ba(&dev->mt76, &mvif->bss_conf.mt76, params,
573+
enable, true);
590574
}
591575

592576
int mt7925_mcu_uni_rx_ba(struct mt792x_dev *dev,
593-
struct ieee80211_vif *vif,
594577
struct ieee80211_ampdu_params *params,
595578
bool enable)
596579
{
597580
struct mt792x_sta *msta = (struct mt792x_sta *)params->sta->drv_priv;
598-
struct mt792x_vif *mvif = (struct mt792x_vif *)vif->drv_priv;
599-
struct mt792x_link_sta *mlink;
600-
struct mt792x_bss_conf *mconf;
601-
unsigned long usable_links = ieee80211_vif_usable_links(vif);
602-
struct mt76_wcid *wcid;
603-
u8 link_id, ret;
604-
605-
for_each_set_bit(link_id, &usable_links, IEEE80211_MLD_MAX_NUM_LINKS) {
606-
mconf = mt792x_vif_to_link(mvif, link_id);
607-
mlink = mt792x_sta_to_link(msta, link_id);
608-
wcid = &mlink->wcid;
609-
610-
ret = mt7925_mcu_sta_ba(&dev->mt76, &mconf->mt76, wcid, params,
611-
enable, false);
612-
if (ret < 0)
613-
break;
614-
}
581+
struct mt792x_vif *mvif = msta->vif;
615582

616-
return ret;
583+
return mt7925_mcu_sta_ba(&dev->mt76, &mvif->bss_conf.mt76, params,
584+
enable, false);
617585
}
618586

619587
static int mt7925_mcu_read_eeprom(struct mt792x_dev *dev, u32 offset, u8 *val)

drivers/net/wireless/mediatek/mt76/mt7925/mt7925.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -245,11 +245,9 @@ int mt7925_mcu_set_beacon_filter(struct mt792x_dev *dev,
245245
struct ieee80211_vif *vif,
246246
bool enable);
247247
int mt7925_mcu_uni_tx_ba(struct mt792x_dev *dev,
248-
struct ieee80211_vif *vif,
249248
struct ieee80211_ampdu_params *params,
250249
bool enable);
251250
int mt7925_mcu_uni_rx_ba(struct mt792x_dev *dev,
252-
struct ieee80211_vif *vif,
253251
struct ieee80211_ampdu_params *params,
254252
bool enable);
255253
void mt7925_scan_work(struct work_struct *work);

0 commit comments

Comments
 (0)