diff --git a/components/pmo/core/src/wlan_pmo_main.c b/components/pmo/core/src/wlan_pmo_main.c
index 23d5847be5b6..1ff961004986 100644
--- a/components/pmo/core/src/wlan_pmo_main.c
+++ b/components/pmo/core/src/wlan_pmo_main.c
@@ -179,11 +179,24 @@ wlan_pmo_get_igmp_version_support_cfg(struct wlan_objmgr_psoc *psoc,
psoc_cfg->igmp_version_support =
cfg_get(psoc, CFG_IGMP_VERSION_SUPPORT);
}
+
+static void
+wlan_pmo_get_igmp_offload_enable_cfg(struct wlan_objmgr_psoc *psoc,
+ struct pmo_psoc_cfg *psoc_cfg)
+{
+ psoc_cfg->igmp_offload_enable = cfg_get(psoc,
+ CFG_PMO_ENABLE_IGMP_OFFLOAD);
+}
#else
static void
wlan_pmo_get_igmp_version_support_cfg(struct wlan_objmgr_psoc *psoc,
struct pmo_psoc_cfg *psoc_cfg)
{}
+
+static void
+wlan_pmo_get_igmp_offload_enable_cfg(struct wlan_objmgr_psoc *psoc,
+ struct pmo_psoc_cfg *psoc_cfg)
+{}
#endif
static void wlan_pmo_init_cfg(struct wlan_objmgr_psoc *psoc,
@@ -233,6 +246,7 @@ static void wlan_pmo_init_cfg(struct wlan_objmgr_psoc *psoc,
cfg_get(psoc, CFG_ACTIVE_MC_BC_APF_MODE);
psoc_cfg->ito_repeat_count = cfg_get(psoc, CFG_ITO_REPEAT_COUNT);
wlan_pmo_ra_filtering_init_cfg(psoc, psoc_cfg);
+ wlan_pmo_get_igmp_offload_enable_cfg(psoc, psoc_cfg);
}
QDF_STATUS pmo_psoc_open(struct wlan_objmgr_psoc *psoc)
diff --git a/components/pmo/dispatcher/inc/wlan_pmo_common_cfg.h b/components/pmo/dispatcher/inc/wlan_pmo_common_cfg.h
index bf79e9bd031c..f86e0f3110ed 100644
--- a/components/pmo/dispatcher/inc/wlan_pmo_common_cfg.h
+++ b/components/pmo/dispatcher/inc/wlan_pmo_common_cfg.h
@@ -112,6 +112,24 @@
1, \
"Enable/disable NS offload")
+/*
+ *
+ * CFG_PMO_ENABLE_IGMP_OFFLOAD - Enable/disable igmp offload
+ * @Min: 0
+ * @Max: 1
+ * @Default: 0
+ *
+ * This ini is used to enable/disable igmp offload feature to fw.
+ *
+ * Usage: External
+ *
+ *
+ */
+#define CFG_PMO_ENABLE_IGMP_OFFLOAD CFG_INI_BOOL( \
+ "igmp_offload_enable", \
+ 0, \
+ "Enable/disable IGMP offload")
+
/*
*
* gEnableDynamicDTIM - Enable Dynamic DTIM
@@ -509,6 +527,7 @@
CFG(CFG_PMO_HW_FILTER_MODE) \
CFG(CFG_PMO_ENABLE_HOST_SSDP) \
CFG(CFG_PMO_ENABLE_HOST_NSOFFLOAD) \
+ CFG(CFG_PMO_ENABLE_IGMP_OFFLOAD) \
CFG(CFG_PMO_ENABLE_DYNAMIC_DTIM) \
CFG(CFG_PMO_ENABLE_MODULATED_DTIM) \
CFG(CFG_PMO_ENABLE_FORCED_DTIM) \
diff --git a/components/pmo/dispatcher/inc/wlan_pmo_common_public_struct.h b/components/pmo/dispatcher/inc/wlan_pmo_common_public_struct.h
index f32377e442a3..b6a7d0798e94 100644
--- a/components/pmo/dispatcher/inc/wlan_pmo_common_public_struct.h
+++ b/components/pmo/dispatcher/inc/wlan_pmo_common_public_struct.h
@@ -311,6 +311,7 @@ enum active_apf_mode {
* @is_mod_dtim_on_sys_suspend_enabled: true when mod dtim is enabled for
* system suspend wow else false
* @igmp_version_support: igmp version support
+ * @igmp_offload_enable: enable/disable igmp offload feature to fw
*/
struct pmo_psoc_cfg {
bool ptrn_match_enable_all_vdev;
@@ -380,6 +381,7 @@ struct pmo_psoc_cfg {
bool is_bus_suspend_enabled_in_go_mode;
#ifdef WLAN_FEATURE_IGMP_OFFLOAD
uint32_t igmp_version_support;
+ bool igmp_offload_enable;
#endif
};