diff mbox series

wifi: rtw89: fix 8852AE disconnection caused by RX full flags

Message ID 20230804105002.5781-1-pkshih@realtek.com
State Superseded
Headers show
Series wifi: rtw89: fix 8852AE disconnection caused by RX full flags | expand

Commit Message

Ping-Ke Shih Aug. 4, 2023, 10:50 a.m. UTC
RX full flags are raised if certain types of RX FIFO are full, and then
drop all following MSDU of APMDU. In order to resume to receive MSDU
when RX FIFO becomes available, we clear the regitster bits by the
commit a0d99ebb3ecd ("wifi: rtw89: initialize DMA of CMAC"). But, 8852AE
needs more settings to support this. To quickly fix disconnection problem,
revert the behavior as before.

Fixes: a0d99ebb3ecd ("wifi: rtw89: initialize DMA of CMAC")
Reported-by: Damian B <bronecki.damian@gmail.com>
Closes: https://bugzilla.kernel.org/show_bug.cgi?id=217710
Cc: <Stable@vger.kernel.org>
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
---
 drivers/net/wireless/realtek/rtw89/mac.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Damian Bronecki Aug. 7, 2023, 6:45 a.m. UTC | #1
> RX full flags are raised if certain types of RX FIFO are full, and then
> drop all following MSDU of APMDU. In order to resume to receive MSDU
> when RX FIFO becomes available, we clear the regitster bits by the
> commit a0d99ebb3ecd ("wifi: rtw89: initialize DMA of CMAC"). But, 8852AE
> needs more settings to support this. To quickly fix disconnection problem,
> revert the behavior as before.
>
> Fixes: a0d99ebb3ecd ("wifi: rtw89: initialize DMA of CMAC")
> Reported-by: Damian B <bronecki.damian@gmail.com>
> Closes: https://bugzilla.kernel.org/show_bug.cgi?id=217710
> Cc: <Stable@vger.kernel.org>
> Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>

This patch fixed connection drops for me. Thanks!

Tested-by: Damian B <bronecki.damian@gmail.com>

> ---
>  drivers/net/wireless/realtek/rtw89/mac.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/net/wireless/realtek/rtw89/mac.c b/drivers/net/wireless/realtek/rtw89/mac.c
> index 1efa4da3cebc..cebefa3b1db3 100644
> --- a/drivers/net/wireless/realtek/rtw89/mac.c
> +++ b/drivers/net/wireless/realtek/rtw89/mac.c
> @@ -2524,7 +2524,7 @@ static int cmac_dma_init(struct rtw89_dev *rtwdev, u8 mac_idx)
>         u32 reg;
>         int ret;
>
> -       if (chip_id != RTL8852A && chip_id != RTL8852B)
> +       if (chip_id != RTL8852B)
>                 return 0;
>
>         ret = rtw89_mac_check_mac_en(rtwdev, mac_idx, RTW89_CMAC_SEL);
> --
> 2.25.1
>
Ping-Ke Shih Aug. 8, 2023, 12:59 a.m. UTC | #2
> -----Original Message-----
> From: Damian Bronecki <bronecki.damian@gmail.com>
> Sent: Monday, August 7, 2023 2:46 PM
> To: Ping-Ke Shih <pkshih@realtek.com>
> Cc: kvalo@kernel.org; Stable@vger.kernel.org; linux-wireless@vger.kernel.org
> Subject: Re: [PATCH] wifi: rtw89: fix 8852AE disconnection caused by RX full flags
> 
> > RX full flags are raised if certain types of RX FIFO are full, and then
> > drop all following MSDU of APMDU. In order to resume to receive MSDU
> > when RX FIFO becomes available, we clear the regitster bits by the
> > commit a0d99ebb3ecd ("wifi: rtw89: initialize DMA of CMAC"). But, 8852AE
> > needs more settings to support this. To quickly fix disconnection problem,
> > revert the behavior as before.
> >
> > Fixes: a0d99ebb3ecd ("wifi: rtw89: initialize DMA of CMAC")
> > Reported-by: Damian B <bronecki.damian@gmail.com>
> > Closes: https://bugzilla.kernel.org/show_bug.cgi?id=217710
> > Cc: <Stable@vger.kernel.org>
> > Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
> 
> This patch fixed connection drops for me. Thanks!
> 
> Tested-by: Damian B <bronecki.damian@gmail.com>
> 

Thanks for your test. 

Due to typo of commit message, I sent v2 with the Tested-by.

Ping-Ke
diff mbox series

Patch

diff --git a/drivers/net/wireless/realtek/rtw89/mac.c b/drivers/net/wireless/realtek/rtw89/mac.c
index 1efa4da3cebc..cebefa3b1db3 100644
--- a/drivers/net/wireless/realtek/rtw89/mac.c
+++ b/drivers/net/wireless/realtek/rtw89/mac.c
@@ -2524,7 +2524,7 @@  static int cmac_dma_init(struct rtw89_dev *rtwdev, u8 mac_idx)
 	u32 reg;
 	int ret;
 
-	if (chip_id != RTL8852A && chip_id != RTL8852B)
+	if (chip_id != RTL8852B)
 		return 0;
 
 	ret = rtw89_mac_check_mac_en(rtwdev, mac_idx, RTW89_CMAC_SEL);