Browse Source

qcacld-3.0: Optimize bmiss vdev set param command frequency

Currently host sends bmiss set param commands
separately to firmware.
Combine bmiss set params send to WMI to reduce
number of transactions.
Also replace target wmi vdev params with host wmi
vdev params to fix existing broken layering
violation.

Change-Id: I5867ee76f68abf462becafc1f5f80c422c239f4b
CRs-Fixed: 3333237
Divyajyothi Goparaju 2 years ago
parent
commit
611a226bbf

+ 97 - 41
components/target_if/connection_mgr/src/target_if_cm_roam_offload.c

@@ -565,6 +565,28 @@ static QDF_STATUS target_if_cm_roam_scan_offload_mode(
 						      rso_mode_cfg);
 }
 
+static
+QDF_STATUS target_if_check_index_setparam(struct dev_set_param *param,
+					  uint32_t paramid,
+					  uint32_t paramvalue,
+					  uint8_t index, uint8_t n_params)
+{
+	if (index >= n_params) {
+		target_if_err("Index:%d OOB to fill param", index);
+		return QDF_STATUS_E_FAILURE;
+	}
+	param[index].param_id = paramid;
+	param[index].param_value = paramvalue;
+	return QDF_STATUS_SUCCESS;
+}
+
+#define MAX_PARAMS_CM_ROAM_SCAN_BMISS 2
+/*
+ * params being sent:
+ * wmi_vdev_param_bmiss_first_bcnt
+ * wmi_vdev_param_bmiss_final_bcnt
+ */
+
 /**
  * target_if_cm_roam_scan_bmiss_cnt() - set bmiss count to fw
  * @wmi_handle: wmi handle
@@ -579,38 +601,51 @@ target_if_cm_roam_scan_bmiss_cnt(wmi_unified_t wmi_handle,
 				 struct wlan_roam_beacon_miss_cnt *req)
 {
 	QDF_STATUS status;
-	uint32_t vdev_id;
-	uint8_t first_bcnt;
-	uint8_t final_bcnt;
-
-	vdev_id = req->vdev_id;
-	first_bcnt = req->roam_bmiss_first_bcnt;
-	final_bcnt = req->roam_bmiss_final_bcnt;
+	struct dev_set_param setparam[MAX_PARAMS_CM_ROAM_SCAN_BMISS];
+	struct set_multiple_pdev_vdev_param params = {};
+	uint8_t index = 0;
+
+	target_if_debug("vdev_id:%d, first_bcnt: %d, final_bcnt: %d",
+			req->vdev_id, req->roam_bmiss_first_bcnt,
+			req->roam_bmiss_final_bcnt);
+
+	status = target_if_check_index_setparam(
+					   setparam,
+					   wmi_vdev_param_bmiss_first_bcnt,
+					   req->roam_bmiss_first_bcnt,
+					   index++,
+					   MAX_PARAMS_CM_ROAM_SCAN_BMISS);
+	if (QDF_IS_STATUS_ERROR(status))
+		goto error;
 
-	target_if_debug("vdev_id %d first_bcnt: %d, final_bcnt: %d", vdev_id,
-			first_bcnt, final_bcnt);
+	status = target_if_check_index_setparam(
+					   setparam,
+					   wmi_vdev_param_bmiss_final_bcnt,
+					   req->roam_bmiss_final_bcnt, index++,
+					   MAX_PARAMS_CM_ROAM_SCAN_BMISS);
+	if (QDF_IS_STATUS_ERROR(status))
+		goto error;
 
-	status = target_if_vdev_set_param(wmi_handle, vdev_id,
-					  WMI_VDEV_PARAM_BMISS_FIRST_BCNT,
-					  first_bcnt);
-	if (QDF_IS_STATUS_ERROR(status)) {
-		target_if_err("vdev set WMI_VDEV_PARAM_BMISS_FIRST_BCNT params returned error %d",
-			      status);
-		return status;
-	}
+	params.param_type = MLME_VDEV_SETPARAM;
+	params.dev_id = req->vdev_id;
+	params.n_params = index;
+	params.params = setparam;
 
-	status = target_if_vdev_set_param(wmi_handle, vdev_id,
-					  WMI_VDEV_PARAM_BMISS_FINAL_BCNT,
-					  final_bcnt);
-	if (QDF_IS_STATUS_ERROR(status)) {
-		target_if_err("vdev set WMI_VDEV_PARAM_BMISS_FINAL_BCNT params returned error %d",
-			      status);
-		return status;
-	}
+	status = wmi_unified_multiple_vdev_param_send(wmi_handle, &params);
+	if (QDF_IS_STATUS_ERROR(status))
+		target_if_err("failed to set bmiss first,final bcntset params");
 
+error:
 	return status;
 }
 
+#define MAX_PARAMS_CM_ROAM_SCAN_BMISS_TIMEOUT 2
+/*
+ * params being sent:
+ * wmi_vdev_param_bmiss_first_bcnt
+ * wmi_vdev_param_bmiss_final_bcnt
+ */
+
 /**
  * target_if_cm_roam_scan_bmiss_timeout() - set conbmiss timeout to fw
  * @wmi_handle: wmi handle
@@ -628,6 +663,9 @@ target_if_cm_roam_scan_bmiss_timeout(wmi_unified_t wmi_handle,
 	uint32_t vdev_id;
 	uint8_t bmiss_timeout_onwakeup;
 	uint8_t bmiss_timeout_onsleep;
+	struct dev_set_param setparam[MAX_PARAMS_CM_ROAM_SCAN_BMISS_TIMEOUT];
+	struct set_multiple_pdev_vdev_param params = {};
+	uint8_t index = 0;
 
 	vdev_id = req->vdev_id;
 	bmiss_timeout_onwakeup = req->bmiss_timeout_onwakeup;
@@ -635,21 +673,38 @@ target_if_cm_roam_scan_bmiss_timeout(wmi_unified_t wmi_handle,
 
 	target_if_debug("vdev_id %d bmiss_timeout_onwakeup: %dsec, bmiss_timeout_onsleep: %dsec", vdev_id,
 			bmiss_timeout_onwakeup, bmiss_timeout_onsleep);
+	status = target_if_check_index_setparam(
+					setparam,
+					wmi_vdev_param_final_bmiss_time_sec,
+					req->bmiss_timeout_onwakeup, index++,
+					MAX_PARAMS_CM_ROAM_SCAN_BMISS_TIMEOUT);
+	if (QDF_IS_STATUS_ERROR(status))
+		goto error;
 
-	status = target_if_vdev_set_param(wmi_handle, vdev_id,
-					  WMI_VDEV_PARAM_FINAL_BMISS_TIME_SEC,
-					  bmiss_timeout_onwakeup);
+	status = target_if_check_index_setparam(
+					setparam,
+					wmi_vdev_param_final_bmiss_time_wow_sec,
+					req->bmiss_timeout_onsleep, index++,
+					MAX_PARAMS_CM_ROAM_SCAN_BMISS_TIMEOUT);
+	if (QDF_IS_STATUS_ERROR(status))
+		goto error;
 
-	status = target_if_vdev_set_param(wmi_handle, vdev_id,
-					  WMI_VDEV_PARAM_FINAL_BMISS_TIME_WOW_SEC,
-					  bmiss_timeout_onsleep);
+	params.param_type = MLME_VDEV_SETPARAM;
+	params.dev_id = req->vdev_id;
+	params.n_params = index;
+	params.params = setparam;
+	status = wmi_unified_multiple_vdev_param_send(wmi_handle, &params);
+	if (QDF_IS_STATUS_ERROR(status))
+		target_if_err("failed to set bmiss first,final bcntset params");
 
+error:
 	return status;
 }
 
 #ifdef WLAN_FEATURE_ROAM_OFFLOAD
-/* target_if_cm_roam_reason_vsie(): set vdev param
- * WMI_VDEV_PARAM_ENABLE_DISABLE_ROAM_REASON_VSIE
+/**
+ * target_if_cm_roam_reason_vsie() - set vdev param
+ * wmi_vdev_param_enable_disable_roam_reason_vsie
  * @wmi_handle: handle to WMI
  * @req: roam reason vsie enable parameters
  *
@@ -664,15 +719,16 @@ target_if_cm_roam_reason_vsie(wmi_unified_t wmi_handle,
 	status = target_if_vdev_set_param(
 				wmi_handle,
 				req->vdev_id,
-				WMI_VDEV_PARAM_ENABLE_DISABLE_ROAM_REASON_VSIE,
+				wmi_vdev_param_enable_disable_roam_reason_vsie,
 				req->enable_roam_reason_vsie);
 
 	if (QDF_IS_STATUS_ERROR(status))
 		target_if_err("Failed to set vdev param %d",
-			      WMI_VDEV_PARAM_ENABLE_DISABLE_ROAM_REASON_VSIE);
+			      wmi_vdev_param_enable_disable_roam_reason_vsie);
 }
 
-/* target_if_cm_roam_triggers(): send roam triggers to WMI
+/**
+ * target_if_cm_roam_triggers() - send roam triggers to WMI
  * @vdev: vdev
  * @req: roam triggers parameters
  *
@@ -1221,14 +1277,14 @@ target_if_get_wmi_roam_offload_flag(uint32_t flag)
 
 	if (flag & WLAN_ROAM_SKIP_EAPOL_4WAY_HANDSHAKE)
 		roam_offload_flag |=
-			WMI_VDEV_PARAM_SKIP_ROAM_EAPOL_4WAY_HANDSHAKE;
+			wmi_vdev_param_skip_roam_eapol_4way_handshake;
 
 	if (flag & WLAN_ROAM_BMISS_FINAL_SCAN_TYPE)
 		roam_offload_flag |= WMI_ROAM_BMISS_FINAL_SCAN_TYPE_FLAG;
 
 	if (flag & WLAN_ROAM_SKIP_SAE_ROAM_4WAY_HANDSHAKE)
 		roam_offload_flag |=
-			WMI_VDEV_PARAM_SKIP_SAE_ROAM_4WAY_HANDSHAKE;
+				wmi_vdev_param_skip_sae_roam_4way_handshake;
 
 	return roam_offload_flag;
 }
@@ -1254,7 +1310,7 @@ target_if_cm_roam_send_roam_init(struct wlan_objmgr_vdev *vdev,
 
 	flag = target_if_get_wmi_roam_offload_flag(params->roam_offload_flag);
 	status = target_if_vdev_set_param(wmi_handle, params->vdev_id,
-					  WMI_VDEV_PARAM_ROAM_FW_OFFLOAD, flag);
+					  wmi_vdev_param_roam_fw_offload, flag);
 
 	return status;
 }
@@ -2021,11 +2077,11 @@ target_if_cm_roam_send_disable_config(struct wlan_objmgr_vdev *vdev,
 	status = target_if_vdev_set_param(
 				wmi_handle,
 				req->vdev_id,
-				WMI_VDEV_PARAM_ROAM_11KV_CTRL,
+				wmi_vdev_param_roam_11kv_ctrl,
 				req->cfg);
 
 	if (QDF_IS_STATUS_ERROR(status))
-		target_if_err("Failed to set WMI_VDEV_PARAM_ROAM_11KV_CTRL");
+		target_if_err("Failed to set wmi_vdev_param_roam_11kv_ctrl");
 
 end:
 	return status;

+ 24 - 0
core/sme/inc/sme_api.h

@@ -406,6 +406,30 @@ struct wlan_objmgr_vdev *sme_vdev_create(mac_handle_t mac_handle,
 QDF_STATUS sme_vdev_post_vdev_create_setup(mac_handle_t mac_handle,
 					   struct wlan_objmgr_vdev *vdev);
 
+/**
+ * sme_send_multi_pdev_vdev_set_params() - setup lower layers for the new vdev
+ * @param_type: enum of type mlme_dev_setparam
+ * @dev_id: stores device(pdev/vdev) id
+ * @param: points to an array of @n_params
+ * @n_params: stores number params that we are sending together with @param
+ * Return: QDF_STATUS
+ */
+QDF_STATUS
+sme_send_multi_pdev_vdev_set_params(enum mlme_dev_setparam param_type,
+				    uint8_t dev_id,
+				    struct dev_set_param *param,
+				    uint8_t n_params);
+
+/**
+ * sme_validate_txrx_chain_mask() - validates txrx chain mask
+ * @paramid: Rx/Tx chain mask param id
+ * @paramvalue: param value
+ *
+ * Return: QDF_STATUS
+ */
+QDF_STATUS
+sme_validate_txrx_chain_mask(uint32_t paramid, uint32_t paramvalue);
+
 /**
  * sme_vdev_set_data_tx_callback() - Set dp vdev tx callback
  * @vdev: Object manager vdev

+ 31 - 15
core/sme/src/common/sme_api.c

@@ -7777,7 +7777,7 @@ int sme_set_auto_rate_he_ltf(mac_handle_t mac_handle, uint8_t session_id,
 
 	mac_ctx->he_sgi_ltf_cfg_bit_mask = set_val;
 	status = wma_cli_set_command(session_id,
-			WMI_VDEV_PARAM_AUTORATE_MISC_CFG,
+			wmi_vdev_param_autorate_misc_cfg,
 			set_val, VDEV_CMD);
 	if (status) {
 		sme_err("failed to set he_ltf_sgi");
@@ -7811,7 +7811,7 @@ int sme_set_auto_rate_he_sgi(mac_handle_t mac_handle, uint8_t session_id,
 
 	mac_ctx->he_sgi_ltf_cfg_bit_mask = set_val;
 	status = wma_cli_set_command(session_id,
-				     WMI_VDEV_PARAM_AUTORATE_MISC_CFG,
+				     wmi_vdev_param_autorate_misc_cfg,
 				     set_val, VDEV_CMD);
 	if (status) {
 		sme_err("failed to set he_ltf_sgi");
@@ -7836,7 +7836,7 @@ int sme_set_auto_rate_ldpc(mac_handle_t mac_handle, uint8_t session_id,
 	set_val |= (ldpc_disable << AUTO_RATE_LDPC_DIS_BIT);
 
 	status = wma_cli_set_command(session_id,
-				     WMI_VDEV_PARAM_AUTORATE_MISC_CFG,
+				     wmi_vdev_param_autorate_misc_cfg,
 				     set_val, VDEV_CMD);
 	if (status) {
 		sme_err("failed to set auto rate LDPC cfg");
@@ -11696,8 +11696,8 @@ QDF_STATUS sme_set_peer_authorized(uint8_t *peer_addr,
 		return QDF_STATUS_E_FAILURE;
 
 	wma_set_peer_authorized_cb(wma_handle, auth_cb);
-	return wma_set_peer_param(wma_handle, peer_addr, WMI_PEER_AUTHORIZE,
-				  1, vdev_id);
+	return wma_set_peer_param(wma_handle, peer_addr,
+				  WMI_HOST_PEER_AUTHORIZE, 1, vdev_id);
 }
 
 /**
@@ -11926,7 +11926,7 @@ QDF_STATUS sme_handle_bcn_recv_start(mac_handle_t mac_handle,
 	 * beacons of connected AP to HOST
 	 */
 	ret = sme_cli_set_command(vdev_id,
-				  WMI_VDEV_PARAM_NTH_BEACON_TO_HOST,
+				  wmi_vdev_param_nth_beacon_to_host,
 				  nth_value, VDEV_CMD);
 	if (ret) {
 		status = sme_acquire_global_lock(&mac_ctx->sme);
@@ -11935,7 +11935,7 @@ QDF_STATUS sme_handle_bcn_recv_start(mac_handle_t mac_handle,
 			session->beacon_report_do_not_resume = false;
 			sme_release_global_lock(&mac_ctx->sme);
 		}
-		sme_err("WMI_VDEV_PARAM_NTH_BEACON_TO_HOST %d", ret);
+		sme_err("wmi_vdev_param_nth_beacon_to_host %d", ret);
 		status = qdf_status_from_os_return(ret);
 	}
 
@@ -11956,10 +11956,10 @@ void sme_stop_beacon_report(mac_handle_t mac_handle, uint32_t session_id)
 	}
 
 	ret = sme_cli_set_command(session_id,
-				  WMI_VDEV_PARAM_NTH_BEACON_TO_HOST, 0,
+				  wmi_vdev_param_nth_beacon_to_host, 0,
 				  VDEV_CMD);
 	if (ret)
-		sme_err("WMI_VDEV_PARAM_NTH_BEACON_TO_HOST command failed to FW");
+		sme_err("wmi_vdev_param_nth_beacon_to_host command failed to FW");
 	status = sme_acquire_global_lock(&mac_ctx->sme);
 	if (QDF_IS_STATUS_SUCCESS(status)) {
 		session->is_bcn_recv_start = false;
@@ -13847,7 +13847,7 @@ int sme_set_enable_mem_deep_sleep(mac_handle_t mac_handle, int vdev_id)
 {
 	struct mac_context *mac_ctx = MAC_CONTEXT(mac_handle);
 
-	return wma_cli_set_command(vdev_id, WMI_PDEV_PARAM_HYST_EN,
+	return wma_cli_set_command(vdev_id, wmi_pdev_param_hyst_en,
 				   mac_ctx->mlme_cfg->gen.memory_deep_sleep,
 				   PDEV_CMD);
 }
@@ -13857,7 +13857,7 @@ int sme_set_cck_tx_fir_override(mac_handle_t mac_handle, int vdev_id)
 	struct mac_context *mac_ctx = MAC_CONTEXT(mac_handle);
 
 	return wma_cli_set_command(vdev_id,
-				   WMI_PDEV_PARAM_ENABLE_CCK_TXFIR_OVERRIDE,
+				   wmi_pdev_param_enable_cck_txfir_override,
 				   mac_ctx->mlme_cfg->gen.cck_tx_fir_override,
 				   PDEV_CMD);
 }
@@ -14532,7 +14532,7 @@ void sme_set_cfg_disable_tx(mac_handle_t mac_handle, uint8_t vdev_id,
 	}
 
 	ret_val = wma_cli_set_command(vdev_id,
-			WMI_VDEV_PARAM_PROHIBIT_DATA_MGMT,
+			wmi_vdev_param_prohibit_data_mgmt,
 			val, VDEV_CMD);
 	if (ret_val)
 		sme_err("Failed to set firmware, errno %d", ret_val);
@@ -14628,7 +14628,7 @@ void sme_check_enable_ru_242_tx(mac_handle_t mac_handle, uint8_t vdev_id)
 	sme_debug("Config VDEV for RU 242 Tx, usr cfg %d",
 		  mac_ctx->usr_cfg_ru_242_tone_tx);
 	if (mac_ctx->usr_cfg_ru_242_tone_tx) {
-		ret = wma_cli_set_command(vdev_id, WMI_VDEV_PARAM_CHWIDTH,
+		ret = wma_cli_set_command(vdev_id, wmi_vdev_param_chwidth,
 					  0, VDEV_CMD);
 		if (ret)
 			sme_err("Failed to set VDEV BW to 20MHz");
@@ -14731,7 +14731,7 @@ void sme_set_he_testbed_def(mac_handle_t mac_handle, uint8_t vdev_id)
 	if (QDF_STATUS_SUCCESS != status)
 		sme_err("prevent pm cmd send failed");
 	status = wma_cli_set_command(vdev_id,
-				     WMI_VDEV_PARAM_ENABLE_BCAST_PROBE_RESPONSE,
+				     wmi_vdev_param_enable_bcast_probe_response,
 				     0, VDEV_CMD);
 	if (QDF_IS_STATUS_ERROR(status))
 		sme_err("Failed to set enable bcast probe resp in FW, %d",
@@ -14779,7 +14779,7 @@ void sme_reset_he_caps(mac_handle_t mac_handle, uint8_t vdev_id)
 			status);
 
 	status = wma_cli_set_command(vdev_id,
-				     WMI_VDEV_PARAM_ENABLE_BCAST_PROBE_RESPONSE,
+				     wmi_vdev_param_enable_bcast_probe_response,
 				     1, VDEV_CMD);
 	if (QDF_IS_STATUS_ERROR(status))
 		sme_err("Failed to set enable bcast probe resp in FW, %d",
@@ -16358,3 +16358,19 @@ QDF_STATUS sme_update_beacon_country_ie(mac_handle_t mac_handle,
 
 	return QDF_STATUS_SUCCESS;
 }
+
+QDF_STATUS
+sme_send_multi_pdev_vdev_set_params(enum mlme_dev_setparam param_type,
+				    uint8_t dev_id,
+				    struct dev_set_param *param,
+				    uint8_t max_index)
+{
+	return wma_send_multi_pdev_vdev_set_params(param_type, dev_id, param,
+						   max_index);
+}
+
+QDF_STATUS
+sme_validate_txrx_chain_mask(uint32_t id, uint32_t value)
+{
+	return wma_validate_txrx_chain_mask(id, value);
+}

+ 43 - 6
core/wma/inc/wma_api.h

@@ -370,7 +370,7 @@ wma_set_tx_rx_aggr_size_per_ac(WMA_HANDLE wma_handle,
 			       wmi_vdev_custom_aggr_type_t aggr_type);
 
 /**
- * wma_set_sw_retry_threshold() - set sw retry threshold per vdev
+ * wma_set_vdev_sw_retry_th() - set sw retry threshold per vdev
  * @vdev_id: vdev id
  * @sw_retry_count: sw retry number
  * @retry_type: SW vdev retry type
@@ -396,18 +396,16 @@ QDF_STATUS wma_set_vdev_sw_retry_th(uint8_t vdev_id, uint8_t sw_retry_count,
 QDF_STATUS wma_set_sw_retry_threshold_per_ac
 	(WMA_HANDLE handle,
 	 uint8_t vdev_id, struct wlan_mlme_qos *qos_aggr);
+
 /**
  * wma_set_sw_retry_threshold() - set sw retry threshold for tx
- * @vdev_id: vdev
- * @retry: retry number
- * @param_id: aggregrate sw retry threshold param id
+ * @qos_aggr: pointer to wlan_mlme_qos
  *
  * This function sends WMI command to set the sw retry threshold for Tx.
  *
  * Return: QDF_STATUS.
  */
-QDF_STATUS wma_set_sw_retry_threshold(uint8_t vdev_id, uint32_t retry,
-				      uint32_t param_id);
+QDF_STATUS wma_set_sw_retry_threshold(struct wlan_mlme_qos *qos_aggr);
 
 /**
  * wma_get_sar_limit() - get SAR limits from the target
@@ -685,6 +683,45 @@ QDF_STATUS wma_sta_mlme_vdev_down_send(struct vdev_mlme_obj *vdev_mlme,
  */
 QDF_STATUS wma_post_vdev_create_setup(struct wlan_objmgr_vdev *vdev);
 
+/**
+ * wma_vdev_create_set_param() - vdev_create_set_param
+ * @vdev: vdev obj
+ *
+ * This API is invoked after vdev is created to perform post
+ * vdev create operations i.e. creating peer and setting vdev params.
+ *
+ * Return: SUCCESS on successful post vdev operations, FAILURE, if it
+ *         fails due to any
+ */
+QDF_STATUS wma_vdev_create_set_param(struct wlan_objmgr_vdev *vdev);
+
+/**
+ * wma_send_multi_pdev_vdev_set_params - sends dev(vdev/pdev) set params
+ * @param_type: enum of type mlme_dev_setparam
+ * @dev_id: id of the perticular vdev/pdev
+ * @param: Array of structure dev_set_param with @n_params combined
+ * @n_params: number of params that are combined in @param
+ *
+ * Return: SUCCESS on successful post vdev operations, FAILURE, if it
+ *         fails due to any
+ */
+QDF_STATUS
+wma_send_multi_pdev_vdev_set_params(enum mlme_dev_setparam param_type,
+				    uint8_t dev_id,
+				    struct dev_set_param *param,
+				    uint8_t n_params);
+
+/**
+ * wma_validate_txrx_chain_mask - validates tx/rx chain mask set params
+ * @paramid: paramid of chainmask
+ * @paramvalue: param value
+ *
+ * Return: SUCCESS on successful post vdev operations, FAILURE, if it
+ *         fails due to any
+ */
+QDF_STATUS
+wma_validate_txrx_chain_mask(uint32_t paramid, uint32_t paramvalue);
+
 /**
  * wma_vdev_set_data_tx_callback() - Set dp vdev tx callback
  * @vdev: vdev obj

+ 21 - 4
core/wma/inc/wma_he.h

@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2017-2020 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved.
  *
  * Permission to use, copy, modify, and/or distribute this software for
  * any purpose with or without fee is hereby granted, provided that the
@@ -147,6 +148,15 @@ void wma_update_vdev_he_ops(uint32_t *he_ops, tDot11fIEhe_op *he_op);
 #define HE_MUBFEE 2
 #define HE_MUBFER 3
 
+/**
+ * wma_get_hemu_mode() - get hemu mode
+ * @hemumode: pointer to have hemumode
+ * @mac: pointer to mac context
+ *
+ * Return: Success on proper hemumode else failure
+ */
+QDF_STATUS wma_get_hemu_mode(uint32_t *hemumode, struct mac_context *mac);
+
 /**
  * wma_set_he_txbf_params() - set HE Tx beamforming params to FW
  * @vdev_id: VDEV id
@@ -230,7 +240,8 @@ QDF_STATUS wma_get_he_capabilities(struct he_capability *he_cap);
  *
  * Result: None
  */
-void wma_set_he_vdev_param(struct wma_txrx_node *intr, WMI_VDEV_PARAM param_id,
+void wma_set_he_vdev_param(struct wma_txrx_node *intr,
+			   wmi_conv_vdev_param_id param_id,
 			   uint32_t value);
 
 /**
@@ -241,7 +252,7 @@ void wma_set_he_vdev_param(struct wma_txrx_node *intr, WMI_VDEV_PARAM param_id,
  * Result: param value
  */
 uint32_t wma_get_he_vdev_param(struct wma_txrx_node *intr,
-			       WMI_VDEV_PARAM param_id);
+			       wmi_conv_vdev_param_id param_id);
 
 #else
 static inline void wma_print_he_cap(tDot11fIEhe_cap *he_cap)
@@ -291,6 +302,12 @@ void wma_update_vdev_he_ops(uint32_t *he_ops, tDot11fIEhe_op *he_op)
 {
 }
 
+static inline QDF_STATUS wma_get_hemu_mode(uint32_t *hemumode,
+					   struct mac_context *mac)
+{
+	return QDF_STATUS_E_FAILURE;
+}
+
 static inline void wma_set_he_txbf_params(uint8_t vdev_id, bool su_bfer,
 					  bool su_bfee, bool mu_bfer)
 {
@@ -323,12 +340,12 @@ static inline bool wma_is_peer_he_capable(tpAddStaParams params)
 }
 
 static inline void wma_set_he_vdev_param(struct wma_txrx_node *intr,
-			WMI_VDEV_PARAM param_id, uint32_t value)
+			wmi_conv_vdev_param_id param_id, uint32_t value)
 {
 }
 
 static inline uint32_t wma_get_he_vdev_param(struct wma_txrx_node *intr,
-					     WMI_VDEV_PARAM param_id)
+					     wmi_conv_vdev_param_id param_id)
 {
 	return 0;
 }