qcacld-3.0: Combine process_rate_update set param
Currently wma_process_rate_update_indicate sends two vdev set params separately to firmware. Combine two vdev set params of wma_process_rate_update_indicate, send to WMI to reduce number of transactions. Also replace target wmi pdev/vdev params with host wmi pdev/vdev params to fix existing broken layering violation. Change-Id: Icc50569bcc851c5ee269558b80a560b03e1fdcee CRs-Fixed: 3333758
This commit is contained in:

committed by
Madan Koyyalamudi

parent
5f85944f38
commit
c9808c04b6
@@ -1,5 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2017-2021 The Linux Foundation. All rights reserved.
|
* Copyright (c) 2017-2021 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
|
* Permission to use, copy, modify, and/or distribute this software for
|
||||||
* any purpose with or without fee is hereby granted, provided that the
|
* any purpose with or without fee is hereby granted, provided that the
|
||||||
@@ -62,16 +63,16 @@ QDF_STATUS target_if_pmo_send_vdev_update_param_req(
|
|||||||
|
|
||||||
switch (param_id) {
|
switch (param_id) {
|
||||||
case pmo_vdev_param_listen_interval:
|
case pmo_vdev_param_listen_interval:
|
||||||
param_id = WMI_VDEV_PARAM_LISTEN_INTERVAL;
|
param_id = wmi_vdev_param_listen_interval;
|
||||||
break;
|
break;
|
||||||
case pmo_vdev_param_dtim_policy:
|
case pmo_vdev_param_dtim_policy:
|
||||||
param_id = WMI_VDEV_PARAM_DTIM_POLICY;
|
param_id = wmi_vdev_param_dtim_policy;
|
||||||
break;
|
break;
|
||||||
case pmo_vdev_param_forced_dtim_count:
|
case pmo_vdev_param_forced_dtim_count:
|
||||||
param_id = WMI_VDEV_PARAM_FORCE_DTIM_CNT;
|
param_id = wmi_vdev_param_force_dtim_cnt;
|
||||||
break;
|
break;
|
||||||
case pmo_vdev_param_moddtim:
|
case pmo_vdev_param_moddtim:
|
||||||
param_id = WMI_VDEV_PARAM_MODDTIM_CNT;
|
param_id = wmi_vdev_param_moddtim_cnt;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
target_if_err("invalid vdev param id %d", param_id);
|
target_if_err("invalid vdev param id %d", param_id);
|
||||||
|
@@ -137,7 +137,7 @@ target_if_twt_ac_param_send(struct wlan_objmgr_psoc *psoc,
|
|||||||
return QDF_STATUS_E_NULL_VALUE;
|
return QDF_STATUS_E_NULL_VALUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
params.param_id = WMI_PDEV_PARAM_TWT_AC_CONFIG;
|
params.param_id = wmi_pdev_param_twt_ac_config;
|
||||||
params.param_value = target_if_twt_convert_ac_value(twt_ac);
|
params.param_value = target_if_twt_convert_ac_value(twt_ac);
|
||||||
|
|
||||||
return wmi_unified_pdev_param_send(wmi_handle, ¶ms, mac_id);
|
return wmi_unified_pdev_param_send(wmi_handle, ¶ms, mac_id);
|
||||||
|
@@ -2152,7 +2152,7 @@ int hdd_update_channel_width(struct hdd_adapter *adapter,
|
|||||||
if (!sme_config)
|
if (!sme_config)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
ret = wma_cli_set_command(adapter->vdev_id, WMI_VDEV_PARAM_CHWIDTH,
|
ret = wma_cli_set_command(adapter->vdev_id, wmi_vdev_param_chwidth,
|
||||||
chwidth, VDEV_CMD);
|
chwidth, VDEV_CMD);
|
||||||
if (ret)
|
if (ret)
|
||||||
goto free_config;
|
goto free_config;
|
||||||
|
@@ -907,7 +907,7 @@ void wma_set_vht_txbf_cfg(struct mac_context *mac, uint8_t vdev_id)
|
|||||||
txbf_en.sutxbfer = mac->mlme_cfg->vht_caps.vht_cap_info.su_bformer;
|
txbf_en.sutxbfer = mac->mlme_cfg->vht_caps.vht_cap_info.su_bformer;
|
||||||
|
|
||||||
status = wma_vdev_set_param(wma->wmi_handle, vdev_id,
|
status = wma_vdev_set_param(wma->wmi_handle, vdev_id,
|
||||||
WMI_VDEV_PARAM_TXBF,
|
wmi_vdev_param_txbf,
|
||||||
*((A_UINT8 *)&txbf_en));
|
*((A_UINT8 *)&txbf_en));
|
||||||
if (QDF_IS_STATUS_ERROR(status))
|
if (QDF_IS_STATUS_ERROR(status))
|
||||||
wma_err("failed to set VHT TXBF(status = %d)", status);
|
wma_err("failed to set VHT TXBF(status = %d)", status);
|
||||||
@@ -940,7 +940,7 @@ int32_t wmi_unified_send_txbf(tp_wma_handle wma, tpAddStaParams params)
|
|||||||
|
|
||||||
return wma_vdev_set_param(wma->wmi_handle,
|
return wma_vdev_set_param(wma->wmi_handle,
|
||||||
params->smesessionId,
|
params->smesessionId,
|
||||||
WMI_VDEV_PARAM_TXBF,
|
wmi_vdev_param_txbf,
|
||||||
*((A_UINT8 *) &txbf_en));
|
*((A_UINT8 *) &txbf_en));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1262,6 +1262,11 @@ QDF_STATUS wma_set_mcc_channel_time_quota(tp_wma_handle wma,
|
|||||||
chan2_freq);
|
chan2_freq);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define MAX_VDEV_PROCESS_RATE_PARAMS 2
|
||||||
|
/* params being sent:
|
||||||
|
* wmi_vdev_param_sgi
|
||||||
|
* wmi_vdev_param_mcast_data_rate
|
||||||
|
*/
|
||||||
QDF_STATUS wma_process_rate_update_indicate(tp_wma_handle wma,
|
QDF_STATUS wma_process_rate_update_indicate(tp_wma_handle wma,
|
||||||
tSirRateUpdateInd *
|
tSirRateUpdateInd *
|
||||||
pRateUpdateParams)
|
pRateUpdateParams)
|
||||||
@@ -1269,11 +1274,13 @@ QDF_STATUS wma_process_rate_update_indicate(tp_wma_handle wma,
|
|||||||
int32_t ret = 0;
|
int32_t ret = 0;
|
||||||
uint8_t vdev_id = 0;
|
uint8_t vdev_id = 0;
|
||||||
int32_t mbpsx10_rate = -1;
|
int32_t mbpsx10_rate = -1;
|
||||||
uint32_t paramId;
|
uint32_t paramid;
|
||||||
uint8_t rate = 0;
|
uint8_t rate = 0;
|
||||||
uint32_t short_gi, rate_flag;
|
uint32_t short_gi, rate_flag;
|
||||||
struct wma_txrx_node *intr = wma->interfaces;
|
struct wma_txrx_node *intr = wma->interfaces;
|
||||||
QDF_STATUS status;
|
QDF_STATUS status;
|
||||||
|
struct dev_set_param setparam[MAX_VDEV_PROCESS_RATE_PARAMS] = {};
|
||||||
|
uint8_t index = 0;
|
||||||
|
|
||||||
/* Get the vdev id */
|
/* Get the vdev id */
|
||||||
if (wma_find_vdev_id_by_addr(wma, pRateUpdateParams->bssid.bytes,
|
if (wma_find_vdev_id_by_addr(wma, pRateUpdateParams->bssid.bytes,
|
||||||
@@ -1299,16 +1306,16 @@ QDF_STATUS wma_process_rate_update_indicate(tp_wma_handle wma,
|
|||||||
*/
|
*/
|
||||||
if (pRateUpdateParams->reliableMcastDataRateTxFlag > 0) {
|
if (pRateUpdateParams->reliableMcastDataRateTxFlag > 0) {
|
||||||
mbpsx10_rate = pRateUpdateParams->reliableMcastDataRate;
|
mbpsx10_rate = pRateUpdateParams->reliableMcastDataRate;
|
||||||
paramId = WMI_VDEV_PARAM_MCAST_DATA_RATE;
|
paramid = wmi_vdev_param_mcast_data_rate;
|
||||||
if (pRateUpdateParams->
|
if (pRateUpdateParams->
|
||||||
reliableMcastDataRateTxFlag & TX_RATE_SGI)
|
reliableMcastDataRateTxFlag & TX_RATE_SGI)
|
||||||
short_gi = 1; /* upper layer specified short GI */
|
short_gi = 1; /* upper layer specified short GI */
|
||||||
} else if (pRateUpdateParams->bcastDataRate > -1) {
|
} else if (pRateUpdateParams->bcastDataRate > -1) {
|
||||||
mbpsx10_rate = pRateUpdateParams->bcastDataRate;
|
mbpsx10_rate = pRateUpdateParams->bcastDataRate;
|
||||||
paramId = WMI_VDEV_PARAM_BCAST_DATA_RATE;
|
paramid = wmi_vdev_param_bcast_data_rate;
|
||||||
} else {
|
} else {
|
||||||
mbpsx10_rate = pRateUpdateParams->mcastDataRate24GHz;
|
mbpsx10_rate = pRateUpdateParams->mcastDataRate24GHz;
|
||||||
paramId = WMI_VDEV_PARAM_MCAST_DATA_RATE;
|
paramid = wmi_vdev_param_mcast_data_rate;
|
||||||
if (pRateUpdateParams->
|
if (pRateUpdateParams->
|
||||||
mcastDataRate24GHzTxFlag & TX_RATE_SGI)
|
mcastDataRate24GHzTxFlag & TX_RATE_SGI)
|
||||||
short_gi = 1; /* upper layer specified short GI */
|
short_gi = 1; /* upper layer specified short GI */
|
||||||
@@ -1327,23 +1334,28 @@ QDF_STATUS wma_process_rate_update_indicate(tp_wma_handle wma,
|
|||||||
qdf_mem_free(pRateUpdateParams);
|
qdf_mem_free(pRateUpdateParams);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
status = wma_vdev_set_param(wma->wmi_handle, vdev_id,
|
|
||||||
WMI_VDEV_PARAM_SGI, short_gi);
|
ret = mlme_check_index_setparam(setparam, wmi_vdev_param_sgi, short_gi,
|
||||||
|
index++, MAX_VDEV_PROCESS_RATE_PARAMS);
|
||||||
if (QDF_IS_STATUS_ERROR(status)) {
|
if (QDF_IS_STATUS_ERROR(status)) {
|
||||||
wma_err("Fail to Set WMI_VDEV_PARAM_SGI(%d), status = %d",
|
wma_debug("failed at wmi_vdev_param_sgi");
|
||||||
short_gi, status);
|
goto error;
|
||||||
qdf_mem_free(pRateUpdateParams);
|
|
||||||
return status;
|
|
||||||
}
|
|
||||||
status = wma_vdev_set_param(wma->wmi_handle,
|
|
||||||
vdev_id, paramId, rate);
|
|
||||||
qdf_mem_free(pRateUpdateParams);
|
|
||||||
if (QDF_IS_STATUS_ERROR(status)) {
|
|
||||||
wma_err("Fail to Set rate, status = %d", status);
|
|
||||||
return status;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return QDF_STATUS_SUCCESS;
|
ret = mlme_check_index_setparam(setparam, paramid, rate, index++,
|
||||||
|
MAX_VDEV_PROCESS_RATE_PARAMS);
|
||||||
|
if (QDF_IS_STATUS_ERROR(status)) {
|
||||||
|
wma_debug("failed at paramid:%d", paramid);
|
||||||
|
goto error;
|
||||||
|
}
|
||||||
|
|
||||||
|
ret = wma_send_multi_pdev_vdev_set_params(MLME_VDEV_SETPARAM,
|
||||||
|
vdev_id, setparam, index);
|
||||||
|
if (QDF_IS_STATUS_ERROR(ret))
|
||||||
|
wma_debug("failed to send vdev set params");
|
||||||
|
error:
|
||||||
|
qdf_mem_free(pRateUpdateParams);
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Reference in New Issue
Block a user