All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] rtw88: reduce polling time of IQ calibration
@ 2020-12-08  1:34 Ping-Ke Shih
  2020-12-08  1:41 ` Pkshih
  0 siblings, 1 reply; 4+ messages in thread
From: Ping-Ke Shih @ 2020-12-08  1:34 UTC (permalink / raw)
  To: kvalo; +Cc: tony0620emma, linux-wireless, timlee, pkshih

From: Chin-Yen Lee <timlee@realtek.com>

When 8822CE is associating with AP, driver will poll status bit of
IQ calibration to confirm the IQ calibration is done, and then move on
the association process. Current polling time for IQ calibration is 6
seconds.

But occasionally driver fails in polling the status bit because the status
bit is not set after IQ calibration is done. When it happends, association
process will be serieously delayed up to 6 seconds. To avoid it, we reduce
polling time to 300ms, in which the IQ calibration can be done.

Signed-off-by: Chin-Yen Lee <timlee@realtek.com>
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
---
v2: move define to the beginning of file
---
 drivers/net/wireless/realtek/rtw88/rtw8822c.c | 17 ++++++++---------
 1 file changed, 8 insertions(+), 9 deletions(-)

diff --git a/drivers/net/wireless/realtek/rtw88/rtw8822c.c b/drivers/net/wireless/realtek/rtw88/rtw8822c.c
index 7dd3ccb73793..dd560c28abb2 100644
--- a/drivers/net/wireless/realtek/rtw88/rtw8822c.c
+++ b/drivers/net/wireless/realtek/rtw88/rtw8822c.c
@@ -18,6 +18,8 @@
 #include "bf.h"
 #include "efuse.h"
 
+#define IQK_DONE_8822C 0xaa
+
 static void rtw8822c_config_trx_mode(struct rtw_dev *rtwdev, u8 tx_path,
 				     u8 rx_path, bool is_tx2_path);
 
@@ -2110,20 +2112,17 @@ static void rtw8822c_do_iqk(struct rtw_dev *rtwdev)
 {
 	struct rtw_iqk_para para = {0};
 	u8 iqk_chk;
-	int counter;
+	int ret;
 
 	para.clear = 1;
 	rtw_fw_do_iqk(rtwdev, &para);
 
-	for (counter = 0; counter < 300; counter++) {
-		iqk_chk = rtw_read8(rtwdev, REG_RPT_CIP);
-		if (iqk_chk == 0xaa)
-			break;
-		msleep(20);
-	}
-	rtw_write8(rtwdev, REG_IQKSTAT, 0x0);
+	ret = read_poll_timeout(rtw_read8, iqk_chk, iqk_chk == IQK_DONE_8822C,
+				20000, 300000, false, rtwdev, REG_RPT_CIP);
+	if (ret)
+		rtw_warn(rtwdev, "failed to poll iqk status bit\n");
 
-	rtw_dbg(rtwdev, RTW_DBG_RFK, "iqk counter=%d\n", counter);
+	rtw_write8(rtwdev, REG_IQKSTAT, 0x0);
 }
 
 /* for coex */
-- 
2.21.0


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

* Re: [PATCH] rtw88: reduce polling time of IQ calibration
  2020-12-08  1:34 [PATCH] rtw88: reduce polling time of IQ calibration Ping-Ke Shih
@ 2020-12-08  1:41 ` Pkshih
  0 siblings, 0 replies; 4+ messages in thread
From: Pkshih @ 2020-12-08  1:41 UTC (permalink / raw)
  To: kvalo; +Cc: linux-wireless, tony0620emma, Timlee

On Tue, 2020-12-08 at 09:34 +0800, Ping-Ke Shih wrote:
> From: Chin-Yen Lee <timlee@realtek.com>
> 
> When 8822CE is associating with AP, driver will poll status bit of
> IQ calibration to confirm the IQ calibration is done, and then move on
> the association process. Current polling time for IQ calibration is 6
> seconds.
> 
> But occasionally driver fails in polling the status bit because the status
> bit is not set after IQ calibration is done. When it happends, association
> process will be serieously delayed up to 6 seconds. To avoid it, we reduce
> polling time to 300ms, in which the IQ calibration can be done.
> 
> Signed-off-by: Chin-Yen Lee <timlee@realtek.com>
> Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
> ---
> v2: move define to the beginning of file
> 

Sorry. I forget to change mail subject to "PATCH V2". 
Please ignore this one.

---
Ping-Ke


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

* Re: [PATCH] rtw88: reduce polling time of IQ calibration
  2020-12-03  2:16 Ping-Ke Shih
@ 2020-12-07 15:51 ` Kalle Valo
  0 siblings, 0 replies; 4+ messages in thread
From: Kalle Valo @ 2020-12-07 15:51 UTC (permalink / raw)
  To: Ping-Ke Shih; +Cc: tony0620emma, linux-wireless, timlee

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

> From: Chin-Yen Lee <timlee@realtek.com>
>
> When 8822CE is associating with AP, driver will poll status bit of
> IQ calibration to confirm the IQ calibration is done, and then move on
> the association process. Current polling time for IQ calibration is 6
> seconds.
>
> But occasionally driver fails in polling the status bit because the status
> bit is not set after IQ calibration is done. When it happends, association
> process will be serieously delayed up to 6 seconds. To avoid it, we reduce
> polling time to 300ms, in which the IQ calibration can be done.
>
> Signed-off-by: Chin-Yen Lee <timlee@realtek.com>
> Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
> ---
>  drivers/net/wireless/realtek/rtw88/rtw8822c.c | 17 ++++++++---------
>  1 file changed, 8 insertions(+), 9 deletions(-)
>
> diff --git a/drivers/net/wireless/realtek/rtw88/rtw8822c.c b/drivers/net/wireless/realtek/rtw88/rtw8822c.c
> index 7dd3ccb73793..7661d8d494c9 100644
> --- a/drivers/net/wireless/realtek/rtw88/rtw8822c.c
> +++ b/drivers/net/wireless/realtek/rtw88/rtw8822c.c
> @@ -2108,22 +2108,21 @@ static void rtw8822c_false_alarm_statistics(struct rtw_dev *rtwdev)
>  
>  static void rtw8822c_do_iqk(struct rtw_dev *rtwdev)
>  {
> +#define IQK_DONE_8822C 0xaa
> +
>  	struct rtw_iqk_para para = {0};
>  	u8 iqk_chk;
> -	int counter;
> +	int ret;

That is a bit awkward location for a define. The preferred style is to
move the define to a beginning of the file or to a .h file.

-- 
https://patchwork.kernel.org/project/linux-wireless/list/

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

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

* [PATCH] rtw88: reduce polling time of IQ calibration
@ 2020-12-03  2:16 Ping-Ke Shih
  2020-12-07 15:51 ` Kalle Valo
  0 siblings, 1 reply; 4+ messages in thread
From: Ping-Ke Shih @ 2020-12-03  2:16 UTC (permalink / raw)
  To: kvalo; +Cc: tony0620emma, linux-wireless, timlee, pkshih

From: Chin-Yen Lee <timlee@realtek.com>

When 8822CE is associating with AP, driver will poll status bit of
IQ calibration to confirm the IQ calibration is done, and then move on
the association process. Current polling time for IQ calibration is 6
seconds.

But occasionally driver fails in polling the status bit because the status
bit is not set after IQ calibration is done. When it happends, association
process will be serieously delayed up to 6 seconds. To avoid it, we reduce
polling time to 300ms, in which the IQ calibration can be done.

Signed-off-by: Chin-Yen Lee <timlee@realtek.com>
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
---
 drivers/net/wireless/realtek/rtw88/rtw8822c.c | 17 ++++++++---------
 1 file changed, 8 insertions(+), 9 deletions(-)

diff --git a/drivers/net/wireless/realtek/rtw88/rtw8822c.c b/drivers/net/wireless/realtek/rtw88/rtw8822c.c
index 7dd3ccb73793..7661d8d494c9 100644
--- a/drivers/net/wireless/realtek/rtw88/rtw8822c.c
+++ b/drivers/net/wireless/realtek/rtw88/rtw8822c.c
@@ -2108,22 +2108,21 @@ static void rtw8822c_false_alarm_statistics(struct rtw_dev *rtwdev)
 
 static void rtw8822c_do_iqk(struct rtw_dev *rtwdev)
 {
+#define IQK_DONE_8822C 0xaa
+
 	struct rtw_iqk_para para = {0};
 	u8 iqk_chk;
-	int counter;
+	int ret;
 
 	para.clear = 1;
 	rtw_fw_do_iqk(rtwdev, &para);
 
-	for (counter = 0; counter < 300; counter++) {
-		iqk_chk = rtw_read8(rtwdev, REG_RPT_CIP);
-		if (iqk_chk == 0xaa)
-			break;
-		msleep(20);
-	}
-	rtw_write8(rtwdev, REG_IQKSTAT, 0x0);
+	ret = read_poll_timeout(rtw_read8, iqk_chk, iqk_chk == IQK_DONE_8822C,
+				20000, 300000, false, rtwdev, REG_RPT_CIP);
+	if (ret)
+		rtw_warn(rtwdev, "failed to poll iqk status bit\n");
 
-	rtw_dbg(rtwdev, RTW_DBG_RFK, "iqk counter=%d\n", counter);
+	rtw_write8(rtwdev, REG_IQKSTAT, 0x0);
 }
 
 /* for coex */
-- 
2.21.0


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

end of thread, other threads:[~2020-12-08  1:42 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-12-08  1:34 [PATCH] rtw88: reduce polling time of IQ calibration Ping-Ke Shih
2020-12-08  1:41 ` Pkshih
  -- strict thread matches above, loose matches on Subject: below --
2020-12-03  2:16 Ping-Ke Shih
2020-12-07 15:51 ` Kalle Valo

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.