Search Linux Wireless

Re: [PATCH] wifi: mt76: mt7921: fix a potential scan no APs

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxxxxxx>

         Sean



On Thu, Jul 18, 2024 at 6:51 AM Quan Zhou <quan.zhou@xxxxxxxxxxxx> 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@xxxxxxxxxxxx>
> ---
>  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
>
>





[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Wireless Regulations]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux