linux-staging.lists.linux.dev archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/3] staging: r8188eu: start cleaning up led blinking
@ 2022-08-22 20:13 Martin Kaiser
  2022-08-22 20:13 ` [PATCH 1/3] staging: r8188eu: don't restart "no link" blinking unnecessarily Martin Kaiser
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: Martin Kaiser @ 2022-08-22 20:13 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: Larry Finger, Phillip Potter, Michael Straube, Pavel Skripkin,
	linux-staging, linux-kernel, Martin Kaiser

The code for led blinking contains too many states and state variables.
This series is a first tiny step towards cleaning things up.

Martin Kaiser (3):
  staging: r8188eu: don't restart "no link" blinking unnecessarily
  staging: r8188eu: always cancel blink_work
  staging: r8188eu: always update the status variables

 drivers/staging/r8188eu/core/rtw_led.c | 36 ++++++++++++--------------
 1 file changed, 17 insertions(+), 19 deletions(-)

-- 
2.30.2


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

* [PATCH 1/3] staging: r8188eu: don't restart "no link" blinking unnecessarily
  2022-08-22 20:13 [PATCH 0/3] staging: r8188eu: start cleaning up led blinking Martin Kaiser
@ 2022-08-22 20:13 ` Martin Kaiser
  2022-08-22 20:13 ` [PATCH 2/3] staging: r8188eu: always cancel blink_work Martin Kaiser
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: Martin Kaiser @ 2022-08-22 20:13 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: Larry Finger, Phillip Potter, Michael Straube, Pavel Skripkin,
	linux-staging, linux-kernel, Martin Kaiser

Simplify one of the cases in rtw_led_control. If we're already blinking
because we have no link, we don't have to restart this blinking when the
caller requests it again. We can simply return and keep on blinking.

Signed-off-by: Martin Kaiser <martin@kaiser.cx>
---
 drivers/staging/r8188eu/core/rtw_led.c | 37 +++++++++++++-------------
 1 file changed, 19 insertions(+), 18 deletions(-)

diff --git a/drivers/staging/r8188eu/core/rtw_led.c b/drivers/staging/r8188eu/core/rtw_led.c
index d5c6c5e29621..d3299fd1e39d 100644
--- a/drivers/staging/r8188eu/core/rtw_led.c
+++ b/drivers/staging/r8188eu/core/rtw_led.c
@@ -217,26 +217,27 @@ void rtw_led_control(struct adapter *padapter, enum LED_CTL_MODE LedAction)
 	switch (LedAction) {
 	case LED_CTL_START_TO_LINK:
 	case LED_CTL_NO_LINK:
-		if (!pLed->bLedNoLinkBlinkInProgress) {
-			if (pLed->CurrLedState == LED_BLINK_SCAN || IS_LED_WPS_BLINKING(pLed))
-				return;
-			if (pLed->bLedLinkBlinkInProgress) {
-				cancel_delayed_work(&pLed->blink_work);
-				pLed->bLedLinkBlinkInProgress = false;
-			}
-			if (pLed->bLedBlinkInProgress) {
-				cancel_delayed_work(&pLed->blink_work);
-				pLed->bLedBlinkInProgress = false;
-			}
+		if (pLed->bLedNoLinkBlinkInProgress)
+			return;
 
-			pLed->bLedNoLinkBlinkInProgress = true;
-			pLed->CurrLedState = LED_BLINK_SLOWLY;
-			if (pLed->bLedOn)
-				pLed->BlinkingLedState = RTW_LED_OFF;
-			else
-				pLed->BlinkingLedState = RTW_LED_ON;
-			schedule_delayed_work(&pLed->blink_work, LED_BLINK_NO_LINK_INTVL);
+		if (pLed->CurrLedState == LED_BLINK_SCAN || IS_LED_WPS_BLINKING(pLed))
+			return;
+		if (pLed->bLedLinkBlinkInProgress) {
+			cancel_delayed_work(&pLed->blink_work);
+			pLed->bLedLinkBlinkInProgress = false;
 		}
+		if (pLed->bLedBlinkInProgress) {
+			cancel_delayed_work(&pLed->blink_work);
+			pLed->bLedBlinkInProgress = false;
+		}
+
+		pLed->bLedNoLinkBlinkInProgress = true;
+		pLed->CurrLedState = LED_BLINK_SLOWLY;
+		if (pLed->bLedOn)
+			pLed->BlinkingLedState = RTW_LED_OFF;
+		else
+			pLed->BlinkingLedState = RTW_LED_ON;
+		schedule_delayed_work(&pLed->blink_work, LED_BLINK_NO_LINK_INTVL);
 		break;
 	case LED_CTL_LINK:
 		if (!pLed->bLedLinkBlinkInProgress) {
-- 
2.30.2


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

* [PATCH 2/3] staging: r8188eu: always cancel blink_work
  2022-08-22 20:13 [PATCH 0/3] staging: r8188eu: start cleaning up led blinking Martin Kaiser
  2022-08-22 20:13 ` [PATCH 1/3] staging: r8188eu: don't restart "no link" blinking unnecessarily Martin Kaiser
@ 2022-08-22 20:13 ` Martin Kaiser
  2022-08-22 20:13 ` [PATCH 3/3] staging: r8188eu: always update the status variables Martin Kaiser
  2022-08-23 18:49 ` [PATCH 0/3] staging: r8188eu: start cleaning up led blinking Philipp Hortmann
  3 siblings, 0 replies; 5+ messages in thread
From: Martin Kaiser @ 2022-08-22 20:13 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: Larry Finger, Phillip Potter, Michael Straube, Pavel Skripkin,
	linux-staging, linux-kernel, Martin Kaiser

In rtw_led_control, we can always cancel a running blink worker when we
start blinking because of no link.

The worker will be scheduled again and there's no point in having more
than one pending blink worker.

Signed-off-by: Martin Kaiser <martin@kaiser.cx>
---
 drivers/staging/r8188eu/core/rtw_led.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/drivers/staging/r8188eu/core/rtw_led.c b/drivers/staging/r8188eu/core/rtw_led.c
index d3299fd1e39d..e63bcf9c0e84 100644
--- a/drivers/staging/r8188eu/core/rtw_led.c
+++ b/drivers/staging/r8188eu/core/rtw_led.c
@@ -222,14 +222,14 @@ void rtw_led_control(struct adapter *padapter, enum LED_CTL_MODE LedAction)
 
 		if (pLed->CurrLedState == LED_BLINK_SCAN || IS_LED_WPS_BLINKING(pLed))
 			return;
-		if (pLed->bLedLinkBlinkInProgress) {
-			cancel_delayed_work(&pLed->blink_work);
+
+		cancel_delayed_work(&pLed->blink_work);
+
+		if (pLed->bLedLinkBlinkInProgress)
 			pLed->bLedLinkBlinkInProgress = false;
-		}
-		if (pLed->bLedBlinkInProgress) {
-			cancel_delayed_work(&pLed->blink_work);
+
+		if (pLed->bLedBlinkInProgress)
 			pLed->bLedBlinkInProgress = false;
-		}
 
 		pLed->bLedNoLinkBlinkInProgress = true;
 		pLed->CurrLedState = LED_BLINK_SLOWLY;
-- 
2.30.2


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

* [PATCH 3/3] staging: r8188eu: always update the status variables
  2022-08-22 20:13 [PATCH 0/3] staging: r8188eu: start cleaning up led blinking Martin Kaiser
  2022-08-22 20:13 ` [PATCH 1/3] staging: r8188eu: don't restart "no link" blinking unnecessarily Martin Kaiser
  2022-08-22 20:13 ` [PATCH 2/3] staging: r8188eu: always cancel blink_work Martin Kaiser
@ 2022-08-22 20:13 ` Martin Kaiser
  2022-08-23 18:49 ` [PATCH 0/3] staging: r8188eu: start cleaning up led blinking Philipp Hortmann
  3 siblings, 0 replies; 5+ messages in thread
From: Martin Kaiser @ 2022-08-22 20:13 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: Larry Finger, Phillip Potter, Michael Straube, Pavel Skripkin,
	linux-staging, linux-kernel, Martin Kaiser

Always update the status variables in rtw_led_control when we start
blinking because of no link. The code is easier to understand without
the if conditions.

Signed-off-by: Martin Kaiser <martin@kaiser.cx>
---
 drivers/staging/r8188eu/core/rtw_led.c | 9 +++------
 1 file changed, 3 insertions(+), 6 deletions(-)

diff --git a/drivers/staging/r8188eu/core/rtw_led.c b/drivers/staging/r8188eu/core/rtw_led.c
index e63bcf9c0e84..c57059eeda34 100644
--- a/drivers/staging/r8188eu/core/rtw_led.c
+++ b/drivers/staging/r8188eu/core/rtw_led.c
@@ -225,13 +225,10 @@ void rtw_led_control(struct adapter *padapter, enum LED_CTL_MODE LedAction)
 
 		cancel_delayed_work(&pLed->blink_work);
 
-		if (pLed->bLedLinkBlinkInProgress)
-			pLed->bLedLinkBlinkInProgress = false;
-
-		if (pLed->bLedBlinkInProgress)
-			pLed->bLedBlinkInProgress = false;
-
+		pLed->bLedLinkBlinkInProgress = false;
+		pLed->bLedBlinkInProgress = false;
 		pLed->bLedNoLinkBlinkInProgress = true;
+
 		pLed->CurrLedState = LED_BLINK_SLOWLY;
 		if (pLed->bLedOn)
 			pLed->BlinkingLedState = RTW_LED_OFF;
-- 
2.30.2


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

* Re: [PATCH 0/3] staging: r8188eu: start cleaning up led blinking
  2022-08-22 20:13 [PATCH 0/3] staging: r8188eu: start cleaning up led blinking Martin Kaiser
                   ` (2 preceding siblings ...)
  2022-08-22 20:13 ` [PATCH 3/3] staging: r8188eu: always update the status variables Martin Kaiser
@ 2022-08-23 18:49 ` Philipp Hortmann
  3 siblings, 0 replies; 5+ messages in thread
From: Philipp Hortmann @ 2022-08-23 18:49 UTC (permalink / raw)
  To: Martin Kaiser, Greg Kroah-Hartman
  Cc: Larry Finger, Phillip Potter, Michael Straube, Pavel Skripkin,
	linux-staging, linux-kernel

On 8/22/22 22:13, Martin Kaiser wrote:
> The code for led blinking contains too many states and state variables.
> This series is a first tiny step towards cleaning things up.
> 
> Martin Kaiser (3):
>    staging: r8188eu: don't restart "no link" blinking unnecessarily
>    staging: r8188eu: always cancel blink_work
>    staging: r8188eu: always update the status variables
> 
>   drivers/staging/r8188eu/core/rtw_led.c | 36 ++++++++++++--------------
>   1 file changed, 17 insertions(+), 19 deletions(-)
> 

Tested-by: Philipp Hortmann <philipp.g.hortmann@gmail.com> # Edimax N150

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

end of thread, other threads:[~2022-08-23 18:50 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-08-22 20:13 [PATCH 0/3] staging: r8188eu: start cleaning up led blinking Martin Kaiser
2022-08-22 20:13 ` [PATCH 1/3] staging: r8188eu: don't restart "no link" blinking unnecessarily Martin Kaiser
2022-08-22 20:13 ` [PATCH 2/3] staging: r8188eu: always cancel blink_work Martin Kaiser
2022-08-22 20:13 ` [PATCH 3/3] staging: r8188eu: always update the status variables Martin Kaiser
2022-08-23 18:49 ` [PATCH 0/3] staging: r8188eu: start cleaning up led blinking Philipp Hortmann

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).