diff --git a/Kbuild b/Kbuild
index 4447cb9..f5f129d 100644
--- a/Kbuild
+++ b/Kbuild
@@ -618,6 +618,10 @@
 		$(WLAN_COMMON_ROOT)/os_if/linux/wlan_cfg80211.o \
 		$(WLAN_COMMON_ROOT)/target_if/scan/src/target_if_scan.o
 
+ifeq ($(CONFIG_FEATURE_WLAN_EXTSCAN), y)
+UMAC_SCAN_OBJS += $(UMAC_SCAN_DISP_DIR)/wlan_extscan_api.o
+endif
+
 ############# UMAC_SPECTRAL_SCAN ############
 UMAC_SPECTRAL_DIR := spectral
 UMAC_SPECTRAL_DISP_INC_DIR := $(UMAC_SPECTRAL_DIR)/dispatcher/inc
diff --git a/core/hdd/inc/wlan_hdd_cfg.h b/core/hdd/inc/wlan_hdd_cfg.h
index 72408f3..5e0408b 100644
--- a/core/hdd/inc/wlan_hdd_cfg.h
+++ b/core/hdd/inc/wlan_hdd_cfg.h
@@ -881,127 +881,6 @@
 #define CFG_SCAN_PROBE_REPEAT_TIME_MAX        (30)
 #define CFG_SCAN_PROBE_REPEAT_TIME_DEFAULT    (0)
 
-#ifdef FEATURE_WLAN_EXTSCAN
-/*
- * <ini>
- * gExtScanEnable - Enable external scan
- * @Min: 0
- * @Max: 1
- * @Default: 1
- *
- * This ini is used to control enabling of external scan
- * feature.
- *
- * Related: None
- *
- * Supported Feature: Scan
- *
- * Usage: External
- *
- * </ini>
- */
-#define CFG_EXTSCAN_ALLOWED_NAME                   "gExtScanEnable"
-#define CFG_EXTSCAN_ALLOWED_MIN                    (0)
-#define CFG_EXTSCAN_ALLOWED_MAX                    (1)
-#define CFG_EXTSCAN_ALLOWED_DEF                    (1)
-
-/*
- * <ini>
- * gExtScanPassiveMaxChannelTime - Set max channel time for external
- * passive scan
- * @Min: 0
- * @Max: 500
- * @Default: 110
- *
- * This ini is used to set maximum channel time  in secs spent in
- * external passive scan
- *
- * Related: None
- *
- * Supported Feature: Scan
- *
- * Usage: External
- *
- * </ini>
- */
-#define CFG_EXTSCAN_PASSIVE_MAX_CHANNEL_TIME_NAME      "gExtScanPassiveMaxChannelTime"
-#define CFG_EXTSCAN_PASSIVE_MAX_CHANNEL_TIME_MIN       (0)
-#define CFG_EXTSCAN_PASSIVE_MAX_CHANNEL_TIME_MAX       (500)
-#define CFG_EXTSCAN_PASSIVE_MAX_CHANNEL_TIME_DEFAULT   (110)
-
-/*
- * <ini>
- * gExtScanPassiveMinChannelTime - Set min channel time for external
- * passive scan
- * @Min: 0
- * @Max: 500
- * @Default: 60
- *
- * This ini is used to set minimum channel time in secs spent in
- * external passive scan
- *
- * Related: None
- *
- * Supported Feature: Scan
- *
- * Usage: External
- *
- * </ini>
- */
-#define CFG_EXTSCAN_PASSIVE_MIN_CHANNEL_TIME_NAME      "gExtScanPassiveMinChannelTime"
-#define CFG_EXTSCAN_PASSIVE_MIN_CHANNEL_TIME_MIN       (0)
-#define CFG_EXTSCAN_PASSIVE_MIN_CHANNEL_TIME_MAX       (500)
-#define CFG_EXTSCAN_PASSIVE_MIN_CHANNEL_TIME_DEFAULT   (60)
-
-/*
- * <ini>
- * gExtScanActiveMaxChannelTime - Set min channel time for external
- * active scan
- * @Min: 0
- * @Max: 110
- * @Default: 40
- *
- * This ini is used to set maximum channel time in secs spent in
- * external active scan
- *
- * Related: None
- *
- * Supported Feature: Scan
- *
- * Usage: External
- *
- * </ini>
- */
-#define CFG_EXTSCAN_ACTIVE_MAX_CHANNEL_TIME_NAME       "gExtScanActiveMaxChannelTime"
-#define CFG_EXTSCAN_ACTIVE_MAX_CHANNEL_TIME_MIN        (0)
-#define CFG_EXTSCAN_ACTIVE_MAX_CHANNEL_TIME_MAX        (110)
-#define CFG_EXTSCAN_ACTIVE_MAX_CHANNEL_TIME_DEFAULT    (40)
-
-/*
- * <ini>
- * gExtScanActiveMinChannelTime - Set min channel time for external
- * active scan
- * @Min: 0
- * @Max: 110
- * @Default: 20
- *
- * This ini is used to set minimum channel time in secs spent in
- * external active scan
- *
- * Related: None
- *
- * Supported Feature: Scan
- *
- * Usage: External
- *
- * </ini>
- */
-#define CFG_EXTSCAN_ACTIVE_MIN_CHANNEL_TIME_NAME       "gExtScanActiveMinChannelTime"
-#define CFG_EXTSCAN_ACTIVE_MIN_CHANNEL_TIME_MIN        (0)
-#define CFG_EXTSCAN_ACTIVE_MIN_CHANNEL_TIME_MAX        (110)
-#define CFG_EXTSCAN_ACTIVE_MIN_CHANNEL_TIME_DEFAULT    (20)
-#endif
-
 /*
  * <ini>
  * gChPredictionFullScanMs - Set periodic timer for channel
@@ -14208,13 +14087,6 @@
 	/* CPU affinity mask for rx_thread */
 	uint32_t rx_thread_affinity_mask;
 	uint8_t cpu_map_list[CFG_RPS_RX_QUEUE_CPU_MAP_LIST_LEN];
-#ifdef FEATURE_WLAN_EXTSCAN
-	bool     extscan_enabled;
-	uint32_t extscan_passive_max_chn_time;
-	uint32_t extscan_passive_min_chn_time;
-	uint32_t extscan_active_max_chn_time;
-	uint32_t extscan_active_min_chn_time;
-#endif
 	bool ce_classify_enabled;
 	uint32_t dual_mac_feature_disable;
 	uint8_t dbs_scan_selection[CFG_DBS_SCAN_PARAM_LENGTH];
diff --git a/core/hdd/src/wlan_hdd_cfg.c b/core/hdd/src/wlan_hdd_cfg.c
index c94d51d..39cd3e9 100644
--- a/core/hdd/src/wlan_hdd_cfg.c
+++ b/core/hdd/src/wlan_hdd_cfg.c
@@ -3269,48 +3269,6 @@
 		     CFG_ETSI13_SRD_CHAN_IN_MASTER_MODE_MIN,
 		     CFG_ETSI13_SRD_CHAN_IN_MASTER_MODE_MAX),
 
-#ifdef FEATURE_WLAN_EXTSCAN
-	REG_VARIABLE(CFG_EXTSCAN_ALLOWED_NAME, WLAN_PARAM_Integer,
-		     struct hdd_config, extscan_enabled,
-		     VAR_FLAGS_OPTIONAL |
-		     VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
-		     CFG_EXTSCAN_ALLOWED_DEF,
-		     CFG_EXTSCAN_ALLOWED_MIN,
-		     CFG_EXTSCAN_ALLOWED_MAX),
-
-	REG_VARIABLE(CFG_EXTSCAN_PASSIVE_MAX_CHANNEL_TIME_NAME,
-		     WLAN_PARAM_Integer,
-		     struct hdd_config, extscan_passive_max_chn_time,
-		     VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
-		     CFG_EXTSCAN_PASSIVE_MAX_CHANNEL_TIME_DEFAULT,
-		     CFG_EXTSCAN_PASSIVE_MAX_CHANNEL_TIME_MIN,
-		     CFG_EXTSCAN_PASSIVE_MAX_CHANNEL_TIME_MAX),
-
-	REG_VARIABLE(CFG_EXTSCAN_PASSIVE_MIN_CHANNEL_TIME_NAME,
-		     WLAN_PARAM_Integer,
-		     struct hdd_config, extscan_passive_min_chn_time,
-		     VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
-		     CFG_EXTSCAN_PASSIVE_MIN_CHANNEL_TIME_DEFAULT,
-		     CFG_EXTSCAN_PASSIVE_MIN_CHANNEL_TIME_MIN,
-		     CFG_EXTSCAN_PASSIVE_MIN_CHANNEL_TIME_MAX),
-
-	REG_VARIABLE(CFG_EXTSCAN_ACTIVE_MAX_CHANNEL_TIME_NAME,
-		     WLAN_PARAM_Integer,
-		     struct hdd_config, extscan_active_max_chn_time,
-		     VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
-		     CFG_EXTSCAN_ACTIVE_MAX_CHANNEL_TIME_DEFAULT,
-		     CFG_EXTSCAN_ACTIVE_MAX_CHANNEL_TIME_MIN,
-		     CFG_EXTSCAN_ACTIVE_MAX_CHANNEL_TIME_MAX),
-
-	REG_VARIABLE(CFG_EXTSCAN_ACTIVE_MIN_CHANNEL_TIME_NAME,
-		     WLAN_PARAM_Integer,
-		     struct hdd_config, extscan_active_min_chn_time,
-		     VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
-		     CFG_EXTSCAN_ACTIVE_MIN_CHANNEL_TIME_DEFAULT,
-		     CFG_EXTSCAN_ACTIVE_MIN_CHANNEL_TIME_MIN,
-		     CFG_EXTSCAN_ACTIVE_MIN_CHANNEL_TIME_MAX),
-#endif
-
 #ifdef WLAN_FEATURE_WOW_PULSE
 	REG_VARIABLE(CFG_WOW_PULSE_SUPPORT_NAME, WLAN_PARAM_Integer,
 		struct hdd_config, wow_pulse_support,
diff --git a/core/hdd/src/wlan_hdd_cfg80211.c b/core/hdd/src/wlan_hdd_cfg80211.c
index 9baec1a..4d76504 100644
--- a/core/hdd/src/wlan_hdd_cfg80211.c
+++ b/core/hdd/src/wlan_hdd_cfg80211.c
@@ -119,6 +119,7 @@
 #include <wlan_hdd_ota_test.h>
 #include "wlan_mlme_ucfg_api.h"
 #include "wlan_mlme_public_struct.h"
+#include "wlan_extscan_ucfg_api.h"
 
 #define g_mode_rates_size (12)
 #define a_mode_rates_size (8)
@@ -3040,13 +3041,11 @@
 	/* HOTSPOT is a supplicant feature, enable it by default */
 	fset |= WIFI_FEATURE_HOTSPOT;
 
-#ifdef FEATURE_WLAN_EXTSCAN
-	if (hdd_ctx->config->extscan_enabled &&
+	if (ucfg_extscan_get_enable(hdd_ctx->hdd_psoc) &&
 	    sme_is_feature_supported_by_fw(EXTENDED_SCAN)) {
 		hdd_debug("EXTScan is supported by firmware");
 		fset |= WIFI_FEATURE_EXTSCAN | WIFI_FEATURE_HAL_EPNO;
 	}
-#endif
 	if (wlan_hdd_nan_is_supported(hdd_ctx)) {
 		hdd_debug("NAN is supported by firmware");
 		fset |= WIFI_FEATURE_NAN;
diff --git a/core/hdd/src/wlan_hdd_ext_scan.c b/core/hdd/src/wlan_hdd_ext_scan.c
index 5eca34d..2bbf1a6 100644
--- a/core/hdd/src/wlan_hdd_ext_scan.c
+++ b/core/hdd/src/wlan_hdd_ext_scan.c
@@ -30,6 +30,7 @@
 #include "cds_utils.h"
 #include "cds_sched.h"
 #include <qca_vendor.h>
+#include "wlan_extscan_ucfg_api.h"
 
 #define EXTSCAN_PARAM_MAX QCA_WLAN_VENDOR_ATTR_EXTSCAN_SUBCMD_CONFIG_PARAM_MAX
 
@@ -1451,7 +1452,7 @@
 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_SUBCMD_CONFIG_PARAM_REQUEST_ID
 #define PARAM_STATUS \
 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_STATUS
-#define MAX_SCAN_CACHE_SIZE \
+#define MAX_EXTSCAN_CACHE_SIZE \
 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_RESULTS_CAPABILITIES_MAX_SCAN_CACHE_SIZE
 #define MAX_SCAN_BUCKETS \
 	QCA_WLAN_VENDOR_ATTR_EXTSCAN_RESULTS_CAPABILITIES_MAX_SCAN_BUCKETS
@@ -1550,7 +1551,8 @@
 
 	if (nla_put_u32(skb, PARAM_REQUEST_ID, data->requestId) ||
 	    nla_put_u32(skb, PARAM_STATUS, data->status) ||
-	    nla_put_u32(skb, MAX_SCAN_CACHE_SIZE, data->max_scan_cache_size) ||
+	    nla_put_u32(skb, MAX_EXTSCAN_CACHE_SIZE,
+					data->max_scan_cache_size) ||
 	    nla_put_u32(skb, MAX_SCAN_BUCKETS, data->max_scan_buckets) ||
 	    nla_put_u32(skb, MAX_AP_CACHE_PER_SCAN,
 			data->max_ap_cache_per_scan) ||
@@ -1589,7 +1591,7 @@
  */
 #undef PARAM_REQUEST_ID
 #undef PARAM_STATUS
-#undef MAX_SCAN_CACHE_SIZE
+#undef MAX_EXTSCAN_CACHE_SIZE
 #undef MAX_SCAN_BUCKETS
 #undef MAX_AP_CACHE_PER_SCAN
 #undef MAX_RSSI_SAMPLE_SIZE
@@ -1643,7 +1645,7 @@
 		return -EINVAL;
 	}
 
-	if (!hdd_ctx->config->extscan_enabled) {
+	if (!ucfg_extscan_get_enable(hdd_ctx->hdd_psoc)) {
 		hdd_err("extscan not supported");
 		return -ENOTSUPP;
 	}
@@ -1782,7 +1784,7 @@
 	if (0 != retval)
 		return -EINVAL;
 
-	if (!hdd_ctx->config->extscan_enabled) {
+	if (!ucfg_extscan_get_enable(hdd_ctx->hdd_psoc)) {
 		hdd_err("extscan not supported");
 		return -ENOTSUPP;
 	}
@@ -1981,7 +1983,7 @@
 	if (0 != retval)
 		return -EINVAL;
 
-	if (!hdd_ctx->config->extscan_enabled) {
+	if (!ucfg_extscan_get_enable(hdd_ctx->hdd_psoc)) {
 		hdd_err("extscan not supported");
 		return -ENOTSUPP;
 	}
@@ -2420,7 +2422,7 @@
 	if (0 != ret)
 		return -EINVAL;
 
-	if (!hdd_ctx->config->extscan_enabled) {
+	if (!ucfg_extscan_get_enable(hdd_ctx->hdd_psoc)) {
 		hdd_err("extscan not supported");
 		return -ENOTSUPP;
 	}
@@ -2642,23 +2644,27 @@
 	uint8_t bkt_index, j, num_channels, total_channels = 0;
 	uint32_t expected_buckets;
 	uint32_t chan_list[WNI_CFG_VALID_CHANNEL_LIST_LEN] = {0};
+	uint32_t extscan_active_min_chn_time;
+	uint32_t min_dwell_time_active_bucket;
+	uint32_t max_dwell_time_active_bucket;
+	uint32_t min_dwell_time_passive_bucket;
+	uint32_t max_dwell_time_passive_bucket;
 
-	uint32_t min_dwell_time_active_bucket =
-		hdd_ctx->config->extscan_active_max_chn_time;
-	uint32_t max_dwell_time_active_bucket =
-		hdd_ctx->config->extscan_active_max_chn_time;
-	uint32_t min_dwell_time_passive_bucket =
-		hdd_ctx->config->extscan_passive_max_chn_time;
-	uint32_t max_dwell_time_passive_bucket =
-		hdd_ctx->config->extscan_passive_max_chn_time;
+	ucfg_extscan_get_active_min_time(hdd_ctx->hdd_psoc,
+					&extscan_active_min_chn_time);
+	ucfg_extscan_get_active_max_time(hdd_ctx->hdd_psoc,
+					 &max_dwell_time_active_bucket);
+	ucfg_extscan_get_passive_max_time(hdd_ctx->hdd_psoc,
+					 &max_dwell_time_passive_bucket);
+
+	min_dwell_time_active_bucket = max_dwell_time_active_bucket;
+	min_dwell_time_passive_bucket = max_dwell_time_passive_bucket;
 
 	req_msg->min_dwell_time_active =
-		req_msg->max_dwell_time_active =
-			hdd_ctx->config->extscan_active_max_chn_time;
+		req_msg->max_dwell_time_active = max_dwell_time_active_bucket;
 
 	req_msg->min_dwell_time_passive =
-		req_msg->max_dwell_time_passive =
-			hdd_ctx->config->extscan_passive_max_chn_time;
+		req_msg->max_dwell_time_passive = max_dwell_time_passive_bucket;
 
 	expected_buckets = req_msg->numBuckets;
 	req_msg->numBuckets = 0;
@@ -2750,11 +2756,11 @@
 		/* start with known good values for bucket dwell times */
 		req_msg->buckets[bkt_index].min_dwell_time_active =
 		req_msg->buckets[bkt_index].max_dwell_time_active =
-			hdd_ctx->config->extscan_active_max_chn_time;
+						max_dwell_time_active_bucket;
 
 		req_msg->buckets[bkt_index].min_dwell_time_passive =
 		req_msg->buckets[bkt_index].max_dwell_time_passive =
-			hdd_ctx->config->extscan_passive_max_chn_time;
+						max_dwell_time_passive_bucket;
 
 		/* Framework shall pass the channel list if the input WiFi band
 		 * is WIFI_BAND_UNSPECIFIED.
@@ -2803,8 +2809,7 @@
 								passive = 1;
 					req_msg->buckets[bkt_index].channels[j].
 					dwellTimeMs =
-						hdd_ctx->config->
-						extscan_passive_max_chn_time;
+						max_dwell_time_passive_bucket;
 					/* reconfigure per-bucket dwell time */
 					if (min_dwell_time_passive_bucket >
 							req_msg->buckets[bkt_index].channels[j].dwellTimeMs) {
@@ -2822,7 +2827,7 @@
 							passive = 0;
 					req_msg->buckets[bkt_index].channels[j].
 					dwellTimeMs =
-						hdd_ctx->config->extscan_active_max_chn_time;
+						max_dwell_time_active_bucket;
 					/* reconfigure per-bucket dwell times */
 					if (min_dwell_time_active_bucket >
 							req_msg->buckets[bkt_index].channels[j].dwellTimeMs) {
@@ -2929,9 +2934,9 @@
 
 			/* Override dwell time if required */
 			if (req_msg->buckets[bkt_index].channels[j].dwellTimeMs <
-				hdd_ctx->config->extscan_active_min_chn_time ||
+				extscan_active_min_chn_time ||
 				req_msg->buckets[bkt_index].channels[j].dwellTimeMs >
-				hdd_ctx->config->extscan_active_max_chn_time) {
+				max_dwell_time_active_bucket) {
 				hdd_debug("WiFi band is unspecified, dwellTime:%d",
 						req_msg->buckets[bkt_index].channels[j].dwellTimeMs);
 
@@ -2941,11 +2946,13 @@
 					req_msg->buckets[bkt_index].
 					channels[j].channel)))
 						!= CHANNEL_STATE_ENABLE) {
-					req_msg->buckets[bkt_index].channels[j].dwellTimeMs =
-						hdd_ctx->config->extscan_passive_max_chn_time;
+					req_msg->buckets[bkt_index].channels[j].
+						dwellTimeMs =
+						max_dwell_time_passive_bucket;
 				} else {
-					req_msg->buckets[bkt_index].channels[j].dwellTimeMs =
-						hdd_ctx->config->extscan_active_max_chn_time;
+					req_msg->buckets[bkt_index].channels[j].
+						dwellTimeMs =
+						max_dwell_time_active_bucket;
 				}
 			}
 
@@ -3118,7 +3125,7 @@
 	if (0 != retval)
 		return -EINVAL;
 
-	if (!hdd_ctx->config->extscan_enabled) {
+	if (!ucfg_extscan_get_enable(hdd_ctx->hdd_psoc)) {
 		hdd_err("extscan not supported");
 		return -ENOTSUPP;
 	}
@@ -3332,7 +3339,7 @@
 	if (0 != retval)
 		return -EINVAL;
 
-	if (!hdd_ctx->config->extscan_enabled) {
+	if (!ucfg_extscan_get_enable(hdd_ctx->hdd_psoc)) {
 		hdd_err("extscan not supported");
 		return -ENOTSUPP;
 	}
@@ -3460,7 +3467,7 @@
 	if (0 != retval)
 		return -EINVAL;
 
-	if (!hdd_ctx->config->extscan_enabled) {
+	if (!ucfg_extscan_get_enable(hdd_ctx->hdd_psoc)) {
 		hdd_err("extscan not supported");
 		return -ENOTSUPP;
 	}
@@ -3575,7 +3582,7 @@
 	if (0 != retval)
 		return -EINVAL;
 
-	if (!hdd_ctx->config->extscan_enabled) {
+	if (!ucfg_extscan_get_enable(hdd_ctx->hdd_psoc)) {
 		hdd_err("extscan not supported");
 		return -ENOTSUPP;
 	}
@@ -3785,7 +3792,7 @@
 	if (ret_val)
 		return ret_val;
 
-	if (!hdd_ctx->config->extscan_enabled) {
+	if (!ucfg_extscan_get_enable(hdd_ctx->hdd_psoc)) {
 		hdd_err("extscan not supported");
 		return -ENOTSUPP;
 	}
diff --git a/core/mac/src/include/sir_params.h b/core/mac/src/include/sir_params.h
index d037f8a..5b1ebd4 100644
--- a/core/mac/src/include/sir_params.h
+++ b/core/mac/src/include/sir_params.h
@@ -115,9 +115,7 @@
 	TDLS = 6,
 	P2P_GO_NOA_DECOUPLE_INIT_SCAN = 7,
 	WLANACTIVE_OFFLOAD = 8,
-#ifdef FEATURE_WLAN_EXTSCAN
 	EXTENDED_SCAN = 9,
-#endif
 #ifdef FEATURE_WLAN_SCAN_PNO
 	PNO = 10,
 #endif
