All the mail mirrored from lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] wifi: rtw89: 8852b: adjust quota to avoid SER L1 caused by access null page
@ 2023-04-21  1:53 Ping-Ke Shih
  2023-04-25 16:04 ` Larry Finger
  0 siblings, 1 reply; 3+ messages in thread
From: Ping-Ke Shih @ 2023-04-21  1:53 UTC (permalink / raw
  To: kvalo; +Cc: linux-wireless

Though SER can recover this case, traffic can get stuck for a while. Fix it
by adjusting page quota to avoid hardware access null page of CMAC/DMAC.

Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
---
 drivers/net/wireless/realtek/rtw89/mac.c      |  4 +++
 drivers/net/wireless/realtek/rtw89/mac.h      |  2 ++
 drivers/net/wireless/realtek/rtw89/rtw8852b.c | 28 +++++++++----------
 3 files changed, 20 insertions(+), 14 deletions(-)

diff --git a/drivers/net/wireless/realtek/rtw89/mac.c b/drivers/net/wireless/realtek/rtw89/mac.c
index b8019cfc11b20..512de491a064b 100644
--- a/drivers/net/wireless/realtek/rtw89/mac.c
+++ b/drivers/net/wireless/realtek/rtw89/mac.c
@@ -1425,6 +1425,8 @@ const struct rtw89_mac_size_set rtw89_mac_size = {
 	.wde_size4 = {RTW89_WDE_PG_64, 0, 4096,},
 	/* PCIE 64 */
 	.wde_size6 = {RTW89_WDE_PG_64, 512, 0,},
+	/* 8852B PCIE SCC */
+	.wde_size7 = {RTW89_WDE_PG_64, 510, 2,},
 	/* DLFW */
 	.wde_size9 = {RTW89_WDE_PG_64, 0, 1024,},
 	/* 8852C DLFW */
@@ -1449,6 +1451,8 @@ const struct rtw89_mac_size_set rtw89_mac_size = {
 	.wde_qt4 = {0, 0, 0, 0,},
 	/* PCIE 64 */
 	.wde_qt6 = {448, 48, 0, 16,},
+	/* 8852B PCIE SCC */
+	.wde_qt7 = {446, 48, 0, 16,},
 	/* 8852C DLFW */
 	.wde_qt17 = {0, 0, 0,  0,},
 	/* 8852C PCIE SCC */
diff --git a/drivers/net/wireless/realtek/rtw89/mac.h b/drivers/net/wireless/realtek/rtw89/mac.h
index a8d9847ef0b49..6ba633ccdd037 100644
--- a/drivers/net/wireless/realtek/rtw89/mac.h
+++ b/drivers/net/wireless/realtek/rtw89/mac.h
@@ -792,6 +792,7 @@ struct rtw89_mac_size_set {
 	const struct rtw89_dle_size wde_size0;
 	const struct rtw89_dle_size wde_size4;
 	const struct rtw89_dle_size wde_size6;
+	const struct rtw89_dle_size wde_size7;
 	const struct rtw89_dle_size wde_size9;
 	const struct rtw89_dle_size wde_size18;
 	const struct rtw89_dle_size wde_size19;
@@ -804,6 +805,7 @@ struct rtw89_mac_size_set {
 	const struct rtw89_wde_quota wde_qt0;
 	const struct rtw89_wde_quota wde_qt4;
 	const struct rtw89_wde_quota wde_qt6;
+	const struct rtw89_wde_quota wde_qt7;
 	const struct rtw89_wde_quota wde_qt17;
 	const struct rtw89_wde_quota wde_qt18;
 	const struct rtw89_ple_quota ple_qt4;
diff --git a/drivers/net/wireless/realtek/rtw89/rtw8852b.c b/drivers/net/wireless/realtek/rtw89/rtw8852b.c
index eaa2ea0586bc6..6da1b603a9a95 100644
--- a/drivers/net/wireless/realtek/rtw89/rtw8852b.c
+++ b/drivers/net/wireless/realtek/rtw89/rtw8852b.c
@@ -18,25 +18,25 @@
 	RTW8852B_FW_BASENAME "-" __stringify(RTW8852B_FW_FORMAT_MAX) ".bin"
 
 static const struct rtw89_hfc_ch_cfg rtw8852b_hfc_chcfg_pcie[] = {
-	{5, 343, grp_0}, /* ACH 0 */
-	{5, 343, grp_0}, /* ACH 1 */
-	{5, 343, grp_0}, /* ACH 2 */
-	{5, 343, grp_0}, /* ACH 3 */
+	{5, 341, grp_0}, /* ACH 0 */
+	{5, 341, grp_0}, /* ACH 1 */
+	{4, 342, grp_0}, /* ACH 2 */
+	{4, 342, grp_0}, /* ACH 3 */
 	{0, 0, grp_0}, /* ACH 4 */
 	{0, 0, grp_0}, /* ACH 5 */
 	{0, 0, grp_0}, /* ACH 6 */
 	{0, 0, grp_0}, /* ACH 7 */
-	{4, 344, grp_0}, /* B0MGQ */
-	{4, 344, grp_0}, /* B0HIQ */
+	{4, 342, grp_0}, /* B0MGQ */
+	{4, 342, grp_0}, /* B0HIQ */
 	{0, 0, grp_0}, /* B1MGQ */
 	{0, 0, grp_0}, /* B1HIQ */
 	{40, 0, 0} /* FWCMDQ */
 };
 
 static const struct rtw89_hfc_pub_cfg rtw8852b_hfc_pubcfg_pcie = {
-	448, /* Group 0 */
+	446, /* Group 0 */
 	0, /* Group 1 */
-	448, /* Public Max */
+	446, /* Public Max */
 	0 /* WP threshold */
 };
 
@@ -49,13 +49,13 @@ static const struct rtw89_hfc_param_ini rtw8852b_hfc_param_ini_pcie[] = {
 };
 
 static const struct rtw89_dle_mem rtw8852b_dle_mem_pcie[] = {
-	[RTW89_QTA_SCC] = {RTW89_QTA_SCC, &rtw89_mac_size.wde_size6,
-			   &rtw89_mac_size.ple_size6, &rtw89_mac_size.wde_qt6,
-			   &rtw89_mac_size.wde_qt6, &rtw89_mac_size.ple_qt18,
+	[RTW89_QTA_SCC] = {RTW89_QTA_SCC, &rtw89_mac_size.wde_size7,
+			   &rtw89_mac_size.ple_size6, &rtw89_mac_size.wde_qt7,
+			   &rtw89_mac_size.wde_qt7, &rtw89_mac_size.ple_qt18,
 			   &rtw89_mac_size.ple_qt58},
-	[RTW89_QTA_WOW] = {RTW89_QTA_WOW, &rtw89_mac_size.wde_size6,
-			   &rtw89_mac_size.ple_size6, &rtw89_mac_size.wde_qt6,
-			   &rtw89_mac_size.wde_qt6, &rtw89_mac_size.ple_qt18,
+	[RTW89_QTA_WOW] = {RTW89_QTA_WOW, &rtw89_mac_size.wde_size7,
+			   &rtw89_mac_size.ple_size6, &rtw89_mac_size.wde_qt7,
+			   &rtw89_mac_size.wde_qt7, &rtw89_mac_size.ple_qt18,
 			   &rtw89_mac_size.ple_qt_52b_wow},
 	[RTW89_QTA_DLFW] = {RTW89_QTA_DLFW, &rtw89_mac_size.wde_size9,
 			    &rtw89_mac_size.ple_size8, &rtw89_mac_size.wde_qt4,
-- 
2.25.1


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

* Re: [PATCH] wifi: rtw89: 8852b: adjust quota to avoid SER L1 caused by access null page
  2023-04-21  1:53 [PATCH] wifi: rtw89: 8852b: adjust quota to avoid SER L1 caused by access null page Ping-Ke Shih
@ 2023-04-25 16:04 ` Larry Finger
  2023-04-26  3:55   ` Ping-Ke Shih
  0 siblings, 1 reply; 3+ messages in thread
From: Larry Finger @ 2023-04-25 16:04 UTC (permalink / raw
  To: Ping-Ke Shih, kvalo; +Cc: linux-wireless

On 4/20/23 20:53, Ping-Ke Shih wrote:
> Though SER can recover this case, traffic can get stuck for a while. Fix it
> by adjusting page quota to avoid hardware access null page of CMAC/DMAC.
> 
> Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
> ---
>   drivers/net/wireless/realtek/rtw89/mac.c      |  4 +++
>   drivers/net/wireless/realtek/rtw89/mac.h      |  2 ++
>   drivers/net/wireless/realtek/rtw89/rtw8852b.c | 28 +++++++++----------
>   3 files changed, 20 insertions(+), 14 deletions(-)
> 
> diff --git a/drivers/net/wireless/realtek/rtw89/mac.c b/drivers/net/wireless/realtek/rtw89/mac.c
> index b8019cfc11b20..512de491a064b 100644
> --- a/drivers/net/wireless/realtek/rtw89/mac.c
> +++ b/drivers/net/wireless/realtek/rtw89/mac.c
> @@ -1425,6 +1425,8 @@ const struct rtw89_mac_size_set rtw89_mac_size = {
>   	.wde_size4 = {RTW89_WDE_PG_64, 0, 4096,},
>   	/* PCIE 64 */
>   	.wde_size6 = {RTW89_WDE_PG_64, 512, 0,},
> +	/* 8852B PCIE SCC */
> +	.wde_size7 = {RTW89_WDE_PG_64, 510, 2,},
>   	/* DLFW */
>   	.wde_size9 = {RTW89_WDE_PG_64, 0, 1024,},
>   	/* 8852C DLFW */
> @@ -1449,6 +1451,8 @@ const struct rtw89_mac_size_set rtw89_mac_size = {
>   	.wde_qt4 = {0, 0, 0, 0,},
>   	/* PCIE 64 */
>   	.wde_qt6 = {448, 48, 0, 16,},
> +	/* 8852B PCIE SCC */
> +	.wde_qt7 = {446, 48, 0, 16,},
>   	/* 8852C DLFW */
>   	.wde_qt17 = {0, 0, 0,  0,},
>   	/* 8852C PCIE SCC */
> diff --git a/drivers/net/wireless/realtek/rtw89/mac.h b/drivers/net/wireless/realtek/rtw89/mac.h
> index a8d9847ef0b49..6ba633ccdd037 100644
> --- a/drivers/net/wireless/realtek/rtw89/mac.h
> +++ b/drivers/net/wireless/realtek/rtw89/mac.h
> @@ -792,6 +792,7 @@ struct rtw89_mac_size_set {
>   	const struct rtw89_dle_size wde_size0;
>   	const struct rtw89_dle_size wde_size4;
>   	const struct rtw89_dle_size wde_size6;
> +	const struct rtw89_dle_size wde_size7;
>   	const struct rtw89_dle_size wde_size9;
>   	const struct rtw89_dle_size wde_size18;
>   	const struct rtw89_dle_size wde_size19;
> @@ -804,6 +805,7 @@ struct rtw89_mac_size_set {
>   	const struct rtw89_wde_quota wde_qt0;
>   	const struct rtw89_wde_quota wde_qt4;
>   	const struct rtw89_wde_quota wde_qt6;
> +	const struct rtw89_wde_quota wde_qt7;
>   	const struct rtw89_wde_quota wde_qt17;
>   	const struct rtw89_wde_quota wde_qt18;
>   	const struct rtw89_ple_quota ple_qt4;
> diff --git a/drivers/net/wireless/realtek/rtw89/rtw8852b.c b/drivers/net/wireless/realtek/rtw89/rtw8852b.c
> index eaa2ea0586bc6..6da1b603a9a95 100644
> --- a/drivers/net/wireless/realtek/rtw89/rtw8852b.c
> +++ b/drivers/net/wireless/realtek/rtw89/rtw8852b.c
> @@ -18,25 +18,25 @@
>   	RTW8852B_FW_BASENAME "-" __stringify(RTW8852B_FW_FORMAT_MAX) ".bin"
>   
>   static const struct rtw89_hfc_ch_cfg rtw8852b_hfc_chcfg_pcie[] = {
> -	{5, 343, grp_0}, /* ACH 0 */
> -	{5, 343, grp_0}, /* ACH 1 */
> -	{5, 343, grp_0}, /* ACH 2 */
> -	{5, 343, grp_0}, /* ACH 3 */
> +	{5, 341, grp_0}, /* ACH 0 */
> +	{5, 341, grp_0}, /* ACH 1 */
> +	{4, 342, grp_0}, /* ACH 2 */
> +	{4, 342, grp_0}, /* ACH 3 */
>   	{0, 0, grp_0}, /* ACH 4 */
>   	{0, 0, grp_0}, /* ACH 5 */
>   	{0, 0, grp_0}, /* ACH 6 */
>   	{0, 0, grp_0}, /* ACH 7 */
> -	{4, 344, grp_0}, /* B0MGQ */
> -	{4, 344, grp_0}, /* B0HIQ */
> +	{4, 342, grp_0}, /* B0MGQ */
> +	{4, 342, grp_0}, /* B0HIQ */
>   	{0, 0, grp_0}, /* B1MGQ */
>   	{0, 0, grp_0}, /* B1HIQ */
>   	{40, 0, 0} /* FWCMDQ */
>   };
>   
>   static const struct rtw89_hfc_pub_cfg rtw8852b_hfc_pubcfg_pcie = {
> -	448, /* Group 0 */
> +	446, /* Group 0 */
>   	0, /* Group 1 */
> -	448, /* Public Max */
> +	446, /* Public Max */
>   	0 /* WP threshold */
>   };
>   
> @@ -49,13 +49,13 @@ static const struct rtw89_hfc_param_ini rtw8852b_hfc_param_ini_pcie[] = {
>   };
>   
>   static const struct rtw89_dle_mem rtw8852b_dle_mem_pcie[] = {
> -	[RTW89_QTA_SCC] = {RTW89_QTA_SCC, &rtw89_mac_size.wde_size6,
> -			   &rtw89_mac_size.ple_size6, &rtw89_mac_size.wde_qt6,
> -			   &rtw89_mac_size.wde_qt6, &rtw89_mac_size.ple_qt18,
> +	[RTW89_QTA_SCC] = {RTW89_QTA_SCC, &rtw89_mac_size.wde_size7,
> +			   &rtw89_mac_size.ple_size6, &rtw89_mac_size.wde_qt7,
> +			   &rtw89_mac_size.wde_qt7, &rtw89_mac_size.ple_qt18,
>   			   &rtw89_mac_size.ple_qt58},
> -	[RTW89_QTA_WOW] = {RTW89_QTA_WOW, &rtw89_mac_size.wde_size6,
> -			   &rtw89_mac_size.ple_size6, &rtw89_mac_size.wde_qt6,
> -			   &rtw89_mac_size.wde_qt6, &rtw89_mac_size.ple_qt18,
> +	[RTW89_QTA_WOW] = {RTW89_QTA_WOW, &rtw89_mac_size.wde_size7,
> +			   &rtw89_mac_size.ple_size6, &rtw89_mac_size.wde_qt7,
> +			   &rtw89_mac_size.wde_qt7, &rtw89_mac_size.ple_qt18,
>   			   &rtw89_mac_size.ple_qt_52b_wow},
>   	[RTW89_QTA_DLFW] = {RTW89_QTA_DLFW, &rtw89_mac_size.wde_size9,
>   			    &rtw89_mac_size.ple_size8, &rtw89_mac_size.wde_qt4,

Tested-by: Larry Finger <Larry.Finger@lwfinger.net>

This patch has now been added to the repo at
https://github.com/lwfinger/rtw89.git.

Although it has been applied there for only a couple of days, it has fixed 
timing problems on several new HP laptops [1][2].

My recommendation is that this be designated a "Fixes:" patch, be applied to 
kernel 6.4, and be sent to 6.3 through the "Stable" mechanism.

Larry

[1] https://github.com/lwfinger/rtw89/issues/226#issuecomment-1520776761
[2] https://github.com/lwfinger/rtw89/issues/240


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

* RE: [PATCH] wifi: rtw89: 8852b: adjust quota to avoid SER L1 caused by access null page
  2023-04-25 16:04 ` Larry Finger
@ 2023-04-26  3:55   ` Ping-Ke Shih
  0 siblings, 0 replies; 3+ messages in thread
From: Ping-Ke Shih @ 2023-04-26  3:55 UTC (permalink / raw
  To: Larry Finger, kvalo@kernel.org; +Cc: linux-wireless@vger.kernel.org



> -----Original Message-----
> From: Larry Finger <larry.finger@gmail.com> On Behalf Of Larry Finger
> Sent: Wednesday, April 26, 2023 12:04 AM
> To: Ping-Ke Shih <pkshih@realtek.com>; kvalo@kernel.org
> Cc: linux-wireless@vger.kernel.org
> Subject: Re: [PATCH] wifi: rtw89: 8852b: adjust quota to avoid SER L1 caused by access null page
> 
> 
> Tested-by: Larry Finger <Larry.Finger@lwfinger.net>
> 
> This patch has now been added to the repo at
> https://github.com/lwfinger/rtw89.git.
> 
> Although it has been applied there for only a couple of days, it has fixed
> timing problems on several new HP laptops [1][2].
> 
> My recommendation is that this be designated a "Fixes:" patch, be applied to
> kernel 6.4, and be sent to 6.3 through the "Stable" mechanism.
> 
> Larry
> 
> [1] https://github.com/lwfinger/rtw89/issues/226#issuecomment-1520776761
> [2] https://github.com/lwfinger/rtw89/issues/240
> 

I have sent v2 with these tags:
https://lore.kernel.org/linux-wireless/20230426034737.24870-1-pkshih@realtek.com/T/#u

Ping-Ke



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

end of thread, other threads:[~2023-04-26  3:55 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-04-21  1:53 [PATCH] wifi: rtw89: 8852b: adjust quota to avoid SER L1 caused by access null page Ping-Ke Shih
2023-04-25 16:04 ` Larry Finger
2023-04-26  3:55   ` 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.