Message ID | 1ac1ae779db86d4012199a24ea2ca74050ed4af6.1721300411.git.quan.zhou@mediatek.com (mailing list archive) |
---|---|
State | Accepted |
Delegated to: | Felix Fietkau |
Headers | show |
Series | wifi: mt76: mt7921: fix a potential scan no APs | expand |
Tested-by: David Ruth <druth@chromium.org> Reviewed-by: David Ruth <druth@chromium.org>
Hi nbd, It seems the patch hasn't been merged into the current tree yet. The patch is beneficial for improving scan stability since we’ve applied ROC. If there's any opportunity for further improvement from your perspective, please let us know. Reviewed-by: Sean Wang <sean.wang@mediatek.com> Sean On Thu, Jul 18, 2024 at 6:51 AM Quan Zhou <quan.zhou@mediatek.com> wrote: > > In multi-channel scenarios, the granted channel must be aborted before > station remove. Otherwise, the firmware will be put into a wrong state, > resulting in have chance to make subsequence scan no APs. > With this patch, the granted channel will be always aborted before > station remove. > > Signed-off-by: Quan Zhou <quan.zhou@mediatek.com> > --- > drivers/net/wireless/mediatek/mt76/mt7921/main.c | 7 ++++--- > 1 file changed, 4 insertions(+), 3 deletions(-) > > diff --git a/drivers/net/wireless/mediatek/mt76/mt7921/main.c b/drivers/net/wireless/mediatek/mt76/mt7921/main.c > index 2e6268cb06c0..84d6881eb4c9 100644 > --- a/drivers/net/wireless/mediatek/mt76/mt7921/main.c > +++ b/drivers/net/wireless/mediatek/mt76/mt7921/main.c > @@ -359,9 +359,9 @@ void mt7921_roc_abort_sync(struct mt792x_dev *dev) > del_timer_sync(&phy->roc_timer); > cancel_work_sync(&phy->roc_work); > if (test_and_clear_bit(MT76_STATE_ROC, &phy->mt76->state)) > - ieee80211_iterate_active_interfaces(mt76_hw(dev), > - IEEE80211_IFACE_ITER_RESUME_ALL, > - mt7921_roc_iter, (void *)phy); > + ieee80211_iterate_interfaces(mt76_hw(dev), > + IEEE80211_IFACE_ITER_RESUME_ALL, > + mt7921_roc_iter, (void *)phy); > } > EXPORT_SYMBOL_GPL(mt7921_roc_abort_sync); > > @@ -861,6 +861,7 @@ void mt7921_mac_sta_remove(struct mt76_dev *mdev, struct ieee80211_vif *vif, > struct mt792x_dev *dev = container_of(mdev, struct mt792x_dev, mt76); > struct mt792x_sta *msta = (struct mt792x_sta *)sta->drv_priv; > > + mt7921_roc_abort_sync(dev); > mt76_connac_free_pending_tx_skbs(&dev->pm, &msta->deflink.wcid); > mt76_connac_pm_wake(&dev->mphy, &dev->pm); > > -- > 2.18.0 > >
diff --git a/drivers/net/wireless/mediatek/mt76/mt7921/main.c b/drivers/net/wireless/mediatek/mt76/mt7921/main.c index 2e6268cb06c0..84d6881eb4c9 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7921/main.c +++ b/drivers/net/wireless/mediatek/mt76/mt7921/main.c @@ -359,9 +359,9 @@ void mt7921_roc_abort_sync(struct mt792x_dev *dev) del_timer_sync(&phy->roc_timer); cancel_work_sync(&phy->roc_work); if (test_and_clear_bit(MT76_STATE_ROC, &phy->mt76->state)) - ieee80211_iterate_active_interfaces(mt76_hw(dev), - IEEE80211_IFACE_ITER_RESUME_ALL, - mt7921_roc_iter, (void *)phy); + ieee80211_iterate_interfaces(mt76_hw(dev), + IEEE80211_IFACE_ITER_RESUME_ALL, + mt7921_roc_iter, (void *)phy); } EXPORT_SYMBOL_GPL(mt7921_roc_abort_sync); @@ -861,6 +861,7 @@ void mt7921_mac_sta_remove(struct mt76_dev *mdev, struct ieee80211_vif *vif, struct mt792x_dev *dev = container_of(mdev, struct mt792x_dev, mt76); struct mt792x_sta *msta = (struct mt792x_sta *)sta->drv_priv; + mt7921_roc_abort_sync(dev); mt76_connac_free_pending_tx_skbs(&dev->pm, &msta->deflink.wcid); mt76_connac_pm_wake(&dev->mphy, &dev->pm);
In multi-channel scenarios, the granted channel must be aborted before station remove. Otherwise, the firmware will be put into a wrong state, resulting in have chance to make subsequence scan no APs. With this patch, the granted channel will be always aborted before station remove. Signed-off-by: Quan Zhou <quan.zhou@mediatek.com> --- drivers/net/wireless/mediatek/mt76/mt7921/main.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-)