mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-24 05:29:04 -04:00
qcacmn: Enable support for REO Queue Stats
Map the cdp api call to a datapath handle to print REO Queue Stats. Change-Id: I14f880e9fc3743991fd7c8441326c23b7c3bdff8 CRs-Fixed: 2217649
This commit is contained in:
parent
ed2a224ba2
commit
0cb3198ecb
4 changed files with 61 additions and 41 deletions
|
|
@ -186,17 +186,19 @@ enum htt_cmn_dbg_stats_type {
|
|||
* @TXRX_CLEAR_STATS: clear all host stats
|
||||
* @TXRX_SRNG_PTR_STATS: Print SRNG pointer stats
|
||||
* @TXRX_RX_MON_STATS: Print monitor mode stats
|
||||
* @TXRX_REO_QUEUE_STATS: Print Per peer REO Queue Stats
|
||||
*/
|
||||
enum cdp_host_txrx_stats {
|
||||
TXRX_HOST_STATS_INVALID = -1,
|
||||
TXRX_CLEAR_STATS = 0,
|
||||
TXRX_RX_RATE_STATS = 1,
|
||||
TXRX_TX_RATE_STATS = 2,
|
||||
TXRX_TX_HOST_STATS = 3,
|
||||
TXRX_RX_HOST_STATS = 4,
|
||||
TXRX_AST_STATS = 5,
|
||||
TXRX_SRNG_PTR_STATS = 6,
|
||||
TXRX_RX_MON_STATS = 7,
|
||||
TXRX_CLEAR_STATS = 0,
|
||||
TXRX_RX_RATE_STATS = 1,
|
||||
TXRX_TX_RATE_STATS = 2,
|
||||
TXRX_TX_HOST_STATS = 3,
|
||||
TXRX_RX_HOST_STATS = 4,
|
||||
TXRX_AST_STATS = 5,
|
||||
TXRX_SRNG_PTR_STATS = 6,
|
||||
TXRX_RX_MON_STATS = 7,
|
||||
TXRX_REO_QUEUE_STATS = 8,
|
||||
TXRX_HOST_STATS_MAX,
|
||||
};
|
||||
|
||||
|
|
@ -859,6 +861,7 @@ enum cdp_stats {
|
|||
CDP_TXRX_STATS_25,
|
||||
CDP_TXRX_STATS_26,
|
||||
CDP_TXRX_STATS_27,
|
||||
CDP_TXRX_STATS_28,
|
||||
CDP_TXRX_STATS_HTT_MAX = 256,
|
||||
CDP_TXRX_MAX_STATS = 512,
|
||||
};
|
||||
|
|
@ -1246,6 +1249,7 @@ struct cdp_txrx_stats_req {
|
|||
uint32_t param3;
|
||||
uint32_t cookie_val;
|
||||
uint8_t mac_id;
|
||||
char *peer_addr;
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -304,12 +304,20 @@ cdp_host_me_stats(ol_txrx_soc_handle soc, struct cdp_vdev *vdev)
|
|||
return soc->ops->host_stats_ops->txrx_host_me_stats(vdev);
|
||||
}
|
||||
|
||||
static inline void cdp_per_peer_stats
|
||||
(ol_txrx_soc_handle soc, struct cdp_pdev *pdev, char *addr)
|
||||
/**
|
||||
* cdp_per_peer_stats(): function to print per peer REO Queue stats
|
||||
* @soc: soc handle
|
||||
* @pdev: physical device
|
||||
* @addr: peer address
|
||||
*
|
||||
* return: status
|
||||
*/
|
||||
static inline void cdp_per_peer_stats(ol_txrx_soc_handle soc,
|
||||
struct cdp_pdev *pdev, char *addr)
|
||||
{
|
||||
if (!soc || !soc->ops) {
|
||||
QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
|
||||
"%s: Invalid Instance", __func__);
|
||||
"%s: Invalid Instance", __func__);
|
||||
QDF_BUG(0);
|
||||
return;
|
||||
}
|
||||
|
|
@ -318,8 +326,7 @@ static inline void cdp_per_peer_stats
|
|||
!soc->ops->host_stats_ops->txrx_per_peer_stats)
|
||||
return;
|
||||
|
||||
soc->ops->host_stats_ops->txrx_per_peer_stats
|
||||
(pdev, addr);
|
||||
soc->ops->host_stats_ops->txrx_per_peer_stats(pdev, addr);
|
||||
}
|
||||
|
||||
static inline int cdp_host_msdu_ttl_stats(ol_txrx_soc_handle soc,
|
||||
|
|
|
|||
|
|
@ -645,8 +645,10 @@ struct cdp_host_stats_ops {
|
|||
|
||||
A_STATUS
|
||||
(*txrx_host_me_stats)(struct cdp_vdev *vdev);
|
||||
|
||||
void
|
||||
(*txrx_per_peer_stats)(struct cdp_pdev *pdev, char *addr);
|
||||
|
||||
int (*txrx_host_msdu_ttl_stats)(struct cdp_vdev *vdev,
|
||||
struct ol_txrx_stats_req *req);
|
||||
|
||||
|
|
|
|||
|
|
@ -293,6 +293,7 @@ const int dp_stats_mapping_table[][STATS_TYPE_MAX] = {
|
|||
{TXRX_FW_STATS_INVALID, TXRX_AST_STATS},
|
||||
{TXRX_FW_STATS_INVALID, TXRX_SRNG_PTR_STATS},
|
||||
{TXRX_FW_STATS_INVALID, TXRX_RX_MON_STATS},
|
||||
{TXRX_FW_STATS_INVALID, TXRX_REO_QUEUE_STATS},
|
||||
};
|
||||
|
||||
/* MCL specific functions */
|
||||
|
|
@ -6096,6 +6097,32 @@ static inline void dp_print_peer_stats(struct dp_peer *peer)
|
|||
peer->stats.rx.non_amsdu_cnt);
|
||||
}
|
||||
|
||||
/*
|
||||
* dp_get_host_peer_stats()- function to print peer stats
|
||||
* @pdev_handle: DP_PDEV handle
|
||||
* @mac_addr: mac address of the peer
|
||||
*
|
||||
* Return: void
|
||||
*/
|
||||
static void
|
||||
dp_get_host_peer_stats(struct cdp_pdev *pdev_handle, char *mac_addr)
|
||||
{
|
||||
struct dp_peer *peer;
|
||||
uint8_t local_id;
|
||||
|
||||
peer = (struct dp_peer *)dp_find_peer_by_addr(pdev_handle, mac_addr,
|
||||
&local_id);
|
||||
|
||||
if (!peer) {
|
||||
QDF_TRACE(QDF_MODULE_ID_TXRX, QDF_TRACE_LEVEL_ERROR,
|
||||
"%s: Invalid peer\n", __func__);
|
||||
return;
|
||||
}
|
||||
|
||||
dp_print_peer_stats(peer);
|
||||
dp_peer_rxtid_stats(peer, dp_rx_tid_stats_cb, NULL);
|
||||
}
|
||||
|
||||
/**
|
||||
* dp_print_host_stats()- Function to print the stats aggregated at host
|
||||
* @vdev_handle: DP_VDEV handle
|
||||
|
|
@ -6113,10 +6140,13 @@ static inline void dp_print_peer_stats(struct dp_peer *peer)
|
|||
* Return: 0 on success, print error message in case of failure
|
||||
*/
|
||||
static int
|
||||
dp_print_host_stats(struct cdp_vdev *vdev_handle, enum cdp_host_txrx_stats type)
|
||||
dp_print_host_stats(struct cdp_vdev *vdev_handle,
|
||||
struct cdp_txrx_stats_req *req)
|
||||
{
|
||||
struct dp_vdev *vdev = (struct dp_vdev *)vdev_handle;
|
||||
struct dp_pdev *pdev = (struct dp_pdev *)vdev->pdev;
|
||||
enum cdp_host_txrx_stats type =
|
||||
dp_stats_mapping_table[req->stats][STATS_HOST];
|
||||
|
||||
dp_aggregate_pdev_stats(pdev);
|
||||
|
||||
|
|
@ -6148,6 +6178,9 @@ dp_print_host_stats(struct cdp_vdev *vdev_handle, enum cdp_host_txrx_stats type)
|
|||
case TXRX_RX_MON_STATS:
|
||||
dp_print_pdev_rx_mon_stats(pdev);
|
||||
break;
|
||||
case TXRX_REO_QUEUE_STATS:
|
||||
dp_get_host_peer_stats((struct cdp_pdev *)pdev, req->peer_addr);
|
||||
break;
|
||||
default:
|
||||
DP_TRACE(FATAL, "Wrong Input For TxRx Host Stats");
|
||||
break;
|
||||
|
|
@ -6155,32 +6188,6 @@ dp_print_host_stats(struct cdp_vdev *vdev_handle, enum cdp_host_txrx_stats type)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* dp_get_host_peer_stats()- function to print peer stats
|
||||
* @pdev_handle: DP_PDEV handle
|
||||
* @mac_addr: mac address of the peer
|
||||
*
|
||||
* Return: void
|
||||
*/
|
||||
static void
|
||||
dp_get_host_peer_stats(struct cdp_pdev *pdev_handle, char *mac_addr)
|
||||
{
|
||||
struct dp_peer *peer;
|
||||
uint8_t local_id;
|
||||
peer = (struct dp_peer *)dp_find_peer_by_addr(pdev_handle, mac_addr,
|
||||
&local_id);
|
||||
|
||||
if (!peer) {
|
||||
QDF_TRACE(QDF_MODULE_ID_TXRX, QDF_TRACE_LEVEL_ERROR,
|
||||
"%s: Invalid peer\n", __func__);
|
||||
return;
|
||||
}
|
||||
|
||||
dp_print_peer_stats(peer);
|
||||
dp_peer_rxtid_stats(peer, dp_rx_tid_stats_cb, NULL);
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
* dp_ppdu_ring_reset()- Reset PPDU Stats ring
|
||||
* @pdev: DP_PDEV handle
|
||||
|
|
@ -6751,7 +6758,7 @@ static int dp_txrx_stats_request(struct cdp_vdev *vdev,
|
|||
|
||||
if ((host_stats != TXRX_HOST_STATS_INVALID) &&
|
||||
(host_stats <= TXRX_HOST_STATS_MAX))
|
||||
return dp_print_host_stats(vdev, host_stats);
|
||||
return dp_print_host_stats(vdev, req);
|
||||
else
|
||||
QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_INFO,
|
||||
"Wrong Input for TxRx Stats");
|
||||
|
|
|
|||
Loading…
Reference in a new issue