diff --git a/target_if/core/inc/target_if.h b/target_if/core/inc/target_if.h index 8e1f911c0961..184f48330451 100644 --- a/target_if/core/inc/target_if.h +++ b/target_if/core/inc/target_if.h @@ -263,6 +263,9 @@ struct target_ops { void (*smart_log_enable) (struct wlan_objmgr_psoc *psoc, struct target_psoc_info *tgt_info, uint8_t *event); + void (*eapol_minrate_enable) + (struct wlan_objmgr_psoc *psoc, + struct target_psoc_info *tgt_info, uint8_t *event); }; @@ -1596,6 +1599,24 @@ static inline void target_if_mesh_support_enable(struct wlan_objmgr_psoc *psoc, tgt_hdl->tif_ops->mesh_support_enable(psoc, tgt_hdl, evt_buf); } +/** + * target_if_eapol_minrate_enable - Enable EAPOL Minrate in Tunnel Mode + * @psoc: psoc object + * @tgt_hdl: target_psoc_info pointer + * @evt_buf: Event buffer received from FW + * + * API to enable eapol minrate + * + * Return: none + */ +static inline void target_if_eapol_minrate_enable(struct wlan_objmgr_psoc *psoc, + struct target_psoc_info *tgt_hdl, uint8_t *evt_buf) +{ + if ((tgt_hdl->tif_ops) && + (tgt_hdl->tif_ops->eapol_minrate_enable)) + tgt_hdl->tif_ops->eapol_minrate_enable(psoc, tgt_hdl, evt_buf); +} + /** * target_if_smart_antenna_enable - Enable Smart antenna module * @psoc: psoc object diff --git a/target_if/init_deinit/src/init_event_handler.c b/target_if/init_deinit/src/init_event_handler.c index a52de279c550..65dec28a85d8 100644 --- a/target_if/init_deinit/src/init_event_handler.c +++ b/target_if/init_deinit/src/init_event_handler.c @@ -117,6 +117,8 @@ static int init_deinit_service_ready_event_handler(ol_scn_t scn_handle, target_if_mesh_support_enable(psoc, tgt_hdl, event); + target_if_eapol_minrate_enable(psoc, tgt_hdl, event); + target_if_smart_antenna_enable(psoc, tgt_hdl, event); target_if_peer_cfg_enable(psoc, tgt_hdl, event); diff --git a/wmi/inc/wmi_unified_param.h b/wmi/inc/wmi_unified_param.h index 5e9446c485c4..abd1972ac787 100644 --- a/wmi/inc/wmi_unified_param.h +++ b/wmi/inc/wmi_unified_param.h @@ -6067,6 +6067,8 @@ typedef struct { uint32_t twt_ap_pdev_count; uint32_t twt_ap_sta_count; uint32_t max_bssid_indicator; + uint32_t eapol_minrate_set:1, + eapol_minrate_ac_set:2; } target_resource_config; /** diff --git a/wmi/src/wmi_unified_tlv.c b/wmi/src/wmi_unified_tlv.c index 9bd2f85d3946..5e3fb5596e1f 100644 --- a/wmi/src/wmi_unified_tlv.c +++ b/wmi/src/wmi_unified_tlv.c @@ -11118,6 +11118,17 @@ void wmi_copy_resource_config(wmi_resource_config *resource_cfg, resource_cfg->flag1, 1); if (tgt_res_cfg->cce_disable) WMI_RSRC_CFG_FLAG_TCL_CCE_DISABLE_SET(resource_cfg->flag1, 1); + if (tgt_res_cfg->eapol_minrate_set) { + WMI_RSRC_CFG_FLAG_EAPOL_REKEY_MINRATE_SUPPORT_ENABLE_SET( + resource_cfg->flag1, 1); + if (tgt_res_cfg->eapol_minrate_ac_set != 3) { + WMI_RSRC_CFG_FLAG_EAPOL_AC_OVERRIDE_VALID_SET( + resource_cfg->flag1, 1); + WMI_RSRC_CFG_FLAG_EAPOL_AC_OVERRIDE_SET( + resource_cfg->flag1, + tgt_res_cfg->eapol_minrate_ac_set); + } + } wmi_copy_twt_resource_config(resource_cfg, tgt_res_cfg); resource_cfg->peer_map_unmap_v2_support =