All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] rtw88: use a for loop in rtw_power_mode_change(), not goto
@ 2019-10-12  1:27 Brian Norris
  2019-10-14  6:04 ` Tony Chuang
  2019-10-14  9:11 ` Kalle Valo
  0 siblings, 2 replies; 3+ messages in thread
From: Brian Norris @ 2019-10-12  1:27 UTC (permalink / raw)
  To: linux-wireless; +Cc: Yan-Hsuan Chuang, Brian Norris

No change in logic.

Signed-off-by: Brian Norris <briannorris@chromium.org>
---
 drivers/net/wireless/realtek/rtw88/ps.c | 61 ++++++++++++-------------
 1 file changed, 29 insertions(+), 32 deletions(-)

diff --git a/drivers/net/wireless/realtek/rtw88/ps.c b/drivers/net/wireless/realtek/rtw88/ps.c
index e81de3ddc8c5..820e0a3a141c 100644
--- a/drivers/net/wireless/realtek/rtw88/ps.c
+++ b/drivers/net/wireless/realtek/rtw88/ps.c
@@ -69,24 +69,26 @@ void rtw_power_mode_change(struct rtw_dev *rtwdev, bool enter)
 	u8 polling_cnt;
 	u8 retry_cnt = 0;
 
-retry:
-	request = rtw_read8(rtwdev, rtwdev->hci.rpwm_addr);
-	confirm = rtw_read8(rtwdev, rtwdev->hci.cpwm_addr);
-
-	/* toggle to request power mode, others remain 0 */
-	request ^= request | BIT_RPWM_TOGGLE;
-	if (!enter) {
-		request |= POWER_MODE_ACK;
-	} else {
-		request |= POWER_MODE_LCLK;
-		if (rtw_fw_lps_deep_mode == LPS_DEEP_MODE_PG)
-			request |= POWER_MODE_PG;
-	}
+	for (retry_cnt = 0; retry_cnt < 3; retry_cnt++) {
+		request = rtw_read8(rtwdev, rtwdev->hci.rpwm_addr);
+		confirm = rtw_read8(rtwdev, rtwdev->hci.cpwm_addr);
+
+		/* toggle to request power mode, others remain 0 */
+		request ^= request | BIT_RPWM_TOGGLE;
+		if (!enter) {
+			request |= POWER_MODE_ACK;
+		} else {
+			request |= POWER_MODE_LCLK;
+			if (rtw_fw_lps_deep_mode == LPS_DEEP_MODE_PG)
+				request |= POWER_MODE_PG;
+		}
 
-	rtw_write8(rtwdev, rtwdev->hci.rpwm_addr, request);
+		rtw_write8(rtwdev, rtwdev->hci.rpwm_addr, request);
+
+		if (enter)
+			return;
 
-	/* check confirm power mode has left power save state */
-	if (!enter) {
+		/* check confirm power mode has left power save state */
 		for (polling_cnt = 0; polling_cnt < 3; polling_cnt++) {
 			polling = rtw_read8(rtwdev, rtwdev->hci.cpwm_addr);
 			if ((polling ^ confirm) & BIT_RPWM_TOGGLE)
@@ -94,23 +96,18 @@ void rtw_power_mode_change(struct rtw_dev *rtwdev, bool enter)
 			mdelay(20);
 		}
 
-		/* in case of fw/hw missed the request, retry 3 times */
-		if (retry_cnt < 3) {
-			rtw_warn(rtwdev, "failed to leave deep PS, retry=%d\n",
-				 retry_cnt);
-			retry_cnt++;
-			goto retry;
-		}
-
-		/* Hit here means that driver failed to change hardware
-		 * power mode to active state after retry 3 times.
-		 * If the power state is locked at Deep sleep, most of
-		 * the hardware circuits is not working, even register
-		 * read/write. It should be treated as fatal error and
-		 * requires an entire analysis about the firmware/hardware
-		 */
-		WARN(1, "Hardware power state locked\n");
+		/* in case of fw/hw missed the request, retry */
+		rtw_warn(rtwdev, "failed to leave deep PS, retry=%d\n",
+			 retry_cnt);
 	}
+
+	/* Hit here means that driver failed to change hardware power mode to
+	 * active state after retry 3 times. If the power state is locked at
+	 * Deep sleep, most of the hardware circuits is not working, even
+	 * register read/write. It should be treated as fatal error and
+	 * requires an entire analysis about the firmware/hardware
+	 */
+	WARN(1, "Hardware power state locked\n");
 }
 EXPORT_SYMBOL(rtw_power_mode_change);
 
-- 
2.23.0.700.g56cf767bdb-goog


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

* RE: [PATCH] rtw88: use a for loop in rtw_power_mode_change(), not goto
  2019-10-12  1:27 [PATCH] rtw88: use a for loop in rtw_power_mode_change(), not goto Brian Norris
@ 2019-10-14  6:04 ` Tony Chuang
  2019-10-14  9:11 ` Kalle Valo
  1 sibling, 0 replies; 3+ messages in thread
From: Tony Chuang @ 2019-10-14  6:04 UTC (permalink / raw)
  To: Brian Norris, linux-wireless

> Subject: [PATCH] rtw88: use a for loop in rtw_power_mode_change(), not
> goto
> 
> No change in logic.
> 
> Signed-off-by: Brian Norris <briannorris@chromium.org>
Acked-by: Yan-Hsuan Chuang <yhchuang@realtek.com>


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

* Re: [PATCH] rtw88: use a for loop in rtw_power_mode_change(), not goto
  2019-10-12  1:27 [PATCH] rtw88: use a for loop in rtw_power_mode_change(), not goto Brian Norris
  2019-10-14  6:04 ` Tony Chuang
@ 2019-10-14  9:11 ` Kalle Valo
  1 sibling, 0 replies; 3+ messages in thread
From: Kalle Valo @ 2019-10-14  9:11 UTC (permalink / raw)
  To: Brian Norris; +Cc: linux-wireless, Yan-Hsuan Chuang, Brian Norris

Brian Norris <briannorris@chromium.org> wrote:

> No change in logic.
> 
> Signed-off-by: Brian Norris <briannorris@chromium.org>
> Acked-by: Yan-Hsuan Chuang <yhchuang@realtek.com>

Patch applied to wireless-drivers-next.git, thanks.

4ee2f3426699 rtw88: use a for loop in rtw_power_mode_change(), not goto

-- 
https://patchwork.kernel.org/patch/11186533/

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


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

end of thread, other threads:[~2019-10-14  9:11 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-10-12  1:27 [PATCH] rtw88: use a for loop in rtw_power_mode_change(), not goto Brian Norris
2019-10-14  6:04 ` Tony Chuang
2019-10-14  9:11 ` 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.