diff --git a/softap/sdk/qsap_api.c b/softap/sdk/qsap_api.c
index f16272d..8ec6995 100755
--- a/softap/sdk/qsap_api.c
+++ b/softap/sdk/qsap_api.c
@@ -64,7 +64,7 @@
 #define QCSAP_PARAM_GET_AUTO_CHANNEL 9
 #define WE_SET_SAP_CHANNELS  3
 
-//#define LOG_TAG "QCSDK-"
+#define LOG_TAG "QCSDK"
 
 #include "cutils/properties.h"
 #include "cutils/log.h"
@@ -84,6 +84,15 @@
     "set"
 };
 
+/** Supported config file requests.
+  * WANRING: The enum eConf_req in the file qsap_api.h should be
+  * updated if Conf_req[], us updated
+  */
+s8 *Conf_req[CONF_REQ_LAST] = {
+    "dual2g",
+    "dual5g"
+};
+
 /*
  * WARNING: On updating the cmd_list, the enum esap_cmd in file
  * qsap_api.h must be updates to reflect the changes
@@ -2512,6 +2521,15 @@
 
     SKIP_BLANK_SPACE(pcmd);
 
+    if(!(strncmp(pcmd, Conf_req[CONF_2g], strlen(Conf_req[CONF_2g])))) {
+           pcmd += strlen(Conf_req[CONF_2g]);
+           SKIP_BLANK_SPACE(pcmd);
+    } else if (!(strncmp(pcmd, Conf_req[CONF_5g], strlen(Conf_req[CONF_5g])))) {
+           pcmd += strlen(Conf_req[CONF_5g]);
+           SKIP_BLANK_SPACE(pcmd);
+    } else {
+	    // DO NOTHING
+    }
     cNum = qsap_get_cmd_num(pcmd);
     if(cNum == eCMD_INVALID) {
         *plen = qsap_scnprintf(presp, *plen, "%s", ERR_INVALID_ARG);
@@ -3072,6 +3090,16 @@
     /* Skip any blank spaces */
     SKIP_BLANK_SPACE(pcmd);
 
+    if(!(strncmp(pcmd, Cmd_req[eCMD_SET], strlen(Cmd_req[eCMD_SET])))) {
+       if(!(strncmp(pcmd+4, Conf_req[CONF_2g], strlen(Conf_req[CONF_2g])))) {
+           pconffile = CONFIG_FILE_2G;
+       } else if (!(strncmp(pcmd+4, Conf_req[CONF_5g], strlen(Conf_req[CONF_5g])))) {
+           pconffile = CONFIG_FILE_5G;
+       } else {
+           pconffile = CONFIG_FILE;
+       }
+    }
+
     check_for_configuration_files();
     if(fIni == NULL)
         qsap_set_ini_filename();
@@ -3267,14 +3295,14 @@
     /* Check if configuration files are present, if not create the default files */
 
     /* If configuration file does not exist copy the default file */
-    if ( NULL == (fp = fopen(CONFIG_FILE, "r")) ) {
-        wifi_qsap_reset_to_default(CONFIG_FILE, DEFAULT_CONFIG_FILE_PATH);
+    if ( NULL == (fp = fopen(pconffile, "r")) ) {
+        wifi_qsap_reset_to_default(pconffile, DEFAULT_CONFIG_FILE_PATH);
     }
     else {
 
         /* The configuration file could be of 0 byte size, replace with default */
         if (check_for_config_file_size(fp) <= 0)
-            wifi_qsap_reset_to_default(CONFIG_FILE, DEFAULT_CONFIG_FILE_PATH);
+            wifi_qsap_reset_to_default(pconffile, DEFAULT_CONFIG_FILE_PATH);
 
         fclose(fp);
     }
diff --git a/softap/sdk/qsap_api.h b/softap/sdk/qsap_api.h
index 2a1fb44..212a2ea 100755
--- a/softap/sdk/qsap_api.h
+++ b/softap/sdk/qsap_api.h
@@ -88,8 +88,12 @@
 #define WIFI_DRIVER_DEF_CONF_FILE        NULL
 #endif
 
+/** Configuration file name for SAP+SAP*/
+#define CONFIG_FILE_2G "/data/vendor/wifi/hostapd_dual2g.conf"
+#define CONFIG_FILE_5G "/data/vendor/wifi/hostapd_dual5g.conf"
+
 /** Configuration file name */
-#define CONFIG_FILE "/data/misc/wifi/hostapd.conf"
+#define CONFIG_FILE "/data/vendor/wifi/hostapd.conf"
 
 /** Default configuration file path */
 #define DEFAULT_CONFIG_FILE_PATH "/system/etc/hostapd/hostapd_default.conf"
@@ -244,6 +248,14 @@
     eCMD_REQ_LAST
 };
 
+/** config request index - in the array Conf_req[] */
+enum eConf_req {
+    CONF_2g = 0,
+    CONF_5g = 1,
+
+    CONF_REQ_LAST
+};
+
 /**
   * Command numbers, these numbers form the index into the array of
   * command names stored in the 'cmd_list'.
