net: wireless: rockchip_wlan: add rtl8188fu support
[firefly-linux-kernel-4.4.55.git] / drivers / net / wireless / rockchip_wlan / rtl8188fu / hal / led / hal_usb_led.c
diff --git a/drivers/net/wireless/rockchip_wlan/rtl8188fu/hal/led/hal_usb_led.c b/drivers/net/wireless/rockchip_wlan/rtl8188fu/hal/led/hal_usb_led.c
new file mode 100644 (file)
index 0000000..3477bbe
--- /dev/null
@@ -0,0 +1,5180 @@
+/******************************************************************************\r
+ *\r
+ * Copyright(c) 2007 - 2012 Realtek Corporation. All rights reserved.\r
+ *                                        \r
+ * This program is free software; you can redistribute it and/or modify it\r
+ * under the terms of version 2 of the GNU General Public License as\r
+ * published by the Free Software Foundation.\r
+ *\r
+ * This program is distributed in the hope that it will be useful, but WITHOUT\r
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or\r
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for\r
+ * more details.\r
+ *\r
+ * You should have received a copy of the GNU General Public License along with\r
+ * this program; if not, write to the Free Software Foundation, Inc.,\r
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA\r
+ *\r
+ *\r
+ ******************************************************************************/\r
+\r
+#include <drv_types.h>\r
+#include <hal_data.h>\r
+\r
+//\r
+//     Description:\r
+//             Implementation of LED blinking behavior.\r
+//             It toggle off LED and schedule corresponding timer if necessary.\r
+//\r
+void\r
+SwLedBlink(\r
+       PLED_USB                        pLed\r
+       )\r
+{\r
+       _adapter                        *padapter = pLed->padapter;\r
+       struct mlme_priv        *pmlmepriv = &(padapter->mlmepriv);\r
+       u8                              bStopBlinking = _FALSE;\r
+\r
+       // Change LED according to BlinkingLedState specified.\r
+       if( pLed->BlinkingLedState == RTW_LED_ON )\r
+       {\r
+               SwLedOn(padapter, pLed);\r
+               RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (%d): turn on\n", pLed->BlinkTimes));\r
+       }\r
+       else\r
+       {\r
+               SwLedOff(padapter, pLed);\r
+               RT_TRACE(_module_rtl8712_led_c_,_drv_info_,( "Blinktimes (%d): turn off\n", pLed->BlinkTimes));\r
+       }\r
+\r
+       // Determine if we shall change LED state again.\r
+       pLed->BlinkTimes--;\r
+       switch(pLed->CurrLedState)\r
+       {\r
+\r
+       case LED_BLINK_NORMAL:\r
+               if(pLed->BlinkTimes == 0)\r
+               {\r
+                       bStopBlinking = _TRUE;\r
+               }\r
+               break;\r
+\r
+       case LED_BLINK_StartToBlink:\r
+               if( check_fwstate(pmlmepriv, _FW_LINKED) && check_fwstate(pmlmepriv, WIFI_STATION_STATE) )\r
+               {\r
+                       bStopBlinking = _TRUE;\r
+               }\r
+               if( check_fwstate(pmlmepriv, _FW_LINKED) &&\r
+                       (check_fwstate(pmlmepriv, WIFI_ADHOC_STATE) || check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE)) )\r
+               {\r
+                       bStopBlinking = _TRUE;\r
+               }\r
+               else if(pLed->BlinkTimes == 0)\r
+               {\r
+                       bStopBlinking = _TRUE;\r
+               }\r
+               break;\r
+\r
+       case LED_BLINK_WPS:\r
+               if( pLed->BlinkTimes == 0 )\r
+               {\r
+                       bStopBlinking = _TRUE;\r
+               }\r
+               break;\r
+\r
+\r
+       default:\r
+               bStopBlinking = _TRUE;\r
+               break;\r
+\r
+       }\r
+\r
+       if(bStopBlinking)\r
+       {\r
+               if( adapter_to_pwrctl(padapter)->rf_pwrstate != rf_on )\r
+               {\r
+                       SwLedOff(padapter, pLed);\r
+               }\r
+               else if( (check_fwstate(pmlmepriv, _FW_LINKED)== _TRUE) && (pLed->bLedOn == _FALSE))\r
+               {\r
+                       SwLedOn(padapter, pLed);\r
+               }\r
+               else if( (check_fwstate(pmlmepriv, _FW_LINKED)== _FALSE) &&  pLed->bLedOn == _TRUE)\r
+               {\r
+                       SwLedOff(padapter, pLed);\r
+               }\r
+\r
+               pLed->BlinkTimes = 0;\r
+               pLed->bLedBlinkInProgress = _FALSE;\r
+       }\r
+       else\r
+       {\r
+               // Assign LED state to toggle.\r
+               if( pLed->BlinkingLedState == RTW_LED_ON )\r
+                       pLed->BlinkingLedState = RTW_LED_OFF;\r
+               else\r
+                       pLed->BlinkingLedState = RTW_LED_ON;\r
+\r
+               // Schedule a timer to toggle LED state.\r
+               switch( pLed->CurrLedState )\r
+               {\r
+               case LED_BLINK_NORMAL:\r
+                       _set_timer(&(pLed->BlinkTimer), LED_BLINK_NORMAL_INTERVAL);\r
+                       break;\r
+\r
+               case LED_BLINK_SLOWLY:\r
+               case LED_BLINK_StartToBlink:\r
+                       _set_timer(&(pLed->BlinkTimer), LED_BLINK_SLOWLY_INTERVAL);\r
+                       break;\r
+\r
+               case LED_BLINK_WPS:\r
+                       {\r
+                               if( pLed->BlinkingLedState == RTW_LED_ON )\r
+                                       _set_timer(&(pLed->BlinkTimer), LED_BLINK_LONG_INTERVAL);\r
+                               else\r
+                                       _set_timer(&(pLed->BlinkTimer), LED_BLINK_LONG_INTERVAL);\r
+                       }\r
+                       break;\r
+\r
+               default:\r
+                       _set_timer(&(pLed->BlinkTimer), LED_BLINK_SLOWLY_INTERVAL);\r
+                       break;\r
+               }\r
+       }\r
+}\r
+\r
+void\r
+SwLedBlink1(\r
+       PLED_USB                        pLed\r
+       )\r
+{\r
+       _adapter                                *padapter = pLed->padapter;\r
+       PHAL_DATA_TYPE          pHalData = GET_HAL_DATA(padapter);\r
+       struct led_priv         *ledpriv = &(padapter->ledpriv);\r
+       struct mlme_priv                *pmlmepriv = &(padapter->mlmepriv);\r
+       PLED_USB                        pLed1 = &(ledpriv->SwLed1);\r
+       u8                                      bStopBlinking = _FALSE;\r
+\r
+       u32 uLedBlinkNoLinkInterval = LED_BLINK_NO_LINK_INTERVAL_ALPHA; //add by ylb 20121012 for customer led for alpha\r
+       if(pHalData->CustomerID == RT_CID_819x_ALPHA_Dlink)\r
+               uLedBlinkNoLinkInterval= LED_BLINK_NO_LINK_INTERVAL_ALPHA_500MS;\r
+       \r
+       if(pHalData->CustomerID == RT_CID_819x_CAMEO)\r
+               pLed = &(ledpriv->SwLed1);\r
+\r
+       // Change LED according to BlinkingLedState specified.\r
+       if( pLed->BlinkingLedState == RTW_LED_ON )\r
+       {\r
+               SwLedOn(padapter, pLed);\r
+               RT_TRACE(_module_rtl8712_led_c_,_drv_info_,( "Blinktimes (%d): turn on\n", pLed->BlinkTimes));\r
+       }\r
+       else\r
+       {\r
+               SwLedOff(padapter, pLed);\r
+               RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (%d): turn off\n", pLed->BlinkTimes));\r
+       }\r
+\r
+\r
+       if(pHalData->CustomerID == RT_CID_DEFAULT)\r
+       {\r
+               if(check_fwstate(pmlmepriv, _FW_LINKED)== _TRUE)\r
+               {\r
+                       if(!pLed1->bSWLedCtrl)\r
+                       {\r
+                               SwLedOn(padapter, pLed1);\r
+                               pLed1->bSWLedCtrl = _TRUE;\r
+                       }\r
+                       else if(!pLed1->bLedOn)\r
+                               SwLedOn(padapter, pLed1);\r
+                       RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (): turn on pLed1\n"));\r
+               }\r
+               else\r
+               {\r
+                       if(!pLed1->bSWLedCtrl)\r
+                       {\r
+                               SwLedOff(padapter, pLed1);\r
+                               pLed1->bSWLedCtrl = _TRUE;\r
+                       }\r
+                       else if(pLed1->bLedOn)\r
+                               SwLedOff(padapter, pLed1);\r
+                       RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (): turn off pLed1\n"));\r
+               }\r
+       }\r
+\r
+       switch(pLed->CurrLedState)\r
+       {\r
+               case LED_BLINK_SLOWLY:\r
+                       if( pLed->bLedOn )\r
+                               pLed->BlinkingLedState = RTW_LED_OFF;\r
+                       else\r
+                               pLed->BlinkingLedState = RTW_LED_ON;\r
+                       _set_timer(&(pLed->BlinkTimer), uLedBlinkNoLinkInterval);//change by ylb 20121012 for customer led for alpha\r
+                       break;\r
+\r
+               case LED_BLINK_NORMAL:\r
+                       if( pLed->bLedOn )\r
+                               pLed->BlinkingLedState = RTW_LED_OFF;\r
+                       else\r
+                               pLed->BlinkingLedState = RTW_LED_ON;\r
+                       _set_timer(&(pLed->BlinkTimer), LED_BLINK_LINK_INTERVAL_ALPHA);\r
+                       break;\r
+\r
+               case LED_BLINK_SCAN:\r
+                       pLed->BlinkTimes--;\r
+                       if( pLed->BlinkTimes == 0 )\r
+                       {\r
+                               bStopBlinking = _TRUE;\r
+                       }\r
+\r
+                       if(bStopBlinking)\r
+                       {\r
+                               if( adapter_to_pwrctl(padapter)->rf_pwrstate != rf_on )\r
+                               {\r
+                                       SwLedOff(padapter, pLed);\r
+                               }\r
+                               else if(check_fwstate(pmlmepriv, _FW_LINKED)== _TRUE)\r
+                               {\r
+                                       pLed->bLedLinkBlinkInProgress = _TRUE;\r
+                                       pLed->CurrLedState = LED_BLINK_NORMAL;\r
+                                       if( pLed->bLedOn )\r
+                                               pLed->BlinkingLedState = RTW_LED_OFF;\r
+                                       else\r
+                                               pLed->BlinkingLedState = RTW_LED_ON;\r
+                                       _set_timer(&(pLed->BlinkTimer), LED_BLINK_LINK_INTERVAL_ALPHA);\r
+                                       RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("CurrLedState %d\n", pLed->CurrLedState));\r
+\r
+                               }\r
+                               else if(check_fwstate(pmlmepriv, _FW_LINKED)== _FALSE)\r
+                               {\r
+                                       pLed->bLedNoLinkBlinkInProgress = _TRUE;\r
+                                       pLed->CurrLedState = LED_BLINK_SLOWLY;\r
+                                       if( pLed->bLedOn )\r
+                                               pLed->BlinkingLedState = RTW_LED_OFF;\r
+                                       else\r
+                                               pLed->BlinkingLedState = RTW_LED_ON;\r
+                                       _set_timer(&(pLed->BlinkTimer), uLedBlinkNoLinkInterval);\r
+                                       RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("CurrLedState %d\n", pLed->CurrLedState));\r
+                               }\r
+                               pLed->bLedScanBlinkInProgress = _FALSE;\r
+                       }\r
+                       else\r
+                       {\r
+                               if( adapter_to_pwrctl(padapter)->rf_pwrstate != rf_on )\r
+                               {\r
+                                       SwLedOff(padapter, pLed);\r
+                               }\r
+                               else\r
+                               {\r
+                                       if( pLed->bLedOn )\r
+                                               pLed->BlinkingLedState = RTW_LED_OFF;\r
+                                       else\r
+                                               pLed->BlinkingLedState = RTW_LED_ON;\r
+                                       _set_timer(&(pLed->BlinkTimer), LED_BLINK_SCAN_INTERVAL_ALPHA);\r
+                               }\r
+                       }\r
+                       break;\r
+\r
+               case LED_BLINK_TXRX:\r
+                       pLed->BlinkTimes--;\r
+                       if( pLed->BlinkTimes == 0 )\r
+                       {\r
+                               bStopBlinking = _TRUE;\r
+                       }\r
+                       if(bStopBlinking)\r
+                       {\r
+                               if( adapter_to_pwrctl(padapter)->rf_pwrstate != rf_on )\r
+                               {\r
+                                       SwLedOff(padapter, pLed);\r
+                               }\r
+                               else if(check_fwstate(pmlmepriv, _FW_LINKED)== _TRUE)\r
+                               {\r
+                                       pLed->bLedLinkBlinkInProgress = _TRUE;\r
+                                       pLed->CurrLedState = LED_BLINK_NORMAL;\r
+                                       if( pLed->bLedOn )\r
+                                               pLed->BlinkingLedState = RTW_LED_OFF;\r
+                                       else\r
+                                               pLed->BlinkingLedState = RTW_LED_ON;\r
+                                       _set_timer(&(pLed->BlinkTimer), LED_BLINK_LINK_INTERVAL_ALPHA);\r
+                                       RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("CurrLedState %d\n", pLed->CurrLedState));\r
+                               }\r
+                               else if(check_fwstate(pmlmepriv, _FW_LINKED)== _FALSE)\r
+                               {\r
+                                       pLed->bLedNoLinkBlinkInProgress = _TRUE;\r
+                                       pLed->CurrLedState = LED_BLINK_SLOWLY;\r
+                                       if( pLed->bLedOn )\r
+                                               pLed->BlinkingLedState = RTW_LED_OFF;\r
+                                       else\r
+                                               pLed->BlinkingLedState = RTW_LED_ON;\r
+                                       _set_timer(&(pLed->BlinkTimer), uLedBlinkNoLinkInterval);\r
+                                       RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("CurrLedState %d\n", pLed->CurrLedState));\r
+                               }\r
+                               pLed->BlinkTimes = 0;\r
+                               pLed->bLedBlinkInProgress = _FALSE;\r
+                       }\r
+                       else\r
+                       {\r
+                               if( adapter_to_pwrctl(padapter)->rf_pwrstate != rf_on )\r
+                               {\r
+                                       SwLedOff(padapter, pLed);\r
+                               }\r
+                               else\r
+                               {\r
+                                       if( pLed->bLedOn )\r
+                                               pLed->BlinkingLedState = RTW_LED_OFF;\r
+                                       else\r
+                                               pLed->BlinkingLedState = RTW_LED_ON;\r
+                                       _set_timer(&(pLed->BlinkTimer), LED_BLINK_FASTER_INTERVAL_ALPHA);\r
+                               }\r
+                       }\r
+                       break;\r
+\r
+               case LED_BLINK_WPS:\r
+                       if( pLed->bLedOn )\r
+                               pLed->BlinkingLedState = RTW_LED_OFF;\r
+                       else\r
+                               pLed->BlinkingLedState = RTW_LED_ON;\r
+                       _set_timer(&(pLed->BlinkTimer), LED_BLINK_SCAN_INTERVAL_ALPHA);\r
+                       break;\r
+\r
+               case LED_BLINK_WPS_STOP:        //WPS success\r
+                       if(pLed->BlinkingLedState == RTW_LED_ON)\r
+                       {\r
+                               pLed->BlinkingLedState = RTW_LED_OFF;\r
+                               _set_timer(&(pLed->BlinkTimer), LED_BLINK_WPS_SUCESS_INTERVAL_ALPHA);\r
+                               bStopBlinking = _FALSE;\r
+                       }\r
+                       else\r
+                       {\r
+                               bStopBlinking = _TRUE;\r
+                       }\r
+\r
+                       if(bStopBlinking)\r
+                       {\r
+                               if( adapter_to_pwrctl(padapter)->rf_pwrstate != rf_on )\r
+                               {\r
+                                       SwLedOff(padapter, pLed);\r
+                               }\r
+                               else\r
+                               {\r
+                                       pLed->bLedLinkBlinkInProgress = _TRUE;\r
+                                       pLed->CurrLedState = LED_BLINK_NORMAL;\r
+                                       if( pLed->bLedOn )\r
+                                               pLed->BlinkingLedState = RTW_LED_OFF;\r
+                                       else\r
+                                               pLed->BlinkingLedState = RTW_LED_ON;\r
+                                       _set_timer(&(pLed->BlinkTimer), LED_BLINK_LINK_INTERVAL_ALPHA);\r
+                                       RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("CurrLedState %d\n", pLed->CurrLedState));\r
+                               }\r
+                               pLed->bLedWPSBlinkInProgress = _FALSE;\r
+                       }\r
+                       break;\r
+\r
+               default:\r
+                       break;\r
+       }\r
+\r
+}\r
+\r
+void\r
+SwLedBlink2(\r
+       PLED_USB                        pLed\r
+       )\r
+{\r
+       _adapter                                *padapter = pLed->padapter;\r
+       struct mlme_priv                *pmlmepriv = &(padapter->mlmepriv);\r
+       u8                                      bStopBlinking = _FALSE;\r
+\r
+       // Change LED according to BlinkingLedState specified.\r
+       if( pLed->BlinkingLedState == RTW_LED_ON)\r
+       {\r
+               SwLedOn(padapter, pLed);\r
+               RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (%d): turn on\n", pLed->BlinkTimes));\r
+       }\r
+       else\r
+       {\r
+               SwLedOff(padapter, pLed);\r
+               RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (%d): turn off\n", pLed->BlinkTimes));\r
+       }\r
+\r
+       switch(pLed->CurrLedState)\r
+       {\r
+               case LED_BLINK_SCAN:\r
+                       pLed->BlinkTimes--;\r
+                       if( pLed->BlinkTimes == 0 )\r
+                       {\r
+                               bStopBlinking = _TRUE;\r
+                       }\r
+\r
+                       if(bStopBlinking)\r
+                       {\r
+                               if( adapter_to_pwrctl(padapter)->rf_pwrstate != rf_on )\r
+                               {\r
+                                       SwLedOff(padapter, pLed);\r
+                               }\r
+                               else if(check_fwstate(pmlmepriv, _FW_LINKED)== _TRUE)\r
+                               {\r
+                                       pLed->CurrLedState = RTW_LED_ON;\r
+                                       pLed->BlinkingLedState = RTW_LED_ON;\r
+                                       SwLedOn(padapter, pLed);\r
+                                       RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("stop scan blink CurrLedState %d\n", pLed->CurrLedState));\r
+\r
+                               }\r
+                               else if(check_fwstate(pmlmepriv, _FW_LINKED)== _FALSE)\r
+                               {\r
+                                       pLed->CurrLedState = RTW_LED_OFF;\r
+                                       pLed->BlinkingLedState = RTW_LED_OFF;\r
+                                       SwLedOff(padapter, pLed);\r
+                                       RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("stop scan blink CurrLedState %d\n", pLed->CurrLedState));\r
+                               }\r
+                               pLed->bLedScanBlinkInProgress = _FALSE;\r
+                       }\r
+                       else\r
+                       {\r
+                               if( adapter_to_pwrctl(padapter)->rf_pwrstate != rf_on )\r
+                               {\r
+                                       SwLedOff(padapter, pLed);\r
+                               }\r
+                               else\r
+                               {\r
+                                        if( pLed->bLedOn )\r
+                                               pLed->BlinkingLedState = RTW_LED_OFF;\r
+                                       else\r
+                                               pLed->BlinkingLedState = RTW_LED_ON;\r
+                                       _set_timer(&(pLed->BlinkTimer), LED_BLINK_SCAN_INTERVAL_ALPHA);\r
+                               }\r
+                       }\r
+                       break;\r
+\r
+               case LED_BLINK_TXRX:\r
+                       pLed->BlinkTimes--;\r
+                       if( pLed->BlinkTimes == 0 )\r
+                       {\r
+                               bStopBlinking = _TRUE;\r
+                       }\r
+                       if(bStopBlinking)\r
+                       {\r
+                               if( adapter_to_pwrctl(padapter)->rf_pwrstate != rf_on )\r
+                               {\r
+                                       SwLedOff(padapter, pLed);\r
+                               }\r
+                               else if(check_fwstate(pmlmepriv, _FW_LINKED)== _TRUE)\r
+                               {\r
+                                       pLed->CurrLedState = RTW_LED_ON;\r
+                                       pLed->BlinkingLedState = RTW_LED_ON;\r
+                                       SwLedOn(padapter, pLed);\r
+                                       RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("stop CurrLedState %d\n", pLed->CurrLedState));\r
+\r
+                               }\r
+                               else if(check_fwstate(pmlmepriv, _FW_LINKED)== _FALSE)\r
+                               {\r
+                                       pLed->CurrLedState = RTW_LED_OFF;\r
+                                       pLed->BlinkingLedState = RTW_LED_OFF;\r
+                                       SwLedOff(padapter, pLed);\r
+                                       RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("stop CurrLedState %d\n", pLed->CurrLedState));\r
+                               }\r
+                               pLed->bLedBlinkInProgress = _FALSE;\r
+                       }\r
+                       else\r
+                       {\r
+                               if( adapter_to_pwrctl(padapter)->rf_pwrstate != rf_on )\r
+                               {\r
+                                       SwLedOff(padapter, pLed);\r
+                               }\r
+                               else\r
+                               {\r
+                                        if( pLed->bLedOn )\r
+                                               pLed->BlinkingLedState = RTW_LED_OFF;\r
+                                       else\r
+                                               pLed->BlinkingLedState = RTW_LED_ON;\r
+                                       _set_timer(&(pLed->BlinkTimer), LED_BLINK_FASTER_INTERVAL_ALPHA);\r
+                               }\r
+                       }\r
+                       break;\r
+\r
+               default:\r
+                       break;\r
+       }\r
+\r
+}\r
+\r
+void\r
+SwLedBlink3(\r
+       PLED_USB                        pLed\r
+       )\r
+{\r
+       _adapter                        *padapter = pLed->padapter;\r
+       struct mlme_priv        *pmlmepriv = &(padapter->mlmepriv);\r
+       u8                              bStopBlinking = _FALSE;\r
+\r
+       // Change LED according to BlinkingLedState specified.\r
+       if( pLed->BlinkingLedState == RTW_LED_ON )\r
+       {\r
+               SwLedOn(padapter, pLed);\r
+               RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (%d): turn on\n", pLed->BlinkTimes));\r
+       }\r
+       else\r
+       {\r
+               if(pLed->CurrLedState != LED_BLINK_WPS_STOP)\r
+                       SwLedOff(padapter, pLed);\r
+               RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (%d): turn off\n", pLed->BlinkTimes));\r
+       }\r
+\r
+       switch(pLed->CurrLedState)\r
+       {\r
+               case LED_BLINK_SCAN:\r
+                       pLed->BlinkTimes--;\r
+                       if( pLed->BlinkTimes == 0 )\r
+                       {\r
+                               bStopBlinking = _TRUE;\r
+                       }\r
+\r
+                       if(bStopBlinking)\r
+                       {\r
+                               if( adapter_to_pwrctl(padapter)->rf_pwrstate != rf_on )\r
+                               {\r
+                                       SwLedOff(padapter, pLed);\r
+                               }\r
+                               else if(check_fwstate(pmlmepriv, _FW_LINKED)== _TRUE)\r
+                               {\r
+                                       pLed->CurrLedState = RTW_LED_ON;\r
+                                       pLed->BlinkingLedState = RTW_LED_ON;\r
+                                       if( !pLed->bLedOn )\r
+                                               SwLedOn(padapter, pLed);\r
+\r
+                                       RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("CurrLedState %d\n", pLed->CurrLedState));\r
+                               }\r
+                               else if(check_fwstate(pmlmepriv, _FW_LINKED)== _FALSE)\r
+                               {\r
+                                       pLed->CurrLedState = RTW_LED_OFF;\r
+                                       pLed->BlinkingLedState = RTW_LED_OFF;\r
+                                       if( pLed->bLedOn )\r
+                                               SwLedOff(padapter, pLed);\r
+\r
+                                       RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("CurrLedState %d\n", pLed->CurrLedState));\r
+                               }\r
+                               pLed->bLedScanBlinkInProgress = _FALSE;\r
+                       }\r
+                       else\r
+                       {\r
+                               if( adapter_to_pwrctl(padapter)->rf_pwrstate != rf_on )\r
+                               {\r
+                                       SwLedOff(padapter, pLed);\r
+                               }\r
+                               else\r
+                               {\r
+                                       if( pLed->bLedOn )\r
+                                               pLed->BlinkingLedState = RTW_LED_OFF;\r
+                                       else\r
+                                               pLed->BlinkingLedState = RTW_LED_ON;\r
+                                       _set_timer(&(pLed->BlinkTimer), LED_BLINK_SCAN_INTERVAL_ALPHA);\r
+                               }\r
+                       }\r
+                       break;\r
+\r
+               case LED_BLINK_TXRX:\r
+                       pLed->BlinkTimes--;\r
+                       if( pLed->BlinkTimes == 0 )\r
+                       {\r
+                               bStopBlinking = _TRUE;\r
+                       }\r
+                       if(bStopBlinking)\r
+                       {\r
+                               if( adapter_to_pwrctl(padapter)->rf_pwrstate != rf_on )\r
+                               {\r
+                                       SwLedOff(padapter, pLed);\r
+                               }\r
+                               else if(check_fwstate(pmlmepriv, _FW_LINKED)== _TRUE)\r
+                               {\r
+                                       pLed->CurrLedState = RTW_LED_ON;\r
+                                       pLed->BlinkingLedState = RTW_LED_ON;\r
+\r
+                                       if( !pLed->bLedOn )\r
+                                               SwLedOn(padapter, pLed);\r
+\r
+                                       RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("CurrLedState %d\n", pLed->CurrLedState));\r
+                               }\r
+                               else if(check_fwstate(pmlmepriv, _FW_LINKED)== _FALSE)\r
+                               {\r
+                                       pLed->CurrLedState = RTW_LED_OFF;\r
+                                       pLed->BlinkingLedState = RTW_LED_OFF;\r
+\r
+                                       if( pLed->bLedOn )\r
+                                               SwLedOff(padapter, pLed);\r
+\r
+\r
+                                       RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("CurrLedState %d\n", pLed->CurrLedState));\r
+                               }\r
+                               pLed->bLedBlinkInProgress = _FALSE;\r
+                       }\r
+                       else\r
+                       {\r
+                               if( adapter_to_pwrctl(padapter)->rf_pwrstate != rf_on )\r
+                               {\r
+                                       SwLedOff(padapter, pLed);\r
+                               }\r
+                               else\r
+                               {\r
+                                       if( pLed->bLedOn )\r
+                                               pLed->BlinkingLedState = RTW_LED_OFF;\r
+                                       else\r
+                                               pLed->BlinkingLedState = RTW_LED_ON;\r
+                                       _set_timer(&(pLed->BlinkTimer), LED_BLINK_FASTER_INTERVAL_ALPHA);\r
+                               }\r
+                       }\r
+                       break;\r
+\r
+               case LED_BLINK_WPS:\r
+                       if( pLed->bLedOn )\r
+                               pLed->BlinkingLedState = RTW_LED_OFF;\r
+                       else\r
+                               pLed->BlinkingLedState = RTW_LED_ON;\r
+                       _set_timer(&(pLed->BlinkTimer), LED_BLINK_SCAN_INTERVAL_ALPHA);\r
+                       break;\r
+\r
+               case LED_BLINK_WPS_STOP:        //WPS success\r
+                       if(pLed->BlinkingLedState == RTW_LED_ON)\r
+                       {\r
+                               pLed->BlinkingLedState = RTW_LED_OFF;\r
+                               _set_timer(&(pLed->BlinkTimer), LED_BLINK_WPS_SUCESS_INTERVAL_ALPHA);\r
+                               bStopBlinking = _FALSE;\r
+                       }\r
+                       else\r
+                       {\r
+                               bStopBlinking = _TRUE;\r
+                       }\r
+\r
+                       if(bStopBlinking)\r
+                       {\r
+                               if( adapter_to_pwrctl(padapter)->rf_pwrstate != rf_on )\r
+                               {\r
+                                       SwLedOff(padapter, pLed);\r
+                               }\r
+                               else\r
+                               {\r
+                                       pLed->CurrLedState = RTW_LED_ON;\r
+                                       pLed->BlinkingLedState = RTW_LED_ON;\r
+                                       SwLedOn(padapter, pLed);\r
+                                       RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("CurrLedState %d\n", pLed->CurrLedState));\r
+                               }\r
+                               pLed->bLedWPSBlinkInProgress = _FALSE;\r
+                       }\r
+                       break;\r
+\r
+\r
+               default:\r
+                       break;\r
+       }\r
+\r
+}\r
+\r
+\r
+void\r
+SwLedBlink4(\r
+       PLED_USB                        pLed\r
+       )\r
+{\r
+       _adapter                        *padapter = pLed->padapter;\r
+       struct led_priv *ledpriv = &(padapter->ledpriv);\r
+       struct mlme_priv        *pmlmepriv = &(padapter->mlmepriv);\r
+       PLED_USB                pLed1 = &(ledpriv->SwLed1);\r
+       u8                              bStopBlinking = _FALSE;\r
+\r
+       // Change LED according to BlinkingLedState specified.\r
+       if( pLed->BlinkingLedState == RTW_LED_ON )\r
+       {\r
+               SwLedOn(padapter, pLed);\r
+               RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (%d): turn on\n", pLed->BlinkTimes));\r
+       }\r
+       else\r
+       {\r
+               SwLedOff(padapter, pLed);\r
+               RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (%d): turn off\n", pLed->BlinkTimes));\r
+       }\r
+\r
+       if(!pLed1->bLedWPSBlinkInProgress && pLed1->BlinkingLedState == LED_UNKNOWN)\r
+       {\r
+               pLed1->BlinkingLedState = RTW_LED_OFF;\r
+               pLed1->CurrLedState = RTW_LED_OFF;\r
+               SwLedOff(padapter, pLed1);\r
+       }\r
+\r
+       switch(pLed->CurrLedState)\r
+       {\r
+               case LED_BLINK_SLOWLY:\r
+                       if( pLed->bLedOn )\r
+                               pLed->BlinkingLedState = RTW_LED_OFF;\r
+                       else\r
+                               pLed->BlinkingLedState = RTW_LED_ON;\r
+                       _set_timer(&(pLed->BlinkTimer), LED_BLINK_NO_LINK_INTERVAL_ALPHA);\r
+                       break;\r
+\r
+               case LED_BLINK_StartToBlink:\r
+                       if( pLed->bLedOn )\r
+                       {\r
+                               pLed->BlinkingLedState = RTW_LED_OFF;\r
+                               _set_timer(&(pLed->BlinkTimer), LED_BLINK_SLOWLY_INTERVAL);\r
+                       }\r
+                       else\r
+                       {\r
+                               pLed->BlinkingLedState = RTW_LED_ON;\r
+                               _set_timer(&(pLed->BlinkTimer), LED_BLINK_NORMAL_INTERVAL);\r
+                       }\r
+                       break;\r
+\r
+               case LED_BLINK_SCAN:\r
+                       pLed->BlinkTimes--;\r
+                       if( pLed->BlinkTimes == 0 )\r
+                       {\r
+                               bStopBlinking = _FALSE;\r
+                       }\r
+\r
+                       if(bStopBlinking)\r
+                       {\r
+                               if( adapter_to_pwrctl(padapter)->rf_pwrstate != rf_on && adapter_to_pwrctl(padapter)->rfoff_reason > RF_CHANGE_BY_PS)\r
+                               {\r
+                                       SwLedOff(padapter, pLed);\r
+                               }\r
+                               else\r
+                               {\r
+                                       pLed->bLedNoLinkBlinkInProgress = _FALSE;\r
+                                       pLed->CurrLedState = LED_BLINK_SLOWLY;\r
+                                       if( pLed->bLedOn )\r
+                                               pLed->BlinkingLedState = RTW_LED_OFF;\r
+                                       else\r
+                                               pLed->BlinkingLedState = RTW_LED_ON;\r
+                                       _set_timer(&(pLed->BlinkTimer), LED_BLINK_NO_LINK_INTERVAL_ALPHA);\r
+                               }\r
+                               pLed->bLedScanBlinkInProgress = _FALSE;\r
+                       }\r
+                       else\r
+                       {\r
+                               if( adapter_to_pwrctl(padapter)->rf_pwrstate != rf_on && adapter_to_pwrctl(padapter)->rfoff_reason > RF_CHANGE_BY_PS)\r
+                               {\r
+                                       SwLedOff(padapter, pLed);\r
+                               }\r
+                               else\r
+                               {\r
+                                        if( pLed->bLedOn )\r
+                                               pLed->BlinkingLedState = RTW_LED_OFF;\r
+                                       else\r
+                                               pLed->BlinkingLedState = RTW_LED_ON;\r
+                                       _set_timer(&(pLed->BlinkTimer), LED_BLINK_SCAN_INTERVAL_ALPHA);\r
+                               }\r
+                       }\r
+                       break;\r
+\r
+               case LED_BLINK_TXRX:\r
+                       pLed->BlinkTimes--;\r
+                       if( pLed->BlinkTimes == 0 )\r
+                       {\r
+                               bStopBlinking = _TRUE;\r
+                       }\r
+                       if(bStopBlinking)\r
+                       {\r
+                               if( adapter_to_pwrctl(padapter)->rf_pwrstate != rf_on && adapter_to_pwrctl(padapter)->rfoff_reason > RF_CHANGE_BY_PS)\r
+                               {\r
+                                       SwLedOff(padapter, pLed);\r
+                               }\r
+                               else\r
+                               {\r
+                                       pLed->bLedNoLinkBlinkInProgress = _TRUE;\r
+                                       pLed->CurrLedState = LED_BLINK_SLOWLY;\r
+                                       if( pLed->bLedOn )\r
+                                               pLed->BlinkingLedState = RTW_LED_OFF;\r
+                                       else\r
+                                               pLed->BlinkingLedState = RTW_LED_ON;\r
+                                       _set_timer(&(pLed->BlinkTimer), LED_BLINK_NO_LINK_INTERVAL_ALPHA);\r
+                               }\r
+                               pLed->bLedBlinkInProgress = _FALSE;\r
+                       }\r
+                       else\r
+                       {\r
+                               if( adapter_to_pwrctl(padapter)->rf_pwrstate != rf_on && adapter_to_pwrctl(padapter)->rfoff_reason > RF_CHANGE_BY_PS)\r
+                               {\r
+                                       SwLedOff(padapter, pLed);\r
+                               }\r
+                               else\r
+                               {\r
+                                       \r
+                                       if( pLed->bLedOn )\r
+                                               pLed->BlinkingLedState = RTW_LED_OFF;\r
+                                       else\r
+                                               pLed->BlinkingLedState = RTW_LED_ON;\r
+                                       \r
+                                       _set_timer(&(pLed->BlinkTimer), LED_BLINK_FASTER_INTERVAL_ALPHA);\r
+                               }\r
+                       }\r
+                       break;\r
+\r
+               case LED_BLINK_WPS:\r
+                       if( pLed->bLedOn )\r
+                       {\r
+                               pLed->BlinkingLedState = RTW_LED_OFF;\r
+                               _set_timer(&(pLed->BlinkTimer), LED_BLINK_SLOWLY_INTERVAL);\r
+                       }\r
+                       else\r
+                       {\r
+                               pLed->BlinkingLedState = RTW_LED_ON;\r
+                               _set_timer(&(pLed->BlinkTimer), LED_BLINK_NORMAL_INTERVAL);\r
+                       }\r
+                       break;\r
+\r
+               case LED_BLINK_WPS_STOP:        //WPS authentication fail\r
+                       if( pLed->bLedOn )\r
+                               pLed->BlinkingLedState = RTW_LED_OFF;\r
+                       else\r
+                               pLed->BlinkingLedState = RTW_LED_ON;\r
+\r
+                       _set_timer(&(pLed->BlinkTimer), LED_BLINK_NORMAL_INTERVAL);\r
+                       break;\r
+\r
+               case LED_BLINK_WPS_STOP_OVERLAP:        //WPS session overlap\r
+                       pLed->BlinkTimes--;\r
+                       if(pLed->BlinkTimes == 0)\r
+                       {\r
+                               if(pLed->bLedOn)\r
+                               {\r
+                                       pLed->BlinkTimes = 1;\r
+                               }\r
+                               else\r
+                               {\r
+                                       bStopBlinking = _TRUE;\r
+                               }\r
+                       }\r
+\r
+                       if(bStopBlinking)\r
+                       {\r
+                               pLed->BlinkTimes = 10;\r
+                               pLed->BlinkingLedState = RTW_LED_ON;\r
+                               _set_timer(&(pLed->BlinkTimer), LED_BLINK_LINK_INTERVAL_ALPHA);\r
+                       }\r
+                       else\r
+                       {\r
+                               if( pLed->bLedOn )\r
+                                       pLed->BlinkingLedState = RTW_LED_OFF;\r
+                               else\r
+                                       pLed->BlinkingLedState = RTW_LED_ON;\r
+\r
+                               _set_timer(&(pLed->BlinkTimer), LED_BLINK_NORMAL_INTERVAL);\r
+                       }\r
+                       break;\r
+\r
+               case LED_BLINK_ALWAYS_ON:\r
+                       pLed->BlinkTimes--;\r
+                       if( pLed->BlinkTimes == 0 )\r
+                       {\r
+                               bStopBlinking = _TRUE;\r
+                       }\r
+                       if(bStopBlinking)\r
+                       {\r
+                               if( adapter_to_pwrctl(padapter)->rf_pwrstate != rf_on && adapter_to_pwrctl(padapter)->rfoff_reason > RF_CHANGE_BY_PS)\r
+                               {\r
+                                       SwLedOff(padapter, pLed);\r
+                               }\r
+                               else\r
+                               {\r
+                                       pLed->bLedNoLinkBlinkInProgress = _TRUE;\r
+                                       pLed->CurrLedState = LED_BLINK_SLOWLY;\r
+                                       if( pLed->bLedOn )\r
+                                               pLed->BlinkingLedState = RTW_LED_OFF;\r
+                                       else\r
+                                               pLed->BlinkingLedState = RTW_LED_ON;\r
+                                       \r
+                                       _set_timer(&(pLed->BlinkTimer), LED_BLINK_NO_LINK_INTERVAL_ALPHA);\r
+                               }\r
+                               pLed->bLedBlinkInProgress = _FALSE;\r
+                       }\r
+                       else\r
+                       {\r
+                               if( adapter_to_pwrctl(padapter)->rf_pwrstate != rf_on && adapter_to_pwrctl(padapter)->rfoff_reason > RF_CHANGE_BY_PS)\r
+                               {\r
+                                       RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("RFOff Status \n"));\r
+                                       SwLedOff(padapter, pLed);\r
+                               }\r
+                               else\r
+                               {\r
+                                       if( pLed->bLedOn )\r
+                                               pLed->BlinkingLedState = RTW_LED_OFF;\r
+                                       else\r
+                                               pLed->BlinkingLedState = RTW_LED_ON;\r
+                                       \r
+                                       _set_timer(&(pLed->BlinkTimer), LED_BLINK_FASTER_INTERVAL_ALPHA);\r
+                               }\r
+                       }\r
+                       break;\r
+\r
+               default:\r
+                       break;\r
+       }\r
+\r
+       RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("SwLedBlink4 CurrLedState %d\n", pLed->CurrLedState));\r
+\r
+\r
+}\r
+\r
+void\r
+SwLedBlink5(\r
+       PLED_USB                        pLed\r
+       )\r
+{\r
+       _adapter                        *padapter = pLed->padapter;\r
+       struct mlme_priv        *pmlmepriv = &(padapter->mlmepriv);\r
+       u8                              bStopBlinking = _FALSE;\r
+\r
+       // Change LED according to BlinkingLedState specified.\r
+       if( pLed->BlinkingLedState == RTW_LED_ON )\r
+       {\r
+               SwLedOn(padapter, pLed);\r
+               RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (%d): turn on\n", pLed->BlinkTimes));\r
+       }\r
+       else\r
+       {\r
+               SwLedOff(padapter, pLed);\r
+               RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (%d): turn off\n", pLed->BlinkTimes));\r
+       }\r
+\r
+       switch(pLed->CurrLedState)\r
+       {\r
+               case LED_BLINK_SCAN:\r
+                       pLed->BlinkTimes--;\r
+                       if( pLed->BlinkTimes == 0 )\r
+                       {\r
+                               bStopBlinking = _TRUE;\r
+                       }\r
+\r
+                       if(bStopBlinking)\r
+                       {\r
+                               if( adapter_to_pwrctl(padapter)->rf_pwrstate != rf_on && adapter_to_pwrctl(padapter)->rfoff_reason > RF_CHANGE_BY_PS)\r
+                               {\r
+                                       pLed->CurrLedState = RTW_LED_OFF;\r
+                                       pLed->BlinkingLedState = RTW_LED_OFF;\r
+                                       if(pLed->bLedOn)\r
+                                               SwLedOff(padapter, pLed);\r
+                               }\r
+                               else\r
+                               {               pLed->CurrLedState = RTW_LED_ON;\r
+                                               pLed->BlinkingLedState = RTW_LED_ON;\r
+                                               if(!pLed->bLedOn)\r
+                                                       _set_timer(&(pLed->BlinkTimer), LED_BLINK_FASTER_INTERVAL_ALPHA);\r
+                               }\r
+\r
+                               pLed->bLedScanBlinkInProgress = _FALSE;\r
+                       }\r
+                       else\r
+                       {\r
+                               if( adapter_to_pwrctl(padapter)->rf_pwrstate != rf_on && adapter_to_pwrctl(padapter)->rfoff_reason > RF_CHANGE_BY_PS)\r
+                               {\r
+                                       SwLedOff(padapter, pLed);\r
+                               }\r
+                               else\r
+                               {\r
+                                       if( pLed->bLedOn )\r
+                                               pLed->BlinkingLedState = RTW_LED_OFF;\r
+                                       else\r
+                                               pLed->BlinkingLedState = RTW_LED_ON;\r
+                                       _set_timer(&(pLed->BlinkTimer), LED_BLINK_SCAN_INTERVAL_ALPHA);\r
+                               }\r
+                       }\r
+                       break;\r
+\r
+\r
+               case LED_BLINK_TXRX:\r
+                       pLed->BlinkTimes--;\r
+                       if( pLed->BlinkTimes == 0 )\r
+                       {\r
+                               bStopBlinking = _TRUE;\r
+                       }\r
+\r
+                       if(bStopBlinking)\r
+                       {\r
+                               if( adapter_to_pwrctl(padapter)->rf_pwrstate != rf_on && adapter_to_pwrctl(padapter)->rfoff_reason > RF_CHANGE_BY_PS)\r
+                               {\r
+                                       pLed->CurrLedState = RTW_LED_OFF;\r
+                                       pLed->BlinkingLedState = RTW_LED_OFF;\r
+                                       if(pLed->bLedOn)\r
+                                               SwLedOff(padapter, pLed);\r
+                               }\r
+                               else\r
+                               {\r
+                                       pLed->CurrLedState = RTW_LED_ON;\r
+                                       pLed->BlinkingLedState = RTW_LED_ON;\r
+                                       if(!pLed->bLedOn)\r
+                                               _set_timer(&(pLed->BlinkTimer), LED_BLINK_FASTER_INTERVAL_ALPHA);\r
+                               }\r
+\r
+                               pLed->bLedBlinkInProgress = _FALSE;\r
+                       }\r
+                       else\r
+                       {\r
+                               if( adapter_to_pwrctl(padapter)->rf_pwrstate != rf_on && adapter_to_pwrctl(padapter)->rfoff_reason > RF_CHANGE_BY_PS)\r
+                               {\r
+                                       SwLedOff(padapter, pLed);\r
+                               }\r
+                               else\r
+                               {\r
+                                        if( pLed->bLedOn )\r
+                                               pLed->BlinkingLedState = RTW_LED_OFF;\r
+                                       else\r
+                                               pLed->BlinkingLedState = RTW_LED_ON;\r
+                                       _set_timer(&(pLed->BlinkTimer), LED_BLINK_FASTER_INTERVAL_ALPHA);\r
+                               }\r
+                       }\r
+                       break;\r
+\r
+               default:\r
+                       break;\r
+       }\r
+\r
+       RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("SwLedBlink5 CurrLedState %d\n", pLed->CurrLedState));\r
+\r
+\r
+}\r
+\r
+void\r
+SwLedBlink6(\r
+       PLED_USB                        pLed\r
+       )\r
+{\r
+       _adapter                        *padapter = pLed->padapter;\r
+       struct mlme_priv        *pmlmepriv = &(padapter->mlmepriv);\r
+       u8                              bStopBlinking = _FALSE;\r
+\r
+       // Change LED according to BlinkingLedState specified.\r
+       if( pLed->BlinkingLedState == RTW_LED_ON )\r
+       {\r
+               SwLedOn(padapter, pLed);\r
+               RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (%d): turn on\n", pLed->BlinkTimes));\r
+       }\r
+       else\r
+       {\r
+               SwLedOff(padapter, pLed);\r
+               RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (%d): turn off\n", pLed->BlinkTimes));\r
+       }\r
+\r
+       RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("<==== blink6\n"));\r
+}\r
+\r
+void\r
+SwLedBlink7(\r
+       PLED_USB                        pLed\r
+       )\r
+{\r
+       PADAPTER Adapter = pLed->padapter;\r
+       struct mlme_priv        *pmlmepriv = &(Adapter->mlmepriv);\r
+       BOOLEAN bStopBlinking = _FALSE;\r
+\r
+       // Change LED according to BlinkingLedState specified.\r
+       if( pLed->BlinkingLedState == RTW_LED_ON )\r
+       {\r
+               SwLedOn(Adapter, pLed);\r
+               RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (%d): turn on\n", pLed->BlinkTimes));\r
+       }\r
+       else\r
+       {\r
+               if(pLed->CurrLedState != LED_BLINK_WPS_STOP)\r
+                       SwLedOff(Adapter, pLed);\r
+               RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (%d): turn off\n", pLed->BlinkTimes));\r
+       }\r
+\r
+       switch(pLed->CurrLedState)\r
+       {\r
+               case LED_BLINK_SCAN:\r
+                       pLed->BlinkTimes--;\r
+                       if( pLed->BlinkTimes == 0 )\r
+                       {\r
+                               bStopBlinking = _TRUE;\r
+                       }\r
+\r
+                       if(bStopBlinking)\r
+                       {\r
+                               if( adapter_to_pwrctl(Adapter)->rf_pwrstate != rf_on )\r
+                               {\r
+                                       SwLedOff(Adapter, pLed);\r
+                               }\r
+                               else if(check_fwstate(pmlmepriv, _FW_LINKED)== _TRUE)\r
+                               {\r
+                                       pLed->CurrLedState = RTW_LED_ON;\r
+                                       pLed->BlinkingLedState = RTW_LED_ON;\r
+                                       if( !pLed->bLedOn )\r
+                                               SwLedOn(Adapter, pLed);\r
+\r
+                                       RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("CurrLedState %d\n", pLed->CurrLedState));\r
+                               }\r
+                               else if(check_fwstate(pmlmepriv, _FW_LINKED)== _FALSE)\r
+                               {\r
+                                       pLed->CurrLedState = RTW_LED_OFF;\r
+                                       pLed->BlinkingLedState = RTW_LED_OFF;\r
+                                       if( pLed->bLedOn )\r
+                                               SwLedOff(Adapter, pLed);\r
+\r
+                                       RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("CurrLedState %d\n", pLed->CurrLedState));                                  \r
+                               }\r
+                               pLed->bLedScanBlinkInProgress = _FALSE;\r
+                       }\r
+                       else\r
+                       {\r
+                               if( adapter_to_pwrctl(Adapter)->rf_pwrstate != rf_on )\r
+                               {\r
+                                       SwLedOff(Adapter, pLed);\r
+                               }\r
+                               else\r
+                               {\r
+                                       if( pLed->bLedOn )\r
+                                               pLed->BlinkingLedState = RTW_LED_OFF;\r
+                                       else\r
+                                               pLed->BlinkingLedState = RTW_LED_ON;\r
+                                       _set_timer(&(pLed->BlinkTimer), LED_BLINK_LINK_INTERVAL_NETGEAR);\r
+                               }\r
+                       }\r
+                       break;\r
+\r
+               case LED_BLINK_WPS:\r
+                       if( pLed->bLedOn )\r
+                               pLed->BlinkingLedState = RTW_LED_OFF;\r
+                       else\r
+                               pLed->BlinkingLedState = RTW_LED_ON;\r
+                       _set_timer(&(pLed->BlinkTimer), LED_BLINK_LINK_INTERVAL_NETGEAR);\r
+                       break;\r
+\r
+               case LED_BLINK_WPS_STOP:        //WPS success\r
+                       if(pLed->BlinkingLedState == RTW_LED_ON)\r
+                       {\r
+                               pLed->BlinkingLedState = RTW_LED_OFF;\r
+                               _set_timer(&(pLed->BlinkTimer), LED_BLINK_LINK_INTERVAL_NETGEAR);\r
+                               bStopBlinking = _FALSE;\r
+                       }\r
+                       else\r
+                       {\r
+                               bStopBlinking = _TRUE;\r
+                       }\r
+\r
+                       if(bStopBlinking)\r
+                       {\r
+                               if( adapter_to_pwrctl(Adapter)->rf_pwrstate != rf_on )\r
+                               {\r
+                                       SwLedOff(Adapter, pLed);\r
+                               }\r
+                               else\r
+                               {\r
+                                       pLed->CurrLedState = RTW_LED_ON;\r
+                                       pLed->BlinkingLedState = RTW_LED_ON;\r
+                                       SwLedOn(Adapter, pLed);\r
+                                       RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("CurrLedState %d\n", pLed->CurrLedState));\r
+                               }\r
+                               pLed->bLedWPSBlinkInProgress = _FALSE;\r
+                       }\r
+                       break;\r
+\r
+\r
+               default:\r
+                       break;\r
+       }\r
+\r
+       RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("<==== blink7\n"));\r
+\r
+}\r
+\r
+void\r
+SwLedBlink8(\r
+       PLED_USB                        pLed\r
+       )\r
+{\r
+       PADAPTER Adapter = pLed->padapter;\r
+\r
+       // Change LED according to BlinkingLedState specified.\r
+       if( pLed->BlinkingLedState == RTW_LED_ON )\r
+       {\r
+               SwLedOn(Adapter, pLed);\r
+               RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes blink8(%d): turn on\n", pLed->BlinkTimes));\r
+       }\r
+       else\r
+       {\r
+               SwLedOff(Adapter, pLed);\r
+               RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes blink8(%d): turn off\n", pLed->BlinkTimes));\r
+       }\r
+\r
+       RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("<==== blink8\n"));\r
+\r
+}\r
+\r
+//page added for Belkin AC950. 20120813\r
+void\r
+SwLedBlink9(\r
+       PLED_USB                        pLed\r
+       )\r
+{\r
+       PADAPTER Adapter = pLed->padapter; \r
+       struct mlme_priv        *pmlmepriv = &(Adapter->mlmepriv);\r
+       BOOLEAN bStopBlinking = _FALSE;\r
+\r
+       // Change LED according to BlinkingLedState specified.\r
+       if( pLed->BlinkingLedState == RTW_LED_ON ) \r
+       {\r
+               SwLedOn(Adapter, pLed);\r
+               RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (%d): turn on\n", pLed->BlinkTimes));\r
+       }\r
+       else \r
+       {\r
+               SwLedOff(Adapter, pLed);\r
+               RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (%d): turn off\n", pLed->BlinkTimes));\r
+       }       \r
+       //DBG_871X("%s, pLed->CurrLedState=%d, pLed->BlinkingLedState=%d \n", __FUNCTION__, pLed->CurrLedState, pLed->BlinkingLedState);\r
+\r
+\r
+       switch(pLed->CurrLedState)\r
+       {\r
+               case RTW_LED_ON:\r
+                       SwLedOn(Adapter, pLed);\r
+                       break;\r
+                       \r
+               case RTW_LED_OFF:\r
+                       SwLedOff(Adapter, pLed);\r
+                       break;\r
+                       \r
+               case LED_BLINK_SLOWLY:                  \r
+                       if( pLed->bLedOn )\r
+                               pLed->BlinkingLedState = RTW_LED_OFF; \r
+                       else\r
+                               pLed->BlinkingLedState = RTW_LED_ON; \r
+                       _set_timer(&(pLed->BlinkTimer), LED_BLINK_NO_LINK_INTERVAL_ALPHA);\r
+                       break;\r
+\r
+               case LED_BLINK_StartToBlink:\r
+                       if( pLed->bLedOn )\r
+                       {\r
+                               pLed->BlinkingLedState = RTW_LED_OFF;\r
+                               _set_timer(&(pLed->BlinkTimer), LED_BLINK_SLOWLY_INTERVAL);             \r
+                       }\r
+                       else\r
+                       {\r
+                               pLed->BlinkingLedState = RTW_LED_ON; \r
+                               _set_timer(&(pLed->BlinkTimer), LED_BLINK_NORMAL_INTERVAL);\r
+                       }\r
+                       break;                  \r
+                       \r
+               case LED_BLINK_SCAN:\r
+                       pLed->BlinkTimes--;\r
+                       if( pLed->BlinkTimes == 0 )\r
+                       {\r
+                               bStopBlinking = _TRUE;\r
+                       }\r
+                       \r
+                       if(bStopBlinking)\r
+                       {\r
+                               if( adapter_to_pwrctl(Adapter)->rf_pwrstate != rf_on )\r
+                               {\r
+                                       SwLedOff(Adapter, pLed);\r
+                               }\r
+                               else if(check_fwstate(pmlmepriv, _FW_LINKED) == _TRUE)\r
+                               {\r
+                                       pLed->bLedLinkBlinkInProgress = _TRUE;\r
+                                       pLed->CurrLedState = LED_BLINK_SLOWLY;\r
+                                       \r
+                                       _set_timer(&(pLed->BlinkTimer), LED_BLINK_LINK_INTERVAL_ALPHA);\r
+                                       RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("CurrLedState %d\n", pLed->CurrLedState));                                  \r
+                               }\r
+                               else if(check_fwstate(pmlmepriv, _FW_LINKED)== _FALSE)\r
+                               {\r
+                                       pLed->bLedNoLinkBlinkInProgress = _TRUE;\r
+                                       pLed->CurrLedState = LED_BLINK_SLOWLY;\r
+                                       if( pLed->bLedOn )\r
+                                               pLed->BlinkingLedState = RTW_LED_OFF; \r
+                                       else\r
+                                               pLed->BlinkingLedState = RTW_LED_ON; \r
+                                       _set_timer(&(pLed->BlinkTimer), LED_BLINK_NO_LINK_INTERVAL_ALPHA);\r
+                                       RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("CurrLedState %d\n", pLed->CurrLedState));                                  \r
+                               }\r
+                               pLed->BlinkTimes = 0;\r
+                               pLed->bLedBlinkInProgress = _FALSE;     \r
+                       }\r
+                       else\r
+                       {\r
+                               if( adapter_to_pwrctl(Adapter)->rf_pwrstate != rf_on && adapter_to_pwrctl(Adapter)->rfoff_reason > RF_CHANGE_BY_PS)\r
+                               {\r
+                                       SwLedOff(Adapter, pLed);\r
+                               }\r
+                               else\r
+                               {\r
+                                        if( pLed->bLedOn )\r
+                                               pLed->BlinkingLedState = RTW_LED_OFF; \r
+                                       else\r
+                                               pLed->BlinkingLedState = RTW_LED_ON; \r
+                                       _set_timer(&(pLed->BlinkTimer), LED_BLINK_SCAN_INTERVAL_ALPHA);\r
+                               }\r
+                       }\r
+                       break;\r
+\r
+               case LED_BLINK_TXRX:\r
+                       pLed->BlinkTimes--;\r
+                       if( pLed->BlinkTimes == 0 )\r
+                       {\r
+                               bStopBlinking = _TRUE;\r
+                       }\r
+                       if(bStopBlinking)\r
+                       {\r
+                               if( adapter_to_pwrctl(Adapter)->rf_pwrstate != rf_on && adapter_to_pwrctl(Adapter)->rfoff_reason > RF_CHANGE_BY_PS)\r
+                               {\r
+                                       SwLedOff(Adapter, pLed);\r
+                               }\r
+                               else \r
+                               {\r
+                                       pLed->CurrLedState = LED_BLINK_SLOWLY;\r
+                                       if( pLed->bLedOn )\r
+                                               pLed->BlinkingLedState = RTW_LED_OFF; \r
+                                       else\r
+                                               pLed->BlinkingLedState = RTW_LED_ON; \r
+                                       _set_timer(&(pLed->BlinkTimer), LED_BLINK_FASTER_INTERVAL_ALPHA);\r
+                               }\r
+                               pLed->bLedBlinkInProgress = _FALSE;     \r
+                       }\r
+                       else\r
+                       {\r
+                               if( adapter_to_pwrctl(Adapter)->rf_pwrstate != rf_on && adapter_to_pwrctl(Adapter)->rfoff_reason > RF_CHANGE_BY_PS)\r
+                               {\r
+                                       SwLedOff(Adapter, pLed);\r
+                               }\r
+                               else\r
+                               {\r
+                                       if( pLed->bLedOn )\r
+                                               pLed->BlinkingLedState = RTW_LED_OFF; \r
+                                       else\r
+                                               pLed->BlinkingLedState = RTW_LED_ON; \r
+                                       \r
+                                       _set_timer(&(pLed->BlinkTimer), LED_BLINK_FASTER_INTERVAL_ALPHA);\r
+                               }\r
+                       }\r
+                       break;\r
+\r
+               case LED_BLINK_WPS:\r
+                       if( pLed->bLedOn )\r
+                       {\r
+                               pLed->BlinkingLedState = RTW_LED_OFF; \r
+                               _set_timer(&(pLed->BlinkTimer), LED_BLINK_SLOWLY_INTERVAL);\r
+                       }\r
+                       else\r
+                       {\r
+                               pLed->BlinkingLedState = RTW_LED_ON; \r
+                               _set_timer(&(pLed->BlinkTimer), LED_BLINK_NORMAL_INTERVAL);\r
+                       }\r
+                       break;\r
+\r
+               case LED_BLINK_WPS_STOP:        //WPS authentication fail\r
+                       if( pLed->bLedOn )                      \r
+                               pLed->BlinkingLedState = RTW_LED_OFF;                   \r
+                       else                    \r
+                               pLed->BlinkingLedState = RTW_LED_ON; \r
+                       \r
+                       _set_timer(&(pLed->BlinkTimer), LED_BLINK_NORMAL_INTERVAL);\r
+                       break;\r
+\r
+               case LED_BLINK_WPS_STOP_OVERLAP:        //WPS session overlap           \r
+                       pLed->BlinkTimes--;\r
+                       pLed->BlinkCounter --;\r
+                       if(pLed->BlinkCounter == 0)\r
+                       {\r
+                               pLed->BlinkingLedState = RTW_LED_OFF; \r
+                               pLed->CurrLedState = RTW_LED_OFF;\r
+                               _set_timer(&(pLed->BlinkTimer), LED_BLINK_NORMAL_INTERVAL);\r
+                       }\r
+                       else\r
+                       {\r
+                               if(pLed->BlinkTimes == 0)\r
+                               {\r
+                                       if(pLed->bLedOn)\r
+                                       {\r
+                                               pLed->BlinkTimes = 1;                                                   \r
+                                       }\r
+                                       else\r
+                                       {\r
+                                               bStopBlinking = _TRUE;\r
+                                       }\r
+                               }\r
+\r
+                               if(bStopBlinking)\r
+                               {                               \r
+                                       pLed->BlinkTimes = 10;                  \r
+                                       pLed->BlinkingLedState = RTW_LED_ON;                                                    \r
+                                       _set_timer(&(pLed->BlinkTimer), LED_BLINK_LINK_INTERVAL_ALPHA);                                                         \r
+                               }\r
+                               else\r
+                               {\r
+                                       if( pLed->bLedOn )                      \r
+                                               pLed->BlinkingLedState = RTW_LED_OFF;                   \r
+                                       else                    \r
+                                               pLed->BlinkingLedState = RTW_LED_ON; \r
+                                       \r
+                                       _set_timer(&(pLed->BlinkTimer), LED_BLINK_NORMAL_INTERVAL);                                             \r
+                               }\r
+                       }\r
+                       break;\r
+                       \r
+               case LED_BLINK_ALWAYS_ON:\r
+                       pLed->BlinkTimes--;\r
+                       if( pLed->BlinkTimes == 0 )\r
+                       {\r
+                               bStopBlinking = _TRUE;\r
+                       }\r
+                       if(bStopBlinking)\r
+                       {\r
+                               if( adapter_to_pwrctl(Adapter)->rf_pwrstate != rf_on && adapter_to_pwrctl(Adapter)->rfoff_reason > RF_CHANGE_BY_PS)\r
+                               {\r
+                                       SwLedOff(Adapter, pLed);\r
+                               }\r
+                               else \r
+                               {\r
+                                       if(IS_HARDWARE_TYPE_8812AU(Adapter))\r
+                                       {\r
+                                               pLed->BlinkingLedState = RTW_LED_ON; \r
+                                               pLed->CurrLedState = LED_BLINK_ALWAYS_ON;\r
+                                       }\r
+                                       else\r
+                                       {\r
+                                               pLed->bLedNoLinkBlinkInProgress = _TRUE;\r
+                                               pLed->CurrLedState = LED_BLINK_SLOWLY;\r
+                                               if( pLed->bLedOn )\r
+                                                       pLed->BlinkingLedState = RTW_LED_OFF; \r
+                                               else\r
+                                                       pLed->BlinkingLedState = RTW_LED_ON; \r
+                                       }\r
+                                       _set_timer(&(pLed->BlinkTimer), LED_BLINK_NO_LINK_INTERVAL_ALPHA);\r
+                               }\r
+                               pLed->bLedBlinkInProgress = _FALSE;     \r
+                       }\r
+                       else\r
+                       {\r
+                               if( adapter_to_pwrctl(Adapter)->rf_pwrstate != rf_on && adapter_to_pwrctl(Adapter)->rfoff_reason > RF_CHANGE_BY_PS)\r
+                               {\r
+                                       RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("RFOff Status \n"));\r
+                                       SwLedOff(Adapter, pLed);\r
+                               }\r
+                               else\r
+                               {\r
+                                       if(IS_HARDWARE_TYPE_8812AU(Adapter))\r
+                                       {\r
+                                               pLed->BlinkingLedState = RTW_LED_ON; \r
+                                       }\r
+                                       else\r
+                                       {\r
+                                               if( pLed->bLedOn )\r
+                                                       pLed->BlinkingLedState = RTW_LED_OFF; \r
+                                               else\r
+                                                       pLed->BlinkingLedState = RTW_LED_ON; \r
+                                       }\r
+                                       _set_timer(&(pLed->BlinkTimer), LED_BLINK_FASTER_INTERVAL_ALPHA);\r
+                               }\r
+                       }\r
+                       break;\r
+\r
+               case LED_BLINK_LINK_IN_PROCESS:\r
+                       if( pLed->bLedOn )\r
+                       {\r
+                               pLed->BlinkingLedState = RTW_LED_OFF; \r
+                               _set_timer(&(pLed->BlinkTimer), LED_BLINK_LINK_INTERVAL_ON_BELKIN);\r
+                       }\r
+                       else\r
+                       {\r
+                               pLed->BlinkingLedState = RTW_LED_ON; \r
+                               _set_timer(&(pLed->BlinkTimer), LED_BLINK_LINK_INTERVAL_OFF_BELKIN);\r
+                       }\r
+                       break;\r
+\r
+               case LED_BLINK_AUTH_ERROR:\r
+                       pLed->BlinkTimes--;\r
+                       if( pLed->BlinkTimes == 0 )\r
+                       {\r
+                               bStopBlinking = _TRUE;\r
+                       }\r
+                       if(bStopBlinking == _FALSE)\r
+                       {\r
+                               if( pLed->bLedOn )\r
+                               {\r
+                                       pLed->BlinkingLedState = RTW_LED_OFF; \r
+                                       _set_timer(&(pLed->BlinkTimer), LED_BLINK_ERROR_INTERVAL_BELKIN);\r
+                               }\r
+                               else\r
+                               {\r
+                                       pLed->BlinkingLedState = RTW_LED_ON; \r
+                                       _set_timer(&(pLed->BlinkTimer), LED_BLINK_ERROR_INTERVAL_BELKIN);\r
+                               }\r
+                       }\r
+                       else\r
+                       {\r
+                               pLed->CurrLedState = RTW_LED_OFF;\r
+                               pLed->BlinkingLedState = RTW_LED_OFF;\r
+                               _set_timer(&(pLed->BlinkTimer), LED_BLINK_ERROR_INTERVAL_BELKIN);\r
+                       }\r
+                       break;\r
+\r
+               default:\r
+                       break;\r
+       }\r
+\r
+       RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("SwLedBlink9 CurrLedState %d\n", pLed->CurrLedState));                                      \r
+}\r
+\r
+//page added for Netgear A6200V2. 20120827\r
+void\r
+SwLedBlink10(\r
+       PLED_USB                        pLed\r
+       )\r
+{\r
+       PADAPTER Adapter = pLed->padapter;\r
+       struct mlme_priv        *pmlmepriv = &(Adapter->mlmepriv);\r
+       BOOLEAN bStopBlinking = _FALSE;\r
+\r
+       // Change LED according to BlinkingLedState specified.\r
+       if( pLed->BlinkingLedState == RTW_LED_ON )\r
+       {\r
+               SwLedOn(Adapter, pLed);\r
+               RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (%d): turn on\n", pLed->BlinkTimes));\r
+       }\r
+       else\r
+       {\r
+               SwLedOff(Adapter, pLed);\r
+               RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (%d): turn off\n", pLed->BlinkTimes));\r
+       }\r
+\r
+\r
+       switch(pLed->CurrLedState)\r
+       {\r
+               case RTW_LED_ON:\r
+                       SwLedOn(Adapter, pLed);\r
+                       break;\r
+\r
+               case RTW_LED_OFF:\r
+                       SwLedOff(Adapter, pLed);\r
+                       break;\r
+\r
+               case LED_BLINK_SLOWLY:                  \r
+                       if( pLed->bLedOn )\r
+                               pLed->BlinkingLedState = RTW_LED_OFF;\r
+                       else\r
+                               pLed->BlinkingLedState = RTW_LED_ON;\r
+                       _set_timer(&(pLed->BlinkTimer), LED_BLINK_NO_LINK_INTERVAL_ALPHA);\r
+                       break;\r
+\r
+               case LED_BLINK_StartToBlink:\r
+                       if( pLed->bLedOn )\r
+                       {\r
+                               pLed->BlinkingLedState = RTW_LED_OFF;\r
+                               _set_timer(&(pLed->BlinkTimer), LED_BLINK_SLOWLY_INTERVAL);\r
+                       }\r
+                       else\r
+                       {\r
+                               pLed->BlinkingLedState = RTW_LED_ON;\r
+                               _set_timer(&(pLed->BlinkTimer), LED_BLINK_NORMAL_INTERVAL);\r
+                       }\r
+                       break;\r
+\r
+               case LED_BLINK_SCAN:\r
+                       pLed->BlinkTimes--;\r
+                       if( pLed->BlinkTimes == 0 )\r
+                       {\r
+                               bStopBlinking = _TRUE;\r
+                       }\r
+\r
+                       if(bStopBlinking)\r
+                       {\r
+                               if( adapter_to_pwrctl(Adapter)->rf_pwrstate != rf_on )\r
+                               {\r
+                                       SwLedOff(Adapter, pLed);\r
+                               }\r
+                               else if(check_fwstate(pmlmepriv, _FW_LINKED)== _TRUE)\r
+                               {\r
+                                       pLed->bLedNoLinkBlinkInProgress = _FALSE;\r
+                                       pLed->CurrLedState = RTW_LED_OFF;\r
+                                       pLed->BlinkingLedState = RTW_LED_OFF;\r
+\r
+                                       _set_timer(&(pLed->BlinkTimer), LED_BLINK_NO_LINK_INTERVAL_ALPHA);\r
+                                       RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("CurrLedState %d\n", pLed->CurrLedState));\r
+                               }\r
+                               pLed->BlinkTimes = 0;\r
+                               pLed->bLedBlinkInProgress = _FALSE;\r
+                       }\r
+                       else\r
+                       {\r
+                               if( adapter_to_pwrctl(Adapter)->rf_pwrstate != rf_on && adapter_to_pwrctl(Adapter)->rfoff_reason > RF_CHANGE_BY_PS)\r
+                               {\r
+                                       SwLedOff(Adapter, pLed);\r
+                               }\r
+                               else\r
+                               {\r
+                                       if( pLed->bLedOn )\r
+                                       {\r
+                                               pLed->BlinkingLedState = RTW_LED_OFF;\r
+                                               _set_timer(&(pLed->BlinkTimer), LED_BLINK_LINK_INTERVAL_NETGEAR);\r
+                                       }\r
+                                       else\r
+                                       {\r
+                                               pLed->BlinkingLedState = RTW_LED_ON;\r
+                                               _set_timer(&(pLed->BlinkTimer), LED_BLINK_LINK_SLOWLY_INTERVAL_NETGEAR+LED_BLINK_LINK_INTERVAL_NETGEAR);\r
+                                       }\r
+                               }\r
+                       }\r
+                       break;\r
+\r
+               case LED_BLINK_WPS:\r
+                       if( pLed->bLedOn )\r
+                       {\r
+                               pLed->BlinkingLedState = RTW_LED_OFF;\r
+                               _set_timer(&(pLed->BlinkTimer), LED_BLINK_LINK_INTERVAL_NETGEAR);\r
+                       }\r
+                       else\r
+                       {\r
+                               pLed->BlinkingLedState = RTW_LED_ON;\r
+                               _set_timer(&(pLed->BlinkTimer), LED_BLINK_NORMAL_INTERVAL+LED_BLINK_LINK_INTERVAL_NETGEAR);\r
+                       }\r
+                       break;\r
+\r
+               case LED_BLINK_WPS_STOP:        //WPS authentication fail\r
+                       if( pLed->bLedOn )\r
+                               pLed->BlinkingLedState = RTW_LED_OFF;\r
+                       else    \r
+                               pLed->BlinkingLedState = RTW_LED_ON;\r
+\r
+                       _set_timer(&(pLed->BlinkTimer), LED_BLINK_NORMAL_INTERVAL);\r
+                       break;\r
+\r
+               case LED_BLINK_WPS_STOP_OVERLAP:        //WPS session overlap\r
+                       pLed->BlinkTimes--;\r
+                       pLed->BlinkCounter --;\r
+                       if(pLed->BlinkCounter == 0)\r
+                       {\r
+                               pLed->BlinkingLedState = RTW_LED_OFF;\r
+                               pLed->CurrLedState = RTW_LED_OFF;\r
+                               _set_timer(&(pLed->BlinkTimer), LED_BLINK_NORMAL_INTERVAL);\r
+                       }\r
+                       else\r
+                       {\r
+                               if(pLed->BlinkTimes == 0)\r
+                               {\r
+                                       if(pLed->bLedOn)\r
+                                       {\r
+                                               pLed->BlinkTimes = 1;\r
+                                       }\r
+                                       else\r
+                                       {\r
+                                               bStopBlinking = _TRUE;\r
+                                       }\r
+                               }\r
+\r
+                               if(bStopBlinking)\r
+                               {\r
+                                       pLed->BlinkTimes = 10;\r
+                                       pLed->BlinkingLedState = RTW_LED_ON;\r
+                                       _set_timer(&(pLed->BlinkTimer), LED_BLINK_LINK_INTERVAL_ALPHA);\r
+                               }\r
+                               else\r
+                               {\r
+                                       if( pLed->bLedOn )\r
+                                               pLed->BlinkingLedState = RTW_LED_OFF;\r
+                                       else    \r
+                                               pLed->BlinkingLedState = RTW_LED_ON;\r
+\r
+                                       _set_timer(&(pLed->BlinkTimer), LED_BLINK_NORMAL_INTERVAL);\r
+                               }\r
+                       }\r
+                       break;\r
+\r
+               case LED_BLINK_ALWAYS_ON:\r
+                       pLed->BlinkTimes--;\r
+                       if( pLed->BlinkTimes == 0 )\r
+                       {\r
+                               bStopBlinking = _TRUE;\r
+                       }\r
+                       if(bStopBlinking)\r
+                       {\r
+                               if( adapter_to_pwrctl(Adapter)->rf_pwrstate != rf_on && adapter_to_pwrctl(Adapter)->rfoff_reason > RF_CHANGE_BY_PS)\r
+                               {\r
+                                       SwLedOff(Adapter, pLed);\r
+                               }\r
+                               else\r
+                               {\r
+                                       if(IS_HARDWARE_TYPE_8812AU(Adapter))\r
+                                       {\r
+                                               pLed->BlinkingLedState = RTW_LED_ON;\r
+                                               pLed->CurrLedState = LED_BLINK_ALWAYS_ON;\r
+                                       }\r
+                                       else\r
+                                       {\r
+                                               pLed->bLedNoLinkBlinkInProgress = _TRUE;\r
+                                               pLed->CurrLedState = LED_BLINK_SLOWLY;\r
+                                               if( pLed->bLedOn )\r
+                                                       pLed->BlinkingLedState = RTW_LED_OFF;\r
+                                               else\r
+                                                       pLed->BlinkingLedState = RTW_LED_ON;\r
+                                       }\r
+                                       _set_timer(&(pLed->BlinkTimer), LED_BLINK_NO_LINK_INTERVAL_ALPHA);\r
+                               }\r
+                               pLed->bLedBlinkInProgress = _FALSE;\r
+                       }\r
+                       else\r
+                       {\r
+                               if( adapter_to_pwrctl(Adapter)->rf_pwrstate != rf_on && adapter_to_pwrctl(Adapter)->rfoff_reason > RF_CHANGE_BY_PS)\r
+                               {\r
+                                       RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("RFOff Status \n"));\r
+                                       SwLedOff(Adapter, pLed);\r
+                               }\r
+                               else\r
+                               {\r
+                                       if(IS_HARDWARE_TYPE_8812AU(Adapter))\r
+                                       {\r
+                                               pLed->BlinkingLedState = RTW_LED_ON;\r
+                                       }\r
+                                       else\r
+                                       {\r
+                                               if( pLed->bLedOn )\r
+                                                       pLed->BlinkingLedState = RTW_LED_OFF;\r
+                                               else\r
+                                                       pLed->BlinkingLedState = RTW_LED_ON;\r
+                                       }\r
+                                       _set_timer(&(pLed->BlinkTimer), LED_BLINK_FASTER_INTERVAL_ALPHA);\r
+                               }\r
+                       }\r
+                       break;\r
+\r
+               case LED_BLINK_LINK_IN_PROCESS:\r
+                       if( pLed->bLedOn )\r
+                       {\r
+                               pLed->BlinkingLedState = RTW_LED_OFF;\r
+                               _set_timer(&(pLed->BlinkTimer), LED_BLINK_LINK_INTERVAL_ON_BELKIN);\r
+                       }\r
+                       else\r
+                       {\r
+                               pLed->BlinkingLedState = RTW_LED_ON;\r
+                               _set_timer(&(pLed->BlinkTimer), LED_BLINK_LINK_INTERVAL_OFF_BELKIN);\r
+                       }\r
+                       break;\r
+\r
+               case LED_BLINK_AUTH_ERROR:\r
+                       pLed->BlinkTimes--;\r
+                       if( pLed->BlinkTimes == 0 )\r
+                       {\r
+                               bStopBlinking = _TRUE;\r
+                       }\r
+                       if(bStopBlinking == _FALSE)\r
+                       {\r
+                               if( pLed->bLedOn )\r
+                               {\r
+                                       pLed->BlinkingLedState = RTW_LED_OFF;\r
+                                       _set_timer(&(pLed->BlinkTimer), LED_BLINK_ERROR_INTERVAL_BELKIN);\r
+                               }\r
+                               else\r
+                               {\r
+                                       pLed->BlinkingLedState = RTW_LED_ON; \r
+                                       _set_timer(&(pLed->BlinkTimer), LED_BLINK_ERROR_INTERVAL_BELKIN);\r
+                               }\r
+                       }\r
+                       else\r
+                       {\r
+                               pLed->CurrLedState = RTW_LED_OFF;\r
+                               pLed->BlinkingLedState = RTW_LED_OFF;\r
+                               _set_timer(&(pLed->BlinkTimer), LED_BLINK_ERROR_INTERVAL_BELKIN);\r
+                       }\r
+                       break;\r
+\r
+               default:\r
+                       break;\r
+       }\r
+\r
+       RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("SwLedBlink10 CurrLedState %d\n", pLed->CurrLedState));\r
+\r
+}\r
+\r
+void\r
+SwLedBlink11(\r
+       PLED_USB                        pLed\r
+       )\r
+{\r
+       PADAPTER Adapter = pLed->padapter;\r
+       struct mlme_priv        *pmlmepriv = &(Adapter->mlmepriv);\r
+       BOOLEAN bStopBlinking = _FALSE;\r
+\r
+       // Change LED according to BlinkingLedState specified.\r
+       if( pLed->BlinkingLedState == RTW_LED_ON )\r
+       {\r
+               SwLedOn(Adapter, pLed);\r
+               RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (%d): turn on\n", pLed->BlinkTimes));\r
+       }\r
+       else\r
+       {\r
+               SwLedOff(Adapter, pLed);\r
+               RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (%d): turn off\n", pLed->BlinkTimes));\r
+       }\r
+\r
+       switch(pLed->CurrLedState)\r
+       {\r
+               case LED_BLINK_TXRX:\r
+                       if( adapter_to_pwrctl(Adapter)->rf_pwrstate != rf_on && adapter_to_pwrctl(Adapter)->rfoff_reason > RF_CHANGE_BY_PS)\r
+                       {\r
+                               SwLedOff(Adapter, pLed);\r
+                       }\r
+                       else\r
+                       {\r
+                                if( pLed->bLedOn )\r
+                                       pLed->BlinkingLedState = RTW_LED_OFF;\r
+                               else\r
+                                       pLed->BlinkingLedState = RTW_LED_ON;\r
+                               _set_timer(&(pLed->BlinkTimer), LED_BLINK_SCAN_INTERVAL_ALPHA);\r
+                       }\r
+\r
+                       break;\r
+\r
+               case LED_BLINK_WPS:\r
+                       if(pLed->BlinkTimes == 5)\r
+                       {\r
+                               SwLedOn(Adapter, pLed);\r
+                               _set_timer(&(pLed->BlinkTimer), LED_CM11_LINK_ON_INTERVEL);\r
+                       }\r
+                       else\r
+                       {\r
+                               if( pLed->bLedOn )\r
+                               {\r
+                                       pLed->BlinkingLedState = RTW_LED_OFF;\r
+                                       _set_timer(&(pLed->BlinkTimer), LED_CM11_BLINK_INTERVAL);\r
+                               }\r
+                               else\r
+                               {\r
+                                       pLed->BlinkingLedState = RTW_LED_ON;\r
+                                       _set_timer(&(pLed->BlinkTimer), LED_CM11_BLINK_INTERVAL);\r
+                               }\r
+                       }\r
+                       pLed->BlinkTimes--;\r
+                       if( pLed->BlinkTimes == 0 )\r
+                       {\r
+                               bStopBlinking = _TRUE;\r
+                       }\r
+                       if(bStopBlinking == _TRUE)\r
+                               pLed->BlinkTimes = 5;\r
+                       break;\r
+\r
+               case LED_BLINK_WPS_STOP:        //WPS authentication fail\r
+                       if(check_fwstate(pmlmepriv, _FW_LINKED)== _TRUE)\r
+                       {\r
+                               if( pLed->bLedOn )\r
+                                       pLed->BlinkingLedState = RTW_LED_OFF;\r
+                               else\r
+                                       pLed->BlinkingLedState = RTW_LED_ON;\r
+                               _set_timer(&(pLed->BlinkTimer), LED_BLINK_SCAN_INTERVAL_ALPHA);\r
+                       }\r
+                       else\r
+                       {\r
+                               pLed->CurrLedState = RTW_LED_ON;\r
+                               pLed->BlinkingLedState = RTW_LED_ON;\r
+                               SwLedOn(Adapter, pLed);\r
+                               _set_timer(&(pLed->BlinkTimer), 0);\r
+                       }\r
+                       break;\r
+\r
+               default:\r
+                       break;\r
+       }\r
+\r
+       RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("SwLedBlink5 CurrLedState %d\n", pLed->CurrLedState));\r
+}\r
+\r
+void\r
+SwLedBlink12(\r
+       PLED_USB                        pLed\r
+       )\r
+{\r
+       PADAPTER Adapter = pLed->padapter;\r
+       struct mlme_priv        *pmlmepriv = &(Adapter->mlmepriv);\r
+       BOOLEAN bStopBlinking = _FALSE;\r
+\r
+       // Change LED according to BlinkingLedState specified.\r
+       if( pLed->BlinkingLedState == RTW_LED_ON )\r
+       {\r
+               SwLedOn(Adapter, pLed);\r
+               RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (%ld): turn on\n", pLed->BlinkTimes));\r
+       }\r
+       else\r
+       {\r
+               SwLedOff(Adapter, pLed);\r
+               RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (%ld): turn off\n", pLed->BlinkTimes));\r
+       }\r
+\r
+       switch(pLed->CurrLedState)\r
+       {\r
+               case LED_BLINK_SLOWLY:\r
+                       if( pLed->bLedOn )\r
+                               pLed->BlinkingLedState = RTW_LED_OFF;\r
+                       else\r
+                               pLed->BlinkingLedState = RTW_LED_ON;\r
+                       _set_timer(&(pLed->BlinkTimer), LED_BLINK_NO_LINK_INTERVAL_ALPHA);\r
+                       break;\r
+\r
+               case LED_BLINK_TXRX:\r
+                       pLed->BlinkTimes--;\r
+                       if( pLed->BlinkTimes == 0 )\r
+                       {\r
+                               bStopBlinking = _TRUE;\r
+                       }\r
+\r
+                       if(bStopBlinking)\r
+                       {\r
+                               if( adapter_to_pwrctl(Adapter)->rf_pwrstate != rf_on && adapter_to_pwrctl(Adapter)->rfoff_reason > RF_CHANGE_BY_PS)\r
+                               {\r
+                                       pLed->CurrLedState = RTW_LED_OFF;\r
+                                       pLed->BlinkingLedState = RTW_LED_OFF;\r
+                                       if(pLed->bLedOn)\r
+                                               SwLedOff(Adapter, pLed);\r
+                               }\r
+                               else\r
+                               {\r
+                                       pLed->bLedNoLinkBlinkInProgress = _TRUE;\r
+                                       pLed->CurrLedState = LED_BLINK_SLOWLY;\r
+                                       if( pLed->bLedOn )\r
+                                               pLed->BlinkingLedState = RTW_LED_OFF;\r
+                                       else\r
+                                               pLed->BlinkingLedState = RTW_LED_ON;\r
+                                       _set_timer(&(pLed->BlinkTimer), LED_BLINK_NO_LINK_INTERVAL_ALPHA);\r
+                               }\r
+\r
+                               pLed->bLedBlinkInProgress = _FALSE;\r
+                       }\r
+                       else\r
+                       {\r
+                               if( adapter_to_pwrctl(Adapter)->rf_pwrstate != rf_on && adapter_to_pwrctl(Adapter)->rfoff_reason > RF_CHANGE_BY_PS)\r
+                               {\r
+                                       SwLedOff(Adapter, pLed);\r
+                               }\r
+                               else\r
+                               {\r
+                                        if( pLed->bLedOn )\r
+                                               pLed->BlinkingLedState = RTW_LED_OFF;\r
+                                       else\r
+                                               pLed->BlinkingLedState = RTW_LED_ON;\r
+                                       _set_timer(&(pLed->BlinkTimer), LED_BLINK_FASTER_INTERVAL_ALPHA);\r
+                               }\r
+                       }\r
+                       break;\r
+\r
+               default:\r
+                       break;\r
+       }\r
+\r
+       RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("SwLedBlink8 CurrLedState %d\n", pLed->CurrLedState));\r
+\r
+\r
+}\r
+\r
+VOID\r
+SwLedBlink13(\r
+       IN PLED_USB                     pLed\r
+       )\r
+{\r
+       PADAPTER Adapter = pLed->padapter;\r
+       struct mlme_priv        *pmlmepriv = &(Adapter->mlmepriv);\r
+       BOOLEAN bStopBlinking = _FALSE;\r
+       static u8       LinkBlinkCnt=0;\r
+\r
+       // Change LED according to BlinkingLedState specified.\r
+       if( pLed->BlinkingLedState == RTW_LED_ON ) \r
+       {\r
+               SwLedOn(Adapter, pLed);\r
+               RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (%d): turn on\n", pLed->BlinkTimes));\r
+       }\r
+       else \r
+       {\r
+               if(pLed->CurrLedState != LED_BLINK_WPS_STOP)\r
+                       SwLedOff(Adapter, pLed);\r
+               RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (%d): turn off\n", pLed->BlinkTimes));\r
+       }       \r
+       RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("!!! SwLedBlink13 CurrLedState %d, bLedWPSBlinkInProgress %d, bLedBlinkInProgress %d\n", pLed->CurrLedState,pLed->bLedWPSBlinkInProgress,pLed->bLedBlinkInProgress));\r
+       switch(pLed->CurrLedState)\r
+       {                       \r
+               case LED_BLINK_LINK_IN_PROCESS:\r
+                       if(!pLed->bLedWPSBlinkInProgress)\r
+                               LinkBlinkCnt++;\r
+                       \r
+                       if(LinkBlinkCnt>15)\r
+                       {\r
+                               LinkBlinkCnt=0;\r
+                               pLed->bLedBlinkInProgress = _FALSE;\r
+                               break;\r
+                       }\r
+                       if( pLed->bLedOn )\r
+                       {\r
+                               pLed->BlinkingLedState = RTW_LED_OFF; \r
+                               _set_timer(&(pLed->BlinkTimer), 500);\r
+                       }\r
+                       else\r
+                       {\r
+                               pLed->BlinkingLedState = RTW_LED_ON; \r
+                               _set_timer(&(pLed->BlinkTimer), 500);\r
+                       }\r
+\r
+                       break;\r
+\r
+               case LED_BLINK_WPS:\r
+                       if( pLed->bLedOn )\r
+                       {\r
+                               pLed->BlinkingLedState = RTW_LED_OFF; \r
+                               _set_timer(&(pLed->BlinkTimer), LED_WPS_BLINK_ON_INTERVAL_NETGEAR);\r
+                       }\r
+                       else\r
+                       {\r
+                               pLed->BlinkingLedState = RTW_LED_ON; \r
+                               _set_timer(&(pLed->BlinkTimer), LED_WPS_BLINK_OFF_INTERVAL_NETGEAR);\r
+                       }\r
+                       \r
+                       break;\r
+\r
+               case LED_BLINK_WPS_STOP:        //WPS success\r
+                       SwLedOff(Adapter, pLed);        \r
+                       pLed->bLedWPSBlinkInProgress = _FALSE;  \r
+                       break;\r
+                                       \r
+               default:\r
+                       LinkBlinkCnt=0;\r
+                       break;\r
+       }\r
+\r
+       RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("<==== blink13\n"));\r
+\r
+}\r
+\r
+VOID\r
+SwLedBlink14(\r
+       IN PLED_USB                     pLed\r
+       )\r
+{\r
+       PADAPTER Adapter = pLed->padapter;\r
+       struct mlme_priv        *pmlmepriv = &(Adapter->mlmepriv);\r
+       BOOLEAN bStopBlinking = _FALSE;\r
+       static u8       LinkBlinkCnt=0;\r
+\r
+       // Change LED according to BlinkingLedState specified.\r
+       if( pLed->BlinkingLedState == RTW_LED_ON )\r
+       {\r
+               SwLedOn(Adapter, pLed);\r
+               RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (%d): turn on\n", pLed->BlinkTimes));\r
+       }\r
+       else \r
+       {\r
+               if(pLed->CurrLedState != LED_BLINK_WPS_STOP)\r
+                       SwLedOff(Adapter, pLed);\r
+               RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (%d): turn off\n", pLed->BlinkTimes));\r
+       }       \r
+       RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("!!! SwLedBlink14 CurrLedState %d, bLedWPSBlinkInProgress %d, bLedBlinkInProgress %d\n", pLed->CurrLedState,pLed->bLedWPSBlinkInProgress,pLed->bLedBlinkInProgress));\r
+       switch(pLed->CurrLedState)\r
+       {                       \r
+               case LED_BLINK_TXRX:\r
+                       pLed->BlinkTimes--;\r
+                       if( pLed->BlinkTimes == 0 )\r
+                       {\r
+                               bStopBlinking = _TRUE;\r
+                       }\r
+                       if(bStopBlinking)\r
+                       {\r
+                               if( adapter_to_pwrctl(Adapter)->rf_pwrstate != rf_on && adapter_to_pwrctl(Adapter)->rfoff_reason > RF_CHANGE_BY_PS)\r
+                               {\r
+                                       SwLedOff(Adapter, pLed);\r
+                               }\r
+                               else \r
+                               {\r
+                                       SwLedOn(Adapter, pLed);\r
+                               }\r
+                               pLed->bLedBlinkInProgress = _FALSE;     \r
+                       }\r
+                       else\r
+                       {\r
+                               if( adapter_to_pwrctl(Adapter)->rf_pwrstate != rf_on && adapter_to_pwrctl(Adapter)->rfoff_reason > RF_CHANGE_BY_PS)\r
+                               {\r
+                                       SwLedOff(Adapter, pLed);\r
+                               }\r
+                               else\r
+                               {\r
+                                       if( pLed->bLedOn )\r
+                                       {\r
+                                               pLed->BlinkingLedState = RTW_LED_OFF;\r
+                                               if (IS_HARDWARE_TYPE_8812AU(Adapter))\r
+                                                       _set_timer(&(pLed->BlinkTimer), LED_BLINK_LINK_INTERVAL_ALPHA);\r
+                                               else\r
+                                                       _set_timer(&(pLed->BlinkTimer), LED_BLINK_FASTER_INTERVAL_ALPHA);\r
+                                       }\r
+                                       else\r
+                                       {\r
+                                               pLed->BlinkingLedState = RTW_LED_ON;\r
+                                               if (IS_HARDWARE_TYPE_8812AU(Adapter))\r
+                                                       _set_timer(&(pLed->BlinkTimer), LED_BLINK_NORMAL_INTERVAL);\r
+                                               else\r
+                                                       _set_timer(&(pLed->BlinkTimer), LED_BLINK_FASTER_INTERVAL_ALPHA);\r
+                                       }\r
+                               }\r
+                       }\r
+\r
+                       break;\r
+                                       \r
+               default:\r
+                       LinkBlinkCnt=0;\r
+                       break;\r
+       }\r
+\r
+       RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("<==== blink14\n"));\r
+}\r
+\r
+VOID\r
+SwLedBlink15(\r
+       IN PLED_USB                     pLed\r
+       )\r
+{\r
+       PADAPTER Adapter = pLed->padapter;\r
+       struct mlme_priv        *pmlmepriv = &(Adapter->mlmepriv);\r
+       BOOLEAN bStopBlinking = _FALSE;\r
+       static u8       LinkBlinkCnt=0;\r
+       // Change LED according to BlinkingLedState specified.\r
+       \r
+       if( pLed->BlinkingLedState == RTW_LED_ON ) \r
+       {\r
+               SwLedOn(Adapter, pLed);\r
+               RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (%d): turn on\n", pLed->BlinkTimes));\r
+       }\r
+       else \r
+       {\r
+               if(pLed->CurrLedState != LED_BLINK_WPS_STOP)\r
+                       SwLedOff(Adapter, pLed);\r
+               RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Blinktimes (%d): turn off\n", pLed->BlinkTimes));\r
+       }       \r
+       RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("!!! SwLedBlink15 CurrLedState %d, bLedWPSBlinkInProgress %d, bLedBlinkInProgress %d\n", pLed->CurrLedState,pLed->bLedWPSBlinkInProgress,pLed->bLedBlinkInProgress));\r
+       switch(pLed->CurrLedState)\r
+       {\r
+               case LED_BLINK_WPS:\r
+                       if( pLed->bLedOn )\r
+                       {\r
+                               pLed->BlinkingLedState = RTW_LED_OFF; \r
+                               _set_timer(&(pLed->BlinkTimer), LED_WPS_BLINK_ON_INTERVAL_DLINK);\r
+                       }\r
+                       else\r
+                       {\r
+                               pLed->BlinkingLedState = RTW_LED_ON; \r
+                               _set_timer(&(pLed->BlinkTimer), LED_WPS_BLINK_OFF_INTERVAL_DLINK);\r
+                       }\r
+                       break;\r
+       \r
+               case LED_BLINK_WPS_STOP:        //WPS success\r
+                       RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("blink15, LED_BLINK_WPS_STOP  BlinkingLedState %d\n",pLed->BlinkingLedState));\r
+                       \r
+                       if(pLed->BlinkingLedState == RTW_LED_OFF)\r
+                       {\r
+                               pLed->bLedWPSBlinkInProgress = _FALSE;  \r
+                               return;\r
+                       }\r
+                       \r
+                       pLed->CurrLedState = LED_BLINK_WPS_STOP;\r
+                       pLed->BlinkingLedState = RTW_LED_OFF;   \r
+\r
+                       _set_timer(&(pLed->BlinkTimer), LED_WPS_BLINK_LINKED_ON_INTERVAL_DLINK);                        \r
+                       break;\r
+\r
+               case LED_BLINK_NO_LINK:\r
+                       {\r
+                               static BOOLEAN          bLedOn=_TRUE;\r
+                               RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("blink15, LED_NO_LINK_BLINK  bLedOn %d\n",bLedOn));\r
+                               if(bLedOn)\r
+                               {\r
+                                       bLedOn=_FALSE;\r
+                                       pLed->BlinkingLedState = RTW_LED_OFF;\r
+                               }\r
+                               else\r
+                               {\r
+                                       bLedOn=_TRUE;\r
+                                       pLed->BlinkingLedState = RTW_LED_ON;\r
+                               }\r
+                               pLed->bLedBlinkInProgress = _TRUE;\r
+                               _set_timer(&(pLed->BlinkTimer), LED_BLINK_NO_LINK_INTERVAL);\r
+                       }\r
+                       break;\r
+\r
+               case LED_BLINK_LINK_IDEL:\r
+                       {\r
+                               static BOOLEAN          bLedOn=_TRUE;\r
+                               RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("blink15, LED_BLINK_LINK_IDEL  bLedOn %d\n",bLedOn));\r
+                               if(bLedOn)\r
+                               {\r
+                                       bLedOn=_FALSE;\r
+                                       pLed->BlinkingLedState = RTW_LED_OFF;\r
+                               }\r
+                               else\r
+                               {\r
+                                       bLedOn=_TRUE;\r
+                                       pLed->BlinkingLedState = RTW_LED_ON;\r
+                                       \r
+                               }\r
+                               pLed->bLedBlinkInProgress = _TRUE;\r
+                               _set_timer(&(pLed->BlinkTimer), LED_BLINK_LINK_IDEL_INTERVAL);\r
+                       }       \r
+                       break;\r
+\r
+               case LED_BLINK_SCAN:\r
+                       {\r
+                               static u8       BlinkTime=0;\r
+                               RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("blink15, LED_SCAN_BLINK  bLedOn %d\n",BlinkTime));\r
+                               if(BlinkTime %2==0)\r
+                               {\r
+                                       pLed->BlinkingLedState = RTW_LED_ON;\r
+                               }\r
+                               else\r
+                               {\r
+                                       pLed->BlinkingLedState = RTW_LED_OFF;\r
+                               }\r
+                               BlinkTime ++;\r
+\r
+                               if(BlinkTime<24)\r
+                               {\r
+                                       pLed->bLedBlinkInProgress = _TRUE;\r
+                                       \r
+                                       if(pLed->BlinkingLedState == RTW_LED_ON)\r
+                                               _set_timer(&(pLed->BlinkTimer), LED_BLINK_SCAN_OFF_INTERVAL);\r
+                                       else\r
+                                               _set_timer(&(pLed->BlinkTimer), LED_BLINK_SCAN_ON_INTERVAL);\r
+                               }\r
+                               else\r
+                               {\r
+                                       //if(pLed->OLDLedState ==LED_NO_LINK_BLINK)\r
+                                       if(check_fwstate(pmlmepriv, _FW_LINKED)== _FALSE)\r
+                                       {\r
+                                               pLed->CurrLedState = LED_BLINK_NO_LINK;\r
+                                               pLed->BlinkingLedState = RTW_LED_ON;    \r
+\r
+                                               _set_timer(&(pLed->BlinkTimer), 100);\r
+                                       }\r
+                                       BlinkTime =0;\r
+                               }\r
+                       }\r
+                       break;\r
+\r
+               case LED_BLINK_TXRX:\r
+                       pLed->BlinkTimes--;\r
+                       if( pLed->BlinkTimes == 0 )\r
+                       {\r
+                               bStopBlinking = _TRUE;\r
+                       }\r
+                       if(bStopBlinking)\r
+                       {\r
+                               if( adapter_to_pwrctl(Adapter)->rf_pwrstate != rf_on && adapter_to_pwrctl(Adapter)->rfoff_reason > RF_CHANGE_BY_PS)\r
+                               {\r
+                                       SwLedOff(Adapter, pLed);\r
+                               }\r
+                               else\r
+                               {\r
+                                       SwLedOn(Adapter, pLed);\r
+                               }\r
+                               pLed->bLedBlinkInProgress = _FALSE;\r
+                       }\r
+                       else\r
+                       {\r
+                               if( adapter_to_pwrctl(Adapter)->rf_pwrstate != rf_on && adapter_to_pwrctl(Adapter)->rfoff_reason > RF_CHANGE_BY_PS)\r
+                               {\r
+                                       SwLedOff(Adapter, pLed);\r
+                               }\r
+                               else\r
+                               {\r
+                                       if( pLed->bLedOn )\r
+                                               pLed->BlinkingLedState = RTW_LED_OFF; \r
+                                       else\r
+                                               pLed->BlinkingLedState = RTW_LED_ON; \r
+                                       _set_timer(&(pLed->BlinkTimer), LED_BLINK_FASTER_INTERVAL_ALPHA);\r
+                               }\r
+                       }\r
+                       break;\r
+\r
+               default:\r
+                       LinkBlinkCnt=0;\r
+                       break;\r
+       }\r
+\r
+       RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("<==== blink15\n"));\r
+}\r
+\r
+//\r
+//     Description:\r
+//             Handler function of LED Blinking.\r
+//             We dispatch acture LED blink action according to LedStrategy.\r
+//\r
+void BlinkHandler(PLED_USB pLed)\r
+{\r
+       _adapter                *padapter = pLed->padapter;\r
+       struct led_priv *ledpriv = &(padapter->ledpriv);\r
+\r
+       //DBG_871X("%s (%s:%d)\n",__FUNCTION__, current->comm, current->pid);\r
+\r
+       if (RTW_CANNOT_RUN(padapter) || (!rtw_is_hw_init_completed(padapter))) {\r
+               /*DBG_871X("%s bDriverStopped:%s, bSurpriseRemoved:%s\n"\r
+               , __func__\r
+               , rtw_is_drv_stopped(padapter)?"True":"False"\r
+               , rtw_is_surprise_removed(padapter)?"True":"False" );*/\r
+               return;\r
+       }\r
+\r
+       switch(ledpriv->LedStrategy)\r
+       {\r
+               case SW_LED_MODE0:\r
+                       SwLedBlink(pLed);\r
+                       break;\r
+               \r
+               case SW_LED_MODE1:\r
+                       SwLedBlink1(pLed);\r
+                       break;\r
+               \r
+               case SW_LED_MODE2:\r
+                       SwLedBlink2(pLed);\r
+                       break;\r
+                       \r
+               case SW_LED_MODE3:\r
+                       SwLedBlink3(pLed);\r
+                       break;\r
+\r
+               case SW_LED_MODE4:\r
+                       SwLedBlink4(pLed);\r
+                       break;                  \r
+\r
+               case SW_LED_MODE5:\r
+                       SwLedBlink5(pLed);\r
+                       break;\r
+\r
+               case SW_LED_MODE6:\r
+                       SwLedBlink6(pLed);\r
+                       break;\r
+\r
+               case SW_LED_MODE7:\r
+                       SwLedBlink7(pLed);\r
+                       break;\r
+\r
+               case SW_LED_MODE8:\r
+                       SwLedBlink8(pLed);\r
+                       break;\r
+\r
+               case SW_LED_MODE9:\r
+                       SwLedBlink9(pLed);\r
+                       break;\r
+\r
+               case SW_LED_MODE10:\r
+                       SwLedBlink10(pLed);\r
+                       break;\r
+\r
+               case SW_LED_MODE11:\r
+                       SwLedBlink11(pLed);\r
+                       break;\r
+\r
+               case SW_LED_MODE12:\r
+                       SwLedBlink12(pLed);\r
+                       break;\r
+\r
+               case SW_LED_MODE13:\r
+                       SwLedBlink13(pLed);\r
+                       break;\r
+\r
+               case SW_LED_MODE14:\r
+                       SwLedBlink14(pLed);\r
+                       break;\r
+\r
+               case SW_LED_MODE15:\r
+                       SwLedBlink15(pLed);\r
+                       break;\r
+\r
+               default:\r
+                       RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("BlinkWorkItemCallback 0x%x \n", ledpriv->LedStrategy));\r
+                       //SwLedBlink(pLed);\r
+                       break;\r
+       }\r
+}\r
+\r
+//\r
+//     Description:\r
+//             Callback function of LED BlinkTimer, \r
+//             it just schedules to corresponding BlinkWorkItem/led_blink_hdl\r
+//\r
+void BlinkTimerCallback(void *data)\r
+{\r
+       PLED_USB         pLed = (PLED_USB)data;\r
+       _adapter                *padapter = pLed->padapter;\r
+\r
+       //DBG_871X("%s\n", __FUNCTION__);\r
+\r
+       if (RTW_CANNOT_RUN(padapter) || (!rtw_is_hw_init_completed(padapter))) {\r
+               /*DBG_871X("%s bDriverStopped:%s, bSurpriseRemoved:%s\n"\r
+                       , __func__\r
+                       , rtw_is_drv_stopped(padapter)?"True":"False"\r
+                       , rtw_is_surprise_removed(padapter)?"True":"False" );*/\r
+               return;\r
+       }\r
+\r
+       #ifdef CONFIG_LED_HANDLED_BY_CMD_THREAD\r
+       rtw_led_blink_cmd(padapter, (PVOID)pLed);\r
+       #else\r
+       _set_workitem(&(pLed->BlinkWorkItem));\r
+       #endif\r
+}\r
+\r
+//\r
+//     Description:\r
+//             Callback function of LED BlinkWorkItem.\r
+//             We dispatch acture LED blink action according to LedStrategy.\r
+//\r
+void BlinkWorkItemCallback(_workitem *work)\r
+{\r
+       PLED_USB         pLed = container_of(work, LED_USB, BlinkWorkItem);\r
+       BlinkHandler(pLed);\r
+}\r
+\r
+static void\r
+SwLedControlMode0(\r
+       _adapter                *padapter,\r
+       LED_CTL_MODE            LedAction\r
+)\r
+{\r
+       struct led_priv *ledpriv = &(padapter->ledpriv);\r
+       PLED_USB        pLed = &(ledpriv->SwLed1);\r
+\r
+       // Decide led state\r
+       switch(LedAction)\r
+       {\r
+       case LED_CTL_TX:\r
+       case LED_CTL_RX:\r
+               if( pLed->bLedBlinkInProgress == _FALSE )\r
+               {\r
+                       pLed->bLedBlinkInProgress = _TRUE;\r
+\r
+                       pLed->CurrLedState = LED_BLINK_NORMAL;\r
+                       pLed->BlinkTimes = 2;\r
+\r
+                       if( pLed->bLedOn )\r
+                               pLed->BlinkingLedState = RTW_LED_OFF;\r
+                       else\r
+                               pLed->BlinkingLedState = RTW_LED_ON;\r
+                       _set_timer(&(pLed->BlinkTimer), LED_BLINK_NORMAL_INTERVAL);\r
+               }\r
+               break;\r
+\r
+       case LED_CTL_START_TO_LINK:\r
+               if( pLed->bLedBlinkInProgress == _FALSE )\r
+               {\r
+                       pLed->bLedBlinkInProgress = _TRUE;\r
+\r
+                       pLed->CurrLedState = LED_BLINK_StartToBlink;\r
+                       pLed->BlinkTimes = 24;\r
+\r
+                       if( pLed->bLedOn )\r
+                               pLed->BlinkingLedState = RTW_LED_OFF;\r
+                       else\r
+                               pLed->BlinkingLedState = RTW_LED_ON;\r
+                       _set_timer(&(pLed->BlinkTimer), LED_BLINK_SLOWLY_INTERVAL);\r
+               }\r
+               else\r
+               {\r
+                       pLed->CurrLedState = LED_BLINK_StartToBlink;\r
+               }\r
+               break;\r
+\r
+       case LED_CTL_LINK:\r
+               pLed->CurrLedState = RTW_LED_ON;\r
+               if( pLed->bLedBlinkInProgress == _FALSE )\r
+               {\r
+                       pLed->BlinkingLedState = RTW_LED_ON;\r
+                       _set_timer(&(pLed->BlinkTimer), 0);\r
+               }\r
+               break;\r
+\r
+       case LED_CTL_NO_LINK:\r
+               pLed->CurrLedState = RTW_LED_OFF;\r
+               if( pLed->bLedBlinkInProgress == _FALSE )\r
+               {\r
+                       pLed->BlinkingLedState = RTW_LED_OFF;\r
+                       _set_timer(&(pLed->BlinkTimer), 0);\r
+               }\r
+               break;\r
+\r
+       case LED_CTL_POWER_OFF:\r
+               pLed->CurrLedState = RTW_LED_OFF;\r
+               if(pLed->bLedBlinkInProgress)\r
+               {\r
+                       _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                       pLed->bLedBlinkInProgress = _FALSE;\r
+               }\r
+               SwLedOff(padapter, pLed);\r
+               break;\r
+\r
+       case LED_CTL_START_WPS:\r
+               if( pLed->bLedBlinkInProgress == _FALSE || pLed->CurrLedState == RTW_LED_ON)\r
+               {\r
+                       pLed->bLedBlinkInProgress = _TRUE;\r
+\r
+                       pLed->CurrLedState = LED_BLINK_WPS;\r
+                       pLed->BlinkTimes = 20;\r
+\r
+                       if( pLed->bLedOn )\r
+                       {\r
+                               pLed->BlinkingLedState = RTW_LED_OFF;\r
+                               _set_timer(&(pLed->BlinkTimer), LED_BLINK_LONG_INTERVAL);\r
+                       }\r
+                       else\r
+                       {\r
+                               pLed->BlinkingLedState = RTW_LED_ON;\r
+                               _set_timer(&(pLed->BlinkTimer), LED_BLINK_LONG_INTERVAL);\r
+                       }\r
+               }\r
+               break;\r
+\r
+       case LED_CTL_STOP_WPS:\r
+               if(pLed->bLedBlinkInProgress)\r
+               {\r
+                       pLed->CurrLedState = RTW_LED_OFF;\r
+                       _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                       pLed->bLedBlinkInProgress = _FALSE;\r
+               }\r
+               break;\r
+\r
+\r
+       default:\r
+               break;\r
+       }\r
+\r
+       RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Led %d\n", pLed->CurrLedState));\r
+\r
+}\r
+\r
+ //ALPHA, added by chiyoko, 20090106\r
+static void\r
+SwLedControlMode1(\r
+       _adapter                *padapter,\r
+       LED_CTL_MODE            LedAction\r
+)\r
+{\r
+       struct led_priv         *ledpriv = &(padapter->ledpriv);\r
+       PLED_USB                        pLed = &(ledpriv->SwLed0);\r
+       struct mlme_priv                *pmlmepriv = &(padapter->mlmepriv);\r
+       PHAL_DATA_TYPE          pHalData = GET_HAL_DATA(padapter);\r
+\r
+       u32 uLedBlinkNoLinkInterval = LED_BLINK_NO_LINK_INTERVAL_ALPHA; //add by ylb 20121012 for customer led for alpha\r
+       if(pHalData->CustomerID == RT_CID_819x_ALPHA_Dlink)\r
+               uLedBlinkNoLinkInterval= LED_BLINK_NO_LINK_INTERVAL_ALPHA_500MS;        \r
+       \r
+       if(pHalData->CustomerID == RT_CID_819x_CAMEO)\r
+               pLed = &(ledpriv->SwLed1);\r
+\r
+       switch(LedAction)\r
+       {\r
+               case LED_CTL_POWER_ON:\r
+               case LED_CTL_START_TO_LINK:\r
+               case LED_CTL_NO_LINK:\r
+                       if( pLed->bLedNoLinkBlinkInProgress == _FALSE )\r
+                       {\r
+                               if(pLed->CurrLedState == LED_BLINK_SCAN || IS_LED_WPS_BLINKING(pLed))\r
+                               {\r
+                                       return;\r
+                               }\r
+                               if( pLed->bLedLinkBlinkInProgress == _TRUE )\r
+                               {\r
+                                       _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                                       pLed->bLedLinkBlinkInProgress = _FALSE;\r
+                               }\r
+                               if(pLed->bLedBlinkInProgress ==_TRUE)\r
+                               {\r
+                                       _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                                       pLed->bLedBlinkInProgress = _FALSE;\r
+                               }\r
+\r
+                               pLed->bLedNoLinkBlinkInProgress = _TRUE;\r
+                               pLed->CurrLedState = LED_BLINK_SLOWLY;\r
+                               if( pLed->bLedOn )\r
+                                       pLed->BlinkingLedState = RTW_LED_OFF;\r
+                               else\r
+                                       pLed->BlinkingLedState = RTW_LED_ON;\r
+                               _set_timer(&(pLed->BlinkTimer), uLedBlinkNoLinkInterval);//change by ylb 20121012 for customer led for alpha\r
+                       }\r
+                       break;\r
+\r
+               case LED_CTL_LINK:\r
+                       if( pLed->bLedLinkBlinkInProgress == _FALSE )\r
+                       {\r
+                               if(pLed->CurrLedState == LED_BLINK_SCAN || IS_LED_WPS_BLINKING(pLed))\r
+                               {\r
+                                       return;\r
+                               }\r
+                               if(pLed->bLedNoLinkBlinkInProgress == _TRUE)\r
+                               {\r
+                                       _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                                       pLed->bLedNoLinkBlinkInProgress = _FALSE;\r
+                               }\r
+                               if(pLed->bLedBlinkInProgress ==_TRUE)\r
+                               {\r
+                                       _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                                       pLed->bLedBlinkInProgress = _FALSE;\r
+                               }\r
+                               pLed->bLedLinkBlinkInProgress = _TRUE;\r
+                               pLed->CurrLedState = LED_BLINK_NORMAL;\r
+                               if( pLed->bLedOn )\r
+                                       pLed->BlinkingLedState = RTW_LED_OFF;\r
+                               else\r
+                                       pLed->BlinkingLedState = RTW_LED_ON;\r
+                               _set_timer(&(pLed->BlinkTimer), LED_BLINK_LINK_INTERVAL_ALPHA);\r
+                       }\r
+                       break;\r
+\r
+               case LED_CTL_SITE_SURVEY:\r
+                        if((pmlmepriv->LinkDetectInfo.bBusyTraffic) && (check_fwstate(pmlmepriv, _FW_LINKED)== _TRUE))\r
+                               ;\r
+                        else if(pLed->bLedScanBlinkInProgress ==_FALSE)\r
+                        {\r
+                               if(IS_LED_WPS_BLINKING(pLed))\r
+                                       return;\r
+\r
+                               if(pLed->bLedNoLinkBlinkInProgress == _TRUE)\r
+                               {\r
+                                       _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                                       pLed->bLedNoLinkBlinkInProgress = _FALSE;\r
+                               }\r
+                               if( pLed->bLedLinkBlinkInProgress == _TRUE )\r
+                               {\r
+                                       _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                                        pLed->bLedLinkBlinkInProgress = _FALSE;\r
+                               }\r
+                               if(pLed->bLedBlinkInProgress ==_TRUE)\r
+                               {\r
+                                       _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                                       pLed->bLedBlinkInProgress = _FALSE;\r
+                               }\r
+                               pLed->bLedScanBlinkInProgress = _TRUE;\r
+                               pLed->CurrLedState = LED_BLINK_SCAN;\r
+                               pLed->BlinkTimes = 24;\r
+                               if( pLed->bLedOn )\r
+                                       pLed->BlinkingLedState = RTW_LED_OFF;\r
+                               else\r
+                                       pLed->BlinkingLedState = RTW_LED_ON;\r
+\r
+                               if (adapter_to_pwrctl(padapter)->rf_pwrstate != rf_on && adapter_to_pwrctl(padapter)->rfoff_reason == RF_CHANGE_BY_IPS)\r
+                                       _set_timer(&(pLed->BlinkTimer), LED_INITIAL_INTERVAL);\r
+                               else                                    \r
+                                       _set_timer(&(pLed->BlinkTimer), LED_BLINK_SCAN_INTERVAL_ALPHA);\r
+\r
+                        }\r
+                       break;\r
+\r
+               case LED_CTL_TX:\r
+               case LED_CTL_RX:\r
+                       if(pLed->bLedBlinkInProgress ==_FALSE)\r
+                       {\r
+                               if(pLed->CurrLedState == LED_BLINK_SCAN || IS_LED_WPS_BLINKING(pLed))\r
+                               {\r
+                                       return;\r
+                               }\r
+                               if(pLed->bLedNoLinkBlinkInProgress == _TRUE)\r
+                               {\r
+                                       _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                                       pLed->bLedNoLinkBlinkInProgress = _FALSE;\r
+                               }\r
+                               if( pLed->bLedLinkBlinkInProgress == _TRUE )\r
+                               {\r
+                                       _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                                       pLed->bLedLinkBlinkInProgress = _FALSE;\r
+                               }\r
+                               pLed->bLedBlinkInProgress = _TRUE;\r
+                               pLed->CurrLedState = LED_BLINK_TXRX;\r
+                               pLed->BlinkTimes = 2;\r
+                               if( pLed->bLedOn )\r
+                                       pLed->BlinkingLedState = RTW_LED_OFF;\r
+                               else\r
+                                       pLed->BlinkingLedState = RTW_LED_ON;\r
+                               _set_timer(&(pLed->BlinkTimer), LED_BLINK_FASTER_INTERVAL_ALPHA);\r
+                       }\r
+                       break;\r
+\r
+               case LED_CTL_START_WPS: //wait until xinpin finish\r
+               case LED_CTL_START_WPS_BOTTON:\r
+                        if(pLed->bLedWPSBlinkInProgress ==_FALSE)\r
+                        {\r
+                               if(pLed->bLedNoLinkBlinkInProgress == _TRUE)\r
+                               {\r
+                                       _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                                       pLed->bLedNoLinkBlinkInProgress = _FALSE;\r
+                               }\r
+                               if( pLed->bLedLinkBlinkInProgress == _TRUE )\r
+                               {\r
+                                       _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                                        pLed->bLedLinkBlinkInProgress = _FALSE;\r
+                               }\r
+                               if(pLed->bLedBlinkInProgress ==_TRUE)\r
+                               {\r
+                                       _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                                       pLed->bLedBlinkInProgress = _FALSE;\r
+                               }\r
+                               if(pLed->bLedScanBlinkInProgress ==_TRUE)\r
+                               {\r
+                                       _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                                       pLed->bLedScanBlinkInProgress = _FALSE;\r
+                               }\r
+                               pLed->bLedWPSBlinkInProgress = _TRUE;\r
+                               pLed->CurrLedState = LED_BLINK_WPS;\r
+                               if( pLed->bLedOn )\r
+                                       pLed->BlinkingLedState = RTW_LED_OFF;\r
+                               else\r
+                                       pLed->BlinkingLedState = RTW_LED_ON;\r
+                               _set_timer(&(pLed->BlinkTimer), LED_BLINK_SCAN_INTERVAL_ALPHA);\r
+                        }\r
+                       break;\r
+\r
+\r
+               case LED_CTL_STOP_WPS:\r
+                       if(pLed->bLedNoLinkBlinkInProgress == _TRUE)\r
+                       {\r
+                               _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                               pLed->bLedNoLinkBlinkInProgress = _FALSE;\r
+                       }\r
+                       if( pLed->bLedLinkBlinkInProgress == _TRUE )\r
+                       {\r
+                               _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                                pLed->bLedLinkBlinkInProgress = _FALSE;\r
+                       }\r
+                       if(pLed->bLedBlinkInProgress ==_TRUE)\r
+                       {\r
+                               _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                               pLed->bLedBlinkInProgress = _FALSE;\r
+                       }\r
+                       if(pLed->bLedScanBlinkInProgress ==_TRUE)\r
+                       {\r
+                               _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                               pLed->bLedScanBlinkInProgress = _FALSE;\r
+                       }\r
+                       if(pLed->bLedWPSBlinkInProgress)\r
+                       {\r
+                               _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                       }\r
+                       else\r
+                       {\r
+                               pLed->bLedWPSBlinkInProgress = _TRUE;\r
+                       }\r
+\r
+                       pLed->CurrLedState = LED_BLINK_WPS_STOP;\r
+                       if(pLed->bLedOn)\r
+                       {\r
+                               pLed->BlinkingLedState = RTW_LED_OFF;\r
+                               _set_timer(&(pLed->BlinkTimer), LED_BLINK_WPS_SUCESS_INTERVAL_ALPHA);\r
+                       }\r
+                       else\r
+                       {\r
+                               pLed->BlinkingLedState = RTW_LED_ON;\r
+                               _set_timer(&(pLed->BlinkTimer), 0);\r
+                       }\r
+                       break;\r
+\r
+               case LED_CTL_STOP_WPS_FAIL:\r
+                       if(pLed->bLedWPSBlinkInProgress)\r
+                       {\r
+                               _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                               pLed->bLedWPSBlinkInProgress = _FALSE;\r
+                       }\r
+\r
+                       pLed->bLedNoLinkBlinkInProgress = _TRUE;\r
+                       pLed->CurrLedState = LED_BLINK_SLOWLY;\r
+                       if( pLed->bLedOn )\r
+                               pLed->BlinkingLedState = RTW_LED_OFF;\r
+                       else\r
+                               pLed->BlinkingLedState = RTW_LED_ON;\r
+                       _set_timer(&(pLed->BlinkTimer), uLedBlinkNoLinkInterval);//change by ylb 20121012 for customer led for alpha\r
+                       break;\r
+\r
+               case LED_CTL_POWER_OFF:\r
+                       pLed->CurrLedState = RTW_LED_OFF;\r
+                       pLed->BlinkingLedState = RTW_LED_OFF;\r
+                       if( pLed->bLedNoLinkBlinkInProgress)\r
+                       {\r
+                               _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                               pLed->bLedNoLinkBlinkInProgress = _FALSE;\r
+                       }\r
+                       if( pLed->bLedLinkBlinkInProgress)\r
+                       {\r
+                               _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                               pLed->bLedLinkBlinkInProgress = _FALSE;\r
+                       }\r
+                       if( pLed->bLedBlinkInProgress)\r
+                       {\r
+                               _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                               pLed->bLedBlinkInProgress = _FALSE;\r
+                       }\r
+                       if( pLed->bLedWPSBlinkInProgress )\r
+                       {\r
+                               _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                               pLed->bLedWPSBlinkInProgress = _FALSE;\r
+                       }\r
+                       if( pLed->bLedScanBlinkInProgress)\r
+                       {\r
+                               _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                               pLed->bLedScanBlinkInProgress = _FALSE;\r
+                       }\r
+\r
+                       SwLedOff(padapter, pLed);\r
+                       break;\r
+\r
+               default:\r
+                       break;\r
+\r
+       }\r
+\r
+       RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Led %d\n", pLed->CurrLedState));\r
+}\r
+\r
+ //Arcadyan/Sitecom , added by chiyoko, 20090216\r
+static void\r
+SwLedControlMode2(\r
+       _adapter                                *padapter,\r
+       LED_CTL_MODE            LedAction\r
+)\r
+{\r
+       struct led_priv *ledpriv = &(padapter->ledpriv);\r
+       struct mlme_priv        *pmlmepriv = &padapter->mlmepriv;\r
+       PLED_USB                pLed = &(ledpriv->SwLed0);\r
+\r
+       switch(LedAction)\r
+       {\r
+               case LED_CTL_SITE_SURVEY:\r
+                        if(pmlmepriv->LinkDetectInfo.bBusyTraffic)\r
+                               ;\r
+                        else if(pLed->bLedScanBlinkInProgress ==_FALSE)\r
+                        {\r
+                               if(IS_LED_WPS_BLINKING(pLed))\r
+                                       return;\r
+\r
+                               if(pLed->bLedBlinkInProgress ==_TRUE)\r
+                               {\r
+                                       _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                                       pLed->bLedBlinkInProgress = _FALSE;\r
+                               }\r
+                               pLed->bLedScanBlinkInProgress = _TRUE;\r
+                               pLed->CurrLedState = LED_BLINK_SCAN;\r
+                               pLed->BlinkTimes = 24;\r
+                               if( pLed->bLedOn )\r
+                                       pLed->BlinkingLedState = RTW_LED_OFF;\r
+                               else\r
+                                       pLed->BlinkingLedState = RTW_LED_ON;\r
+                               _set_timer(&(pLed->BlinkTimer), LED_BLINK_SCAN_INTERVAL_ALPHA);\r
+                        }\r
+                       break;\r
+\r
+               case LED_CTL_TX:\r
+               case LED_CTL_RX:\r
+                       if((pLed->bLedBlinkInProgress ==_FALSE) && (check_fwstate(pmlmepriv, _FW_LINKED)== _TRUE))\r
+                       {\r
+                               if(pLed->CurrLedState == LED_BLINK_SCAN || IS_LED_WPS_BLINKING(pLed))\r
+                               {\r
+                                       return;\r
+                               }\r
+\r
+                               pLed->bLedBlinkInProgress = _TRUE;\r
+                               pLed->CurrLedState = LED_BLINK_TXRX;\r
+                               pLed->BlinkTimes = 2;\r
+                               if( pLed->bLedOn )\r
+                                       pLed->BlinkingLedState = RTW_LED_OFF;\r
+                               else\r
+                                       pLed->BlinkingLedState = RTW_LED_ON;\r
+                               _set_timer(&(pLed->BlinkTimer), LED_BLINK_FASTER_INTERVAL_ALPHA);\r
+                       }\r
+                       break;\r
+\r
+               case LED_CTL_LINK:\r
+                       pLed->CurrLedState = RTW_LED_ON;\r
+                       pLed->BlinkingLedState = RTW_LED_ON;\r
+                       if( pLed->bLedBlinkInProgress)\r
+                       {\r
+                               _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                               pLed->bLedBlinkInProgress = _FALSE;\r
+                       }\r
+                       if( pLed->bLedScanBlinkInProgress)\r
+                       {\r
+                               _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                               pLed->bLedScanBlinkInProgress = _FALSE;\r
+                       }\r
+\r
+                       _set_timer(&(pLed->BlinkTimer), 0);\r
+                       break;\r
+\r
+               case LED_CTL_START_WPS: //wait until xinpin finish\r
+               case LED_CTL_START_WPS_BOTTON:\r
+                       if(pLed->bLedWPSBlinkInProgress ==_FALSE)\r
+                       {\r
+                               if(pLed->bLedBlinkInProgress ==_TRUE)\r
+                               {\r
+                                       _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                                       pLed->bLedBlinkInProgress = _FALSE;\r
+                               }\r
+                               if(pLed->bLedScanBlinkInProgress ==_TRUE)\r
+                               {\r
+                                       _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                                       pLed->bLedScanBlinkInProgress = _FALSE;\r
+                               }\r
+                               pLed->bLedWPSBlinkInProgress = _TRUE;\r
+                               pLed->CurrLedState = RTW_LED_ON;\r
+                               pLed->BlinkingLedState = RTW_LED_ON;\r
+                               _set_timer(&(pLed->BlinkTimer), 0);\r
+                        }\r
+                       break;\r
+\r
+               case LED_CTL_STOP_WPS:\r
+                       pLed->bLedWPSBlinkInProgress = _FALSE;\r
+                       if(adapter_to_pwrctl(padapter)->rf_pwrstate != rf_on)\r
+                       {\r
+                               pLed->CurrLedState = RTW_LED_OFF;\r
+                               pLed->BlinkingLedState = RTW_LED_OFF;\r
+                               _set_timer(&(pLed->BlinkTimer), 0);\r
+                       }\r
+                       else\r
+                       {\r
+                               pLed->CurrLedState = RTW_LED_ON;\r
+                               pLed->BlinkingLedState = RTW_LED_ON;\r
+                               _set_timer(&(pLed->BlinkTimer), 0);\r
+                               RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("CurrLedState %d\n", pLed->CurrLedState));\r
+                       }\r
+                       break;\r
+\r
+               case LED_CTL_STOP_WPS_FAIL:\r
+                       pLed->bLedWPSBlinkInProgress = _FALSE;\r
+                       pLed->CurrLedState = RTW_LED_OFF;\r
+                       pLed->BlinkingLedState = RTW_LED_OFF;\r
+                       _set_timer(&(pLed->BlinkTimer), 0);\r
+                       RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("CurrLedState %d\n", pLed->CurrLedState));\r
+                       break;\r
+\r
+               case LED_CTL_START_TO_LINK:\r
+               case LED_CTL_NO_LINK:\r
+                       if(!IS_LED_BLINKING(pLed))\r
+                       {\r
+                               pLed->CurrLedState = RTW_LED_OFF;\r
+                               pLed->BlinkingLedState = RTW_LED_OFF;\r
+                               _set_timer(&(pLed->BlinkTimer), 0);\r
+                       }\r
+                       break;\r
+\r
+               case LED_CTL_POWER_OFF:\r
+                       pLed->CurrLedState = RTW_LED_OFF;\r
+                       pLed->BlinkingLedState = RTW_LED_OFF;\r
+                       if( pLed->bLedBlinkInProgress)\r
+                       {\r
+                               _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                               pLed->bLedBlinkInProgress = _FALSE;\r
+                       }\r
+                       if( pLed->bLedScanBlinkInProgress)\r
+                       {\r
+                               _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                               pLed->bLedScanBlinkInProgress = _FALSE;\r
+                       }\r
+                       if( pLed->bLedWPSBlinkInProgress )\r
+                       {\r
+                               _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                               pLed->bLedWPSBlinkInProgress = _FALSE;\r
+                       }\r
+\r
+                       SwLedOff(padapter, pLed);\r
+                       break;\r
+\r
+               default:\r
+                       break;\r
+\r
+       }\r
+\r
+       RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("CurrLedState %d\n", pLed->CurrLedState));\r
+}\r
+\r
+  //COREGA, added by chiyoko, 20090316\r
+ static void\r
+ SwLedControlMode3(\r
+       _adapter                                *padapter,\r
+       LED_CTL_MODE            LedAction\r
+)\r
+{\r
+       struct led_priv *ledpriv = &(padapter->ledpriv);\r
+       struct mlme_priv        *pmlmepriv = &padapter->mlmepriv;\r
+       PLED_USB                pLed = &(ledpriv->SwLed0);\r
+\r
+       switch(LedAction)\r
+       {\r
+               case LED_CTL_SITE_SURVEY:\r
+                       if(pmlmepriv->LinkDetectInfo.bBusyTraffic)\r
+                               ;\r
+                       else if(pLed->bLedScanBlinkInProgress ==_FALSE)\r
+                       {\r
+                               if(IS_LED_WPS_BLINKING(pLed))\r
+                                       return;\r
+\r
+                               if(pLed->bLedBlinkInProgress ==_TRUE)\r
+                               {\r
+                                       _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                                       pLed->bLedBlinkInProgress = _FALSE;\r
+                               }\r
+                               pLed->bLedScanBlinkInProgress = _TRUE;\r
+                               pLed->CurrLedState = LED_BLINK_SCAN;\r
+                               pLed->BlinkTimes = 24;\r
+                               if( pLed->bLedOn )\r
+                                       pLed->BlinkingLedState = RTW_LED_OFF;\r
+                               else\r
+                                       pLed->BlinkingLedState = RTW_LED_ON;\r
+                               _set_timer(&(pLed->BlinkTimer), LED_BLINK_SCAN_INTERVAL_ALPHA);\r
+                       }\r
+                       break;\r
+\r
+               case LED_CTL_TX:\r
+               case LED_CTL_RX:\r
+                       if((pLed->bLedBlinkInProgress ==_FALSE) && (check_fwstate(pmlmepriv, _FW_LINKED)== _TRUE))\r
+                       {\r
+                               if(pLed->CurrLedState == LED_BLINK_SCAN || IS_LED_WPS_BLINKING(pLed))\r
+                               {\r
+                                       return;\r
+                               }\r
+\r
+                               pLed->bLedBlinkInProgress = _TRUE;\r
+                               pLed->CurrLedState = LED_BLINK_TXRX;\r
+                               pLed->BlinkTimes = 2;\r
+                               if( pLed->bLedOn )\r
+                                       pLed->BlinkingLedState = RTW_LED_OFF;\r
+                               else\r
+                                       pLed->BlinkingLedState = RTW_LED_ON;\r
+                               _set_timer(&(pLed->BlinkTimer), LED_BLINK_FASTER_INTERVAL_ALPHA);\r
+                       }\r
+                       break;\r
+\r
+               case LED_CTL_LINK:\r
+                       if(IS_LED_WPS_BLINKING(pLed))\r
+                               return;\r
+\r
+                       pLed->CurrLedState = RTW_LED_ON;\r
+                       pLed->BlinkingLedState = RTW_LED_ON;\r
+                       if( pLed->bLedBlinkInProgress)\r
+                       {\r
+                               _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                               pLed->bLedBlinkInProgress = _FALSE;\r
+                       }\r
+                       if( pLed->bLedScanBlinkInProgress)\r
+                       {\r
+                               _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                               pLed->bLedScanBlinkInProgress = _FALSE;\r
+                       }\r
+\r
+                       _set_timer(&(pLed->BlinkTimer), 0);\r
+                       break;\r
+\r
+               case LED_CTL_START_WPS: //wait until xinpin finish\r
+               case LED_CTL_START_WPS_BOTTON:\r
+                       if(pLed->bLedWPSBlinkInProgress ==_FALSE)\r
+                       {\r
+                               if(pLed->bLedBlinkInProgress ==_TRUE)\r
+                               {\r
+                                       _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                                       pLed->bLedBlinkInProgress = _FALSE;\r
+                               }\r
+                               if(pLed->bLedScanBlinkInProgress ==_TRUE)\r
+                               {\r
+                                       _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                                       pLed->bLedScanBlinkInProgress = _FALSE;\r
+                               }\r
+                               pLed->bLedWPSBlinkInProgress = _TRUE;\r
+                               pLed->CurrLedState = LED_BLINK_WPS;\r
+                               if( pLed->bLedOn )\r
+                                       pLed->BlinkingLedState = RTW_LED_OFF;\r
+                               else\r
+                                       pLed->BlinkingLedState = RTW_LED_ON;\r
+                               _set_timer(&(pLed->BlinkTimer), LED_BLINK_SCAN_INTERVAL_ALPHA);\r
+                       }\r
+                       break;\r
+\r
+               case LED_CTL_STOP_WPS:\r
+                       if(pLed->bLedWPSBlinkInProgress)\r
+                       {\r
+                               _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                               pLed->bLedWPSBlinkInProgress = _FALSE;\r
+                       }\r
+                       else\r
+                       {\r
+                               pLed->bLedWPSBlinkInProgress = _TRUE;\r
+                       }\r
+\r
+                       pLed->CurrLedState = LED_BLINK_WPS_STOP;\r
+                       if(pLed->bLedOn)\r
+                       {\r
+                               pLed->BlinkingLedState = RTW_LED_OFF;\r
+                               _set_timer(&(pLed->BlinkTimer), LED_BLINK_WPS_SUCESS_INTERVAL_ALPHA);\r
+                       }\r
+                       else\r
+                       {\r
+                               pLed->BlinkingLedState = RTW_LED_ON;\r
+                               _set_timer(&(pLed->BlinkTimer), 0);\r
+                       }\r
+\r
+                       break;\r
+\r
+               case LED_CTL_STOP_WPS_FAIL:\r
+                       if(pLed->bLedWPSBlinkInProgress)\r
+                       {\r
+                               _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                               pLed->bLedWPSBlinkInProgress = _FALSE;\r
+                       }\r
+\r
+                       pLed->CurrLedState = RTW_LED_OFF;\r
+                       pLed->BlinkingLedState = RTW_LED_OFF;\r
+                       _set_timer(&(pLed->BlinkTimer), 0);\r
+                       break;\r
+\r
+               case LED_CTL_START_TO_LINK:\r
+               case LED_CTL_NO_LINK:\r
+                       if(!IS_LED_BLINKING(pLed))\r
+                       {\r
+                               pLed->CurrLedState = RTW_LED_OFF;\r
+                               pLed->BlinkingLedState = RTW_LED_OFF;\r
+                               _set_timer(&(pLed->BlinkTimer), 0);\r
+                       }\r
+                       break;\r
+\r
+               case LED_CTL_POWER_OFF:\r
+                       pLed->CurrLedState = RTW_LED_OFF;\r
+                       pLed->BlinkingLedState = RTW_LED_OFF;\r
+                       if( pLed->bLedBlinkInProgress)\r
+                       {\r
+                               _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                               pLed->bLedBlinkInProgress = _FALSE;\r
+                       }\r
+                       if( pLed->bLedScanBlinkInProgress)\r
+                       {\r
+                               _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                               pLed->bLedScanBlinkInProgress = _FALSE;\r
+                       }\r
+                       if( pLed->bLedWPSBlinkInProgress )\r
+                       {\r
+                               _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                               pLed->bLedWPSBlinkInProgress = _FALSE;\r
+                       }\r
+\r
+                       SwLedOff(padapter, pLed);\r
+                       break;\r
+\r
+               default:\r
+                       break;\r
+\r
+       }\r
+\r
+       RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("CurrLedState %d\n", pLed->CurrLedState));\r
+}\r
+\r
+\r
+ //Edimax-Belkin, added by chiyoko, 20090413\r
+static void\r
+SwLedControlMode4(\r
+       _adapter                                *padapter,\r
+       LED_CTL_MODE            LedAction\r
+)\r
+{\r
+       struct led_priv *ledpriv = &(padapter->ledpriv);\r
+       struct mlme_priv        *pmlmepriv = &padapter->mlmepriv;\r
+       PLED_USB                pLed = &(ledpriv->SwLed0);\r
+       PLED_USB                pLed1 = &(ledpriv->SwLed1);\r
+\r
+       switch(LedAction)\r
+       {\r
+               case LED_CTL_START_TO_LINK:\r
+                       if(pLed1->bLedWPSBlinkInProgress)\r
+                       {\r
+                               pLed1->bLedWPSBlinkInProgress = _FALSE;\r
+                               _cancel_timer_ex(&(pLed1->BlinkTimer));\r
+\r
+                               pLed1->BlinkingLedState = RTW_LED_OFF;\r
+                               pLed1->CurrLedState = RTW_LED_OFF;\r
+\r
+                               if(pLed1->bLedOn)\r
+                                       _set_timer(&(pLed->BlinkTimer), 0);\r
+                       }\r
+\r
+                       if( pLed->bLedStartToLinkBlinkInProgress == _FALSE )\r
+                       {\r
+                               if(pLed->CurrLedState == LED_BLINK_SCAN || IS_LED_WPS_BLINKING(pLed))\r
+                               {\r
+                                       return;\r
+                               }\r
+                               if(pLed->bLedBlinkInProgress ==_TRUE)\r
+                               {\r
+                                       _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                                       pLed->bLedBlinkInProgress = _FALSE;\r
+                               }\r
+                               if(pLed->bLedNoLinkBlinkInProgress ==_TRUE)\r
+                               {\r
+                                       _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                                       pLed->bLedNoLinkBlinkInProgress = _FALSE;\r
+                               }\r
+\r
+                               pLed->bLedStartToLinkBlinkInProgress = _TRUE;\r
+                               pLed->CurrLedState = LED_BLINK_StartToBlink;\r
+                               if( pLed->bLedOn )\r
+                               {\r
+                                       pLed->BlinkingLedState = RTW_LED_OFF;\r
+                                       _set_timer(&(pLed->BlinkTimer), LED_BLINK_SLOWLY_INTERVAL);\r
+                               }\r
+                               else\r
+                               {\r
+                                       pLed->BlinkingLedState = RTW_LED_ON;\r
+                                       _set_timer(&(pLed->BlinkTimer), LED_BLINK_NORMAL_INTERVAL);\r
+                               }\r
+                       }\r
+                       break;\r
+\r
+               case LED_CTL_LINK:\r
+               case LED_CTL_NO_LINK:\r
+                       //LED1 settings\r
+                       if(LedAction == LED_CTL_LINK)\r
+                       {\r
+                               if(pLed1->bLedWPSBlinkInProgress)\r
+                               {\r
+                                       pLed1->bLedWPSBlinkInProgress = _FALSE;\r
+                                       _cancel_timer_ex(&(pLed1->BlinkTimer));\r
+\r
+                                       pLed1->BlinkingLedState = RTW_LED_OFF;\r
+                                       pLed1->CurrLedState = RTW_LED_OFF;\r
+\r
+                                       if(pLed1->bLedOn)\r
+                                               _set_timer(&(pLed->BlinkTimer), 0);\r
+                               }\r
+                       }\r
+\r
+                       if( pLed->bLedNoLinkBlinkInProgress == _FALSE )\r
+                       {\r
+                               if(pLed->CurrLedState == LED_BLINK_SCAN || IS_LED_WPS_BLINKING(pLed))\r
+                               {\r
+                                       return;\r
+                               }\r
+                               if(pLed->bLedBlinkInProgress ==_TRUE)\r
+                               {\r
+                                       _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                                       pLed->bLedBlinkInProgress = _FALSE;\r
+                               }\r
+\r
+                               pLed->bLedNoLinkBlinkInProgress = _TRUE;\r
+                               pLed->CurrLedState = LED_BLINK_SLOWLY;\r
+                               if( pLed->bLedOn )\r
+                                       pLed->BlinkingLedState = RTW_LED_OFF;\r
+                               else\r
+                                       pLed->BlinkingLedState = RTW_LED_ON;\r
+                               \r
+                               _set_timer(&(pLed->BlinkTimer), LED_BLINK_NO_LINK_INTERVAL_ALPHA);\r
+                       }\r
+                       break;\r
+\r
+               case LED_CTL_SITE_SURVEY:\r
+                       if((pmlmepriv->LinkDetectInfo.bBusyTraffic) && (check_fwstate(pmlmepriv, _FW_LINKED)== _TRUE))\r
+                               ;\r
+                       else if(pLed->bLedScanBlinkInProgress ==_FALSE)\r
+                       {\r
+                               if(IS_LED_WPS_BLINKING(pLed))\r
+                                       return;\r
+\r
+                               if(pLed->bLedNoLinkBlinkInProgress == _TRUE)\r
+                               {\r
+                                       _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                                       pLed->bLedNoLinkBlinkInProgress = _FALSE;\r
+                               }\r
+                               if(pLed->bLedBlinkInProgress ==_TRUE)\r
+                               {\r
+                                       _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                                       pLed->bLedBlinkInProgress = _FALSE;\r
+                               }\r
+                               pLed->bLedScanBlinkInProgress = _TRUE;\r
+                               pLed->CurrLedState = LED_BLINK_SCAN;\r
+                               pLed->BlinkTimes = 24;\r
+                               if( pLed->bLedOn )\r
+                                       pLed->BlinkingLedState = RTW_LED_OFF;\r
+                               else\r
+                                       pLed->BlinkingLedState = RTW_LED_ON;\r
+                               _set_timer(&(pLed->BlinkTimer), LED_BLINK_SCAN_INTERVAL_ALPHA);\r
+                       }\r
+                       break;\r
+\r
+               case LED_CTL_TX:\r
+               case LED_CTL_RX:\r
+                       if(pLed->bLedBlinkInProgress ==_FALSE)\r
+                       {\r
+                               if(pLed->CurrLedState == LED_BLINK_SCAN || IS_LED_WPS_BLINKING(pLed))\r
+                               {\r
+                                       return;\r
+                               }\r
+                               if(pLed->bLedNoLinkBlinkInProgress == _TRUE)\r
+                               {\r
+                                       _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                                       pLed->bLedNoLinkBlinkInProgress = _FALSE;\r
+                               }\r
+                               pLed->bLedBlinkInProgress = _TRUE;\r
+                               pLed->CurrLedState = LED_BLINK_TXRX;\r
+                               pLed->BlinkTimes = 2;\r
+                               if( pLed->bLedOn )\r
+                                       pLed->BlinkingLedState = RTW_LED_OFF;\r
+                               else\r
+                                       pLed->BlinkingLedState = RTW_LED_ON;\r
+                               _set_timer(&(pLed->BlinkTimer), LED_BLINK_FASTER_INTERVAL_ALPHA);\r
+                       }\r
+                       break;\r
+\r
+               case LED_CTL_START_WPS: //wait until xinpin finish\r
+               case LED_CTL_START_WPS_BOTTON:\r
+                       if(pLed1->bLedWPSBlinkInProgress)\r
+                       {\r
+                               pLed1->bLedWPSBlinkInProgress = _FALSE;\r
+                               _cancel_timer_ex(&(pLed1->BlinkTimer));\r
+\r
+                               pLed1->BlinkingLedState = RTW_LED_OFF;\r
+                               pLed1->CurrLedState = RTW_LED_OFF;\r
+\r
+                               if(pLed1->bLedOn)\r
+                                       _set_timer(&(pLed->BlinkTimer), 0);\r
+                       }\r
+\r
+                       if(pLed->bLedWPSBlinkInProgress ==_FALSE)\r
+                       {\r
+                               if(pLed->bLedNoLinkBlinkInProgress == _TRUE)\r
+                               {\r
+                                       _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                                       pLed->bLedNoLinkBlinkInProgress = _FALSE;\r
+                               }\r
+                               if(pLed->bLedBlinkInProgress ==_TRUE)\r
+                               {\r
+                                       _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                                       pLed->bLedBlinkInProgress = _FALSE;\r
+                               }\r
+                               if(pLed->bLedScanBlinkInProgress ==_TRUE)\r
+                               {\r
+                                       _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                                       pLed->bLedScanBlinkInProgress = _FALSE;\r
+                               }\r
+                               pLed->bLedWPSBlinkInProgress = _TRUE;\r
+                               pLed->CurrLedState = LED_BLINK_WPS;\r
+                               if( pLed->bLedOn )\r
+                               {\r
+                                       pLed->BlinkingLedState = RTW_LED_OFF;\r
+                                       _set_timer(&(pLed->BlinkTimer), LED_BLINK_SLOWLY_INTERVAL);\r
+                               }\r
+                               else\r
+                               {\r
+                                       pLed->BlinkingLedState = RTW_LED_ON;\r
+                                       _set_timer(&(pLed->BlinkTimer), LED_BLINK_NORMAL_INTERVAL);\r
+                               }\r
+                       }\r
+                       break;\r
+\r
+               case LED_CTL_STOP_WPS:  //WPS connect success\r
+                       if(pLed->bLedWPSBlinkInProgress)\r
+                       {\r
+                               _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                               pLed->bLedWPSBlinkInProgress = _FALSE;\r
+                       }\r
+\r
+                       pLed->bLedNoLinkBlinkInProgress = _TRUE;\r
+                       pLed->CurrLedState = LED_BLINK_SLOWLY;\r
+                       if( pLed->bLedOn )\r
+                               pLed->BlinkingLedState = RTW_LED_OFF;\r
+                       else\r
+                               pLed->BlinkingLedState = RTW_LED_ON;\r
+                       _set_timer(&(pLed->BlinkTimer), LED_BLINK_NO_LINK_INTERVAL_ALPHA);\r
+\r
+                       break;\r
+\r
+               case LED_CTL_STOP_WPS_FAIL:             //WPS authentication fail\r
+                       if(pLed->bLedWPSBlinkInProgress)\r
+                       {\r
+                               _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                               pLed->bLedWPSBlinkInProgress = _FALSE;\r
+                       }\r
+\r
+                       pLed->bLedNoLinkBlinkInProgress = _TRUE;\r
+                       pLed->CurrLedState = LED_BLINK_SLOWLY;\r
+                       if( pLed->bLedOn )\r
+                               pLed->BlinkingLedState = RTW_LED_OFF;\r
+                       else\r
+                               pLed->BlinkingLedState = RTW_LED_ON;\r
+                       _set_timer(&(pLed->BlinkTimer), LED_BLINK_NO_LINK_INTERVAL_ALPHA);\r
+\r
+                       //LED1 settings\r
+                       if(pLed1->bLedWPSBlinkInProgress)\r
+                               _cancel_timer_ex(&(pLed1->BlinkTimer));\r
+                       else\r
+                               pLed1->bLedWPSBlinkInProgress = _TRUE;\r
+\r
+                       pLed1->CurrLedState = LED_BLINK_WPS_STOP;\r
+                       if( pLed1->bLedOn )\r
+                               pLed1->BlinkingLedState = RTW_LED_OFF;\r
+                       else\r
+                               pLed1->BlinkingLedState = RTW_LED_ON;\r
+                       _set_timer(&(pLed->BlinkTimer), LED_BLINK_NORMAL_INTERVAL);\r
+\r
+                       break;\r
+\r
+               case LED_CTL_STOP_WPS_FAIL_OVERLAP:     //WPS session overlap\r
+                       if(pLed->bLedWPSBlinkInProgress)\r
+                       {\r
+                               _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                               pLed->bLedWPSBlinkInProgress = _FALSE;\r
+                       }\r
+\r
+                       pLed->bLedNoLinkBlinkInProgress = _TRUE;\r
+                       pLed->CurrLedState = LED_BLINK_SLOWLY;\r
+                       if( pLed->bLedOn )\r
+                               pLed->BlinkingLedState = RTW_LED_OFF;\r
+                       else\r
+                               pLed->BlinkingLedState = RTW_LED_ON;\r
+                       _set_timer(&(pLed->BlinkTimer), LED_BLINK_NO_LINK_INTERVAL_ALPHA);\r
+\r
+                       //LED1 settings\r
+                       if(pLed1->bLedWPSBlinkInProgress)\r
+                               _cancel_timer_ex(&(pLed1->BlinkTimer));\r
+                       else\r
+                               pLed1->bLedWPSBlinkInProgress = _TRUE;\r
+\r
+                       pLed1->CurrLedState = LED_BLINK_WPS_STOP_OVERLAP;\r
+                       pLed1->BlinkTimes = 10;\r
+                       if( pLed1->bLedOn )\r
+                               pLed1->BlinkingLedState = RTW_LED_OFF;\r
+                       else\r
+                               pLed1->BlinkingLedState = RTW_LED_ON;\r
+                       _set_timer(&(pLed->BlinkTimer), LED_BLINK_NORMAL_INTERVAL);\r
+\r
+                       break;\r
+\r
+               case LED_CTL_POWER_OFF:\r
+                       pLed->CurrLedState = RTW_LED_OFF;\r
+                       pLed->BlinkingLedState = RTW_LED_OFF;\r
+\r
+                       if( pLed->bLedNoLinkBlinkInProgress)\r
+                       {\r
+                               _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                               pLed->bLedNoLinkBlinkInProgress = _FALSE;\r
+                       }\r
+                       if( pLed->bLedLinkBlinkInProgress)\r
+                       {\r
+                               _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                               pLed->bLedLinkBlinkInProgress = _FALSE;\r
+                       }\r
+                       if( pLed->bLedBlinkInProgress)\r
+                       {\r
+                               _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                               pLed->bLedBlinkInProgress = _FALSE;\r
+                       }\r
+                       if( pLed->bLedWPSBlinkInProgress )\r
+                       {\r
+                               _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                               pLed->bLedWPSBlinkInProgress = _FALSE;\r
+                       }\r
+                       if( pLed->bLedScanBlinkInProgress)\r
+                       {\r
+                               _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                               pLed->bLedScanBlinkInProgress = _FALSE;\r
+                       }\r
+                       if( pLed->bLedStartToLinkBlinkInProgress)\r
+                       {\r
+                               _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                               pLed->bLedStartToLinkBlinkInProgress = _FALSE;\r
+                       }\r
+\r
+                       if( pLed1->bLedWPSBlinkInProgress )\r
+                       {\r
+                               _cancel_timer_ex(&(pLed1->BlinkTimer));\r
+                               pLed1->bLedWPSBlinkInProgress = _FALSE;\r
+                       }\r
+\r
+                       pLed1->BlinkingLedState = LED_UNKNOWN;\r
+                       SwLedOff(padapter, pLed);\r
+                       SwLedOff(padapter, pLed1);\r
+                       break;\r
+\r
+               case LED_CTL_CONNECTION_NO_TRANSFER:\r
+                        if(pLed->bLedBlinkInProgress == _FALSE)\r
+                        {\r
+                               if(pLed->bLedNoLinkBlinkInProgress == _TRUE)\r
+                               {\r
+                                       _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                                       pLed->bLedNoLinkBlinkInProgress = _FALSE;\r
+                               }\r
+                               pLed->bLedBlinkInProgress = _TRUE;\r
+\r
+                               pLed->CurrLedState = LED_BLINK_ALWAYS_ON;\r
+                               pLed->BlinkingLedState = RTW_LED_ON;\r
+                               _set_timer(&(pLed->BlinkTimer), LED_BLINK_NO_LINK_INTERVAL_ALPHA);\r
+                       }\r
+                       break;\r
+\r
+               default:\r
+                       break;\r
+\r
+       }\r
+\r
+       RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Led %d\n", pLed->CurrLedState));\r
+}\r
+\r
+\r
+\r
+ //Sercomm-Belkin, added by chiyoko, 20090415\r
+static void\r
+SwLedControlMode5(\r
+       _adapter                                *padapter,\r
+       LED_CTL_MODE            LedAction\r
+)\r
+{\r
+       struct led_priv *ledpriv = &(padapter->ledpriv);\r
+       struct mlme_priv        *pmlmepriv = &padapter->mlmepriv;\r
+       PHAL_DATA_TYPE  pHalData = GET_HAL_DATA(padapter);\r
+       PLED_USB                pLed = &(ledpriv->SwLed0);\r
+\r
+       if(pHalData->CustomerID == RT_CID_819x_CAMEO)\r
+               pLed = &(ledpriv->SwLed1);\r
+\r
+       switch(LedAction)\r
+       {\r
+               case LED_CTL_POWER_ON:\r
+               case LED_CTL_NO_LINK:\r
+               case LED_CTL_LINK:      //solid blue\r
+                       pLed->CurrLedState = RTW_LED_ON;\r
+                       pLed->BlinkingLedState = RTW_LED_ON;\r
+\r
+                       _set_timer(&(pLed->BlinkTimer), 0);\r
+                       break;\r
+\r
+               case LED_CTL_SITE_SURVEY:\r
+                       if((pmlmepriv->LinkDetectInfo.bBusyTraffic) && (check_fwstate(pmlmepriv, _FW_LINKED)== _TRUE))\r
+                               ;\r
+                       else if(pLed->bLedScanBlinkInProgress ==_FALSE)\r
+                       {\r
+                               if(pLed->bLedBlinkInProgress ==_TRUE)\r
+                               {\r
+                                       _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                                       pLed->bLedBlinkInProgress = _FALSE;\r
+                               }\r
+                               pLed->bLedScanBlinkInProgress = _TRUE;\r
+                               pLed->CurrLedState = LED_BLINK_SCAN;\r
+                               pLed->BlinkTimes = 24;\r
+                               if( pLed->bLedOn )\r
+                                       pLed->BlinkingLedState = RTW_LED_OFF;\r
+                               else\r
+                                       pLed->BlinkingLedState = RTW_LED_ON;\r
+                               _set_timer(&(pLed->BlinkTimer), LED_BLINK_SCAN_INTERVAL_ALPHA);\r
+                       }\r
+                       break;\r
+\r
+               case LED_CTL_TX:\r
+               case LED_CTL_RX:\r
+                       if(pLed->bLedBlinkInProgress ==_FALSE)\r
+                       {\r
+                               if(pLed->CurrLedState == LED_BLINK_SCAN)\r
+                               {\r
+                                       return;\r
+                               }\r
+                               pLed->bLedBlinkInProgress = _TRUE;\r
+                               pLed->CurrLedState = LED_BLINK_TXRX;\r
+                               pLed->BlinkTimes = 2;\r
+                               if( pLed->bLedOn )\r
+                                       pLed->BlinkingLedState = RTW_LED_OFF;\r
+                               else\r
+                                       pLed->BlinkingLedState = RTW_LED_ON;\r
+                               _set_timer(&(pLed->BlinkTimer), LED_BLINK_FASTER_INTERVAL_ALPHA);\r
+                       }\r
+                       break;\r
+\r
+               case LED_CTL_POWER_OFF:\r
+                       pLed->CurrLedState = RTW_LED_OFF;\r
+                       pLed->BlinkingLedState = RTW_LED_OFF;\r
+\r
+                       if( pLed->bLedBlinkInProgress)\r
+                       {\r
+                               _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                               pLed->bLedBlinkInProgress = _FALSE;\r
+                       }\r
+\r
+                       SwLedOff(padapter, pLed);\r
+                       break;\r
+\r
+               default:\r
+                       break;\r
+\r
+       }\r
+\r
+       RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Led %d\n", pLed->CurrLedState));\r
+}\r
+\r
+ //WNC-Corega, added by chiyoko, 20090902\r
+static void\r
+SwLedControlMode6(\r
+       _adapter                                *padapter,\r
+       LED_CTL_MODE            LedAction\r
+)\r
+{\r
+       struct led_priv *ledpriv = &(padapter->ledpriv);\r
+       struct mlme_priv        *pmlmepriv = &padapter->mlmepriv;\r
+       PLED_USB        pLed0 = &(ledpriv->SwLed0);\r
+\r
+       switch(LedAction)\r
+       {\r
+               case LED_CTL_POWER_ON:\r
+               case LED_CTL_LINK:\r
+               case LED_CTL_NO_LINK:\r
+                       _cancel_timer_ex(&(pLed0->BlinkTimer));\r
+                       pLed0->CurrLedState = RTW_LED_ON;\r
+                       pLed0->BlinkingLedState = RTW_LED_ON;\r
+                       _set_timer(&(pLed0->BlinkTimer), 0);\r
+                       break;\r
+\r
+               case LED_CTL_POWER_OFF:\r
+                       SwLedOff(padapter, pLed0);\r
+                       break;\r
+\r
+               default:\r
+                       break;\r
+       }\r
+\r
+       RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("ledcontrol 6 Led %d\n", pLed0->CurrLedState));\r
+}\r
+\r
+//Netgear, added by sinda, 2011/11/11\r
+ void\r
+ SwLedControlMode7(\r
+        PADAPTER                        Adapter,\r
+        LED_CTL_MODE            LedAction\r
+ )\r
+{\r
+       struct led_priv *ledpriv = &(Adapter->ledpriv);\r
+       struct mlme_priv        *pmlmepriv = &Adapter->mlmepriv;\r
+       PLED_USB        pLed = &(ledpriv->SwLed0);\r
+       \r
+       switch(LedAction)\r
+       {               \r
+               case LED_CTL_SITE_SURVEY:\r
+                       if(pmlmepriv->LinkDetectInfo.bBusyTraffic)\r
+                               ;\r
+                       else if(pLed->bLedScanBlinkInProgress == _FALSE)\r
+                       {\r
+                               if(IS_LED_WPS_BLINKING(pLed))\r
+                                       return;\r
+\r
+                               if(pLed->bLedBlinkInProgress == _TRUE)\r
+                               {\r
+                                       _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                                       pLed->bLedBlinkInProgress = _FALSE;\r
+                               }\r
+                               pLed->bLedScanBlinkInProgress = _TRUE;\r
+                               pLed->CurrLedState = LED_BLINK_SCAN;\r
+                               pLed->BlinkTimes = 6;\r
+                               if( pLed->bLedOn )\r
+                                       pLed->BlinkingLedState = RTW_LED_OFF;\r
+                               else\r
+                                       pLed->BlinkingLedState = RTW_LED_ON;\r
+                               _set_timer(&(pLed->BlinkTimer), LED_BLINK_LINK_INTERVAL_NETGEAR);\r
+                       }\r
+                       break;\r
+\r
+               case LED_CTL_LINK:\r
+                       if(IS_LED_WPS_BLINKING(pLed))\r
+                               return;\r
+\r
+                       pLed->CurrLedState = RTW_LED_ON;\r
+                       pLed->BlinkingLedState = RTW_LED_ON;\r
+                       if( pLed->bLedBlinkInProgress)\r
+                       {\r
+                               _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                               pLed->bLedBlinkInProgress = _FALSE;\r
+                       }\r
+                       if( pLed->bLedScanBlinkInProgress)\r
+                       {\r
+                               _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                               pLed->bLedScanBlinkInProgress = _FALSE;\r
+                       }                       \r
+\r
+                       _set_timer(&(pLed->BlinkTimer), 0);\r
+                       break;\r
+\r
+               case LED_CTL_START_WPS: //wait until xinpin finish\r
+               case LED_CTL_START_WPS_BOTTON:\r
+                       if(pLed->bLedWPSBlinkInProgress ==_FALSE)\r
+                       {\r
+                               if(pLed->bLedBlinkInProgress == _TRUE)\r
+                               {\r
+                                       _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                                       pLed->bLedBlinkInProgress = _FALSE;\r
+                               }\r
+                               if(pLed->bLedScanBlinkInProgress == _TRUE)\r
+                               {\r
+                                       _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                                       pLed->bLedScanBlinkInProgress = _FALSE;\r
+                               }\r
+                               pLed->bLedWPSBlinkInProgress = _TRUE;\r
+                               pLed->CurrLedState = LED_BLINK_WPS;\r
+                               if( pLed->bLedOn )\r
+                                       pLed->BlinkingLedState = RTW_LED_OFF;\r
+                               else\r
+                                       pLed->BlinkingLedState = RTW_LED_ON;\r
+                               _set_timer(&(pLed->BlinkTimer), LED_BLINK_LINK_INTERVAL_NETGEAR);\r
+                       }       \r
+                       break;\r
+\r
+               case LED_CTL_STOP_WPS:\r
+                       if(pLed->bLedWPSBlinkInProgress)\r
+                       {\r
+                               _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                               pLed->bLedWPSBlinkInProgress = _FALSE;                          \r
+                       }                                               \r
+                       else\r
+                       {\r
+                               pLed->bLedWPSBlinkInProgress = _TRUE;\r
+                       }\r
+\r
+                       pLed->CurrLedState = LED_BLINK_WPS_STOP;\r
+                       if(pLed->bLedOn)\r
+                       {\r
+                               pLed->BlinkingLedState = RTW_LED_OFF;\r
+                               _set_timer(&(pLed->BlinkTimer), LED_BLINK_LINK_INTERVAL_NETGEAR);\r
+                       }\r
+                       else\r
+                       {\r
+                               pLed->BlinkingLedState = RTW_LED_ON;\r
+                               _set_timer(&(pLed->BlinkTimer), 0);\r
+                       }                                       \r
+\r
+                       break;\r
+\r
+\r
+               case LED_CTL_STOP_WPS_FAIL:                     \r
+               case LED_CTL_STOP_WPS_FAIL_OVERLAP:     //WPS session overlap                   \r
+                       if(pLed->bLedWPSBlinkInProgress)\r
+                       {\r
+                               _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                               pLed->bLedWPSBlinkInProgress = _FALSE;\r
+                       }\r
+\r
+                       pLed->CurrLedState = RTW_LED_OFF;\r
+                       pLed->BlinkingLedState = RTW_LED_OFF;\r
+                       _set_timer(&(pLed->BlinkTimer), 0);\r
+                       break;\r
+\r
+               case LED_CTL_START_TO_LINK:\r
+               case LED_CTL_NO_LINK:\r
+                       if(!IS_LED_BLINKING(pLed))\r
+                       {\r
+                               pLed->CurrLedState = RTW_LED_OFF;\r
+                               pLed->BlinkingLedState = RTW_LED_OFF;           \r
+                               _set_timer(&(pLed->BlinkTimer), 0);\r
+                       }\r
+                       break;\r
+\r
+               case LED_CTL_POWER_OFF:\r
+               case LED_CTL_POWER_ON:\r
+                       pLed->CurrLedState = RTW_LED_OFF;\r
+                       pLed->BlinkingLedState = RTW_LED_OFF;\r
+                       if( pLed->bLedBlinkInProgress)\r
+                       {\r
+                               _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                               pLed->bLedBlinkInProgress = _FALSE;\r
+                       }\r
+                       if( pLed->bLedScanBlinkInProgress)\r
+                       {\r
+                               _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                               pLed->bLedScanBlinkInProgress = _FALSE;\r
+                       }\r
+                       if( pLed->bLedWPSBlinkInProgress )\r
+                       {\r
+                               _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                               pLed->bLedWPSBlinkInProgress = _FALSE;\r
+                       }\r
+\r
+                       _set_timer(&(pLed->BlinkTimer), 0);\r
+                       break;\r
+\r
+               default:\r
+                       break;\r
+\r
+       }\r
+\r
+       RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("LEd control mode 7 CurrLedState %d\n", pLed->CurrLedState));\r
+}\r
+\r
+void\r
+SwLedControlMode8(\r
+       PADAPTER                        Adapter,\r
+       LED_CTL_MODE            LedAction\r
+       )\r
+{\r
+       struct led_priv *ledpriv = &(Adapter->ledpriv);\r
+       struct mlme_priv        *pmlmepriv = &Adapter->mlmepriv;\r
+       PLED_USB        pLed0 = &(ledpriv->SwLed0);\r
+\r
+       switch(LedAction)\r
+       {\r
+               case LED_CTL_LINK:\r
+                       _cancel_timer_ex(&(pLed0->BlinkTimer));                 \r
+                       pLed0->CurrLedState = RTW_LED_ON;\r
+                       pLed0->BlinkingLedState = RTW_LED_ON;\r
+                       _set_timer(&(pLed0->BlinkTimer), 0);\r
+                       break;\r
+\r
+               case LED_CTL_NO_LINK:\r
+                       _cancel_timer_ex(&(pLed0->BlinkTimer));\r
+                       pLed0->CurrLedState = RTW_LED_OFF;\r
+                       pLed0->BlinkingLedState = RTW_LED_OFF;                          \r
+                       _set_timer(&(pLed0->BlinkTimer), 0);    \r
+                       break;\r
+\r
+               case LED_CTL_POWER_OFF:\r
+                       SwLedOff(Adapter, pLed0);\r
+                       break;\r
+\r
+               default:\r
+                       break;\r
+       }\r
+\r
+       RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Led control mode 8 %d\n", pLed0->CurrLedState));\r
+\r
+}\r
+\r
+//page added for Belkin AC950, 20120813\r
+void\r
+SwLedControlMode9(\r
+       IN      PADAPTER                        Adapter,\r
+       IN      LED_CTL_MODE            LedAction\r
+)\r
+{\r
+       struct led_priv *ledpriv = &(Adapter->ledpriv);\r
+       struct mlme_priv        *pmlmepriv = &Adapter->mlmepriv;\r
+       PLED_USB        pLed = &(ledpriv->SwLed0);\r
+       PLED_USB        pLed1 = &(ledpriv->SwLed1);\r
+       PLED_USB        pLed2 = &(ledpriv->SwLed2);\r
+       BOOLEAN  bWPSOverLap = _FALSE;\r
+       //DBG_871X("LedAction=%d \n", LedAction);\r
+       switch(LedAction)\r
+       {               \r
+               case LED_CTL_START_TO_LINK:     \r
+                       if(pLed2->bLedBlinkInProgress == _FALSE)\r
+                       {\r
+                               pLed2->bLedBlinkInProgress = _TRUE;\r
+                               pLed2->BlinkingLedState = RTW_LED_ON;\r
+                               pLed2->CurrLedState = LED_BLINK_LINK_IN_PROCESS;\r
+\r
+                               _set_timer(&(pLed2->BlinkTimer), 0);    \r
+                       }\r
+                       break;          \r
+\r
+               case LED_CTL_LINK:                      \r
+               case LED_CTL_NO_LINK:\r
+                       //LED1 settings\r
+                       if(LedAction == LED_CTL_NO_LINK)\r
+                       {\r
+                               //if(pMgntInfo->AuthStatus == AUTH_STATUS_FAILED)\r
+                               if(0)\r
+                               {\r
+                                       pLed1->CurrLedState = LED_BLINK_AUTH_ERROR;\r
+                                               if( pLed1->bLedOn )\r
+                                                       pLed1->BlinkingLedState = RTW_LED_OFF; \r
+                                               else\r
+                                                       pLed1->BlinkingLedState = RTW_LED_ON; \r
+                                               _set_timer(&(pLed1->BlinkTimer), 0);\r
+                               } \r
+                               else\r
+                               {\r
+                                       pLed1->CurrLedState = RTW_LED_OFF;\r
+                                       pLed1->BlinkingLedState = RTW_LED_OFF; \r
+                                       if( pLed1->bLedOn )\r
+                                               _set_timer(&(pLed1->BlinkTimer), 0);\r
+                               }\r
+                       }\r
+                       else\r
+                       {\r
+                               pLed1->CurrLedState = RTW_LED_OFF;\r
+                               pLed1->BlinkingLedState = RTW_LED_OFF; \r
+                               if( pLed1->bLedOn )\r
+                                       _set_timer(&(pLed1->BlinkTimer), 0); \r
+                       }\r
+                                               \r
+                       //LED2 settings\r
+                       if(LedAction == LED_CTL_LINK)\r
+                       {\r
+                               if(Adapter->securitypriv.dot11PrivacyAlgrthm != _NO_PRIVACY_)\r
+                               {\r
+                                       if(pLed2->bLedBlinkInProgress ==_TRUE)\r
+                                       {       \r
+                                               _cancel_timer_ex(&(pLed2->BlinkTimer));\r
+                                               pLed2->bLedBlinkInProgress = _FALSE;\r
+                                       }\r
+                                       pLed2->CurrLedState = RTW_LED_ON;\r
+                                       pLed2->bLedNoLinkBlinkInProgress = _TRUE;\r
+                                       if(!pLed2->bLedOn)\r
+                                               _set_timer(&(pLed2->BlinkTimer), 0);    \r
+                               }\r
+                               else\r
+                               {\r
+                                       if(pLed2->bLedWPSBlinkInProgress != _TRUE)\r
+                                       {\r
+                                               pLed2->CurrLedState = RTW_LED_OFF;\r
+                                               pLed2->BlinkingLedState = RTW_LED_OFF;\r
+                                               if(pLed2->bLedOn)\r
+                                                       _set_timer(&(pLed2->BlinkTimer), 0);\r
+                                       }\r
+                               }\r
+                       }\r
+                       else //NO_LINK\r
+                       {\r
+                               if(pLed2->bLedWPSBlinkInProgress == _FALSE)\r
+                               {\r
+                                       pLed2->CurrLedState = RTW_LED_OFF;\r
+                                       pLed2->BlinkingLedState = RTW_LED_OFF;\r
+                                       if(pLed2->bLedOn)\r
+                                               _set_timer(&(pLed2->BlinkTimer), 0);            \r
+                               }\r
+                       }\r
+\r
+                       //LED0 settings                 \r
+                       if( pLed->bLedNoLinkBlinkInProgress == _FALSE )\r
+                       {\r
+                               if(pLed->CurrLedState == LED_BLINK_SCAN || IS_LED_WPS_BLINKING(pLed))\r
+                               {\r
+                                       return;\r
+                               }\r
+                               if(pLed->bLedBlinkInProgress == _TRUE)\r
+                               {       \r
+                                       _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                                       pLed->bLedBlinkInProgress = _FALSE;\r
+                               }\r
+                               \r
+                               pLed->bLedNoLinkBlinkInProgress = _TRUE;\r
+                               if(IS_HARDWARE_TYPE_8812AU(Adapter))\r
+                               {\r
+                                       if(LedAction == LED_CTL_LINK)\r
+                                       {\r
+                                               pLed->BlinkingLedState = RTW_LED_ON; \r
+                                               pLed->CurrLedState = LED_BLINK_SLOWLY;\r
+                                       }\r
+                                       else\r
+                                       {\r
+                                               pLed->CurrLedState = LED_BLINK_SLOWLY;\r
+                                               if( pLed->bLedOn )\r
+                                                       pLed->BlinkingLedState = RTW_LED_OFF; \r
+                                               else\r
+                                                       pLed->BlinkingLedState = RTW_LED_ON; \r
+                                       }\r
+                               }\r
+                               else\r
+                               {\r
+                                       pLed->CurrLedState = LED_BLINK_SLOWLY;\r
+                                       if( pLed->bLedOn )\r
+                                               pLed->BlinkingLedState = RTW_LED_OFF; \r
+                                       else\r
+                                               pLed->BlinkingLedState = RTW_LED_ON; \r
+                               }\r
+                               _set_timer(&(pLed->BlinkTimer), LED_BLINK_NO_LINK_INTERVAL_ALPHA);\r
+                       }\r
+                       \r
+                       break;          \r
+\r
+               case LED_CTL_SITE_SURVEY:\r
+                        if((pmlmepriv->LinkDetectInfo.bBusyTraffic) && (check_fwstate(pmlmepriv, _FW_LINKED)== _TRUE))\r
+                               ;\r
+                        else //if(pLed->bLedScanBlinkInProgress ==FALSE)\r
+                        {\r
+                               if(IS_LED_WPS_BLINKING(pLed))\r
+                                       return;\r
+                               \r
+                               if(pLed->bLedNoLinkBlinkInProgress == _TRUE)\r
+                               {\r
+                                       _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                                       pLed->bLedNoLinkBlinkInProgress = _FALSE;\r
+                               }\r
+                               if(pLed->bLedBlinkInProgress == _TRUE)\r
+                               {\r
+                                       _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                                       pLed->bLedBlinkInProgress = _FALSE;\r
+                               }\r
+                               pLed->bLedScanBlinkInProgress = _TRUE;\r
+                               pLed->CurrLedState = LED_BLINK_SCAN;\r
+                               pLed->BlinkTimes = 24;\r
+                               if( pLed->bLedOn )\r
+                                       pLed->BlinkingLedState = RTW_LED_OFF; \r
+                               else\r
+                                       pLed->BlinkingLedState = RTW_LED_ON; \r
+                               _set_timer(&(pLed->BlinkTimer), LED_BLINK_SCAN_INTERVAL_ALPHA);\r
+\r
+                        }\r
+                       break;\r
+               \r
+               case LED_CTL_TX:\r
+               case LED_CTL_RX:\r
+                       if(pLed->bLedBlinkInProgress == _FALSE)\r
+                       {\r
+                               if(pLed->CurrLedState == LED_BLINK_SCAN || IS_LED_WPS_BLINKING(pLed))\r
+                               {\r
+                                       return;\r
+                               }\r
+                               if(pLed->bLedNoLinkBlinkInProgress == _TRUE)\r
+                               {\r
+                                       _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                                       pLed->bLedNoLinkBlinkInProgress = _FALSE;\r
+                               }\r
+                               pLed->bLedBlinkInProgress = _TRUE;\r
+                               pLed->CurrLedState = LED_BLINK_TXRX;\r
+                               pLed->BlinkTimes = 2;\r
+                               if( pLed->bLedOn )\r
+                                       pLed->BlinkingLedState = RTW_LED_OFF; \r
+                               else\r
+                                       pLed->BlinkingLedState = RTW_LED_ON; \r
+                               _set_timer(&(pLed->BlinkTimer), LED_BLINK_FASTER_INTERVAL_ALPHA);\r
+                       }\r
+                       break;\r
+\r
+               case LED_CTL_START_WPS: //wait until xinpin finish\r
+               case LED_CTL_START_WPS_BOTTON:\r
+                       pLed2->bLedBlinkInProgress = _TRUE;\r
+                       pLed2->BlinkingLedState = RTW_LED_ON;\r
+                       pLed2->CurrLedState = LED_BLINK_LINK_IN_PROCESS;\r
+                       pLed2->bLedWPSBlinkInProgress = _TRUE;\r
+\r
+                       _set_timer(&(pLed2->BlinkTimer), 500);\r
+                        \r
+                       break;\r
+               \r
+               case LED_CTL_STOP_WPS:  //WPS connect success   \r
+                       //LED2 settings\r
+                       if(pLed2->bLedWPSBlinkInProgress == _TRUE)\r
+                       {       \r
+                               _cancel_timer_ex(&(pLed2->BlinkTimer));\r
+                               pLed2->bLedBlinkInProgress = _FALSE;\r
+                               pLed2->bLedWPSBlinkInProgress = _FALSE;\r
+                       }\r
+                       pLed2->CurrLedState = RTW_LED_ON;\r
+                       pLed2->bLedNoLinkBlinkInProgress = _TRUE;\r
+                       if(!pLed2->bLedOn)\r
+                               _set_timer(&(pLed2->BlinkTimer), 0);    \r
+\r
+                       //LED1 settings\r
+                       _cancel_timer_ex(&(pLed1->BlinkTimer));\r
+                       pLed1->CurrLedState = RTW_LED_OFF;\r
+                       pLed1->BlinkingLedState = RTW_LED_OFF; \r
+                       if( pLed1->bLedOn )\r
+                               _set_timer(&(pLed1->BlinkTimer), 0);    \r
+                       \r
+                               \r
+                       break;          \r
+\r
+               case LED_CTL_STOP_WPS_FAIL:             //WPS authentication fail       \r
+                       //LED1 settings\r
+                       //if(bWPSOverLap == _FALSE)\r
+                       {\r
+                               pLed1->CurrLedState = LED_BLINK_AUTH_ERROR;\r
+                               pLed1->BlinkTimes = 50;\r
+                               if( pLed1->bLedOn )\r
+                                       pLed1->BlinkingLedState = RTW_LED_OFF; \r
+                               else\r
+                                       pLed1->BlinkingLedState = RTW_LED_ON; \r
+                               _set_timer(&(pLed1->BlinkTimer), 0);\r
+                       }\r
+                       //else\r
+                       //{\r
+                       //      bWPSOverLap = _FALSE;\r
+                       //      pLed1->CurrLedState = RTW_LED_OFF;\r
+                       //      pLed1->BlinkingLedState = RTW_LED_OFF; \r
+                       //      _set_timer(&(pLed1->BlinkTimer), 0);\r
+                       //}\r
+\r
+                       //LED2 settings\r
+                       pLed2->CurrLedState = RTW_LED_OFF;\r
+                       pLed2->BlinkingLedState = RTW_LED_OFF; \r
+                       pLed2->bLedWPSBlinkInProgress = _FALSE;\r
+                       if( pLed2->bLedOn )\r
+                               _set_timer(&(pLed2->BlinkTimer), 0);\r
+                                               \r
+                       break;                          \r
+\r
+               case LED_CTL_STOP_WPS_FAIL_OVERLAP:     //WPS session overlap\r
+                       //LED1 settings\r
+                       bWPSOverLap = _TRUE;\r
+                       pLed1->CurrLedState = LED_BLINK_WPS_STOP_OVERLAP;\r
+                       pLed1->BlinkTimes = 10;\r
+                       pLed1->BlinkCounter = 50;\r
+                       if( pLed1->bLedOn )\r
+                               pLed1->BlinkingLedState = RTW_LED_OFF; \r
+                       else\r
+                               pLed1->BlinkingLedState = RTW_LED_ON; \r
+                       _set_timer(&(pLed1->BlinkTimer), 0);\r
+\r
+                       //LED2 settings\r
+                       pLed2->CurrLedState = RTW_LED_OFF;\r
+                       pLed2->BlinkingLedState = RTW_LED_OFF;\r
+                       pLed2->bLedWPSBlinkInProgress = _FALSE;\r
+                       if( pLed2->bLedOn )\r
+                               _set_timer(&(pLed2->BlinkTimer), 0);\r
+                       \r
+                       break;\r
+\r
+               case LED_CTL_POWER_OFF:\r
+                       pLed->CurrLedState = RTW_LED_OFF;\r
+                       pLed->BlinkingLedState = RTW_LED_OFF; \r
+                       \r
+                       if( pLed->bLedNoLinkBlinkInProgress)\r
+                       {\r
+                               _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                               pLed->bLedNoLinkBlinkInProgress = _FALSE;\r
+                       }\r
+                       if( pLed->bLedLinkBlinkInProgress)\r
+                       {\r
+                               _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                               pLed->bLedLinkBlinkInProgress = _FALSE;\r
+                       }\r
+                       if( pLed->bLedBlinkInProgress)\r
+                       {\r
+                               _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                               pLed->bLedBlinkInProgress = _FALSE;\r
+                       }\r
+                       if( pLed->bLedWPSBlinkInProgress )\r
+                       {\r
+                               _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                               pLed->bLedWPSBlinkInProgress = _FALSE;\r
+                       }\r
+                       if( pLed->bLedScanBlinkInProgress)\r
+                       {\r
+                               _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                               pLed->bLedScanBlinkInProgress = _FALSE;\r
+                       }       \r
+                       if( pLed->bLedStartToLinkBlinkInProgress)\r
+                       {\r
+                               _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                               pLed->bLedStartToLinkBlinkInProgress = _FALSE;\r
+                       }                       \r
+\r
+                       if( pLed1->bLedWPSBlinkInProgress )\r
+                       {\r
+                               _cancel_timer_ex(&(pLed1->BlinkTimer));\r
+                               pLed1->bLedWPSBlinkInProgress = _FALSE;\r
+                       }\r
+\r
+\r
+                       pLed1->BlinkingLedState = LED_UNKNOWN;                          \r
+                       SwLedOff(Adapter, pLed);\r
+                       SwLedOff(Adapter, pLed1);                       \r
+                       break;\r
+\r
+               case LED_CTL_CONNECTION_NO_TRANSFER:\r
+                        if(pLed->bLedBlinkInProgress == _FALSE)\r
+                        {\r
+                                 if(pLed->bLedNoLinkBlinkInProgress == _TRUE)\r
+                               {\r
+                                       _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                                       pLed->bLedNoLinkBlinkInProgress = _FALSE;\r
+                               }\r
+                               pLed->bLedBlinkInProgress = _TRUE;\r
+\r
+                               pLed->CurrLedState = LED_BLINK_ALWAYS_ON;\r
+                               pLed->BlinkingLedState = RTW_LED_ON; \r
+                               _set_timer(&(pLed->BlinkTimer), LED_BLINK_NO_LINK_INTERVAL_ALPHA);\r
+                        }\r
+                       break;\r
+       \r
+               default:\r
+                       break;\r
+\r
+       }\r
+\r
+       RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Led control mode 9 Led %d\n", pLed->CurrLedState));\r
+}\r
+\r
+//page added for Netgear A6200V2, 20120827\r
+void\r
+SwLedControlMode10(\r
+       PADAPTER                        Adapter,\r
+       LED_CTL_MODE            LedAction\r
+)\r
+{\r
+       HAL_DATA_TYPE   *pHalData = GET_HAL_DATA(Adapter);\r
+       struct led_priv *ledpriv = &(Adapter->ledpriv);\r
+       struct mlme_priv        *pmlmepriv = &Adapter->mlmepriv;\r
+       PLED_USB        pLed = &(ledpriv->SwLed0);\r
+       PLED_USB        pLed1 = &(ledpriv->SwLed1);\r
+\r
+       switch(LedAction)\r
+       {\r
+               case LED_CTL_START_TO_LINK:\r
+                       if(pLed1->bLedBlinkInProgress == _FALSE)\r
+                       {\r
+                               pLed1->bLedBlinkInProgress = _TRUE;\r
+                               pLed1->BlinkingLedState = RTW_LED_ON;\r
+                               pLed1->CurrLedState = LED_BLINK_LINK_IN_PROCESS;\r
+\r
+                               _set_timer(&(pLed1->BlinkTimer), 0);\r
+                       }\r
+                       break;\r
+\r
+               case LED_CTL_LINK:                      \r
+               case LED_CTL_NO_LINK:\r
+                       if(LedAction == LED_CTL_LINK)\r
+                       {\r
+                               if(pLed->bLedWPSBlinkInProgress == _TRUE || pLed1->bLedWPSBlinkInProgress == _TRUE)\r
+                                       ;\r
+                               else\r
+                               {\r
+                                       if(pHalData->CurrentBandType == BAND_ON_2_4G)\r
+                                       //LED0 settings\r
+                                       {\r
+                                               pLed->CurrLedState = RTW_LED_ON;\r
+                                               pLed->BlinkingLedState = RTW_LED_ON;\r
+                                               if(pLed->bLedBlinkInProgress == _TRUE)\r
+                                               {       \r
+                                                       _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                                                       pLed->bLedBlinkInProgress = _FALSE;\r
+                                               }\r
+                                               _set_timer(&(pLed->BlinkTimer), 0);\r
+\r
+                                               pLed1->CurrLedState = RTW_LED_OFF;\r
+                                               pLed1->BlinkingLedState = RTW_LED_OFF;\r
+                                               _set_timer(&(pLed1->BlinkTimer), 0);\r
+                                       }\r
+                                       else if(pHalData->CurrentBandType == BAND_ON_5G)\r
+                                       //LED1 settings\r
+                                       {\r
+                                               pLed1->CurrLedState = RTW_LED_ON;\r
+                                               pLed1->BlinkingLedState = RTW_LED_ON;\r
+                                               if(pLed1->bLedBlinkInProgress == _TRUE)\r
+                                               {       \r
+                                                       _cancel_timer_ex(&(pLed1->BlinkTimer));\r
+                                                       pLed1->bLedBlinkInProgress = _FALSE;\r
+                                               }\r
+                                               _set_timer(&(pLed1->BlinkTimer), 0);\r
+\r
+                                               pLed->CurrLedState = RTW_LED_OFF;\r
+                                               pLed->BlinkingLedState = RTW_LED_OFF;\r
+                                               _set_timer(&(pLed->BlinkTimer), 0);\r
+                                       }\r
+                               }\r
+                       }\r
+                       else if(LedAction == LED_CTL_NO_LINK)   //TODO by page\r
+                       {\r
+                               if(pLed->bLedWPSBlinkInProgress == _TRUE || pLed1->bLedWPSBlinkInProgress == _TRUE)\r
+                                       ;\r
+                               else\r
+                               {\r
+                                       pLed->CurrLedState = RTW_LED_OFF;\r
+                                       pLed->BlinkingLedState = RTW_LED_OFF;\r
+                                       if( pLed->bLedOn )\r
+                                               _set_timer(&(pLed->BlinkTimer), 0);\r
+\r
+                                       pLed1->CurrLedState = RTW_LED_OFF;\r
+                                       pLed1->BlinkingLedState = RTW_LED_OFF;\r
+                                       if( pLed1->bLedOn )\r
+                                               _set_timer(&(pLed1->BlinkTimer), 0);\r
+                               }\r
+                       }\r
+\r
+                       break;          \r
+\r
+               case LED_CTL_SITE_SURVEY:\r
+                        if(check_fwstate(pmlmepriv, _FW_LINKED)== _TRUE)\r
+                               ;                                                                  //don't blink when media connect\r
+                        else //if(pLed->bLedScanBlinkInProgress ==FALSE)\r
+                        {\r
+                               if(IS_LED_WPS_BLINKING(pLed) || IS_LED_WPS_BLINKING(pLed1))\r
+                                       return;\r
+\r
+                               if(pLed->bLedNoLinkBlinkInProgress == _TRUE)\r
+                               {\r
+                                       _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                                       pLed->bLedNoLinkBlinkInProgress = _FALSE;\r
+                               }\r
+                               if(pLed->bLedBlinkInProgress == _TRUE)\r
+                               {\r
+                                       _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                                       pLed->bLedBlinkInProgress = _FALSE;\r
+                               }\r
+                               pLed->bLedScanBlinkInProgress = _TRUE;\r
+                               pLed->CurrLedState = LED_BLINK_SCAN;\r
+                               pLed->BlinkTimes = 12;\r
+                               pLed->BlinkingLedState = LED_BLINK_SCAN;\r
+                               _set_timer(&(pLed->BlinkTimer), 0);\r
+\r
+                               if(pLed1->bLedNoLinkBlinkInProgress == _TRUE)\r
+                               {\r
+                                       _cancel_timer_ex(&(pLed1->BlinkTimer));\r
+                                       pLed1->bLedNoLinkBlinkInProgress = _FALSE;\r
+                               }\r
+                               if(pLed1->bLedBlinkInProgress == _TRUE)\r
+                               {\r
+                                       _cancel_timer_ex(&(pLed1->BlinkTimer));\r
+                                       pLed1->bLedBlinkInProgress = _FALSE;\r
+                               }\r
+                               pLed1->bLedScanBlinkInProgress = _TRUE;\r
+                               pLed1->CurrLedState = LED_BLINK_SCAN;\r
+                               pLed1->BlinkTimes = 12;\r
+                               pLed1->BlinkingLedState = LED_BLINK_SCAN;\r
+                               _set_timer(&(pLed1->BlinkTimer), LED_BLINK_LINK_SLOWLY_INTERVAL_NETGEAR);\r
+\r
+                       }\r
+                       break;\r
+\r
+               case LED_CTL_START_WPS: //wait until xinpin finish\r
+               case LED_CTL_START_WPS_BOTTON:\r
+                       //LED0 settings\r
+                       if(pLed->bLedBlinkInProgress == _FALSE)\r
+                       {\r
+                               pLed->bLedBlinkInProgress = _TRUE;\r
+                               pLed->bLedWPSBlinkInProgress = _TRUE;\r
+                               pLed->BlinkingLedState = LED_BLINK_WPS;\r
+                               pLed->CurrLedState = LED_BLINK_WPS;\r
+                               _set_timer(&(pLed->BlinkTimer), 0);\r
+                       }\r
+\r
+                       //LED1 settings\r
+                       if(pLed1->bLedBlinkInProgress == _FALSE)\r
+                       {\r
+                               pLed1->bLedBlinkInProgress = _TRUE;\r
+                               pLed1->bLedWPSBlinkInProgress = _TRUE;\r
+                               pLed1->BlinkingLedState = LED_BLINK_WPS;\r
+                               pLed1->CurrLedState = LED_BLINK_WPS;\r
+                               _set_timer(&(pLed1->BlinkTimer), LED_BLINK_NORMAL_INTERVAL+LED_BLINK_LINK_INTERVAL_NETGEAR);\r
+                       }\r
+\r
+\r
+                       break;\r
+\r
+               case LED_CTL_STOP_WPS:  //WPS connect success\r
+                       if(pHalData->CurrentBandType == BAND_ON_2_4G)\r
+                       //LED0 settings\r
+                       {\r
+                               pLed->bLedWPSBlinkInProgress = _FALSE;\r
+                               pLed->CurrLedState = RTW_LED_ON;\r
+                               pLed->BlinkingLedState = RTW_LED_ON;\r
+                               if(pLed->bLedBlinkInProgress == _TRUE)\r
+                               {\r
+                                       _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                                       pLed->bLedBlinkInProgress = _FALSE;\r
+                               }\r
+                               _set_timer(&(pLed->BlinkTimer), 0);\r
+\r
+                               pLed1->CurrLedState = RTW_LED_OFF;\r
+                               pLed1->BlinkingLedState = RTW_LED_OFF;\r
+                               _set_timer(&(pLed1->BlinkTimer), 0);\r
+                       }\r
+                       else if(pHalData->CurrentBandType == BAND_ON_5G)\r
+                       //LED1 settings\r
+                       {\r
+                               pLed1->bLedWPSBlinkInProgress = _FALSE;\r
+                               pLed1->CurrLedState = RTW_LED_ON;\r
+                               pLed1->BlinkingLedState = RTW_LED_ON;\r
+                               if(pLed1->bLedBlinkInProgress == _TRUE)\r
+                               {\r
+                                       _cancel_timer_ex(&(pLed1->BlinkTimer));\r
+                                       pLed1->bLedBlinkInProgress = _FALSE;\r
+                               }\r
+                               _set_timer(&(pLed1->BlinkTimer), 0);\r
+\r
+                               pLed->CurrLedState = RTW_LED_OFF;\r
+                               pLed->BlinkingLedState = RTW_LED_OFF;\r
+                               _set_timer(&(pLed->BlinkTimer), 0);\r
+                       }\r
+\r
+                       break;\r
+\r
+               case LED_CTL_STOP_WPS_FAIL:             //WPS authentication fail       \r
+                       //LED1 settings\r
+                       pLed1->bLedWPSBlinkInProgress = _FALSE;\r
+                       pLed1->CurrLedState = RTW_LED_OFF;\r
+                       pLed1->BlinkingLedState = RTW_LED_OFF; \r
+                       _set_timer(&(pLed1->BlinkTimer), 0);\r
+\r
+                       //LED0 settings\r
+                       pLed->bLedWPSBlinkInProgress = _FALSE;\r
+                       pLed->CurrLedState = RTW_LED_OFF;\r
+                       pLed->BlinkingLedState = RTW_LED_OFF;\r
+                       if( pLed->bLedOn )\r
+                               _set_timer(&(pLed->BlinkTimer), 0);\r
+\r
+                       break;\r
+\r
+\r
+               default:\r
+                       break;\r
+\r
+       }\r
+\r
+       RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Led control mode 10 Led %d\n", pLed->CurrLedState));\r
+}\r
+\r
+ //Edimax-ASUS, added by Page, 20121221\r
+void\r
+SwLedControlMode11(\r
+       PADAPTER                        Adapter,\r
+       LED_CTL_MODE            LedAction\r
+)\r
+{\r
+       struct led_priv *ledpriv = &(Adapter->ledpriv);\r
+       struct mlme_priv        *pmlmepriv = &Adapter->mlmepriv;\r
+       PLED_USB        pLed = &(ledpriv->SwLed0);\r
+\r
+       switch(LedAction)\r
+       {       \r
+               case LED_CTL_POWER_ON:\r
+               case LED_CTL_START_TO_LINK:     \r
+               case LED_CTL_NO_LINK:\r
+                       pLed->CurrLedState = RTW_LED_ON;\r
+                       pLed->BlinkingLedState = RTW_LED_ON;\r
+                       _set_timer(&(pLed->BlinkTimer), 0);\r
+                       break;\r
+\r
+               case LED_CTL_LINK:\r
+                       if( pLed->bLedBlinkInProgress == _TRUE )\r
+                       {\r
+                               _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                               pLed->bLedBlinkInProgress = _FALSE;\r
+                       }\r
+                       pLed->bLedBlinkInProgress = _TRUE;\r
+                       pLed->CurrLedState = LED_BLINK_TXRX;\r
+                       if( pLed->bLedOn )\r
+                               pLed->BlinkingLedState = RTW_LED_OFF; \r
+                       else\r
+                               pLed->BlinkingLedState = RTW_LED_ON;\r
+                       _set_timer(&(pLed->BlinkTimer), LED_BLINK_SCAN_INTERVAL_ALPHA);\r
+                       break;\r
+\r
+               case LED_CTL_START_WPS: //wait until xinpin finish\r
+               case LED_CTL_START_WPS_BOTTON:\r
+                       if(pLed->bLedBlinkInProgress == _TRUE)\r
+                       {\r
+                               _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                               pLed->bLedBlinkInProgress = _FALSE;\r
+                       }\r
+                       pLed->bLedWPSBlinkInProgress = _TRUE;\r
+                       pLed->bLedBlinkInProgress = _TRUE;\r
+                       pLed->CurrLedState = LED_BLINK_WPS;\r
+                       if( pLed->bLedOn )\r
+                               pLed->BlinkingLedState = RTW_LED_OFF;\r
+                       else\r
+                               pLed->BlinkingLedState = RTW_LED_ON;\r
+                       pLed->BlinkTimes = 5;\r
+                       _set_timer(&(pLed->BlinkTimer), 0);\r
+\r
+                       break;\r
+\r
+\r
+               case LED_CTL_STOP_WPS:\r
+               case LED_CTL_STOP_WPS_FAIL:\r
+                       if(pLed->bLedBlinkInProgress == _TRUE)\r
+                       {\r
+                               _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                               pLed->bLedBlinkInProgress = _FALSE;\r
+                       }\r
+                       pLed->CurrLedState = LED_BLINK_WPS_STOP;\r
+                       _set_timer(&(pLed->BlinkTimer), 0);\r
+                       break;\r
+\r
+               case LED_CTL_POWER_OFF:\r
+                       pLed->CurrLedState = RTW_LED_OFF;\r
+                       pLed->BlinkingLedState = RTW_LED_OFF;\r
+\r
+                       if( pLed->bLedNoLinkBlinkInProgress)\r
+                       {\r
+                               _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                               pLed->bLedNoLinkBlinkInProgress = _FALSE;\r
+                       }\r
+                       if( pLed->bLedLinkBlinkInProgress)\r
+                       {\r
+                               _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                               pLed->bLedLinkBlinkInProgress = _FALSE;\r
+                       }\r
+                       if( pLed->bLedBlinkInProgress)\r
+                       {\r
+                               _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                               pLed->bLedBlinkInProgress = _FALSE;\r
+                       }\r
+                       if( pLed->bLedWPSBlinkInProgress )\r
+                       {\r
+                               _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                               pLed->bLedWPSBlinkInProgress = _FALSE;\r
+                       }\r
+                       if( pLed->bLedScanBlinkInProgress)\r
+                       {\r
+                               _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                               pLed->bLedScanBlinkInProgress = _FALSE;\r
+                       }\r
+\r
+                       SwLedOff(Adapter, pLed);\r
+                       break;\r
+\r
+               default:\r
+                       break;\r
+\r
+       }\r
+\r
+       RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Led mode 1 CurrLedState %d\n", pLed->CurrLedState));\r
+}\r
+\r
+// page added for NEC\r
+\r
+VOID\r
+SwLedControlMode12(\r
+       PADAPTER                        Adapter,\r
+       LED_CTL_MODE            LedAction\r
+)\r
+{\r
+       struct led_priv *ledpriv = &(Adapter->ledpriv);\r
+       struct mlme_priv        *pmlmepriv = &Adapter->mlmepriv;\r
+       PLED_USB        pLed = &(ledpriv->SwLed0);\r
+\r
+       switch(LedAction)\r
+       {\r
+               case LED_CTL_POWER_ON:\r
+               case LED_CTL_NO_LINK:\r
+               case LED_CTL_LINK:\r
+               case LED_CTL_SITE_SURVEY:\r
+\r
+                       if( pLed->bLedNoLinkBlinkInProgress == _FALSE )\r
+                       {\r
+                               if(pLed->bLedBlinkInProgress == _TRUE)\r
+                               {\r
+                                       _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                                       pLed->bLedBlinkInProgress = _FALSE;\r
+                               }\r
+\r
+                               pLed->bLedNoLinkBlinkInProgress = _TRUE;\r
+                               pLed->CurrLedState = LED_BLINK_SLOWLY;\r
+                               if( pLed->bLedOn )\r
+                                       pLed->BlinkingLedState = RTW_LED_OFF;\r
+                               else\r
+                                       pLed->BlinkingLedState = RTW_LED_ON;\r
+                               _set_timer(&(pLed->BlinkTimer), LED_BLINK_NO_LINK_INTERVAL_ALPHA);\r
+                       }\r
+                       break;\r
+\r
+               case LED_CTL_TX:\r
+               case LED_CTL_RX:\r
+                       if(pLed->bLedBlinkInProgress == _FALSE)\r
+                       {\r
+                               if(pLed->bLedNoLinkBlinkInProgress == _TRUE)\r
+                               {\r
+                                       _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                                       pLed->bLedNoLinkBlinkInProgress = _FALSE;\r
+                               }\r
+                               pLed->bLedBlinkInProgress = _TRUE;\r
+                               pLed->CurrLedState = LED_BLINK_TXRX;\r
+                               pLed->BlinkTimes = 2;\r
+                               if( pLed->bLedOn )\r
+                                       pLed->BlinkingLedState = RTW_LED_OFF;\r
+                               else\r
+                                       pLed->BlinkingLedState = RTW_LED_ON;\r
+                               _set_timer(&(pLed->BlinkTimer), LED_BLINK_FASTER_INTERVAL_ALPHA);\r
+                       }\r
+                       break;\r
+\r
+               case LED_CTL_POWER_OFF:\r
+                       pLed->CurrLedState = RTW_LED_OFF;\r
+                       pLed->BlinkingLedState = RTW_LED_OFF;\r
+\r
+                       if( pLed->bLedBlinkInProgress)\r
+                       {\r
+                               _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                               pLed->bLedBlinkInProgress = _FALSE;\r
+                       }\r
+\r
+                       if( pLed->bLedScanBlinkInProgress)\r
+                       {\r
+                               _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                               pLed->bLedScanBlinkInProgress = _FALSE;\r
+                       }\r
+\r
+                       if(pLed->bLedNoLinkBlinkInProgress == _TRUE)\r
+                       {\r
+                               _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                               pLed->bLedNoLinkBlinkInProgress = _FALSE;\r
+                       }\r
+\r
+                       SwLedOff(Adapter, pLed);\r
+                       break;\r
+\r
+               default:\r
+                       break;\r
+\r
+       }\r
+\r
+       RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("SWLed12 %d\n", pLed->CurrLedState));\r
+}\r
+\r
+// Maddest add for NETGEAR R6100\r
+\r
+VOID\r
+SwLedControlMode13(\r
+       IN      PADAPTER                        Adapter,\r
+       IN      LED_CTL_MODE            LedAction\r
+)\r
+{\r
+       struct led_priv *ledpriv = &(Adapter->ledpriv);\r
+       struct mlme_priv        *pmlmepriv = &Adapter->mlmepriv;\r
+       PLED_USB        pLed = &(ledpriv->SwLed0);\r
+\r
+       RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Led control mode 13 CurrLedState %d, LedAction %d\n", pLed->CurrLedState,LedAction));\r
+       switch(LedAction)\r
+       {               \r
+               case LED_CTL_LINK:\r
+                       if(pLed->bLedWPSBlinkInProgress)\r
+                       {\r
+                               return; \r
+                       }\r
+\r
+                       \r
+                       pLed->CurrLedState = RTW_LED_ON;\r
+                       pLed->BlinkingLedState = RTW_LED_ON;\r
+                       if( pLed->bLedBlinkInProgress)\r
+                       {\r
+                               _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                               pLed->bLedBlinkInProgress = _FALSE;\r
+                       }\r
+                       if( pLed->bLedScanBlinkInProgress)\r
+                       {\r
+                               _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                               pLed->bLedScanBlinkInProgress = _FALSE;\r
+                       }                       \r
+\r
+                       _set_timer(&(pLed->BlinkTimer), 0);\r
+                       break;                  \r
+\r
+               case LED_CTL_START_WPS: //wait until xinpin finish\r
+               case LED_CTL_START_WPS_BOTTON:  \r
+                       if(pLed->bLedWPSBlinkInProgress == _FALSE)\r
+                       {\r
+                               if(pLed->bLedBlinkInProgress == _TRUE)\r
+                               {\r
+                                       _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                                       pLed->bLedBlinkInProgress = _FALSE;\r
+                               }\r
+                               if(pLed->bLedScanBlinkInProgress == _TRUE)\r
+                               {\r
+                                       _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                                       pLed->bLedScanBlinkInProgress = _FALSE;\r
+                               }                               \r
+                               pLed->bLedWPSBlinkInProgress = _TRUE;\r
+                               pLed->CurrLedState = LED_BLINK_WPS;\r
+                               if( pLed->bLedOn )\r
+                               {\r
+                                       pLed->BlinkingLedState = RTW_LED_OFF;\r
+                                       _set_timer(&(pLed->BlinkTimer), LED_WPS_BLINK_OFF_INTERVAL_NETGEAR);\r
+                               }\r
+                               else\r
+                               {\r
+                                       pLed->BlinkingLedState = RTW_LED_ON; \r
+                                       _set_timer(&(pLed->BlinkTimer), LED_WPS_BLINK_ON_INTERVAL_NETGEAR);\r
+                               }\r
+                       }       \r
+                       break;\r
+                       \r
+               case LED_CTL_STOP_WPS:  \r
+                       if(pLed->bLedWPSBlinkInProgress)\r
+                       {\r
+                               _cancel_timer_ex(&(pLed->BlinkTimer));                                                  \r
+                               pLed->bLedWPSBlinkInProgress = _FALSE;                          \r
+                       }                                               \r
+                       else\r
+                       {\r
+                               pLed->bLedWPSBlinkInProgress = _TRUE;\r
+                       }\r
+                       \r
+                       pLed->bLedWPSBlinkInProgress = _FALSE;          \r
+                       pLed->CurrLedState = LED_BLINK_WPS_STOP;\r
+                       if(pLed->bLedOn)\r
+                       {\r
+                               pLed->BlinkingLedState = RTW_LED_OFF;                   \r
+                                       \r
+                               _set_timer(&(pLed->BlinkTimer), 0);\r
+                       }                                       \r
+\r
+                       break;          \r
+\r
+                       \r
+               case LED_CTL_STOP_WPS_FAIL:             \r
+               case LED_CTL_STOP_WPS_FAIL_OVERLAP: //WPS session overlap\r
+                       if(pLed->bLedWPSBlinkInProgress)\r
+                       {\r
+                               _cancel_timer_ex(&(pLed->BlinkTimer));                                                  \r
+                               pLed->bLedWPSBlinkInProgress = _FALSE;                          \r
+                       }                       \r
+\r
+                       pLed->CurrLedState = RTW_LED_OFF;\r
+                       pLed->BlinkingLedState = RTW_LED_OFF;                           \r
+                       _set_timer(&(pLed->BlinkTimer), 0);     \r
+                       break;                          \r
+\r
+               case LED_CTL_START_TO_LINK:     \r
+                       if((pLed->bLedBlinkInProgress == _FALSE) && (pLed->bLedWPSBlinkInProgress == _FALSE)) \r
+                       {\r
+                               pLed->bLedBlinkInProgress = _TRUE;\r
+                               pLed->BlinkingLedState = RTW_LED_ON;\r
+                               pLed->CurrLedState = LED_BLINK_LINK_IN_PROCESS;\r
+\r
+                               _set_timer(&(pLed->BlinkTimer), 0);\r
+                       }\r
+                       break;  \r
+\r
+               case LED_CTL_NO_LINK:\r
+\r
+                       if(pLed->bLedWPSBlinkInProgress)\r
+                       {\r
+                               return; \r
+                       }\r
+                       if( pLed->bLedBlinkInProgress)\r
+                       {\r
+                               _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                               pLed->bLedBlinkInProgress = _FALSE;\r
+                       }\r
+                       if( pLed->bLedScanBlinkInProgress)\r
+                       {\r
+                               _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                               pLed->bLedScanBlinkInProgress = _FALSE;\r
+                       }                       \r
+                       //if(!IS_LED_BLINKING(pLed))\r
+                       {\r
+                               pLed->CurrLedState = RTW_LED_OFF;\r
+                               pLed->BlinkingLedState = RTW_LED_OFF;                           \r
+                               _set_timer(&(pLed->BlinkTimer), 0);                             \r
+                       }\r
+                       break;\r
+                       \r
+               case LED_CTL_POWER_OFF:\r
+               case LED_CTL_POWER_ON:\r
+                       pLed->CurrLedState = RTW_LED_OFF;\r
+                       pLed->BlinkingLedState = RTW_LED_OFF;\r
+                       if( pLed->bLedBlinkInProgress)\r
+                       {\r
+                               _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                               pLed->bLedBlinkInProgress = _FALSE;\r
+                       }\r
+                       if( pLed->bLedScanBlinkInProgress)\r
+                       {\r
+                               _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                               pLed->bLedScanBlinkInProgress = _FALSE;\r
+                       }                       \r
+                       if( pLed->bLedWPSBlinkInProgress )\r
+                       {\r
+                               _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                               pLed->bLedWPSBlinkInProgress = _FALSE;\r
+                       }\r
+\r
+                       if (LedAction == LED_CTL_POWER_ON)\r
+                               _set_timer(&(pLed->BlinkTimer), 0);\r
+                       else\r
+                               SwLedOff(Adapter, pLed);\r
+                       break;\r
+                       \r
+               default:\r
+                       break;\r
+\r
+       }\r
+\r
+       \r
+}\r
+\r
+// Maddest add for DNI Buffalo\r
+\r
+VOID\r
+SwLedControlMode14(\r
+       IN      PADAPTER                        Adapter,\r
+       IN      LED_CTL_MODE            LedAction\r
+)\r
+{\r
+       struct led_priv *ledpriv = &(Adapter->ledpriv);\r
+       PLED_USB        pLed = &(ledpriv->SwLed0);\r
+\r
+       RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Led control mode 14 CurrLedState %d, LedAction %d\n", pLed->CurrLedState,LedAction));\r
+       switch(LedAction)\r
+       {                               \r
+               case LED_CTL_POWER_OFF:\r
+                       RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Led control mode 14 LED_CTL_POWER_OFF\n"));\r
+                       pLed->CurrLedState = RTW_LED_OFF;\r
+                       pLed->BlinkingLedState = RTW_LED_OFF;\r
+                       if( pLed->bLedBlinkInProgress)\r
+                       {\r
+                               _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                               pLed->bLedBlinkInProgress = _FALSE;\r
+                       }                       \r
+                       SwLedOff(Adapter, pLed);        \r
+                       break;\r
+\r
+               case LED_CTL_POWER_ON:\r
+                       RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Led control mode 14 LED_CTL_POWER_ON\n"));\r
+                       SwLedOn(Adapter, pLed);\r
+                       break;\r
+\r
+               case LED_CTL_LINK:\r
+               case LED_CTL_NO_LINK:\r
+                       if (IS_HARDWARE_TYPE_8812AU(Adapter))\r
+                               SwLedOn(Adapter, pLed);\r
+                       break;\r
+\r
+               case LED_CTL_TX:\r
+               case LED_CTL_RX:\r
+                       if(pLed->bLedBlinkInProgress ==_FALSE)\r
+                       {\r
+                               pLed->bLedBlinkInProgress = _TRUE;\r
+                               pLed->CurrLedState = LED_BLINK_TXRX;\r
+                               pLed->BlinkTimes = 2;\r
+                               if( pLed->bLedOn )\r
+                               {\r
+                                       pLed->BlinkingLedState = RTW_LED_OFF;\r
+                                       if (IS_HARDWARE_TYPE_8812AU(Adapter))\r
+                                               _set_timer(&(pLed->BlinkTimer), LED_BLINK_LINK_INTERVAL_ALPHA);\r
+                                       else\r
+                                               _set_timer(&(pLed->BlinkTimer), LED_BLINK_FASTER_INTERVAL_ALPHA);\r
+                               }\r
+                               else\r
+                               {\r
+                                       pLed->BlinkingLedState = RTW_LED_ON;\r
+                                       if (IS_HARDWARE_TYPE_8812AU(Adapter))\r
+                                               _set_timer(&(pLed->BlinkTimer), LED_BLINK_NORMAL_INTERVAL);\r
+                                       else\r
+                                               _set_timer(&(pLed->BlinkTimer), LED_BLINK_FASTER_INTERVAL_ALPHA);\r
+                               }\r
+                       }\r
+                       break;\r
+\r
+               default:\r
+                       break;\r
+       }\r
+}\r
+\r
+// Maddest add for Dlink\r
+\r
+VOID\r
+SwLedControlMode15(\r
+       IN      PADAPTER                        Adapter,\r
+       IN      LED_CTL_MODE            LedAction\r
+)\r
+{\r
+       struct led_priv *ledpriv = &(Adapter->ledpriv);\r
+       struct mlme_priv        *pmlmepriv = &Adapter->mlmepriv;\r
+       PLED_USB        pLed = &(ledpriv->SwLed0);\r
+\r
+       RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Led control mode 15 CurrLedState %d, LedAction %d\n", pLed->CurrLedState,LedAction));\r
+       switch(LedAction)\r
+       {               \r
+               case LED_CTL_START_WPS: //wait until xinpin finish\r
+               case LED_CTL_START_WPS_BOTTON:  \r
+                       RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Led control mode 15 LED_CTL_START_WPS\n"));\r
+                       if(pLed->bLedWPSBlinkInProgress ==_FALSE)\r
+                       {\r
+                               if(pLed->bLedBlinkInProgress ==_TRUE)\r
+                               {\r
+                                       _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                                       pLed->bLedBlinkInProgress = _FALSE;\r
+                               }\r
+                               if(pLed->bLedScanBlinkInProgress ==_TRUE)\r
+                               {\r
+                                       _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                                       pLed->bLedScanBlinkInProgress = _FALSE;\r
+                               }                               \r
+                               pLed->bLedWPSBlinkInProgress = _TRUE;\r
+                               pLed->CurrLedState = LED_BLINK_WPS;\r
+                               if( pLed->bLedOn )\r
+                               {\r
+                                       pLed->BlinkingLedState = RTW_LED_OFF;\r
+                                       _set_timer(&(pLed->BlinkTimer), LED_WPS_BLINK_OFF_INTERVAL_NETGEAR);\r
+                               }\r
+                               else\r
+                               {\r
+                                       pLed->BlinkingLedState = RTW_LED_ON; \r
+                                       _set_timer(&(pLed->BlinkTimer), LED_WPS_BLINK_ON_INTERVAL_NETGEAR);\r
+                               }\r
+                       }       \r
+                       break;\r
+                       \r
+               case LED_CTL_STOP_WPS:  \r
+                       RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Led control mode 15 LED_CTL_STOP_WPS\n"));\r
+                       if(pLed->bLedWPSBlinkInProgress)\r
+                       {\r
+                               _cancel_timer_ex(&(pLed->BlinkTimer));                                                                          \r
+                       }                                               \r
+                       \r
+                       pLed->CurrLedState = LED_BLINK_WPS_STOP;\r
+                       //if(check_fwstate(pmlmepriv, _FW_LINKED)== _TRUE)\r
+                       {\r
+                               pLed->BlinkingLedState = RTW_LED_ON;                    \r
+                                       \r
+                               _set_timer(&(pLed->BlinkTimer), 0);\r
+                       }                                       \r
+\r
+                       break;\r
+\r
+               case LED_CTL_STOP_WPS_FAIL:             \r
+               case LED_CTL_STOP_WPS_FAIL_OVERLAP: //WPS session overlap\r
+                       RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Led control mode 15 LED_CTL_STOP_WPS_FAIL\n"));\r
+                       if(pLed->bLedWPSBlinkInProgress)\r
+                       {\r
+                               _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                               pLed->bLedWPSBlinkInProgress = _FALSE;\r
+                       }                       \r
+\r
+                       pLed->CurrLedState = RTW_LED_OFF;\r
+                       pLed->BlinkingLedState = RTW_LED_OFF;\r
+                       _set_timer(&(pLed->BlinkTimer), 0);\r
+                       break;\r
+\r
+               case LED_CTL_NO_LINK:\r
+                       RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Led control mode 15 LED_CTL_NO_LINK\n"));\r
+                       if(pLed->bLedWPSBlinkInProgress)\r
+                       {\r
+                               return; \r
+                       }\r
+\r
+                       /*if(Adapter->securitypriv.dot11PrivacyAlgrthm > _NO_PRIVACY_)\r
+                       {\r
+                               if(SecIsTxKeyInstalled(Adapter, pMgntInfo->Bssid))\r
+                               {\r
+                               }\r
+                               else\r
+                               {\r
+                                       if(pMgntInfo->LEDAssocState ==LED_ASSOC_SECURITY_BEGIN)\r
+                                               return; \r
+                               }\r
+                       }*/\r
+\r
+                       if( pLed->bLedBlinkInProgress)\r
+                       {\r
+                               _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                               pLed->bLedBlinkInProgress = _FALSE;\r
+                       }\r
+                       if( pLed->bLedScanBlinkInProgress)\r
+                       {\r
+                               _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                               pLed->bLedScanBlinkInProgress = _FALSE;\r
+                       }                       \r
+                       //if(!IS_LED_BLINKING(pLed))\r
+                       {\r
+                               pLed->CurrLedState = LED_BLINK_NO_LINK;\r
+                               pLed->BlinkingLedState = RTW_LED_ON;\r
+                               _set_timer(&(pLed->BlinkTimer), 30);\r
+                       }\r
+                       break;\r
+\r
+               case LED_CTL_LINK: \r
+                       RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("Led control mode 15 LED_CTL_LINK\n"));\r
+\r
+                       if(pLed->bLedWPSBlinkInProgress)\r
+                       {\r
+                               return; \r
+                       }\r
+\r
+                       if( pLed->bLedBlinkInProgress)\r
+                       {\r
+                               _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                               pLed->bLedBlinkInProgress = _FALSE;\r
+                       }\r
+\r
+                       pLed->CurrLedState = LED_BLINK_LINK_IDEL;\r
+                       pLed->BlinkingLedState = RTW_LED_ON;\r
+\r
+                       _set_timer(&(pLed->BlinkTimer), 30);\r
+                       break;  \r
+\r
+               case LED_CTL_SITE_SURVEY        :\r
+                       if(check_fwstate(pmlmepriv, _FW_LINKED)== _TRUE)\r
+                               return;\r
+\r
+                       if(pLed->bLedWPSBlinkInProgress ==_TRUE)\r
+                               return;\r
+                       \r
+                       if( pLed->bLedBlinkInProgress)\r
+                       {\r
+                               _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                               pLed->bLedBlinkInProgress = _FALSE;\r
+                       }\r
+                       pLed->CurrLedState = LED_BLINK_SCAN;\r
+                       pLed->BlinkingLedState = RTW_LED_ON;                            \r
+                       _set_timer(&(pLed->BlinkTimer), 0);     \r
+                       break;\r
+\r
+               case LED_CTL_TX:\r
+               case LED_CTL_RX:\r
+                       if(pLed->bLedWPSBlinkInProgress)\r
+                       {\r
+                               return; \r
+                       }\r
+\r
+                       if( pLed->bLedBlinkInProgress)\r
+                       {\r
+                               _cancel_timer_ex(&(pLed->BlinkTimer));\r
+                               pLed->bLedBlinkInProgress = _FALSE;\r
+                       }                       \r
+\r
+                       pLed->bLedBlinkInProgress = _TRUE;\r
+                       pLed->CurrLedState = LED_BLINK_TXRX;\r
+                       pLed->BlinkTimes = 2;\r
+                       if( pLed->bLedOn )\r
+                               pLed->BlinkingLedState = RTW_LED_OFF; \r
+                       else\r
+                               pLed->BlinkingLedState = RTW_LED_ON; \r
+                       _set_timer(&(pLed->BlinkTimer), LED_BLINK_FASTER_INTERVAL_ALPHA);\r
+                       break;                  \r
+\r
+               default:\r
+                       break;\r
+       }\r
+}\r
+\r
+void\r
+LedControlUSB(\r
+       _adapter                                *padapter,\r
+       LED_CTL_MODE            LedAction\r
+       )\r
+{\r
+       struct led_priv *ledpriv = &(padapter->ledpriv);\r
+\r
+#if(MP_DRIVER == 1)\r
+       if (padapter->registrypriv.mp_mode == 1)\r
+               return;\r
+#endif\r
+\r
+       if (RTW_CANNOT_RUN(padapter) || (!rtw_is_hw_init_completed(padapter))) {\r
+               /*DBG_871X("%s bDriverStopped:%s, bSurpriseRemoved:%s\n"\r
+               , __func__\r
+               , rtw_is_drv_stopped(padapter)?"True":"False"\r
+               , rtw_is_surprise_removed(padapter)?"True":"False" );*/\r
+               return;\r
+       }\r
+\r
+       if( ledpriv->bRegUseLed == _FALSE)\r
+               return;\r
+\r
+       //if(priv->bInHctTest)\r
+       //      return;\r
+\r
+#ifdef CONFIG_CONCURRENT_MODE\r
+       // Only do led action for PRIMARY_ADAPTER\r
+       if (padapter->adapter_type != PRIMARY_ADAPTER)\r
+               return;\r
+#endif\r
+\r
+       if( (adapter_to_pwrctl(padapter)->rf_pwrstate != rf_on &&\r
+               adapter_to_pwrctl(padapter)->rfoff_reason > RF_CHANGE_BY_PS) &&\r
+               (LedAction == LED_CTL_TX || LedAction == LED_CTL_RX ||\r
+                LedAction == LED_CTL_SITE_SURVEY ||\r
+                LedAction == LED_CTL_LINK ||\r
+                LedAction == LED_CTL_NO_LINK ||\r
+                LedAction == LED_CTL_POWER_ON) )\r
+       {\r
+               return;\r
+       }\r
+\r
+       switch(ledpriv->LedStrategy)\r
+       {\r
+               case SW_LED_MODE0:\r
+                       SwLedControlMode0(padapter, LedAction);\r
+                       break;\r
+\r
+               case SW_LED_MODE1:\r
+                       SwLedControlMode1(padapter, LedAction);\r
+                       break;\r
+\r
+               case SW_LED_MODE2:\r
+                       SwLedControlMode2(padapter, LedAction);\r
+                       break;\r
+\r
+               case SW_LED_MODE3:\r
+                       SwLedControlMode3(padapter, LedAction);\r
+                       break;\r
+\r
+               case SW_LED_MODE4:\r
+                       SwLedControlMode4(padapter, LedAction);\r
+                       break;\r
+\r
+               case SW_LED_MODE5:\r
+                       SwLedControlMode5(padapter, LedAction);\r
+                       break;\r
+\r
+               case SW_LED_MODE6:\r
+                       SwLedControlMode6(padapter, LedAction);\r
+                       break;\r
+\r
+               case SW_LED_MODE7:\r
+                       SwLedControlMode7(padapter, LedAction);\r
+                       break;\r
+\r
+               case SW_LED_MODE8:\r
+                       SwLedControlMode8(padapter, LedAction);\r
+                       break;\r
+\r
+               case SW_LED_MODE9:\r
+                       SwLedControlMode9(padapter, LedAction);\r
+                       break;\r
+\r
+               case SW_LED_MODE10:\r
+                       SwLedControlMode10(padapter, LedAction);\r
+                       break;\r
+\r
+               case SW_LED_MODE11:\r
+                       SwLedControlMode11(padapter, LedAction);\r
+                       break;\r
+\r
+               case SW_LED_MODE12:\r
+                       SwLedControlMode12(padapter, LedAction);\r
+                       break;\r
+\r
+               case SW_LED_MODE13:\r
+                       SwLedControlMode13(padapter, LedAction);\r
+                       break;\r
+\r
+               case SW_LED_MODE14:\r
+                       SwLedControlMode14(padapter, LedAction);\r
+                       break;\r
+\r
+               case SW_LED_MODE15:\r
+                       SwLedControlMode15(padapter, LedAction);\r
+                       break;\r
+\r
+               default:\r
+                       break;\r
+       }\r
+\r
+       RT_TRACE(_module_rtl8712_led_c_,_drv_info_,("LedStrategy:%d, LedAction %d\n", ledpriv->LedStrategy,LedAction));\r
+}\r
+\r
+//\r
+//     Description:\r
+//             Reset status of LED_871x object.\r
+//\r
+void ResetLedStatus(PLED_USB pLed) {\r
+\r
+       pLed->CurrLedState = RTW_LED_OFF; // Current LED state.\r
+       pLed->bLedOn = _FALSE; // true if LED is ON, false if LED is OFF.\r
+\r
+       pLed->bLedBlinkInProgress = _FALSE; // true if it is blinking, false o.w..\r
+       pLed->bLedWPSBlinkInProgress = _FALSE;\r
+       \r
+       pLed->BlinkTimes = 0; // Number of times to toggle led state for blinking.\r
+       pLed->BlinkCounter = 0;\r
+       pLed->BlinkingLedState = LED_UNKNOWN; // Next state for blinking, either RTW_LED_ON or RTW_LED_OFF are.\r
+\r
+       pLed->bLedNoLinkBlinkInProgress = _FALSE;\r
+       pLed->bLedLinkBlinkInProgress = _FALSE;\r
+       pLed->bLedStartToLinkBlinkInProgress = _FALSE;\r
+       pLed->bLedScanBlinkInProgress = _FALSE;\r
+}\r
+\r
+ //\r
+//     Description:\r
+//             Initialize an LED_871x object.\r
+//\r
+void\r
+InitLed(\r
+       _adapter                        *padapter,\r
+       PLED_USB                pLed,\r
+       LED_PIN                 LedPin\r
+       )\r
+{\r
+       pLed->padapter = padapter;\r
+       pLed->LedPin = LedPin;\r
+\r
+       ResetLedStatus(pLed);\r
+       _init_timer(&(pLed->BlinkTimer), padapter->pnetdev, BlinkTimerCallback, pLed);\r
+       _init_workitem(&(pLed->BlinkWorkItem), BlinkWorkItemCallback, pLed);\r
+}\r
+\r
+\r
+//\r
+//     Description:\r
+//             DeInitialize an LED_871x object.\r
+//\r
+void\r
+DeInitLed(\r
+       PLED_USB                pLed\r
+       )\r
+{\r
+       _cancel_workitem_sync(&(pLed->BlinkWorkItem));\r
+       _cancel_timer_ex(&(pLed->BlinkTimer));\r
+       ResetLedStatus(pLed);\r
+}\r
+\r
+\r