staging: r8188eu: always cancel blink_work
authorMartin Kaiser <martin@kaiser.cx>
Mon, 22 Aug 2022 20:13:28 +0000 (22:13 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 23 Aug 2022 13:43:40 +0000 (15:43 +0200)
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>
Link: https://lore.kernel.org/r/20220822201329.95559-3-martin@kaiser.cx
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/r8188eu/core/rtw_led.c

index d3299fd..e63bcf9 100644 (file)
@@ -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;