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 };