qcacmn: Fill appropriate statistics value

Update stats request value if statistics request
from user level is greater that CDP_TXRX_STATS_HTT_MAX value.

Change-Id: I0e36200021fb70662481bc823a95f9e64a8b1e14
CRs-Fixed: 2291842
This commit is contained in:
Venkata Sharath Chandra Manchala 2018-08-06 10:59:11 -07:00 • committed by nshrivas
commit 599b14ce03
3 changed files with 22 additions and 10 deletions

View file

@ -868,7 +868,7 @@ enum cdp_stats {
CDP_TXRX_STATS_27,
CDP_TXRX_STATS_28,
CDP_TXRX_STATS_HTT_MAX = 256,
CDP_TXRX_MAX_STATS = 512,
CDP_TXRX_MAX_STATS = 265,
};
/*

View file

@ -295,8 +295,8 @@ struct cdp_cmn_ops {
void (*set_pdev_dscp_tid_map)(struct cdp_pdev *pdev, uint8_t map_id,
uint8_t tos, uint8_t tid);
int (*txrx_stats_request)(struct cdp_vdev *vdev,
struct cdp_txrx_stats_req *req);
QDF_STATUS (*txrx_stats_request)(struct cdp_vdev *vdev,
struct cdp_txrx_stats_req *req);
QDF_STATUS (*display_stats)(void *psoc, uint16_t value,
enum qdf_stats_verbosity_level level);

View file

@ -6898,24 +6898,26 @@ static int dp_fw_stats_process(struct cdp_vdev *vdev_handle,
* @vdev: virtual handle
* @req: stats request
*
* Return: integer
* Return: QDF_STATUS
*/
static int dp_txrx_stats_request(struct cdp_vdev *vdev,
struct cdp_txrx_stats_req *req)
static
QDF_STATUS dp_txrx_stats_request(struct cdp_vdev *vdev,
struct cdp_txrx_stats_req *req)
{
int host_stats;
int fw_stats;
enum cdp_stats stats;
int num_stats;
if (!vdev || !req) {
QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_ERROR,
"Invalid vdev/req instance");
return 0;
return QDF_STATUS_E_INVAL;
}
stats = req->stats;
if (stats >= CDP_TXRX_MAX_STATS)
return 0;
return QDF_STATUS_E_INVAL;
/*
* DP_CURR_FW_STATS_AVAIL: no of FW stats currently available
@ -6923,11 +6925,21 @@ static int dp_txrx_stats_request(struct cdp_vdev *vdev,
*/
if (stats > CDP_TXRX_STATS_HTT_MAX)
stats = stats + DP_CURR_FW_STATS_AVAIL - DP_HTT_DBG_EXT_STATS_MAX;
num_stats = QDF_ARRAY_SIZE(dp_stats_mapping_table);
if (stats >= num_stats) {
QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_ERROR,
"%s: Invalid stats option: %d", __func__, stats);
return QDF_STATUS_E_INVAL;
}
req->stats = stats;
fw_stats = dp_stats_mapping_table[stats][STATS_FW];
host_stats = dp_stats_mapping_table[stats][STATS_HOST];
QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_INFO,
"stats: %u fw_stats_type: %d host_stats_type: %d",
"stats: %u fw_stats_type: %d host_stats: %d",
stats, fw_stats, host_stats);
if (fw_stats != TXRX_FW_STATS_INVALID) {
@ -6943,7 +6955,7 @@ static int dp_txrx_stats_request(struct cdp_vdev *vdev,
QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_INFO,
"Wrong Input for TxRx Stats");
return 0;
return QDF_STATUS_SUCCESS;
}
/*