diff --git a/talos/AndroidBoardWlan.mk b/talos/AndroidBoardWlan.mk
index 0d6b23dccb83c3e3a5fac320f702eb6df86315bc..90f0ccaf5023da873e75e165fc1dd182b898dabd 100644
--- a/talos/AndroidBoardWlan.mk
+++ b/talos/AndroidBoardWlan.mk
@@ -25,6 +25,13 @@ LOCAL_SRC_FILES    := hostapd.deny
 include $(BUILD_PREBUILT)
 
 # create symbolic links for INI file
-$(shell mkdir -p $(TARGET_OUT_VENDOR)/firmware/wlan/qca_cld; \
-ln -sf /vendor/etc/wifi/WCNSS_qcom_cfg.ini \
-$(TARGET_OUT_VENDOR)/firmware/wlan/qca_cld/WCNSS_qcom_cfg.ini)
+$(shell mkdir -p $(TARGET_OUT_VENDOR)/firmware/wlan/qca_cld;)
+
+ifeq ($(GENERIC_ODM_IMAGE),true)
+    $(shell mkdir -p $(TARGET_OUT_ODM)/firmware/wlan/qca_cld;\
+    ln -sf /odm/etc/wifi/WCNSS_qcom_cfg.ini \
+    $(TARGET_OUT_ODM)/firmware/wlan/qca_cld/WCNSS_qcom_cfg.ini)
+else
+    $(shell ln -sf /vendor/etc/wifi/WCNSS_qcom_cfg.ini \
+    $(TARGET_OUT_VENDOR)/firmware/wlan/qca_cld/WCNSS_qcom_cfg.ini)
+endif
diff --git a/talos/WCNSS_qcom_cfg_odm.ini b/talos/WCNSS_qcom_cfg_odm.ini
new file mode 100644
index 0000000000000000000000000000000000000000..f9512d7fc82ba88ad816efb6c620ed1a9ddf6168
--- /dev/null
+++ b/talos/WCNSS_qcom_cfg_odm.ini
@@ -0,0 +1,473 @@
+# This file allows user to override the factory
+# defaults for the WLAN Driver
+
+#############################################
+# Power related configurations
+#############################################
+# Phy Mode (auto, b, g, n, etc)
+# Valid values are 0-9, with 0 = Auto, 4 = 11n, 9 = 11ac
+# 1 = 11abg, 2 = 11b, 3 = 11g, 5 = 11g only, 6 = 11n only
+# 7 = 11b only 8 = 11ac only.
+gDot11Mode=0
+
+#############################################
+# STA related general configurations
+#############################################
+# UAPSD service interval for VO,VI, BE, BK traffic
+InfraUapsdVoSrvIntv=0
+InfraUapsdViSrvIntv=0
+InfraUapsdBeSrvIntv=0
+InfraUapsdBkSrvIntv=0
+
+# Flag to allow STA send AddTspec even when ACM is Off
+gAddTSWhenACMIsOff=1
+
+#############################################
+# SAP related configurations
+#############################################
+#Enable OBSS protection
+gEnableApOBSSProt=1
+
+# RTS threshold
+RTSThreshold=2347
+
+# 802.11d support
+g11dSupportEnabled=0
+
+# DFS Master Capability
+gEnableDFSMasterCap=0
+
+gNeighborLookupThreshold=76
+
+# Legacy (non-ESE, non-802.11r) Fast Roaming Support
+# To enable, set FastRoamEnabled=1
+# To disable, set FastRoamEnabled=0
+FastRoamEnabled=1
+
+# Check if the AP to which we are roaming is better than current AP in
+# terms of RSSI.  Checking is disabled if set to Zero.Otherwise it will
+# use this value as to how better the RSSI of the new/roamable AP should
+# be for roaming
+RoamRssiDiff=3
+
+#Channel Bonding
+gChannelBondingMode5GHz=1
+
+# Enable DFS channel roam
+# 0: DISABLE, 1: ENABLED_NORMAL, 2: ENABLED_ACTIVE
+gAllowDFSChannelRoam=1
+
+# chain mask related params
+#
+# Set txchainmask and rxchainmask
+# These parameters are used only if gEnable2x2 is 0
+# Valid values are 1,2
+# Set gSetTxChainmask1x1=1 or gSetRxChainmask1x1=1 to select chain0.
+# Set gSetTxChainmask1x1=2 or gSetRxChainmask1x1=2 to select chain1.
+gSetTxChainmask1x1=1
+gSetRxChainmask1x1=1
+
+# MCC to SCC Switch mode:
+# 0-Disable
+# 1-Enable
+# 2-Force SCC if same band, with SAP restart
+# 3-Force SCC if same band, without SAP restart by sending (E)CSA
+# 4-Force SCC if same band (or) use SAP mandatory channel for DBS,
+#   without SAP restart by sending (E)CSA
+gWlanMccToSccSwitchMode = 3
+
+# 1=enable tx STBC; 0=disable
+gEnableTXSTBC=1
+
+# 1=enable rx LDPC; 0=disable
+gEnableRXLDPC=1
+
+#Enable/Disable Tx beamformee in SAP mode
+gEnableTxBFeeSAP=1
+
+# Enable Tx beamforming in VHT20MHz
+# Valid values are 0,1. If commented out, the default value is 0.
+# 0=disable, 1=enable
+gEnableTxBFin20MHz=1
+
+# 802.11K support
+gRrmEnable=1
+
+#Enable Power Save offload
+gEnablePowerSaveOffload=2
+
+# Maximum Receive AMPDU size (VHT only. Valid values:
+# 0->8k 1->16k 2->32k 3->64k 4->128k)
+gVhtAmpduLenExponent=7
+
+# Maximum MPDU length (VHT only. Valid values:
+# 0->3895 octets, 1->7991 octets, 2->11454 octets)
+gVhtMpduLen=2
+
+#############################################
+# P2P related configurations
+#############################################
+#Enable or Disable p2p device address administered
+isP2pDeviceAddrAdministrated=0
+
+#Mac address provisioning
+enable_mac_provision=0
+
+#Enable VHT on 2.4Ghz
+gEnableVhtFor24GHzBand=1
+
+#############################################
+# Offload related configurations
+#############################################
+
+# controlling the following offload patterns
+# through ini parameter. Default value is 1
+# to disable set it to zero. ssdp = 0
+# Setup multicast pattern for mDNS 224.0.0.251,
+# SSDP 239.255.255.250 and LLMNR 224.0.0.252
+ssdp=0
+
+# Regulatory Setting; 0=STRICT; 1=CUSTOM
+gRegulatoryChangeCountry=1
+
+# Disable/Enable GreenAP
+# 0 to disable, 1 to enable, default: 1
+gEnableGreenAp=0
+
+#Enable/Disable LPASS support
+# 0 to disable, 1 to enable
+gEnableLpassSupport=1
+
+# Whether userspace country code setting shld have priority
+gCountryCodePriority=1
+
+# Enable or Disable Multi-user MIMO
+# 1=Enable (default), 0=Disable
+gEnableMuBformee=1
+
+# Inactivity time (in ms) to end TX Service Period while in IBSS power save mode
+gIbssTxSpEndInactivityTime=10
+
+#############################################
+# TDLS related configurations
+#############################################
+# Enable support for TDLS
+#  0 - disable
+#  1 - enable
+gEnableTDLSSupport=1
+
+# Enable support for Implicit Trigger of TDLS. That is, wlan driver shall
+# initiate TDLS Discovery towards a peer whenever setup criteria (throughput
+# and RSSI) is met and then will initiate teardown when teardown criteria
+# (idle packet count and RSSI) is met.
+#  0 - disable
+#  1 - enable
+gEnableTDLSImplicitTrigger=1
+
+# Enable support for TDLS off-channel operation
+#  0 - disable
+#  1 - enable
+# TDLS off-channel operation will be invoked when there is only one
+# TDLS connection.
+gEnableTDLSOffChannel=1
+
+# Tx/Rx Packet threshold for initiating TDLS.
+# This ini is used to configure the number of Tx/Rx packets during the period of
+# gTDLSTxStatsPeriod when exceeded, a TDLS Discovery request is triggered.
+gTDLSTxPacketThreshold=10
+
+# Number of idle packet.
+# This ini is used to configure the number of Tx/Rx packet, below which
+# within last gTDLSTxStatsPeriod period is considered as idle condition.
+gTDLSIdlePacketThreshold=1
+
+# VHT Tx/Rx MCS values
+# Valid values are 0,1,2. If commented out, the default value is 0.
+# 0=MCS0-7, 1=MCS0-8, 2=MCS0-9
+gVhtRxMCS=2
+gVhtTxMCS=2
+
+# VHT Tx/Rx MCS values for 2x2
+# Valid values are 0,1,2. If commented out, the default value is 0.
+# 0=MCS0-7, 1=MCS0-8, 2=MCS0-9
+gEnable2x2=1
+gVhtRxMCS2x2=2
+gVhtTxMCS2x2=2
+
+#IPA config is a bit mask and following are the configurations.
+#bit0 IPA Enable
+#bit1 IPA PRE Filter enable
+#bit2 IPv6 enable
+#bit3 IPA Resource Manager (RM) enable
+#bit4 IPA Clock scaling enable
+#bit5 IPA uC ENABLE
+#bit6 IPA uC STA ENABLE
+#bit8 IPA Real Time Debugging
+gIPAConfig=0x7d
+
+# Enable Rx handling options
+# Rx_thread=1 RPS=2(default for ROME) NAPI=4(default for ihelium)
+# Rx_thread + NAPI = 5
+rx_mode=5
+
+# Enable(Tx) fastpath for data traffic.
+# 1 - enable(default)  0 - disable
+gEnableFastPath=1
+
+# Enable TCP Segmentation Offload
+# 1 - enable  0 - disable
+TSOEnable=1
+
+# Enable Generic Receive Offload
+# LRO and GRO are exclusive to each other
+# LRO support is deprecated on latest 4.9(SDM845) kernel
+# 1 - enable(default)  0 - disable
+GROEnable=1
+
+# Enable HT MPDU Density
+# 4 for 2 micro sec
+ght_mpdu_density=4
+
+# Enable flow steering to enable multiple CEs for Rx flows.
+# Multiple Rx CEs<==>Multiple Rx IRQs<==>probably different CPUs.
+# Parallel Rx paths.
+# 1 - enable 0 - disable(default)
+gEnableFlowSteering=1
+
+# Time in microseconds after which a NAPI poll must yield
+ce_service_max_yield_time=500
+
+#Maximum number of HTT messages to be processed per NAPI poll
+ce_service_max_rx_ind_flush=1
+
+# Maximum number of MSDUs the firmware will pack in one HTT_T2H_MSG_TYPE_RX_IN_ORD_PADDR_IND
+maxMSDUsPerRxInd=8
+################ Datapath feature set End ################
+
+################ NAN feature set start ###################
+
+# Enable NAN discovery (NAN 1.0)
+# 1 - enable  0 - disable(default)
+gEnableNanSupport=1
+################ NAN feature set end #####################
+
+hostscan_adaptive_dwell_mode=1
+
+# Create another interface during driver load
+gEnableConcurrentSTA=wlan1
+
+#Enable/Disable dual MAC feature
+# 0 - enable DBS
+# 1 - disable DBS
+# 2 - disable DBS for connection but keep DBS for scan
+# 3 - disable DBS for connection but keep DBS scan with async
+#     scan policy disabled
+# 4 - enable DBS for connection as well as for scan with async
+#     scan policy disabled
+# 5 - enable DBS for connection but disable dbs for scan.
+# 6 - enable DBS for connection but disable simultaneous scan from
+#     upper layer (DBS scan remains enabled in FW).
+gDualMacFeatureDisable=6
+
+#Enable/Disable latency mode
+# 0 disable
+# 1 enable
+wlm_latency_enable=1
+
+# Enable/Disable NUD Tracking within driver
+gEnableNUDTracking=0
+
+# Configure hardware filter for DTIM mode
+# The hardware filter is only effective in DTIM mode.
+# Use this configuration to blanket drop broadcast/multicast packets at the hardware level
+# without waking up the firmware
+#
+# Takes a bitmap of frame types to drop
+#
+# 0 = disable feature
+# 1 = drop all broadcast frames, except ARP (default)
+# 2 = drop all multicast frames, except ICMPv6
+# 3 = drop all broadcast and multicast frames, except ARP and ICMPv6
+gHwFilterMode=0
+
+# Enables SNR Monitoring
+# This ini is used to set default snr monitor
+gEnableSNRMonitoring=1
+
+# Control to enable TCP limit output byte
+# This ini is used to enable dynamic configuration of TCP limit output bytes
+# tcp_limit_output_bytes param.
+# Enabling this will let driver post message to cnss-daemon,
+# accordingly cnss-daemon will modify the tcp_limit_output_bytes.
+gTcpLimitOutputEnable=0
+
+# Enable Target Wake Time support.
+# This ini is used to enable or disable TWT support.
+enable_twt=0
+
+# For NLO/PNO, enable MAWC based scan
+# Enable/Disable the Motion Aided Wireless Connectivity based NLO using this parameter
+mawc_nlo_enabled=0
+
+# Force 1x1 when connecting to certain peer
+# This INI when enabled will force 1x1 connection with certain peer.
+gForce1x1Exception=0
+
+# Enable/disable oce feature for STA
+# This ini is used to enable/disable oce feature for STA
+oce_sta_enable=0
+
+# Enable/disable oce feature for SAP
+# This ini is used to enable/disable oce feature for SAP
+oce_sap_enable=0
+
+# Set probe request rate
+# This ini is used to set probe request rate to 5.5Mbps as per OCE requirement in 2.4G band
+oce_enable_probe_req_rate=0
+
+# HE caps Weightage to calculate best candidate
+# This ini is used to increase/decrease HE caps weightage in best candidate selection.
+# If AP supports HE caps, AP will get additional weightage with this param.
+# Weightage will be given only if dot11mode is HE capable.
+he_caps_weightage=0
+
+# PCL Weightage to calculate best candidate
+# This ini is used to increase/decrease PCL weightage in best candidate selection.
+# If some APs are in PCL list, those AP will get addition weightage.
+pcl_weightage=10
+
+# Enable/disable esp feature
+# This ini is used to enable/disable ESP(Estimated service parameters) IE parsing and decides
+# whether firmware will include this in its scoring algo.
+enable_esp_for_roam=0
+
+# Bitmask to enable 11k offload to FW.
+# This ini is used to set which of the 11k features is offloaded to FW
+# Currently Neighbor Report Request is supported for offload and is enabled by default.
+# B0: Offload 11k neighbor report requests
+# B1-B31: Reserved
+11k_offload_enable_bitmask=0
+
+# Set channel selection logic for different concurrency combinations to DBS or inter band MCC.
+# Default is DBS for STA+STA and STA+P2P.
+#  0 - inter-band MCC
+#  1 - DBS
+#
+# BIT 0: STA+STA
+# BIT 1: STA+P2P
+# BIT 2-31: Reserved
+channel_select_logic_conc=0
+
+# Configure BTM
+# Bit 0: Enable/Disable the BTM offload. Set this to 1 will enable and 0 will disable BTM offload.
+# BIT 2, 1: Action on non matching candidate with cache. If a BTM request is received from AP
+#           then the candidate AP's may/may-not be present in the firmware scan cache.
+#           Based on below config firmware will decide whether to forward BTM frame to host or
+#           consume with firmware and proceed with Roaming to candidate AP.
+#
+#           00 scan and consume
+#           01 no scan and forward to host
+#           10, 11 reserved
+# BIT 5, 4, 3: Roaming handoff decisions on multiple candidates match
+#              000 match if exact BSSIDs are found
+#              001 match if at least one top priority BSSID only
+#              010, 011, 100, 101, 110, 111 reserved
+# BIT 6: Set this to 1 will send BTM query frame and 0 not sent.
+# BIT 7-31: Reserved
+btm_offload_config=0
+
+# Set external ACS Policy to Mandatory
+acs_policy=1
+
+# Set Modulated Dtim
+gEnableModulatedDTIM=2
+
+# Enable NAN datapath
+genable_nan_datapath=1
+
+# Set MaxLIModulate Dtim
+gMaxLIModulatedDTIM=6
+
+# Used for ignore peer infrormation
+gIgnorePeerErpInfo=1
+
+# DBS Scan Selection
+gdbs_scan_selection=5,4,1,16,4,1
+
+# 0 - Disallow STA+SAP SCC on LTE coex channel
+# 1 - Allow STA+SAP SCC on LTE coex channel
+g_sta_sap_scc_on_lte_coex_chan=1
+
+# Tx Chain Mask for CCK
+gCckChainMaskEnable=1
+
+# Tx Chain Mask for 1SS
+gTxChainMask1ss=0
+
+# TPC power
+gSelfGenFrmPwr=3
+
+# Enable LFR3 subnet detection
+gLFRSubnetDetectionEnable=0
+
+#Enable APF in Active mode
+gActiveUcBpfMode=2
+
+# Control MC/BC active APF mode
+gActiveMcBcBpfMode=1
+
+# Enable or disable Probe Req Information Element whitelist. When enabled, IEs corresponding to bits
+# set in bitmaps are allowed in probe request, all others removed while device is unassociated
+# with an AP
+# 1=Enable, 0=Disable (default)
+g_enable_probereq_whitelist_ies=1
+
+# ie bitmap examples: <bitmap_name>=<value> [<Allowed Information elements>]
+#    g_probe_req_ie_bitmap_0=0x80000009 #[0, 3, 31]
+#    g_probe_req_ie_bitmap_0=0x00000000 #[] (default)
+#    g_probe_req_ie_bitmap_1=0x80000009 #[32, 35, 63]
+g_probe_req_ie_bitmap_0=0x0000000B
+g_probe_req_ie_bitmap_1=0x00040000
+# g_probe_req_ie_bitmap_2=0x00000000
+# g_probe_req_ie_bitmap_3=0x00000000
+# g_probe_req_ie_bitmap_4=0x00000000
+# g_probe_req_ie_bitmap_5=0x00000000
+g_probe_req_ie_bitmap_6=0x20000000
+# g_probe_req_ie_bitmap_7=0x00000000
+
+# Used to specify vendor specific OUIs
+gProbeReqOUIs=0050F208
+
+# enable 11d in world mode
+enable_11d_in_world_mode=1
+
+# WLM flags setting for low level
+wlm_latency_flags_low=0xc08
+
+#Enable/Disable chain selection optimization for one chain dtim
+#Min: 0
+#MAX: 30
+gEnableDTIMSelectionDiversity=3
+
+# Enable/Disable rtt sta mac randomization
+enable_rtt_mac_randomization=1
+
+# Set max time for active 2G channel scan
+active_max_channel_time_2g=40
+
+# To config roaming scan policy
+roaming_scan_policy=1
+
+# Config DPTRACE
+gDptraceConfig=1,4,2,126
+
+#Timer waiting for interface up from the upper layer
+gInterfaceChangeWait=5000
+
+#To Avoid configured frequencies from acs
+sap_avoid_acs_freq_list=2467,2472,2484
+
+END
+
+# Note: Configuration parser would not read anything past the END marker
+
diff --git a/talos/wlan.mk b/talos/wlan.mk
index a9d47c725de2113afac772d5810e24315696a134..e4edfe6f1e3227037323d5d30d21da81397038d6 100644
--- a/talos/wlan.mk
+++ b/talos/wlan.mk
@@ -11,7 +11,6 @@ PRODUCT_PACKAGES += $(WPA)
 WIFI_HIDL_FEATURE_AWARE := true
 
 PRODUCT_COPY_FILES += \
-	device/qcom/wlan/talos/WCNSS_qcom_cfg.ini:$(TARGET_COPY_OUT_VENDOR)/etc/wifi/WCNSS_qcom_cfg.ini \
 	device/qcom/wlan/talos/wpa_supplicant_overlay.conf:$(TARGET_COPY_OUT_VENDOR)/etc/wifi/wpa_supplicant_overlay.conf \
 	device/qcom/wlan/talos/p2p_supplicant_overlay.conf:$(TARGET_COPY_OUT_VENDOR)/etc/wifi/p2p_supplicant_overlay.conf \
 	device/qcom/wlan/talos/icm.conf:$(TARGET_COPY_OUT_VENDOR)/etc/wifi/icm.conf \
@@ -19,6 +18,14 @@ PRODUCT_COPY_FILES += \
 	frameworks/native/data/etc/android.hardware.wifi.rtt.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.rtt.xml \
         frameworks/native/data/etc/android.hardware.wifi.passpoint.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.passpoint.xml
 
+ifeq ($(GENERIC_ODM_IMAGE),true)
+    PRODUCT_COPY_FILES += \
+        device/qcom/wlan/talos/WCNSS_qcom_cfg_odm.ini:$(TARGET_COPY_OUT_ODM)/etc/wifi/WCNSS_qcom_cfg.ini
+else
+    PRODUCT_COPY_FILES += \
+        device/qcom/wlan/talos/WCNSS_qcom_cfg.ini:$(TARGET_COPY_OUT_VENDOR)/etc/wifi/WCNSS_qcom_cfg.ini
+endif
+
 # WLAN specific aosp flag
 TARGET_USES_AOSP_FOR_WLAN := false