diff --git a/IC_src/mtk/lib/liblynq-wifi6/libwifi6.c b/IC_src/mtk/lib/liblynq-wifi6/libwifi6.c
index 60c4224..dbc9ef1 100755
--- a/IC_src/mtk/lib/liblynq-wifi6/libwifi6.c
+++ b/IC_src/mtk/lib/liblynq-wifi6/libwifi6.c
@@ -214,7 +214,7 @@
 
 static void notify_service_invoke_fail(int error)
 {
-    struct local_wpa_ctrl *lynq_wpa_ctrl = NULL;
+    struct wpa_ctrl *lynq_wpa_ctrl = NULL;
     pthread_mutex_lock(&s_global_check_mutex);
     if (error == -2) //timeout
     {
@@ -232,15 +232,19 @@
         {
             s_service_invoke_timeout_cnt = FAKE_MAX_INT_VALUE;
             pthread_cond_signal(&s_global_check_cond);
-        }
-        wpa_ctrl_close(lynq_wpa_ctrl);
+        }else
+         {
+            wpa_ctrl_close(lynq_wpa_ctrl);
+         }
         lynq_wpa_ctrl = wpa_ctrl_open(CTRL_PATH[1]);
         if (lynq_wpa_ctrl == NULL)
         {
             s_service_invoke_timeout_cnt = FAKE_MAX_INT_VALUE;
             pthread_cond_signal(&s_global_check_cond);
+        }else
+        {
+            wpa_ctrl_close(lynq_wpa_ctrl);
         }
-        wpa_ctrl_close(lynq_wpa_ctrl);
     }
 
     pthread_mutex_unlock(&s_global_check_mutex);
@@ -1582,18 +1586,31 @@
         pthread_join(g_sta_watcher_pid, NULL);
     if (g_sta_auto_watcher_pid != 0)
         pthread_join(g_sta_auto_watcher_pid, NULL);
-    if (g_lynq_wpa_ctrl[0] != NULL)
-        wpa_ctrl_close(g_lynq_wpa_ctrl[0]);
-    if (g_lynq_wpa_ctrl[1] != NULL)
-        wpa_ctrl_close(g_lynq_wpa_ctrl[1]);
+    if ( g_lynq_wpa_ctrl[0] != NULL)
+    {
+        if(g_lynq_wpa_ctrl[0]->ctrl != NULL)
+        {
+             wpa_ctrl_close(g_lynq_wpa_ctrl[0]->ctrl);
+        }
+        free(g_lynq_wpa_ctrl[0]);
+        g_lynq_wpa_ctrl[0] = NULL;
+    }
+
+    if ( g_lynq_wpa_ctrl[1] != NULL )
+    {
+        if( g_lynq_wpa_ctrl[1]->ctrl != NULL )
+        {
+            wpa_ctrl_close(g_lynq_wpa_ctrl[1]->ctrl);
+        }
+        free(g_lynq_wpa_ctrl[1]);
+        g_lynq_wpa_ctrl[1] = NULL;
+    }
     if (g_ap_tmp_watcher_pid != 0)
         pthread_join(g_ap_tmp_watcher_pid, NULL);
     g_ap_watcher_pid = 0;
     g_sta_watcher_pid = 0;
     g_sta_auto_watcher_pid = 0;
 //    g_ap_tmp_watcher_pid = 0;
-    g_lynq_wpa_ctrl[0] = NULL;
-    g_lynq_wpa_ctrl[1] = NULL;
     g_history_disconnect_valid_num = 0;   //clean history_disconenct_list info
     system("systemctl stop wg870_drv_insmod.service");
     pthread_mutex_unlock(&s_check_wpa_ctrl_mutex);
