net/dpaa2: support statistics per queue
For now, only the packet count stats per queue is available. This is part of xstats output (though, per queue stats are actually part of rte_eth_stats basic stats). Signed-off-by: Shreyansh Jain <shreyansh.jain@nxp.com>
This commit is contained in:
parent
c3e0a706fd
commit
e43f252105
@ -1118,6 +1118,8 @@ int dpaa2_dev_stats_get(struct rte_eth_dev *dev,
|
||||
int32_t retcode;
|
||||
uint8_t page0 = 0, page1 = 1, page2 = 2;
|
||||
union dpni_statistics value;
|
||||
int i;
|
||||
struct dpaa2_queue *dpaa2_rxq, *dpaa2_txq;
|
||||
|
||||
memset(&value, 0, sizeof(union dpni_statistics));
|
||||
|
||||
@ -1165,6 +1167,21 @@ int dpaa2_dev_stats_get(struct rte_eth_dev *dev,
|
||||
stats->oerrors = value.page_2.egress_discarded_frames;
|
||||
stats->imissed = value.page_2.ingress_nobuffer_discards;
|
||||
|
||||
/* Fill in per queue stats */
|
||||
for (i = 0; (i < RTE_ETHDEV_QUEUE_STAT_CNTRS) &&
|
||||
(i < priv->nb_rx_queues || i < priv->nb_tx_queues); ++i) {
|
||||
dpaa2_rxq = (struct dpaa2_queue *)priv->rx_vq[i];
|
||||
dpaa2_txq = (struct dpaa2_queue *)priv->tx_vq[i];
|
||||
if (dpaa2_rxq)
|
||||
stats->q_ipackets[i] = dpaa2_rxq->rx_pkts;
|
||||
if (dpaa2_txq)
|
||||
stats->q_opackets[i] = dpaa2_txq->tx_pkts;
|
||||
|
||||
/* Byte counting is not implemented */
|
||||
stats->q_ibytes[i] = 0;
|
||||
stats->q_obytes[i] = 0;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
err:
|
||||
@ -1324,6 +1341,8 @@ dpaa2_dev_stats_reset(struct rte_eth_dev *dev)
|
||||
struct dpaa2_dev_priv *priv = dev->data->dev_private;
|
||||
struct fsl_mc_io *dpni = (struct fsl_mc_io *)priv->hw;
|
||||
int32_t retcode;
|
||||
int i;
|
||||
struct dpaa2_queue *dpaa2_q;
|
||||
|
||||
PMD_INIT_FUNC_TRACE();
|
||||
|
||||
@ -1336,6 +1355,19 @@ dpaa2_dev_stats_reset(struct rte_eth_dev *dev)
|
||||
if (retcode)
|
||||
goto error;
|
||||
|
||||
/* Reset the per queue stats in dpaa2_queue structure */
|
||||
for (i = 0; i < priv->nb_rx_queues; i++) {
|
||||
dpaa2_q = (struct dpaa2_queue *)priv->rx_vq[i];
|
||||
if (dpaa2_q)
|
||||
dpaa2_q->rx_pkts = 0;
|
||||
}
|
||||
|
||||
for (i = 0; i < priv->nb_tx_queues; i++) {
|
||||
dpaa2_q = (struct dpaa2_queue *)priv->tx_vq[i];
|
||||
if (dpaa2_q)
|
||||
dpaa2_q->tx_pkts = 0;
|
||||
}
|
||||
|
||||
return;
|
||||
|
||||
error:
|
||||
|
Loading…
Reference in New Issue
Block a user