diff --git a/src/lynq/lib/liblynq-wifi6/libwifi6.c b/src/lynq/lib/liblynq-wifi6/libwifi6.c
index 9d8812b..feb33f9 100755
--- a/src/lynq/lib/liblynq-wifi6/libwifi6.c
+++ b/src/lynq/lib/liblynq-wifi6/libwifi6.c
@@ -54,6 +54,7 @@
 volatile int g_sta_watcher_stop_flag = 0;
 volatile int g_sta_scan_finish_flag = 1;
 volatile int g_sta_watcher_started_flag = 0;
+volatile int g_sta_conncet_status_flag = 0;
 
 pthread_t g_sta_auto_watcher_pid = 0;
 volatile int g_sta_auto_watcher_stop_flag = 0;
@@ -786,10 +787,19 @@
         return;
     }
 
+    if (strstr(modify, "Trying to associate") != NULL)
+    {
+        RLOGD("Current sta is Trying to associate");
+        *state = LYNQ_WIFI_STATUS_EGNORE;
+        g_sta_conncet_status_flag = 1;
+	return;
+    }
+
     if (strstr(modify, "CTRL-EVENT-CONNECTED") != NULL)
     {
         *state = LYNQ_WIFI_STA_STATUS_CONNECT;
         RLOGD("CTRL-EVENT-CONNECTED state:%d,error:%d\n",*state,*error);
+        g_sta_conncet_status_flag = 0;
         return;
     }
 
@@ -831,6 +841,7 @@
             *error = LYNQ_UNSPECIFIED_REASON;
         }
         RLOGD("CTRL-EVENT-SSID-TEMP-DISABLED state:%d,error:%d,tmpnetid:%d",*state,*error,tmpdisid);
+        g_sta_conncet_status_flag = 0;
         return;
 
     }
@@ -840,6 +851,7 @@
         *error = LYNQ_NOT_FIND_AP;
         *state = LYNQ_WIFI_STA_STATUS_DISCONNECT;
         RLOGD("CTRL-EVENT-NETWORK-NOT-FOUND state:%d,error:%d\n",*state,*error);
+        g_sta_conncet_status_flag = 0;
         return;
     }
 
@@ -866,6 +878,7 @@
 
              *state = LYNQ_WIFI_STA_STATUS_DISCONNECT;
              RLOGD("CTRL-EVENT-ASSOC-REJECT BUT NOT STATUS_CODE NOT 1 or 17 state:%d,error:%d\n",*state,*error);
+             g_sta_conncet_status_flag = 0;
              return;
         }
         else
@@ -3506,7 +3519,6 @@
 //    const char *lynq_reconnect_cmd = "RECONNECT";
     const char *lynq_enable_sta_cmd = "wpa_cli -iwpa_wlan0_cmd -p/var/run/ IFNAME=wlan0 enable_net all";
     const char *lynq_reconnect_cmd = "wpa_cli -iwpa_wlan0_cmd -p/var/run/ IFNAME=wlan0 reconnect";
-//    const char *lynq_first_sta_cmd = "wpa_cli -iwpa_wlan0_cmd -p/var/run/ IFNAME=wlan0 remove_net all";
 
     CHECK_IDX(idx, CTRL_STA);
     CHECK_WPA_CTRL(CTRL_STA);
@@ -3882,6 +3894,11 @@
 
 int lynq_wifi_sta_start_scan(lynq_wifi_index_e idx)
 {
+    if ( g_sta_conncet_status_flag != 0 )
+    {
+        RLOGD("current sta is connecting dest ap");
+        return -1;
+    }
     const char *clean_last_re ="wpa_cli -iwpa_wlan0_cmd -p/var/run/ IFNAME=wlan0 bss_flush";
     const char *lynq_scan_cmd = "SCAN";
 
