diff --git a/src/lynq/lib/liblynq-wifi6/libwifi6.c b/src/lynq/lib/liblynq-wifi6/libwifi6.c
index b9658b9..ed4024c 100755
--- a/src/lynq/lib/liblynq-wifi6/libwifi6.c
+++ b/src/lynq/lib/liblynq-wifi6/libwifi6.c
@@ -514,9 +514,28 @@
     pthread_mutex_unlock(&s_global_check_mutex);
 }
 
+static int lynq_wifi_sta_stop_network(lynq_wifi_index_e idx,int networkid)
+{
+    char LYNQ_DISABLE_CMD[128]={0};
+    
+    CHECK_IDX(idx, CTRL_STA);
+    CHECK_WPA_CTRL(CTRL_STA);
+    
+    sprintf(LYNQ_DISABLE_CMD,"DISABLE_NETWORK %d",networkid);
+    RLOGD("LYNQ_DISABLE_CMD is:%d\n",LYNQ_DISABLE_CMD);
+    DO_OK_FAIL_REQUEST(LYNQ_DISABLE_CMD);
+    
+    return 0;
+    
+}
+
+
 void get_state_error(const char* modify, lynq_wifi_sta_status_s* state, error_number_s* error)
 {
     char *pReason;
+    char *wpanetid;
+    char destid[3] = {0};
+    int tmpdisid = -1;
     *error = LYNQ_WAIT_CONNECT_ACTIVE;
     if (strstr(modify, "CTRL-EVENT-SCAN-RESULTS") != NULL)
     {
@@ -534,6 +553,15 @@
 
     if (strstr(modify, "CTRL-EVENT-SSID-TEMP-DISABLED") != NULL)
     {
+        *state = LYNQ_WIFI_STA_STATUS_DISCONNECT;
+        wpanetid = strstr(modify,"id=");
+        if ( wpanetid != NULL )
+        {
+            wpanetid +=strlen("id=");
+            memcpy(destid,wpanetid,2);
+            tmpdisid = atoi(destid);
+
+        }
         pReason = strstr(modify, "reason=");
         if (pReason != NULL)
         {
@@ -545,21 +573,23 @@
             else if (memcmp(pReason, "WRONG_KEY", 9) == 0)
             {
                 *error = LYNQ_PSW_ERROR;
+                // tmp fix sta autoconnect connect and disconnect
+                if(tmpdisid != -1 && lynq_wifi_sta_stop_network(0,tmpdisid) != 0)
+                {
+                    RLOGE("stop wlan0 network %d fail",tmpdisid);
+                }
             }
             else 
             {
                 *error = LYNQ_UNSPECIFIED_REASON;
             }
-            *state = LYNQ_WIFI_STA_STATUS_DISCONNECT;
-            RLOGD("CTRL-EVENT-SSID-TEMP-DISABLED state:%d,error:%d\n",*state,*error);
-            return;
         }
         else
         {
             *error = LYNQ_UNSPECIFIED_REASON;
-            *state = LYNQ_WIFI_STA_STATUS_DISCONNECT;
-            return;
         }
+        RLOGD("CTRL-EVENT-SSID-TEMP-DISABLED state:%d,error:%d,tmpnetid:%d",*state,*error,tmpdisid);
+        return;
 
     }
 
@@ -2994,7 +3024,6 @@
     curr_state.state = state;
     return inner_get_status_info(interface, &curr_state);
 }
-
 int lynq_wifi_sta_stop(lynq_wifi_index_e idx)
 {
 //    char lynq_disable_network_cmd[MAX_CMD];
