diff --git a/wmi/inc/wmi_unified_api.h b/wmi/inc/wmi_unified_api.h index 77a03b271c..632e829542 100644 --- a/wmi/inc/wmi_unified_api.h +++ b/wmi/inc/wmi_unified_api.h @@ -4328,4 +4328,17 @@ QDF_STATUS wmi_unified_send_set_tpc_power_cmd(wmi_unified_t wmi_handle, QDF_STATUS wmi_extract_dpd_status_ev_param(wmi_unified_t wmi_handle, void *evt_buf, struct wmi_host_pdev_get_dpd_status_event *param); + +/** + * wmi_extract_halphy_cal_status_ev_param() - extract halphy cal status from FW event + * @wmi_handle: wmi handle + * @evt_buf: pointer to event buf + * @param: halphy cal status info + * + * Return: QDF_STATUS_SUCCESS for success or error code + */ +QDF_STATUS +wmi_extract_halphy_cal_status_ev_param(wmi_unified_t wmi_handle, + void *evt_buf, + struct wmi_host_pdev_get_halphy_cal_status_event *param); #endif /* _WMI_UNIFIED_API_H_ */ diff --git a/wmi/inc/wmi_unified_param.h b/wmi/inc/wmi_unified_param.h index b5f2d9e61a..94006b1386 100644 --- a/wmi/inc/wmi_unified_param.h +++ b/wmi/inc/wmi_unified_param.h @@ -4675,6 +4675,7 @@ typedef enum { #ifdef WLAN_FEATURE_PKT_CAPTURE_V2 wmi_vdev_smart_monitor_event_id, #endif + wmi_pdev_get_halphy_cal_status_event_id, wmi_events_max, } wmi_conv_event_id; @@ -5262,7 +5263,7 @@ typedef enum { #endif wmi_service_sae_eapol_offload_support, wmi_service_ampdu_tx_buf_size_256_support, - + wmi_service_halphy_cal_status, wmi_services_max, } wmi_conv_service_ids; #define WMI_SERVICE_UNAVAILABLE 0xFFFF @@ -8031,6 +8032,12 @@ struct wmi_host_pdev_get_dpd_status_event { enum wmi_host_dpd_status dpd_status; }; +struct wmi_host_pdev_get_halphy_cal_status_event { + uint32_t pdev_id; + uint32_t halphy_cal_valid_bmap; + uint32_t halphy_cal_status; +}; + /** * struct wmi_install_key_comp_event - params of install key complete event * @vdev_id: unique id identifying the VDEV, generated by the caller diff --git a/wmi/inc/wmi_unified_priv.h b/wmi/inc/wmi_unified_priv.h index e61d674f64..20621cc8c7 100644 --- a/wmi/inc/wmi_unified_priv.h +++ b/wmi/inc/wmi_unified_priv.h @@ -1242,6 +1242,9 @@ QDF_STATUS (*send_set_mimogain_table_cmd)(wmi_unified_t wmi_handle, QDF_STATUS (*send_packet_power_info_get_cmd)(wmi_unified_t wmi_handle, struct packet_power_info_params *param); +QDF_STATUS (*send_get_halphy_cal_status_cmd)(wmi_unified_t wmi_handle, + struct halphy_cal_status_params *param); + QDF_STATUS (*send_set_ht_ie_cmd)(wmi_unified_t wmi_handle, struct ht_ie_params *param); @@ -2548,6 +2551,10 @@ QDF_STATUS (*extract_dpd_status_ev_param)(wmi_unified_t wmi_handle, void *evt_buf, struct wmi_host_pdev_get_dpd_status_event *param); +QDF_STATUS (*extract_halphy_cal_status_ev_param)(wmi_unified_t wmi_handle, + void *evt_buf, + struct wmi_host_pdev_get_halphy_cal_status_event *param); + QDF_STATUS (*extract_install_key_comp_event)(wmi_unified_t wmi_handle, void *evt_buf, uint32_t len, diff --git a/wmi/src/wmi_unified_api.c b/wmi/src/wmi_unified_api.c index 6c767ad54f..c8da427374 100644 --- a/wmi/src/wmi_unified_api.c +++ b/wmi/src/wmi_unified_api.c @@ -3448,3 +3448,15 @@ wmi_extract_dpd_status_ev_param(wmi_unified_t wmi_handle, return QDF_STATUS_E_FAILURE; } + +QDF_STATUS +wmi_extract_halphy_cal_status_ev_param(wmi_unified_t wmi_handle, + void *evt_buf, + struct wmi_host_pdev_get_halphy_cal_status_event *param) +{ + if (wmi_handle->ops->extract_halphy_cal_status_ev_param) + return wmi_handle->ops->extract_halphy_cal_status_ev_param( + wmi_handle, evt_buf, param); + + return QDF_STATUS_E_FAILURE; +} diff --git a/wmi/src/wmi_unified_tlv.c b/wmi/src/wmi_unified_tlv.c index 3d390e4a57..c83ef21bd7 100644 --- a/wmi/src/wmi_unified_tlv.c +++ b/wmi/src/wmi_unified_tlv.c @@ -15120,6 +15120,29 @@ extract_dpd_status_ev_param_tlv(wmi_unified_t wmi_handle, return QDF_STATUS_SUCCESS; } +static QDF_STATUS +extract_halphy_cal_status_ev_param_tlv(wmi_unified_t wmi_handle, + void *evt_buf, + struct wmi_host_pdev_get_halphy_cal_status_event *param) +{ + WMI_PDEV_GET_HALPHY_CAL_STATUS_EVENTID_param_tlvs *param_buf; + wmi_pdev_get_halphy_cal_status_evt_fixed_param *halphy_cal_status; + + param_buf = (WMI_PDEV_GET_HALPHY_CAL_STATUS_EVENTID_param_tlvs *)evt_buf; + if (!param_buf) { + wmi_err("Invalid get halphy cal status event"); + return QDF_STATUS_E_INVAL; + } + + halphy_cal_status = param_buf->fixed_param; + param->pdev_id = wmi_handle->ops->convert_pdev_id_target_to_host + (wmi_handle, halphy_cal_status->pdev_id); + param->halphy_cal_valid_bmap = halphy_cal_status->halphy_cal_valid_bmap; + param->halphy_cal_status = halphy_cal_status->halphy_cal_status; + + return QDF_STATUS_SUCCESS; +} + /** * extract_install_key_comp_event_tlv() - extract install key complete event tlv * @wmi_handle: wmi handle @@ -15536,6 +15559,7 @@ struct wmi_ops tlv_ops = { .send_set_tpc_power_cmd = send_set_tpc_power_cmd_tlv, .extract_dpd_status_ev_param = extract_dpd_status_ev_param_tlv, .extract_install_key_comp_event = extract_install_key_comp_event_tlv, + .extract_halphy_cal_status_ev_param = extract_halphy_cal_status_ev_param_tlv, }; /** @@ -15946,6 +15970,8 @@ event_ids[wmi_roam_scan_chan_list_id] = event_ids[wmi_vdev_smart_monitor_event_id] = WMI_VDEV_SMART_MONITOR_EVENTID; #endif + event_ids[wmi_pdev_get_halphy_cal_status_event_id] = + WMI_PDEV_GET_HALPHY_CAL_STATUS_EVENTID; } #ifdef WLAN_FEATURE_LINK_LAYER_STATS @@ -16354,6 +16380,8 @@ static void populate_tlv_service(uint32_t *wmi_service) #endif wmi_service[wmi_service_ampdu_tx_buf_size_256_support] = WMI_SERVICE_AMPDU_TX_BUF_SIZE_256_SUPPORT; + wmi_service[wmi_service_halphy_cal_status] = + WMI_SERVICE_HALPHY_CAL_STATUS; } /**