From 0243e7d1912629e9ae6d4377fb36bca9abf4755d Mon Sep 17 00:00:00 2001 From: Alok Singh Date: Thu, 20 Sep 2018 16:07:28 +0530 Subject: [PATCH] qcacmn: Add ctl failsafe event CTL failsafe event handler adds the capability to inform host when failsafe algorithm invoked. CRs-Fixed: 2333137 Change-Id: I91298c9be1f0f8291c927dbd3ac4a2a9f1b9f31b --- wmi_unified_api.c | 24 ++++++++++++++++++++++++ wmi_unified_non_tlv.c | 26 ++++++++++++++++++++++++++ wmi_unified_tlv.c | 33 +++++++++++++++++++++++++++++++++ 3 files changed, 83 insertions(+) diff --git a/wmi_unified_api.c b/wmi_unified_api.c index 7e456f9579..c5a4c08023 100644 --- a/wmi_unified_api.c +++ b/wmi_unified_api.c @@ -3005,6 +3005,30 @@ wmi_send_reset_peer_mumimo_tx_count_cmd(void *wmi_hdl, uint32_t value) } /* Extract - APIs */ +/** + * wmi_extract_ctl_failsafe_check_ev_param() - extract ctl data + * from event + * @wmi_handle: wmi handle + * @param evt_buf: pointer to event buffer + * @param param: Pointer to hold ctl data + * + * Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure + */ +QDF_STATUS +wmi_extract_ctl_failsafe_check_ev_param(void *wmi_hdl, + void *evt_buf, + struct wmi_host_pdev_ctl_failsafe_event + *param) +{ + wmi_unified_t wmi = (wmi_unified_t)wmi_hdl; + + if (wmi->ops->extract_ctl_failsafe_check_ev_param) + return wmi->ops->extract_ctl_failsafe_check_ev_param( + wmi, evt_buf, param); + + return QDF_STATUS_E_FAILURE; +} + /** * wmi_extract_fips_event_data() - extract fips event data * @wmi_handle: wmi handle diff --git a/wmi_unified_non_tlv.c b/wmi_unified_non_tlv.c index 879c998f55..e40c80315f 100644 --- a/wmi_unified_non_tlv.c +++ b/wmi_unified_non_tlv.c @@ -6768,6 +6768,28 @@ static QDF_STATUS extract_pdev_caldata_version_check_ev_param_non_tlv( return QDF_STATUS_SUCCESS; } +/** + * extract_ctl_failsafe_check_ev_param_non_tlv() - extract ctl data from + * event + * @wmi_handle: wmi handle + * @param evt_buf: pointer to event buffer + * @param param: Pointer to hold peer ctl data + * + * Return: QDF_STATUS_SUCCESS for success + */ +static QDF_STATUS extract_ctl_failsafe_check_ev_param_non_tlv( + wmi_unified_t wmi_handle, + void *evt_buf, + struct wmi_host_pdev_ctl_failsafe_event *param) +{ + wmi_pdev_ctl_failsafe_event *event = + (wmi_pdev_ctl_failsafe_event *)evt_buf; + + param->ctl_failsafe_status = event->ctl_FailsafeStatus; + + return QDF_STATUS_SUCCESS; +} + /** * extract_pdev_tpc_config_ev_param_non_tlv() - extract pdev tpc configuration * param from event @@ -8983,6 +9005,8 @@ struct wmi_ops non_tlv_ops = { #endif .extract_esp_estimation_ev_param = extract_esp_estimation_ev_param_non_tlv, + .extract_ctl_failsafe_check_ev_param = + extract_ctl_failsafe_check_ev_param_non_tlv, }; /** @@ -9290,6 +9314,8 @@ static void populate_non_tlv_events_id(uint32_t *event_ids) #endif event_ids[wmi_esp_estimate_event_id] = WMI_ESP_ESTIMATE_EVENTID; + event_ids[wmi_pdev_ctl_failsafe_check_event_id] = + WMI_PDEV_CTL_FAILSAFE_CHECK_EVENTID; } /** diff --git a/wmi_unified_tlv.c b/wmi_unified_tlv.c index 1ddcff7a4b..644851337d 100644 --- a/wmi_unified_tlv.c +++ b/wmi_unified_tlv.c @@ -7582,6 +7582,35 @@ static QDF_STATUS extract_cca_stats_tlv(wmi_unified_t wmi_handle, } #endif /* QCA_SUPPORT_CP_STATS */ +/** + * extract_ctl_failsafe_check_ev_param_tlv() - extract ctl data from + * event + * @wmi_handle: wmi handle + * @param evt_buf: pointer to event buffer + * @param param: Pointer to hold peer ctl data + * + * Return: QDF_STATUS_SUCCESS for success or error code + */ +static QDF_STATUS extract_ctl_failsafe_check_ev_param_tlv( + wmi_unified_t wmi_handle, + void *evt_buf, + struct wmi_host_pdev_ctl_failsafe_event *param) +{ + WMI_PDEV_CTL_FAILSAFE_CHECK_EVENTID_param_tlvs *param_buf; + wmi_pdev_ctl_failsafe_check_fixed_param *fix_param; + + param_buf = (WMI_PDEV_CTL_FAILSAFE_CHECK_EVENTID_param_tlvs *)evt_buf; + if (!param_buf) { + WMI_LOGE("Invalid ctl_failsafe event buffer"); + return QDF_STATUS_E_INVAL; + } + + fix_param = param_buf->fixed_param; + param->ctl_failsafe_status = fix_param->ctl_FailsafeStatus; + + return QDF_STATUS_SUCCESS; +} + /** * save_service_bitmap_tlv() - save service bitmap * @wmi_handle: wmi handle @@ -11107,6 +11136,8 @@ struct wmi_ops tlv_ops = { .send_obss_spatial_reuse_set = send_obss_spatial_reuse_set_cmd_tlv, #endif .extract_offload_bcn_tx_status_evt = extract_offload_bcn_tx_status_evt, + .extract_ctl_failsafe_check_ev_param = + extract_ctl_failsafe_check_ev_param_tlv, }; /** @@ -11406,6 +11437,8 @@ static void populate_tlv_events_id(uint32_t *event_ids) #ifdef AST_HKV1_WORKAROUND event_ids[wmi_wds_peer_event_id] = WMI_WDS_PEER_EVENTID; #endif + event_ids[wmi_pdev_ctl_failsafe_check_event_id] = + WMI_PDEV_CTL_FAILSAFE_CHECK_EVENTID; } /**