diff --git a/wmi_unified_tlv.c b/wmi_unified_tlv.c index 0ba1fcf5e5..e59ea9c1f2 100644 --- a/wmi_unified_tlv.c +++ b/wmi_unified_tlv.c @@ -11567,6 +11567,53 @@ static QDF_STATUS send_phyerr_enable_cmd_tlv(wmi_unified_t wmi_handle) return ret; } +/** + * send_periodic_chan_stats_config_cmd_tlv() - send periodic chan stats cmd + * to fw + * @wmi_handle: wmi handle + * @param: pointer to hold periodic chan stats param + * + * Return: 0 for success or error code + */ +static QDF_STATUS +send_periodic_chan_stats_config_cmd_tlv(wmi_unified_t wmi_handle, + struct periodic_chan_stats_params *param) +{ + wmi_set_periodic_channel_stats_config_fixed_param *cmd; + wmi_buf_t buf; + QDF_STATUS ret; + int32_t len; + + len = sizeof(*cmd); + + buf = wmi_buf_alloc(wmi_handle, len); + if (!buf) { + WMI_LOGE("%s: wmi_buf_alloc failed\n", __func__); + return QDF_STATUS_E_FAILURE; + } + + cmd = (wmi_set_periodic_channel_stats_config_fixed_param *) + wmi_buf_data(buf); + WMITLV_SET_HDR(&cmd->tlv_header, + WMITLV_TAG_STRUC_wmi_set_periodic_channel_stats_config_fixed_param, + WMITLV_GET_STRUCT_TLVLEN( + wmi_set_periodic_channel_stats_config_fixed_param)); + cmd->enable = param->enable; + cmd->stats_period = param->stats_period; + cmd->pdev_id = wmi_handle->ops->convert_pdev_id_host_to_target( + param->pdev_id); + + ret = wmi_unified_cmd_send(wmi_handle, buf, sizeof(*cmd), + WMI_SET_PERIODIC_CHANNEL_STATS_CONFIG_CMDID); + + if (ret != 0) { + WMI_LOGE("Sending periodic chan stats config failed"); + wmi_buf_free(buf); + } + + return ret; +} + /** * send_nf_dbr_dbm_info_get_cmd_tlv() - send request to get nf to fw * @wmi_handle: wmi handle @@ -19815,6 +19862,8 @@ struct wmi_ops tlv_ops = { .send_gpio_output_cmd = send_gpio_output_cmd_tlv, .send_phyerr_disable_cmd = send_phyerr_disable_cmd_tlv, .send_phyerr_enable_cmd = send_phyerr_enable_cmd_tlv, + .send_periodic_chan_stats_config_cmd = + send_periodic_chan_stats_config_cmd_tlv, .send_nf_dbr_dbm_info_get_cmd = send_nf_dbr_dbm_info_get_cmd_tlv, .send_set_ht_ie_cmd = send_set_ht_ie_cmd_tlv, .send_set_vht_ie_cmd = send_set_vht_ie_cmd_tlv, @@ -20320,7 +20369,7 @@ static void populate_tlv_service(uint32_t *wmi_service) wmi_service[wmi_service_peer_stats] = WMI_SERVICE_UNAVAILABLE; wmi_service[wmi_service_mesh_11s] = WMI_SERVICE_UNAVAILABLE; wmi_service[wmi_service_periodic_chan_stat_support] = - WMI_SERVICE_UNAVAILABLE; + WMI_SERVICE_PERIODIC_CHAN_STAT_SUPPORT; wmi_service[wmi_service_tx_mode_push_only] = WMI_SERVICE_UNAVAILABLE; wmi_service[wmi_service_tx_mode_push_pull] = WMI_SERVICE_UNAVAILABLE; wmi_service[wmi_service_tx_mode_dynamic] = WMI_SERVICE_UNAVAILABLE;