All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 0/4] rtw89: some fixes related to hw_scan
@ 2022-04-01  5:50 Ping-Ke Shih
  2022-04-01  5:50 ` [PATCH v2 1/4] rtw89: change idle mode condition during hw_scan Ping-Ke Shih
                   ` (3 more replies)
  0 siblings, 4 replies; 6+ messages in thread
From: Ping-Ke Shih @ 2022-04-01  5:50 UTC (permalink / raw)
  To: kvalo; +Cc: linux-wireless, ku920601, phhuang

After applying hw_scan, it can't play STA and monitor mode simultaneously,
because power is off after hw_scan unconditionally. The new firmware,
which supports hw_scan, adds an new C2H message to notify driver, but
this message is debug purpose, so just add a dummy function to avoid the
unsupported message. More, correct BT-coexistence behavior during hw_scan,
and correct dwell period of DFS channel.

This patchset is based on "rtw89: add firmware reset and dump firmware memory and backtrace"

v2: add more fixes to make hw_scan work well.

---
Hi Kalle,

I know this week is still merge window. I would like to put these fixes
together to correct hw_scan behavior in one go.

Ching-Te Ku (1):
  rtw89: coex: Add case for scan offload

Po Hao Huang (3):
  rtw89: change idle mode condition during hw_scan
  rtw89: packet offload handler to avoid warning
  rtw89: fix misconfiguration on hw_scan channel time

 drivers/net/wireless/realtek/rtw89/coex.c | 12 +++++++++++-
 drivers/net/wireless/realtek/rtw89/core.c |  8 ++++----
 drivers/net/wireless/realtek/rtw89/fw.c   |  2 +-
 drivers/net/wireless/realtek/rtw89/mac.c  |  8 +++++++-
 4 files changed, 23 insertions(+), 7 deletions(-)

-- 
2.25.1


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH v2 1/4] rtw89: change idle mode condition during hw_scan
  2022-04-01  5:50 [PATCH v2 0/4] rtw89: some fixes related to hw_scan Ping-Ke Shih
@ 2022-04-01  5:50 ` Ping-Ke Shih
  2022-04-06  8:56   ` Kalle Valo
  2022-04-01  5:50 ` [PATCH v2 2/4] rtw89: packet offload handler to avoid warning Ping-Ke Shih
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 6+ messages in thread
From: Ping-Ke Shih @ 2022-04-01  5:50 UTC (permalink / raw)
  To: kvalo; +Cc: linux-wireless, ku920601, phhuang

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>
---
 drivers/net/wireless/realtek/rtw89/core.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

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);
 }
 
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH v2 2/4] rtw89: packet offload handler to avoid warning
  2022-04-01  5:50 [PATCH v2 0/4] rtw89: some fixes related to hw_scan Ping-Ke Shih
  2022-04-01  5:50 ` [PATCH v2 1/4] rtw89: change idle mode condition during hw_scan Ping-Ke Shih
@ 2022-04-01  5:50 ` Ping-Ke Shih
  2022-04-01  5:50 ` [PATCH v2 3/4] rtw89: coex: Add case for scan offload Ping-Ke Shih
  2022-04-01  5:50 ` [PATCH v2 4/4] rtw89: fix misconfiguration on hw_scan channel time Ping-Ke Shih
  3 siblings, 0 replies; 6+ messages in thread
From: Ping-Ke Shih @ 2022-04-01  5:50 UTC (permalink / raw)
  To: kvalo; +Cc: linux-wireless, ku920601, phhuang

From: Po Hao Huang <phhuang@realtek.com>

Add a dummy function for packet offload to eliminate warning message
"c2h class 1 func 2 not support". This c2h is for debug purpose and
its presence itself can do the work, so further parsing won't be
required for now.

Signed-off-by: Po Hao Huang <phhuang@realtek.com>
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
---
 drivers/net/wireless/realtek/rtw89/mac.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/drivers/net/wireless/realtek/rtw89/mac.c b/drivers/net/wireless/realtek/rtw89/mac.c
index 0a8fd672b41f6..b4855886d1207 100644
--- a/drivers/net/wireless/realtek/rtw89/mac.c
+++ b/drivers/net/wireless/realtek/rtw89/mac.c
@@ -3341,12 +3341,18 @@ rtw89_mac_c2h_bcn_cnt(struct rtw89_dev *rtwdev, struct sk_buff *c2h, u32 len)
 {
 }
 
+static void
+rtw89_mac_c2h_pkt_ofld_rsp(struct rtw89_dev *rtwdev, struct sk_buff *c2h,
+			   u32 len)
+{
+}
+
 static
 void (* const rtw89_mac_c2h_ofld_handler[])(struct rtw89_dev *rtwdev,
 					    struct sk_buff *c2h, u32 len) = {
 	[RTW89_MAC_C2H_FUNC_EFUSE_DUMP] = NULL,
 	[RTW89_MAC_C2H_FUNC_READ_RSP] = NULL,
-	[RTW89_MAC_C2H_FUNC_PKT_OFLD_RSP] = NULL,
+	[RTW89_MAC_C2H_FUNC_PKT_OFLD_RSP] = rtw89_mac_c2h_pkt_ofld_rsp,
 	[RTW89_MAC_C2H_FUNC_BCN_RESEND] = NULL,
 	[RTW89_MAC_C2H_FUNC_MACID_PAUSE] = rtw89_mac_c2h_macid_pause,
 	[RTW89_MAC_C2H_FUNC_SCANOFLD_RSP] = rtw89_mac_c2h_scanofld_rsp,
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH v2 3/4] rtw89: coex: Add case for scan offload
  2022-04-01  5:50 [PATCH v2 0/4] rtw89: some fixes related to hw_scan Ping-Ke Shih
  2022-04-01  5:50 ` [PATCH v2 1/4] rtw89: change idle mode condition during hw_scan Ping-Ke Shih
  2022-04-01  5:50 ` [PATCH v2 2/4] rtw89: packet offload handler to avoid warning Ping-Ke Shih
@ 2022-04-01  5:50 ` Ping-Ke Shih
  2022-04-01  5:50 ` [PATCH v2 4/4] rtw89: fix misconfiguration on hw_scan channel time Ping-Ke Shih
  3 siblings, 0 replies; 6+ messages in thread
From: Ping-Ke Shih @ 2022-04-01  5:50 UTC (permalink / raw)
  To: kvalo; +Cc: linux-wireless, ku920601, phhuang

From: Ching-Te Ku <ku920601@realtek.com>

Turn off coexistence driver control, let firmware can control the
traffic during scan. This prevents potential unexpected behavior of
the BT driver.

Signed-off-by: Ching-Te Ku <ku920601@realtek.com>
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
---
 drivers/net/wireless/realtek/rtw89/coex.c | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/drivers/net/wireless/realtek/rtw89/coex.c b/drivers/net/wireless/realtek/rtw89/coex.c
index 07f26718b66fb..bf433a68c1ded 100644
--- a/drivers/net/wireless/realtek/rtw89/coex.c
+++ b/drivers/net/wireless/realtek/rtw89/coex.c
@@ -3068,7 +3068,17 @@ static void _action_wl_scan(struct rtw89_dev *rtwdev)
 	struct rtw89_btc_wl_info *wl = &btc->cx.wl;
 	struct rtw89_btc_wl_dbcc_info *wl_dinfo = &wl->dbcc_info;
 
-	if (rtwdev->dbcc_en) {
+	if (RTW89_CHK_FW_FEATURE(SCAN_OFFLOAD, &rtwdev->fw)) {
+		_set_ant(rtwdev, NM_EXEC, BTC_PHY_ALL, BTC_ANT_W25G);
+		if (btc->mdinfo.ant.type == BTC_ANT_SHARED)
+			_set_policy(rtwdev, BTC_CXP_OFFE_DEF,
+				    BTC_RSN_NTFY_SCAN_START);
+		else
+			_set_policy(rtwdev, BTC_CXP_OFF_EQ0,
+				    BTC_RSN_NTFY_SCAN_START);
+
+		rtw89_debug(rtwdev, RTW89_DBG_BTC, "[BTC], Scan offload!\n");
+	} else if (rtwdev->dbcc_en) {
 		if (wl_dinfo->real_band[RTW89_PHY_0] != RTW89_BAND_2G &&
 		    wl_dinfo->real_band[RTW89_PHY_1] != RTW89_BAND_2G)
 			_action_wl_5g(rtwdev);
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH v2 4/4] rtw89: fix misconfiguration on hw_scan channel time
  2022-04-01  5:50 [PATCH v2 0/4] rtw89: some fixes related to hw_scan Ping-Ke Shih
                   ` (2 preceding siblings ...)
  2022-04-01  5:50 ` [PATCH v2 3/4] rtw89: coex: Add case for scan offload Ping-Ke Shih
@ 2022-04-01  5:50 ` Ping-Ke Shih
  3 siblings, 0 replies; 6+ messages in thread
From: Ping-Ke Shih @ 2022-04-01  5:50 UTC (permalink / raw)
  To: kvalo; +Cc: linux-wireless, ku920601, phhuang

From: Po Hao Huang <phhuang@realtek.com>

Without this patch, hw scan won't stay long enough on DFS/passive
channels. Found previous logic error and fix it.

Signed-off-by: Po Hao Huang <phhuang@realtek.com>
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
---
 drivers/net/wireless/realtek/rtw89/fw.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/wireless/realtek/rtw89/fw.c b/drivers/net/wireless/realtek/rtw89/fw.c
index 4848f25e7a0af..022d52b0c2e78 100644
--- a/drivers/net/wireless/realtek/rtw89/fw.c
+++ b/drivers/net/wireless/realtek/rtw89/fw.c
@@ -2099,7 +2099,7 @@ static void rtw89_hw_scan_add_chan(struct rtw89_dev *rtwdev, int chan_type,
 		ch_info->num_pkt = 0;
 		break;
 	case RTW89_CHAN_DFS:
-		ch_info->period = min_t(u8, ch_info->period,
+		ch_info->period = max_t(u8, ch_info->period,
 					RTW89_DFS_CHAN_TIME);
 		ch_info->dwell_time = RTW89_DWELL_TIME;
 		break;
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH v2 1/4] rtw89: change idle mode condition during hw_scan
  2022-04-01  5:50 ` [PATCH v2 1/4] rtw89: change idle mode condition during hw_scan Ping-Ke Shih
@ 2022-04-06  8:56   ` Kalle Valo
  0 siblings, 0 replies; 6+ messages in thread
From: Kalle Valo @ 2022-04-06  8:56 UTC (permalink / raw)
  To: Ping-Ke Shih; +Cc: linux-wireless, ku920601, phhuang

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

-- 
https://patchwork.kernel.org/project/linux-wireless/patch/20220401055043.12512-2-pkshih@realtek.com/

https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2022-04-06 12:55 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-04-01  5:50 [PATCH v2 0/4] rtw89: some fixes related to hw_scan Ping-Ke Shih
2022-04-01  5:50 ` [PATCH v2 1/4] rtw89: change idle mode condition during hw_scan Ping-Ke Shih
2022-04-06  8:56   ` Kalle Valo
2022-04-01  5:50 ` [PATCH v2 2/4] rtw89: packet offload handler to avoid warning Ping-Ke Shih
2022-04-01  5:50 ` [PATCH v2 3/4] rtw89: coex: Add case for scan offload Ping-Ke Shih
2022-04-01  5:50 ` [PATCH v2 4/4] rtw89: fix misconfiguration on hw_scan channel time Ping-Ke Shih

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.