From bf7b89c52b637d8d3092d5b07e0a4d6c13236369 Mon Sep 17 00:00:00 2001 From: Gyanranjan Hazarika Date: Mon, 27 Apr 2020 19:14:06 -0700 Subject: [PATCH] qcacmn: Add WMI changes for EMA AP Enhanced Multi-BSSID Advertisement is an enhancement to the existing Multi-BSSID feature in terms of advertising non-transmitted bssid profile using the transmitted bssid beacon. Mandatory inclusion of RNR IE in lower-band AP beacon to support Out-of-Band Advertisement of colocated 6Ghz AP may impose limitation in the beacon size. EMA AP provides a standardized way of overcoming such a limitation Relevant WMI changes are: 1. Support of EMA AP service bit in wmi_service_ready_ext 2. Support of 32-bit ema_params in wmi_bcn_tmpl_cmd_fixed_param to signal ema_beacon_profile_periodicity, ema_beacon_tmpl_idx, ema_first_tmpl and ema_last_tmpl to firmware while sending the beacon template 3. Support of 32-bit WMI resource-config params in INIT cmd to signal number of max transmitting BSSs and max profile periodicity CRs-fixed: 2677701 Change-Id: I6c7b146b5071ad0a1c45fc3ec6fd03ed5dbe8020 --- wmi/inc/wmi_unified_param.h | 5 +++++ wmi/src/wmi_unified_tlv.c | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/wmi/inc/wmi_unified_param.h b/wmi/inc/wmi_unified_param.h index e66efcb7be99..9b9366897746 100644 --- a/wmi/inc/wmi_unified_param.h +++ b/wmi/inc/wmi_unified_param.h @@ -5129,6 +5129,7 @@ typedef enum { wmi_beacon_protection_support, wmi_service_sta_nan_ndi_four_port, wmi_service_host_scan_stop_vdev_all, + wmi_service_ema_ap_support, wmi_services_max, } wmi_conv_service_ids; #define WMI_SERVICE_UNAVAILABLE 0xFFFF @@ -5266,6 +5267,8 @@ struct wmi_host_fw_abi_ver { * @nan_separate_iface_support: Separate iface creation for NAN * @time_sync_ftm: enable ftm based time sync * @max_rnr_neighbours: Max supported RNR neighbors in multisoc APs + * @ema_max_vap_cnt: Number of maximum EMA tx-vaps at any instance of time + * @ema_max_profile_period: Maximum EMA profile periodicity on any pdev */ typedef struct { uint32_t num_vdevs; @@ -5365,6 +5368,8 @@ typedef struct { bool nan_separate_iface_support; bool time_sync_ftm; uint32_t max_rnr_neighbours; + uint32_t ema_max_vap_cnt; + uint32_t ema_max_profile_period; } target_resource_config; /** diff --git a/wmi/src/wmi_unified_tlv.c b/wmi/src/wmi_unified_tlv.c index 0db1ca6f2950..27d6e0925526 100644 --- a/wmi/src/wmi_unified_tlv.c +++ b/wmi/src/wmi_unified_tlv.c @@ -2432,6 +2432,7 @@ static QDF_STATUS send_beacon_tmpl_send_cmd_tlv(wmi_unified_t wmi_handle, cmd->ext_csa_switch_count_offset = param->ext_csa_switch_count_offset; cmd->esp_ie_offset = param->esp_ie_offset; cmd->mu_edca_ie_offset = param->mu_edca_ie_offset; + cmd->ema_params = param->ema_params; cmd->buf_len = param->tmpl_len; WMI_BEACON_PROTECTION_EN_SET(cmd->feature_enable_bitmap, @@ -6772,6 +6773,9 @@ void wmi_copy_resource_config(wmi_resource_config *resource_cfg, * and it can support 6Ghz. */ resource_cfg->max_rnr_neighbours = MAX_SUPPORTED_NEIGHBORS; + resource_cfg->ema_max_vap_cnt = tgt_res_cfg->ema_max_vap_cnt; + resource_cfg->ema_max_profile_period = + tgt_res_cfg->ema_max_profile_period; if (tgt_res_cfg->atf_config) WMI_RSRC_CFG_FLAG_ATF_CONFIG_ENABLE_SET(resource_cfg->flag1, 1); if (tgt_res_cfg->mgmt_comp_evt_bundle_support) @@ -14443,6 +14447,7 @@ static void populate_tlv_service(uint32_t *wmi_service) wmi_service[wmi_service_wlm_stats_support] = WMI_SERVICE_WLM_STATS_REQUEST; wmi_service[wmi_service_infra_mbssid] = WMI_SERVICE_INFRA_MBSSID; + wmi_service[wmi_service_ema_ap_support] = WMI_SERVICE_EMA_AP_SUPPORT; wmi_service[wmi_service_ul_ru26_allowed] = WMI_SERVICE_UL_RU26_ALLOWED; wmi_service[wmi_service_cfr_capture_support] = WMI_SERVICE_CFR_CAPTURE_SUPPORT;