All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/6] rtw89: correct settings of register and capability
@ 2022-07-04  2:34 Ping-Ke Shih
  2022-07-04  2:34 ` [PATCH 1/6] rtw89: 8852c: disable dma during mac init Ping-Ke Shih
                   ` (5 more replies)
  0 siblings, 6 replies; 8+ messages in thread
From: Ping-Ke Shih @ 2022-07-04  2:34 UTC (permalink / raw)
  To: kvalo; +Cc: leo.li, phhuang, kevin_yang, linux-wireless

Old settings could cause unexpected behavior in field, so fix them.

Chia-Yuan Li (2):
  rtw89: 8852c: modify PCIE prebkf time
  rtw89: 8852c: adjust mactxen delay of mac/phy interface

Ping-Ke Shih (1):
  rtw89: declare support HE HTC always

Po-Hao Huang (1):
  rtw89: 8852c: disable dma during mac init

Zong-Zhe Yang (2):
  rtw89: 8852a: update HW setting on BB
  rtw89: ser: leave lps with mutex

 drivers/net/wireless/realtek/rtw89/core.c     |  3 +--
 drivers/net/wireless/realtek/rtw89/mac.c      | 19 +++++++++++++++++--
 drivers/net/wireless/realtek/rtw89/pci.c      |  2 ++
 drivers/net/wireless/realtek/rtw89/reg.h      |  4 +++-
 drivers/net/wireless/realtek/rtw89/rtw8852a.c |  3 ++-
 drivers/net/wireless/realtek/rtw89/ser.c      |  3 +++
 6 files changed, 28 insertions(+), 6 deletions(-)

-- 
2.25.1


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

* [PATCH 1/6] rtw89: 8852c: disable dma during mac init
  2022-07-04  2:34 [PATCH 0/6] rtw89: correct settings of register and capability Ping-Ke Shih
@ 2022-07-04  2:34 ` Ping-Ke Shih
  2022-09-02  8:32   ` Kalle Valo
  2022-07-04  2:34 ` [PATCH 2/6] rtw89: 8852a: update HW setting on BB Ping-Ke Shih
                   ` (4 subsequent siblings)
  5 siblings, 1 reply; 8+ messages in thread
From: Ping-Ke Shih @ 2022-07-04  2:34 UTC (permalink / raw)
  To: kvalo; +Cc: leo.li, phhuang, kevin_yang, linux-wireless

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

Without this patch, our hardware attempts to perform dma while device
cpu restarts, and leads to iommu page faults caused by invalid requests.
Some platforms show warning messages as below:
rtw89_8852ce 0000:01:00.0: AMD-Vi: Event logged [IO_PAGE_FAULT
domain=0x000a address=0x10000000004 flags=0x0030]

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

diff --git a/drivers/net/wireless/realtek/rtw89/pci.c b/drivers/net/wireless/realtek/rtw89/pci.c
index 73b3b7e9fe6f5..19217a6951c97 100644
--- a/drivers/net/wireless/realtek/rtw89/pci.c
+++ b/drivers/net/wireless/realtek/rtw89/pci.c
@@ -1627,6 +1627,8 @@ static void rtw89_pci_ctrl_dma_all(struct rtw89_dev *rtwdev, bool enable)
 		else
 			rtw89_write32_clr(rtwdev, R_AX_PCIE_INIT_CFG1,
 					  B_AX_STOP_AXI_MST);
+		rtw89_write32_clr(rtwdev, R_AX_PCIE_INIT_CFG1,
+				  txhci_en | rxhci_en);
 		if (chip_id == RTL8852C)
 			rtw89_write32_set(rtwdev, R_AX_PCIE_INIT_CFG1,
 					  B_AX_STOP_AXI_MST);
-- 
2.25.1


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

* [PATCH 2/6] rtw89: 8852a: update HW setting on BB
  2022-07-04  2:34 [PATCH 0/6] rtw89: correct settings of register and capability Ping-Ke Shih
  2022-07-04  2:34 ` [PATCH 1/6] rtw89: 8852c: disable dma during mac init Ping-Ke Shih
@ 2022-07-04  2:34 ` Ping-Ke Shih
  2022-07-04  2:34 ` [PATCH 3/6] rtw89: declare support HE HTC always Ping-Ke Shih
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 8+ messages in thread
From: Ping-Ke Shih @ 2022-07-04  2:34 UTC (permalink / raw)
  To: kvalo; +Cc: leo.li, phhuang, kevin_yang, linux-wireless

From: Zong-Zhe Yang <kevin_yang@realtek.com>

Sometimes, BB might encounter RX problem on OFDM 6M. It's not quite
easy to happen, but if it happens, we will keep getting stuck on RX.
And, since we cannot properly receive layer 2 ACK, it also casues TX
problem, e.g. constantly retrying TX. Eventually, after some time, we
would get disconnected due to abnormal behavior.

Update break setting and phy status parsing time to make BB get out
of stuck state faster.

Signed-off-by: Zong-Zhe Yang <kevin_yang@realtek.com>
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
---
 drivers/net/wireless/realtek/rtw89/reg.h      | 3 ++-
 drivers/net/wireless/realtek/rtw89/rtw8852a.c | 3 ++-
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/net/wireless/realtek/rtw89/reg.h b/drivers/net/wireless/realtek/rtw89/reg.h
index ebf28719d935e..986e27c445aa7 100644
--- a/drivers/net/wireless/realtek/rtw89/reg.h
+++ b/drivers/net/wireless/realtek/rtw89/reg.h
@@ -3431,8 +3431,9 @@
 #define R_MAC_PIN_SEL 0x0734
 #define B_CH_IDX_SEG0 GENMASK(23, 16)
 #define R_PLCP_HISTOGRAM 0x0738
-#define B_STS_DIS_TRIG_BY_BRK BIT(2)
+#define B_STS_PARSING_TIME GENMASK(19, 16)
 #define B_STS_DIS_TRIG_BY_FAIL BIT(3)
+#define B_STS_DIS_TRIG_BY_BRK BIT(2)
 #define R_PHY_STS_BITMAP_ADDR_START R_PHY_STS_BITMAP_SEARCH_FAIL
 #define B_PHY_STS_BITMAP_ADDR_MASK GENMASK(6, 2)
 #define R_PHY_STS_BITMAP_SEARCH_FAIL 0x073C
diff --git a/drivers/net/wireless/realtek/rtw89/rtw8852a.c b/drivers/net/wireless/realtek/rtw89/rtw8852a.c
index 81bd0c4fe21bc..7125dbef9d8a8 100644
--- a/drivers/net/wireless/realtek/rtw89/rtw8852a.c
+++ b/drivers/net/wireless/realtek/rtw89/rtw8852a.c
@@ -1102,11 +1102,12 @@ static void rtw8852a_bb_sethw(struct rtw89_dev *rtwdev)
 	if (rtwdev->hal.cv <= CHIP_CCV) {
 		rtw89_phy_write32_set(rtwdev, R_RSTB_WATCH_DOG, B_P0_RSTB_WATCH_DOG);
 		rtw89_phy_write32(rtwdev, R_BRK_ASYNC_RST_EN_1, 0x864FA000);
-		rtw89_phy_write32(rtwdev, R_BRK_ASYNC_RST_EN_2, 0x3F);
+		rtw89_phy_write32(rtwdev, R_BRK_ASYNC_RST_EN_2, 0x43F);
 		rtw89_phy_write32(rtwdev, R_BRK_ASYNC_RST_EN_3, 0x7FFF);
 		rtw89_phy_write32_set(rtwdev, R_SPOOF_ASYNC_RST, B_SPOOF_ASYNC_RST);
 		rtw89_phy_write32_set(rtwdev, R_P0_TXPW_RSTB, B_P0_TXPW_RSTB_MANON);
 		rtw89_phy_write32_set(rtwdev, R_P1_TXPW_RSTB, B_P1_TXPW_RSTB_MANON);
+		rtw89_phy_write32_set(rtwdev, R_PLCP_HISTOGRAM, B_STS_PARSING_TIME);
 	}
 	rtw89_phy_write32_mask(rtwdev, R_CFO_TRK0, B_CFO_TRK_MSK, 0x1f);
 	rtw89_phy_write32_mask(rtwdev, R_CFO_TRK1, B_CFO_TRK_MSK, 0x0c);
-- 
2.25.1


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

* [PATCH 3/6] rtw89: declare support HE HTC always
  2022-07-04  2:34 [PATCH 0/6] rtw89: correct settings of register and capability Ping-Ke Shih
  2022-07-04  2:34 ` [PATCH 1/6] rtw89: 8852c: disable dma during mac init Ping-Ke Shih
  2022-07-04  2:34 ` [PATCH 2/6] rtw89: 8852a: update HW setting on BB Ping-Ke Shih
@ 2022-07-04  2:34 ` Ping-Ke Shih
  2022-07-04  2:34 ` [PATCH 4/6] rtw89: ser: leave lps with mutex Ping-Ke Shih
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 8+ messages in thread
From: Ping-Ke Shih @ 2022-07-04  2:34 UTC (permalink / raw)
  To: kvalo; +Cc: leo.li, phhuang, kevin_yang, linux-wireless

Correct ability of HE HTC that both STA and AP mode can support.

Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
---
 drivers/net/wireless/realtek/rtw89/core.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/net/wireless/realtek/rtw89/core.c b/drivers/net/wireless/realtek/rtw89/core.c
index a5880a54812e7..ec6e6b4543ceb 100644
--- a/drivers/net/wireless/realtek/rtw89/core.c
+++ b/drivers/net/wireless/realtek/rtw89/core.c
@@ -2669,8 +2669,7 @@ static void rtw89_init_he_cap(struct rtw89_dev *rtwdev,
 		phy_cap_info = he_cap->he_cap_elem.phy_cap_info;
 
 		he_cap->has_he = true;
-		if (i == NL80211_IFTYPE_AP)
-			mac_cap_info[0] = IEEE80211_HE_MAC_CAP0_HTC_HE;
+		mac_cap_info[0] = IEEE80211_HE_MAC_CAP0_HTC_HE;
 		if (i == NL80211_IFTYPE_STATION)
 			mac_cap_info[1] = IEEE80211_HE_MAC_CAP1_TF_MAC_PAD_DUR_16US;
 		mac_cap_info[2] = IEEE80211_HE_MAC_CAP2_ALL_ACK |
-- 
2.25.1


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

* [PATCH 4/6] rtw89: ser: leave lps with mutex
  2022-07-04  2:34 [PATCH 0/6] rtw89: correct settings of register and capability Ping-Ke Shih
                   ` (2 preceding siblings ...)
  2022-07-04  2:34 ` [PATCH 3/6] rtw89: declare support HE HTC always Ping-Ke Shih
@ 2022-07-04  2:34 ` Ping-Ke Shih
  2022-07-04  2:34 ` [PATCH 5/6] rtw89: 8852c: modify PCIE prebkf time Ping-Ke Shih
  2022-07-04  2:34 ` [PATCH 6/6] rtw89: 8852c: adjust mactxen delay of mac/phy interface Ping-Ke Shih
  5 siblings, 0 replies; 8+ messages in thread
From: Ping-Ke Shih @ 2022-07-04  2:34 UTC (permalink / raw)
  To: kvalo; +Cc: leo.li, phhuang, kevin_yang, linux-wireless

From: Zong-Zhe Yang <kevin_yang@realtek.com>

Calling rtw89_leave_lps() should hold rtwdev::mutex.
So, fix it.

Signed-off-by: Zong-Zhe Yang <kevin_yang@realtek.com>
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
---
 drivers/net/wireless/realtek/rtw89/ser.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/net/wireless/realtek/rtw89/ser.c b/drivers/net/wireless/realtek/rtw89/ser.c
index 726223f25dc69..7240364e8f7df 100644
--- a/drivers/net/wireless/realtek/rtw89/ser.c
+++ b/drivers/net/wireless/realtek/rtw89/ser.c
@@ -152,7 +152,10 @@ static void ser_state_run(struct rtw89_ser *ser, u8 evt)
 	rtw89_debug(rtwdev, RTW89_DBG_SER, "ser: %s receive %s\n",
 		    ser_st_name(ser), ser_ev_name(ser, evt));
 
+	mutex_lock(&rtwdev->mutex);
 	rtw89_leave_lps(rtwdev);
+	mutex_unlock(&rtwdev->mutex);
+
 	ser->st_tbl[ser->state].st_func(ser, evt);
 }
 
-- 
2.25.1


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

* [PATCH 5/6] rtw89: 8852c: modify PCIE prebkf time
  2022-07-04  2:34 [PATCH 0/6] rtw89: correct settings of register and capability Ping-Ke Shih
                   ` (3 preceding siblings ...)
  2022-07-04  2:34 ` [PATCH 4/6] rtw89: ser: leave lps with mutex Ping-Ke Shih
@ 2022-07-04  2:34 ` Ping-Ke Shih
  2022-07-04  2:34 ` [PATCH 6/6] rtw89: 8852c: adjust mactxen delay of mac/phy interface Ping-Ke Shih
  5 siblings, 0 replies; 8+ messages in thread
From: Ping-Ke Shih @ 2022-07-04  2:34 UTC (permalink / raw)
  To: kvalo; +Cc: leo.li, phhuang, kevin_yang, linux-wireless

From: Chia-Yuan Li <leo.li@realtek.com>

Prebkf time is to inform generating tx command if remaining backoff
time less than this setting value.
It might cause SER if generating tx command early in security mode.

Signed-off-by: Chia-Yuan Li <leo.li@realtek.com>
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
---
 drivers/net/wireless/realtek/rtw89/mac.c | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/drivers/net/wireless/realtek/rtw89/mac.c b/drivers/net/wireless/realtek/rtw89/mac.c
index 93124b815825f..799f000c59dcf 100644
--- a/drivers/net/wireless/realtek/rtw89/mac.c
+++ b/drivers/net/wireless/realtek/rtw89/mac.c
@@ -1747,6 +1747,7 @@ static int scheduler_init(struct rtw89_dev *rtwdev, u8 mac_idx)
 {
 	u32 ret;
 	u32 reg;
+	u32 val;
 
 	ret = rtw89_mac_check_mac_en(rtwdev, mac_idx, RTW89_CMAC_SEL);
 	if (ret)
@@ -1764,7 +1765,16 @@ static int scheduler_init(struct rtw89_dev *rtwdev, u8 mac_idx)
 	rtw89_write32_clr(rtwdev, reg, B_AX_BTCCA_EN);
 
 	reg = rtw89_mac_reg_by_idx(R_AX_PREBKF_CFG_0, mac_idx);
-	rtw89_write32_mask(rtwdev, reg, B_AX_PREBKF_TIME_MASK, SCH_PREBKF_24US);
+	if (rtwdev->chip->chip_id == RTL8852C) {
+		val = rtw89_read32_mask(rtwdev, R_AX_SEC_ENG_CTRL,
+					B_AX_TX_PARTIAL_MODE);
+		if (!val)
+			rtw89_write32_mask(rtwdev, reg, B_AX_PREBKF_TIME_MASK,
+					   SCH_PREBKF_24US);
+	} else {
+		rtw89_write32_mask(rtwdev, reg, B_AX_PREBKF_TIME_MASK,
+				   SCH_PREBKF_24US);
+	}
 
 	return 0;
 }
-- 
2.25.1


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

* [PATCH 6/6] rtw89: 8852c: adjust mactxen delay of mac/phy interface
  2022-07-04  2:34 [PATCH 0/6] rtw89: correct settings of register and capability Ping-Ke Shih
                   ` (4 preceding siblings ...)
  2022-07-04  2:34 ` [PATCH 5/6] rtw89: 8852c: modify PCIE prebkf time Ping-Ke Shih
@ 2022-07-04  2:34 ` Ping-Ke Shih
  5 siblings, 0 replies; 8+ messages in thread
From: Ping-Ke Shih @ 2022-07-04  2:34 UTC (permalink / raw)
  To: kvalo; +Cc: leo.li, phhuang, kevin_yang, linux-wireless

From: Chia-Yuan Li <leo.li@realtek.com>

mac_txen time is to inform TMAC tx after rx air end.
Modify 8852c value to meet TB SIFS time.

Signed-off-by: Chia-Yuan Li <leo.li@realtek.com>
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
---
 drivers/net/wireless/realtek/rtw89/mac.c | 7 ++++++-
 drivers/net/wireless/realtek/rtw89/reg.h | 1 +
 2 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/drivers/net/wireless/realtek/rtw89/mac.c b/drivers/net/wireless/realtek/rtw89/mac.c
index 799f000c59dcf..2c7185e07fd53 100644
--- a/drivers/net/wireless/realtek/rtw89/mac.c
+++ b/drivers/net/wireless/realtek/rtw89/mac.c
@@ -1754,7 +1754,12 @@ static int scheduler_init(struct rtw89_dev *rtwdev, u8 mac_idx)
 		return ret;
 
 	reg = rtw89_mac_reg_by_idx(R_AX_PREBKF_CFG_1, mac_idx);
-	rtw89_write32_mask(rtwdev, reg, B_AX_SIFS_MACTXEN_T1_MASK, SIFS_MACTXEN_T1);
+	if (rtwdev->chip->chip_id == RTL8852C)
+		rtw89_write32_mask(rtwdev, reg, B_AX_SIFS_MACTXEN_T1_MASK,
+				   SIFS_MACTXEN_T1_V1);
+	else
+		rtw89_write32_mask(rtwdev, reg, B_AX_SIFS_MACTXEN_T1_MASK,
+				   SIFS_MACTXEN_T1);
 
 	if (rtwdev->chip->chip_id == RTL8852B) {
 		reg = rtw89_mac_reg_by_idx(R_AX_SCH_EXT_CTRL, mac_idx);
diff --git a/drivers/net/wireless/realtek/rtw89/reg.h b/drivers/net/wireless/realtek/rtw89/reg.h
index 986e27c445aa7..ef6f24d1801e5 100644
--- a/drivers/net/wireless/realtek/rtw89/reg.h
+++ b/drivers/net/wireless/realtek/rtw89/reg.h
@@ -1882,6 +1882,7 @@
 #define B_AX_SIFS_TIMEOUT_T2_MASK GENMASK(14, 8)
 #define B_AX_SIFS_MACTXEN_T1_MASK GENMASK(6, 0)
 #define SIFS_MACTXEN_T1 0x47
+#define SIFS_MACTXEN_T1_V1 0x41
 
 #define R_AX_CCA_CFG_0 0xC340
 #define R_AX_CCA_CFG_0_C1 0xE340
-- 
2.25.1


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

* Re: [PATCH 1/6] rtw89: 8852c: disable dma during mac init
  2022-07-04  2:34 ` [PATCH 1/6] rtw89: 8852c: disable dma during mac init Ping-Ke Shih
@ 2022-09-02  8:32   ` Kalle Valo
  0 siblings, 0 replies; 8+ messages in thread
From: Kalle Valo @ 2022-09-02  8:32 UTC (permalink / raw)
  To: Ping-Ke Shih; +Cc: leo.li, phhuang, kevin_yang, linux-wireless

Ping-Ke Shih <pkshih@realtek.com> wrote:

> From: Po-Hao Huang <phhuang@realtek.com>
> 
> Without this patch, our hardware attempts to perform dma while device
> cpu restarts, and leads to iommu page faults caused by invalid requests.
> Some platforms show warning messages as below:
> rtw89_8852ce 0000:01:00.0: AMD-Vi: Event logged [IO_PAGE_FAULT
> domain=0x000a address=0x10000000004 flags=0x0030]
> 
> Signed-off-by: Po-Hao Huang <phhuang@realtek.com>
> Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>

6 patches applied to wireless-next.git, thanks.

0e91d191cf4b rtw89: 8852c: disable dma during mac init
22e2f847c526 rtw89: 8852a: update HW setting on BB
917606d77910 rtw89: declare support HE HTC always
8676031bae1c rtw89: ser: leave lps with mutex
60b2ede9dd38 rtw89: 8852c: modify PCIE prebkf time
ee5469046474 rtw89: 8852c: adjust mactxen delay of mac/phy interface

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

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


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

end of thread, other threads:[~2022-09-02  8:32 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-07-04  2:34 [PATCH 0/6] rtw89: correct settings of register and capability Ping-Ke Shih
2022-07-04  2:34 ` [PATCH 1/6] rtw89: 8852c: disable dma during mac init Ping-Ke Shih
2022-09-02  8:32   ` Kalle Valo
2022-07-04  2:34 ` [PATCH 2/6] rtw89: 8852a: update HW setting on BB Ping-Ke Shih
2022-07-04  2:34 ` [PATCH 3/6] rtw89: declare support HE HTC always Ping-Ke Shih
2022-07-04  2:34 ` [PATCH 4/6] rtw89: ser: leave lps with mutex Ping-Ke Shih
2022-07-04  2:34 ` [PATCH 5/6] rtw89: 8852c: modify PCIE prebkf time Ping-Ke Shih
2022-07-04  2:34 ` [PATCH 6/6] rtw89: 8852c: adjust mactxen delay of mac/phy interface 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.