diff --git a/src/lynq/lib/liblynq-wifi6/libwifi6.c b/src/lynq/lib/liblynq-wifi6/libwifi6.c
index f6f1dc5..f56cc2d 100755
--- a/src/lynq/lib/liblynq-wifi6/libwifi6.c
+++ b/src/lynq/lib/liblynq-wifi6/libwifi6.c
@@ -541,9 +541,10 @@
     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);
-    
+    DO_OK_FAIL_REQUEST(cmd_save_config);
+
     return 0;
-    
+
 }
 
 
@@ -3234,6 +3235,42 @@
     return inner_sta_start_stop(curr_state.net_no, 0, 0);
 }
 
+int lynq_wifi_sta_disconnect_ap(lynq_wifi_index_e idx, char *ssid)
+{
+    ap_info_s ap;
+    curr_status_info curr_state;
+    ap.ap_ssid[0] = '\0';
+
+    if (ssid == NULL || *ssid == '\0')
+    {
+        RLOGE("input ssid is NULL\n");
+        return -1;
+    }
+
+    CHECK_IDX(idx, CTRL_STA);
+
+
+    curr_state.ap = &ap;
+    curr_state.state = NULL;
+
+    if (inner_get_status_info(CTRL_STA, &curr_state) != 0)
+    {
+        return 0;
+    }
+
+    if (strcmp(ap.ap_ssid, ssid) != 0)
+    {
+        return 0;
+    }
+
+    pthread_mutex_lock(&s_global_check_mutex);
+    s_sta_status = INNER_STA_STATUS_DISCONNECTING;
+    pthread_mutex_unlock(&s_global_check_mutex);
+    return lynq_wifi_sta_stop_network(idx, curr_state.net_no);
+
+}
+
+
 int lynq_wifi_sta_start(lynq_wifi_index_e idx)
 {
 //    const char *lynq_reconfigure_cmd = "wpa_cli -iwpa_wlan0_cmd -p/var/run/ IFNAME=wlan0 RECONFIGURE /data/wifi/wg870/wpa_supplicant.conf";
@@ -3264,6 +3301,29 @@
     curr_state.state = state;
     return inner_get_status_info(interface, &curr_state);
 }
+
+int lynq_wifi_sta_start_auto(lynq_wifi_index_e idx)
+{
+
+    const char *lynq_reconnect_cmd = "wpa_cli -iwpa_wlan0_cmd -p/var/run/ IFNAME=wlan0 reconnect";
+
+    CHECK_IDX(idx, CTRL_STA);
+    CHECK_WPA_CTRL(CTRL_STA);
+
+    ret = system_call_v("%s %s", start_stop_sta_script, "start");
+    if (ret != 0)
+    {
+        RLOGE("lynq_wifi_ap_start excute script fail");
+        return -1;
+    }
+
+//    system(lynq_enable_sta_cmd);
+    system(lynq_reconnect_cmd);
+
+    return 0;
+}
+
+
 int lynq_wifi_sta_stop(lynq_wifi_index_e idx)
 {
 //    char lynq_disable_network_cmd[MAX_CMD];
@@ -3301,7 +3361,7 @@
         RLOGD("lynq_wifi_ap_start curr state %s", state);
         usleep(SLEEP_TIME_ON_IDLE);
     }
-
+    
     return 0;
 //    return system("connmanctl disable wifi");
 }
