diff --git a/components/pmo/core/src/wlan_pmo_main.c b/components/pmo/core/src/wlan_pmo_main.c
index 5fa329c631..0550ebe136 100644
--- a/components/pmo/core/src/wlan_pmo_main.c
+++ b/components/pmo/core/src/wlan_pmo_main.c
@@ -197,12 +197,26 @@ 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,
struct pmo_psoc_cfg *psoc_cfg)
{
@@ -249,6 +263,7 @@ static void wlan_pmo_init_cfg(struct wlan_objmgr_psoc *psoc,
psoc_cfg->ito_repeat_count = cfg_get(psoc, CFG_ITO_REPEAT_COUNT);
wlan_pmo_ra_filtering_init_cfg(psoc, psoc_cfg);
wlan_pmo_gpio_wakeup_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 c131d8646f..012747979d 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 84e1ae750b..8b4cf942fd 100644
--- a/components/pmo/dispatcher/inc/wlan_pmo_common_public_struct.h
+++ b/components/pmo/dispatcher/inc/wlan_pmo_common_public_struct.h
@@ -329,6 +329,7 @@ enum pmo_gpio_wakeup_mode {
* @gpio_wakeup_pin: gpio wakeup pin
* @gpio_wakeup_mode: gpio wakeup mode
* @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;
@@ -402,6 +403,7 @@ struct pmo_psoc_cfg {
#endif
#ifdef WLAN_FEATURE_IGMP_OFFLOAD
uint32_t igmp_version_support;
+ bool igmp_offload_enable;
#endif
};