Message ID | 20220401055043.12512-2-pkshih@realtek.com (mailing list archive) |
---|---|
State | Accepted |
Commit | ee20d538c4989daddd383b6a89129a2b514580e6 |
Delegated to: | Kalle Valo |
Headers | show |
Series | rtw89: some fixes related to hw_scan | expand |
Ping-Ke Shih <pkshih@realtek.com> wrote: > From: Po Hao Huang <phhuang@realtek.com> > > Previously we only consider single interface's status, idle mode > behavior could be unexpected when multiple interfaces is active. > Change to enter/leave idle mode by mac80211's configuration state. > > Signed-off-by: Po Hao Huang <phhuang@realtek.com> > Signed-off-by: Ping-Ke Shih <pkshih@realtek.com> 4 patches applied to wireless-next.git, thanks. ee20d538c498 rtw89: change idle mode condition during hw_scan 2b8219e9b746 rtw89: packet offload handler to avoid warning 841f2633840e rtw89: coex: Add case for scan offload 65ee4971a262 rtw89: fix misconfiguration on hw_scan channel time
diff --git a/drivers/net/wireless/realtek/rtw89/core.c b/drivers/net/wireless/realtek/rtw89/core.c index c61061358980b..be25b9a42fc11 100644 --- a/drivers/net/wireless/realtek/rtw89/core.c +++ b/drivers/net/wireless/realtek/rtw89/core.c @@ -1798,9 +1798,9 @@ static void rtw89_ips_work(struct work_struct *work) { struct rtw89_dev *rtwdev = container_of(work, struct rtw89_dev, ips_work); - mutex_lock(&rtwdev->mutex); - rtw89_enter_ips(rtwdev); + if (rtwdev->hw->conf.flags & IEEE80211_CONF_IDLE) + rtw89_enter_ips(rtwdev); mutex_unlock(&rtwdev->mutex); } @@ -2703,7 +2703,7 @@ void rtw89_core_scan_start(struct rtw89_dev *rtwdev, struct rtw89_vif *rtwvif, rtwdev->scanning = true; rtw89_leave_lps(rtwdev); - if (hw_scan && rtwvif->net_type == RTW89_NET_TYPE_NO_LINK) + if (hw_scan && (rtwdev->hw->conf.flags & IEEE80211_CONF_IDLE)) rtw89_leave_ips(rtwdev); ether_addr_copy(rtwvif->mac_addr, mac_addr); @@ -2727,7 +2727,7 @@ void rtw89_core_scan_complete(struct rtw89_dev *rtwdev, rtwdev->scanning = false; rtwdev->dig.bypass_dig = true; - if (hw_scan && rtwvif->net_type == RTW89_NET_TYPE_NO_LINK) + if (hw_scan && (rtwdev->hw->conf.flags & IEEE80211_CONF_IDLE)) ieee80211_queue_work(rtwdev->hw, &rtwdev->ips_work); }