staging: r8188eu: cancel blink_work during wps stop
authorMartin Kaiser <martin@kaiser.cx>
Sun, 18 Sep 2022 17:56:55 +0000 (19:56 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 24 Sep 2022 11:09:18 +0000 (13:09 +0200)
We can always cancel blink_work during wps_stop. The blinking pattern will
be updated to show that wps was successful. Another worker will be started
for this.

Tested-by: Philipp Hortmann <philipp.g.hortmann@gmail.com> # Edimax N150
Signed-off-by: Martin Kaiser <martin@kaiser.cx>
Link: https://lore.kernel.org/r/20220918175700.215170-2-martin@kaiser.cx
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/r8188eu/core/rtw_led.c

index 98eebe3e41198ec228a5bab1a5486ad10cf0e391..389fb2cc73790db5586bbc582179f81b2810eff5 100644 (file)
@@ -322,26 +322,23 @@ void rtw_led_control(struct adapter *padapter, enum LED_CTL_MODE LedAction)
                schedule_delayed_work(&pLed->blink_work, LED_BLINK_SCAN_INTVL);
                break;
        case LED_CTL_STOP_WPS:
-               if (pLed->bLedNoLinkBlinkInProgress) {
-                       cancel_delayed_work(&pLed->blink_work);
+               cancel_delayed_work(&pLed->blink_work);
+
+               if (pLed->bLedNoLinkBlinkInProgress)
                        pLed->bLedNoLinkBlinkInProgress = false;
-               }
-               if (pLed->bLedLinkBlinkInProgress) {
-                       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;
-               }
-               if (pLed->bLedScanBlinkInProgress) {
-                       cancel_delayed_work(&pLed->blink_work);
+
+               if (pLed->bLedScanBlinkInProgress)
                        pLed->bLedScanBlinkInProgress = false;
-               }
-               if (pLed->bLedWPSBlinkInProgress)
-                       cancel_delayed_work(&pLed->blink_work);
-               else
+
+               if (!pLed->bLedWPSBlinkInProgress)
                        pLed->bLedWPSBlinkInProgress = true;
+
                pLed->CurrLedState = LED_BLINK_WPS_STOP;
                if (pLed->bLedOn) {
                        pLed->BlinkingLedState = RTW_LED_OFF;