Browse Source

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
Gyanranjan Hazarika 5 years ago
parent
commit
bf7b89c52b
2 changed files with 10 additions and 0 deletions
  1. 5 0
      wmi/inc/wmi_unified_param.h
  2. 5 0
      wmi/src/wmi_unified_tlv.c

+ 5 - 0
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;
 
 /**

+ 5 - 0
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;