qca-wifi: WMI support for Tx Mode Select
When MSCS feature is enabled, Host sends WMI command to FW to enable Tx Mode switch Change-Id: Ida559f8972ef8de609578c0e9aa3016116e8a46a
This commit is contained in:
@@ -1254,6 +1254,8 @@ enum _ol_ath_param_t {
|
||||
OL_ATH_PARAM_NSS_WIFI_OFFLOAD_STATUS = 463,
|
||||
/* enable EMA */
|
||||
OL_ATH_PARAM_ENABLE_EMA = 464,
|
||||
/* enable Tx Mode Sselect */
|
||||
OL_ATH_PARAM_ENABLE_TX_MODE_SELECT = 465,
|
||||
};
|
||||
|
||||
#ifdef CONFIG_SUPPORT_LIBROXML
|
||||
@@ -3245,6 +3247,8 @@ struct vendor_commands radio_vendor_cmds[] = {
|
||||
OL_ATH_PARAM_SHIFT | OL_ATH_PARAM_NSS_WIFI_OFFLOAD_STATUS, GET_PARAM, 0},
|
||||
{"enable_ema",
|
||||
OL_ATH_PARAM_SHIFT | OL_ATH_PARAM_ENABLE_EMA, SET_PARAM, 1},
|
||||
{"dur_based_tx_mode_sselect",
|
||||
OL_ATH_PARAM_SHIFT | OL_ATH_PARAM_ENABLE_TX_MODE_SELECT, SET_PARAM, 1},
|
||||
};
|
||||
#endif
|
||||
#endif
|
||||
|
@@ -773,4 +773,15 @@ QDF_STATUS wmi_unified_peer_vlan_config_send(wmi_unified_t wmi_handle,
|
||||
QDF_STATUS wmi_extract_muedca_params_handler(wmi_unified_t wmi_handle,
|
||||
void *evt_buf, struct muedca_params *muedca_param_list);
|
||||
|
||||
/**
|
||||
* wmi_unified_set_radio_tx_mode_select_cmd_send() - WMI ant switch tbl cmd function
|
||||
* @wmi_handle: handle to WMI.
|
||||
* @param: pointer to hold tx mode selection param
|
||||
*
|
||||
* Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
|
||||
*/
|
||||
QDF_STATUS wmi_unified_set_radio_tx_mode_select_cmd_send(
|
||||
wmi_unified_t wmi_handle,
|
||||
struct wmi_pdev_enable_tx_mode_selection *tx_mode_select_param);
|
||||
|
||||
#endif /* _WMI_UNIFIED_AP_API_H_ */
|
||||
|
@@ -611,3 +611,24 @@ QDF_STATUS wmi_extract_muedca_params_handler(
|
||||
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
/**
|
||||
* wmi_unified_set_radio_tx_mode_select_cmd_send() - WMI ant switch tbl cmd function
|
||||
* @wmi_handle: wmi handle
|
||||
* @param: pointer to hold tx mode selection param
|
||||
*
|
||||
* Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
|
||||
*/
|
||||
QDF_STATUS wmi_unified_set_radio_tx_mode_select_cmd_send(
|
||||
wmi_unified_t wmi_hdl,
|
||||
struct wmi_pdev_enable_tx_mode_selection
|
||||
*tx_mode_select_param)
|
||||
{
|
||||
wmi_unified_t wmi_handle = wmi_hdl;
|
||||
|
||||
if (wmi_handle->ops->set_radio_tx_mode_select_cmd)
|
||||
return wmi_handle->ops->set_radio_tx_mode_select_cmd(
|
||||
wmi_handle, tx_mode_select_param);
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
|
@@ -2589,6 +2589,44 @@ static QDF_STATUS send_multisoc_tbtt_sync_cmd_tlv(wmi_unified_t wmi,
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
/**
|
||||
* set_radio_tx_mode_select_cmd_tlv - set radio tx mode select command
|
||||
* @wmi: wmi handle
|
||||
* @param: Tx mode select param
|
||||
*
|
||||
* Return: QDF_STATUS_SUCCESS for success or error code
|
||||
*/
|
||||
static QDF_STATUS
|
||||
set_radio_tx_mode_select_cmd_tlv(wmi_unified_t wmi,
|
||||
struct wmi_pdev_enable_tx_mode_selection *param)
|
||||
{
|
||||
wmi_pdev_enable_duration_based_tx_mode_selection_cmd_fixed_param *cmd;
|
||||
wmi_buf_t buf;
|
||||
int32_t len = sizeof(*cmd);
|
||||
|
||||
buf = wmi_buf_alloc(wmi, len);
|
||||
if (!buf)
|
||||
return QDF_STATUS_E_NOMEM;
|
||||
|
||||
cmd = (wmi_pdev_enable_duration_based_tx_mode_selection_cmd_fixed_param *)wmi_buf_data(buf);
|
||||
WMITLV_SET_HDR(&cmd->tlv_header,
|
||||
WMITLV_TAG_STRUC_wmi_pdev_enable_duration_based_tx_mode_selection_cmd_fixed_param,
|
||||
WMITLV_GET_STRUCT_TLVLEN(wmi_pdev_enable_duration_based_tx_mode_selection_cmd_fixed_param));
|
||||
cmd->pdev_id = wmi->ops->convert_pdev_id_host_to_target(
|
||||
wmi, param->pdev_id);
|
||||
cmd->duration_based_tx_mode_selection = param->enable_tx_mode_selection;
|
||||
wmi_mtrace(WMI_PDEV_ENABLE_DURATION_BASED_TX_MODE_SELECTION_CMDID, cmd->pdev_id, 0);
|
||||
if (wmi_unified_cmd_send(wmi, buf, len,
|
||||
WMI_PDEV_ENABLE_DURATION_BASED_TX_MODE_SELECTION_CMDID)) {
|
||||
wmi_err("%s: Failed to send WMI_PDEV_ENABLE_DURATION_BASED_TX_MODE_SELECTION_CMDID",
|
||||
__func__);
|
||||
wmi_buf_free(buf);
|
||||
return QDF_STATUS_E_FAILURE;
|
||||
}
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
void wmi_ap_attach_tlv(wmi_unified_t wmi_handle)
|
||||
{
|
||||
struct wmi_ops *ops = wmi_handle->ops;
|
||||
@@ -2661,4 +2699,5 @@ void wmi_ap_attach_tlv(wmi_unified_t wmi_handle)
|
||||
ops->extract_multi_vdev_restart_resp_event =
|
||||
extract_multi_vdev_restart_resp_event_tlv;
|
||||
ops->multisoc_tbtt_sync_cmd = send_multisoc_tbtt_sync_cmd_tlv;
|
||||
ops->set_radio_tx_mode_select_cmd = set_radio_tx_mode_select_cmd_tlv;
|
||||
}
|
||||
|
Viittaa uudesa ongelmassa
Block a user