qcacmn: Add an ini item for stats over QMI

Currently, stats over QMI features can only be disabled over build flags,
which is not flexible. Hence, add a CFG ini item to enable/disable stats
over QMI.

Change-Id: If5d57d2fc781fecc8817c2da8f61a2f7977d9c77
CRs-Fixed: 2752310
This commit is contained in:
Alan Chen
2020-08-10 15:34:14 -07:00
committed by snandini
parent 63854a8235
commit 07789085f8
4 changed files with 49 additions and 0 deletions

View File

@@ -436,6 +436,36 @@ void wmi_set_target_suspend(wmi_unified_t wmi_handle, bool val);
*/ */
bool wmi_is_target_suspended(struct wmi_unified *wmi_handle); bool wmi_is_target_suspended(struct wmi_unified *wmi_handle);
#ifdef WLAN_FEATURE_WMI_SEND_RECV_QMI
/**
* wmi_set_qmi_stats() - WMI API to set qmi stats enabled/disabled
* @wmi_handle: handle to WMI.
* @val: suspend state boolean
*/
void wmi_set_qmi_stats(wmi_unified_t wmi_handle, bool val);
/**
* wmi_is_qmi_stats_enabled() - WMI API to check if periodic stats
* over qmi is enableid
* @wmi_handle: handle to WMI.
*
* WMI API to check if periodic stats over qmi is enabled
*
* Return: true if qmi stats is enabled, else false.
*/
bool wmi_is_qmi_stats_enabled(struct wmi_unified *wmi_handle);
#else
static inline
void wmi_set_qmi_stats(wmi_unified_t wmi_handle, bool val)
{}
static inline
bool wmi_is_qmi_stats_enabled(struct wmi_unified *wmi_handle)
{
return false;
}
#endif /* end if of WLAN_FEATURE_WMI_SEND_RECV_QMI */
/** /**
* WMI API to set bus suspend state * WMI API to set bus suspend state
* @param wmi_handle: handle to WMI. * @param wmi_handle: handle to WMI.

View File

@@ -2451,6 +2451,9 @@ struct wmi_unified {
#endif /*WMI_INTERFACE_EVENT_LOGGING */ #endif /*WMI_INTERFACE_EVENT_LOGGING */
qdf_atomic_t is_target_suspended; qdf_atomic_t is_target_suspended;
#ifdef WLAN_FEATURE_WMI_SEND_RECV_QMI
bool is_qmi_stats_enabled;
#endif
#ifdef FEATURE_RUNTIME_PM #ifdef FEATURE_RUNTIME_PM
qdf_atomic_t runtime_pm_inprogress; qdf_atomic_t runtime_pm_inprogress;

View File

@@ -3124,6 +3124,18 @@ bool wmi_is_target_suspended(struct wmi_unified *wmi_handle)
return qdf_atomic_read(&wmi_handle->is_target_suspended); return qdf_atomic_read(&wmi_handle->is_target_suspended);
} }
#ifdef WLAN_FEATURE_WMI_SEND_RECV_QMI
void wmi_set_qmi_stats(wmi_unified_t wmi_handle, bool val)
{
wmi_handle->is_qmi_stats_enabled = val;
}
bool wmi_is_qmi_stats_enabled(struct wmi_unified *wmi_handle)
{
return wmi_handle->is_qmi_stats_enabled;
}
#endif
/** /**
* WMI API to set crash injection state * WMI API to set crash injection state
* @param wmi_handle: handle to WMI. * @param wmi_handle: handle to WMI.

View File

@@ -708,6 +708,9 @@ static QDF_STATUS wmi_unified_cmd_send_pm_chk(struct wmi_unified *wmi_handle,
wmi_buf_t buf, wmi_buf_t buf,
uint32_t buflen, uint32_t cmd_id) uint32_t buflen, uint32_t cmd_id)
{ {
if (!wmi_is_qmi_stats_enabled(wmi_handle))
goto send_over_wmi;
if (wmi_is_target_suspended(wmi_handle)) { if (wmi_is_target_suspended(wmi_handle)) {
if (QDF_IS_STATUS_SUCCESS( if (QDF_IS_STATUS_SUCCESS(
wmi_unified_cmd_send_over_qmi(wmi_handle, buf, wmi_unified_cmd_send_over_qmi(wmi_handle, buf,
@@ -715,6 +718,7 @@ static QDF_STATUS wmi_unified_cmd_send_pm_chk(struct wmi_unified *wmi_handle,
return QDF_STATUS_SUCCESS; return QDF_STATUS_SUCCESS;
} }
send_over_wmi:
qdf_atomic_set(&wmi_handle->num_stats_over_qmi, 0); qdf_atomic_set(&wmi_handle->num_stats_over_qmi, 0);
return wmi_unified_cmd_send(wmi_handle, buf, buflen, cmd_id); return wmi_unified_cmd_send(wmi_handle, buf, buflen, cmd_id);