mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-24 21:54:34 -04:00
qcacld-3.0: Remove wma_txrx_node params(tx_power,max_tx_power)
Target_if cleanup done for tx_power,max_tx_power params Use vdev_mlme_mgmt_generic params(tx_power,maxregpower) instead Change-Id: I3dc30bbce0026dc88f83009671851a70c1495b30 CRs-Fixed: 2555402
This commit is contained in:
parent
3ba129aff7
commit
5b738c23a3
6 changed files with 125 additions and 28 deletions
|
|
@ -167,6 +167,43 @@ mlme_set_mbssid_info(struct wlan_objmgr_vdev *vdev,
|
|||
void mlme_get_mbssid_info(struct wlan_objmgr_vdev *vdev,
|
||||
struct vdev_mlme_mbss_11ax *mbss_11ax);
|
||||
|
||||
/**
|
||||
* mlme_set_tx_power() - set tx power
|
||||
* @vdev: vdev pointer
|
||||
* @tx_power: tx power to be set
|
||||
*
|
||||
* Return: QDF_STATUS
|
||||
*/
|
||||
QDF_STATUS mlme_set_tx_power(struct wlan_objmgr_vdev *vdev,
|
||||
int8_t tx_power);
|
||||
|
||||
/**
|
||||
* mlme_get_tx_power() - get tx power
|
||||
* @vdev: vdev pointer
|
||||
* @tx_power: tx power info
|
||||
*
|
||||
* Return: None
|
||||
*/
|
||||
int8_t mlme_get_tx_power(struct wlan_objmgr_vdev *vdev);
|
||||
|
||||
/**
|
||||
* mlme_get_max_reg_power() - get max reg power
|
||||
* @vdev: vdev pointer
|
||||
*
|
||||
* Return: max reg power
|
||||
*/
|
||||
int8_t mlme_get_max_reg_power(struct wlan_objmgr_vdev *vdev);
|
||||
|
||||
/**
|
||||
* mlme_set_max_reg_power() - set max reg power
|
||||
* @vdev: vdev pointer
|
||||
* @max_tx_power: max tx power to be set
|
||||
*
|
||||
* Return: QDF_STATUS
|
||||
*/
|
||||
QDF_STATUS mlme_set_max_reg_power(struct wlan_objmgr_vdev *vdev,
|
||||
int8_t max_reg_power);
|
||||
|
||||
/**
|
||||
* mlme_is_vdev_in_beaconning_mode() - check if vdev is beaconing mode
|
||||
* @vdev_opmode: vdev opmode
|
||||
|
|
|
|||
|
|
@ -834,6 +834,66 @@ void mlme_get_mbssid_info(struct wlan_objmgr_vdev *vdev,
|
|||
mbss_11ax = &vdev_mlme->mgmt.mbss_11ax;
|
||||
}
|
||||
|
||||
QDF_STATUS mlme_set_tx_power(struct wlan_objmgr_vdev *vdev,
|
||||
int8_t tx_power)
|
||||
{
|
||||
struct vdev_mlme_obj *vdev_mlme;
|
||||
|
||||
vdev_mlme = wlan_vdev_mlme_get_cmpt_obj(vdev);
|
||||
|
||||
if (!vdev_mlme) {
|
||||
mlme_legacy_err("vdev component object is NULL");
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
vdev_mlme->mgmt.generic.tx_power = tx_power;
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
int8_t mlme_get_tx_power(struct wlan_objmgr_vdev *vdev)
|
||||
{
|
||||
struct vdev_mlme_obj *vdev_mlme;
|
||||
|
||||
vdev_mlme = wlan_vdev_mlme_get_cmpt_obj(vdev);
|
||||
if (!vdev_mlme) {
|
||||
mlme_legacy_err("vdev component object is NULL");
|
||||
return QDF_STATUS_E_INVAL;
|
||||
}
|
||||
|
||||
return vdev_mlme->mgmt.generic.tx_power;
|
||||
}
|
||||
|
||||
QDF_STATUS mlme_set_max_reg_power(struct wlan_objmgr_vdev *vdev,
|
||||
int8_t max_reg_power)
|
||||
{
|
||||
struct vdev_mlme_obj *vdev_mlme;
|
||||
|
||||
vdev_mlme = wlan_vdev_mlme_get_cmpt_obj(vdev);
|
||||
|
||||
if (!vdev_mlme) {
|
||||
mlme_legacy_err("vdev component object is NULL");
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
vdev_mlme->mgmt.generic.maxregpower = max_reg_power;
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
int8_t mlme_get_max_reg_power(struct wlan_objmgr_vdev *vdev)
|
||||
{
|
||||
struct vdev_mlme_obj *vdev_mlme;
|
||||
|
||||
vdev_mlme = wlan_vdev_mlme_get_cmpt_obj(vdev);
|
||||
if (!vdev_mlme) {
|
||||
mlme_legacy_err("vdev component object is NULL");
|
||||
return QDF_STATUS_E_INVAL;
|
||||
}
|
||||
|
||||
return vdev_mlme->mgmt.generic.maxregpower;
|
||||
}
|
||||
|
||||
/**
|
||||
* vdevmgr_mlme_ext_hdl_create () - Create mlme legacy priv object
|
||||
* @vdev_mlme: vdev mlme object
|
||||
|
|
|
|||
|
|
@ -716,8 +716,6 @@ struct wma_invalid_peer_params {
|
|||
* @nss: nss value
|
||||
* @is_channel_switch: is channel switch
|
||||
* @pause_bitmap: pause bitmap
|
||||
* @tx_power: tx power in dbm
|
||||
* @max_tx_power: max tx power in dbm
|
||||
* @nwType: network type (802.11a/b/g/n/ac)
|
||||
* @staKeyParams: sta key parameters
|
||||
* @ps_enabled: is powersave enable/disable
|
||||
|
|
@ -771,8 +769,6 @@ struct wma_txrx_node {
|
|||
enum tx_rate_info rate_flags;
|
||||
uint8_t nss;
|
||||
uint16_t pause_bitmap;
|
||||
int8_t tx_power;
|
||||
int8_t max_tx_power;
|
||||
uint32_t nwType;
|
||||
tSetStaKeyParams *staKeyParams;
|
||||
uint32_t peer_count;
|
||||
|
|
|
|||
|
|
@ -3345,7 +3345,7 @@ wma_vdev_set_bss_params(tp_wma_handle wma, int vdev_id,
|
|||
if (QDF_IS_STATUS_ERROR(ret))
|
||||
WMA_LOGE("failed to set WMI_VDEV_PARAM_TX_PWRLIMIT");
|
||||
else
|
||||
intr[vdev_id].max_tx_power = maxTxPower;
|
||||
mlme_set_max_reg_power(intr[vdev_id].vdev, maxTxPower);
|
||||
|
||||
/* Slot time */
|
||||
if (shortSlotTimeSupported)
|
||||
|
|
|
|||
|
|
@ -2082,8 +2082,6 @@ static void wma_state_info_dump(char **buf_ptr, uint16_t *size)
|
|||
"aid %d\n"
|
||||
"rate_flags %d\n"
|
||||
"nss %d\n"
|
||||
"tx_power %d\n"
|
||||
"max_tx_power %d\n"
|
||||
"nwType %d\n"
|
||||
"tx_streams %d",
|
||||
vdev_id,
|
||||
|
|
@ -2109,8 +2107,6 @@ static void wma_state_info_dump(char **buf_ptr, uint16_t *size)
|
|||
iface->aid,
|
||||
rate_flag,
|
||||
iface->nss,
|
||||
iface->tx_power,
|
||||
iface->max_tx_power,
|
||||
iface->nwType,
|
||||
iface->tx_streams);
|
||||
wlan_objmgr_vdev_release_ref(vdev, WLAN_LEGACY_WMA_ID);
|
||||
|
|
|
|||
|
|
@ -337,6 +337,8 @@ void wma_set_tx_power(WMA_HANDLE handle,
|
|||
uint8_t vdev_id;
|
||||
QDF_STATUS ret = QDF_STATUS_E_FAILURE;
|
||||
struct cdp_vdev *vdev;
|
||||
int8_t max_reg_power;
|
||||
struct wma_txrx_node *iface;
|
||||
|
||||
if (tx_pwr_params->dev_mode == QDF_SAP_MODE ||
|
||||
tx_pwr_params->dev_mode == QDF_P2P_GO_MODE) {
|
||||
|
|
@ -362,23 +364,25 @@ void wma_set_tx_power(WMA_HANDLE handle,
|
|||
return;
|
||||
}
|
||||
|
||||
iface = &wma_handle->interfaces[vdev_id];
|
||||
if (tx_pwr_params->power == 0) {
|
||||
/* set to default. Since the app does not care the tx power
|
||||
* we keep the previous setting
|
||||
*/
|
||||
wma_handle->interfaces[vdev_id].tx_power = 0;
|
||||
mlme_set_tx_power(iface->vdev, tx_pwr_params->power);
|
||||
ret = 0;
|
||||
goto end;
|
||||
}
|
||||
if (wma_handle->interfaces[vdev_id].max_tx_power != 0) {
|
||||
|
||||
max_reg_power = mlme_get_max_reg_power(iface->vdev);
|
||||
|
||||
if (max_reg_power != 0) {
|
||||
/* make sure tx_power less than max_tx_power */
|
||||
if (tx_pwr_params->power >
|
||||
wma_handle->interfaces[vdev_id].max_tx_power) {
|
||||
tx_pwr_params->power =
|
||||
wma_handle->interfaces[vdev_id].max_tx_power;
|
||||
if (tx_pwr_params->power > max_reg_power) {
|
||||
tx_pwr_params->power = max_reg_power;
|
||||
}
|
||||
}
|
||||
if (wma_handle->interfaces[vdev_id].tx_power != tx_pwr_params->power) {
|
||||
if (mlme_get_tx_power(iface->vdev) != tx_pwr_params->power) {
|
||||
|
||||
/* tx_power changed, Push the tx_power to FW */
|
||||
WMA_LOGI("%s: Set TX pwr limit [WMI_VDEV_PARAM_TX_PWRLIMIT] to %d",
|
||||
|
|
@ -387,8 +391,7 @@ void wma_set_tx_power(WMA_HANDLE handle,
|
|||
WMI_VDEV_PARAM_TX_PWRLIMIT,
|
||||
tx_pwr_params->power);
|
||||
if (ret == QDF_STATUS_SUCCESS)
|
||||
wma_handle->interfaces[vdev_id].tx_power =
|
||||
tx_pwr_params->power;
|
||||
mlme_set_tx_power(iface->vdev, tx_pwr_params->power);
|
||||
} else {
|
||||
/* no tx_power change */
|
||||
ret = QDF_STATUS_SUCCESS;
|
||||
|
|
@ -414,6 +417,8 @@ void wma_set_max_tx_power(WMA_HANDLE handle,
|
|||
QDF_STATUS ret = QDF_STATUS_E_FAILURE;
|
||||
struct cdp_vdev *vdev;
|
||||
int8_t prev_max_power;
|
||||
int8_t max_reg_power;
|
||||
struct wma_txrx_node *iface;
|
||||
|
||||
vdev = wma_find_vdev_by_addr(wma_handle, tx_pwr_params->bssId.bytes,
|
||||
&vdev_id);
|
||||
|
|
@ -436,27 +441,30 @@ void wma_set_max_tx_power(WMA_HANDLE handle,
|
|||
return;
|
||||
}
|
||||
|
||||
if (wma_handle->interfaces[vdev_id].max_tx_power ==
|
||||
tx_pwr_params->power) {
|
||||
iface = &wma_handle->interfaces[vdev_id];
|
||||
if (mlme_get_max_reg_power(iface->vdev) == tx_pwr_params->power) {
|
||||
ret = QDF_STATUS_SUCCESS;
|
||||
goto end;
|
||||
}
|
||||
prev_max_power = wma_handle->interfaces[vdev_id].max_tx_power;
|
||||
wma_handle->interfaces[vdev_id].max_tx_power = tx_pwr_params->power;
|
||||
if (wma_handle->interfaces[vdev_id].max_tx_power == 0) {
|
||||
prev_max_power = mlme_get_max_reg_power(iface->vdev);
|
||||
|
||||
mlme_set_max_reg_power(iface->vdev, tx_pwr_params->power);
|
||||
|
||||
max_reg_power = mlme_get_max_reg_power(iface->vdev);
|
||||
|
||||
if (max_reg_power == 0) {
|
||||
ret = QDF_STATUS_SUCCESS;
|
||||
goto end;
|
||||
}
|
||||
WMA_LOGI("Set MAX TX pwr limit [WMI_VDEV_PARAM_TX_PWRLIMIT] to %d",
|
||||
wma_handle->interfaces[vdev_id].max_tx_power);
|
||||
max_reg_power);
|
||||
ret = wma_vdev_set_param(wma_handle->wmi_handle, vdev_id,
|
||||
WMI_VDEV_PARAM_TX_PWRLIMIT,
|
||||
wma_handle->interfaces[vdev_id].max_tx_power);
|
||||
max_reg_power);
|
||||
if (ret == QDF_STATUS_SUCCESS)
|
||||
wma_handle->interfaces[vdev_id].tx_power =
|
||||
wma_handle->interfaces[vdev_id].max_tx_power;
|
||||
mlme_set_tx_power(iface->vdev, max_reg_power);
|
||||
else
|
||||
wma_handle->interfaces[vdev_id].max_tx_power = prev_max_power;
|
||||
mlme_set_max_reg_power(iface->vdev, prev_max_power);
|
||||
end:
|
||||
qdf_mem_free(tx_pwr_params);
|
||||
if (QDF_IS_STATUS_ERROR(ret))
|
||||
|
|
|
|||
Loading…
Reference in a new issue