xref: /dpdk/drivers/net/nfb/nfb_stats.c (revision 9970a9ad07db7745ca6bc441819b287940ae86ea)
16435f9a0SRastislav Cernay /* SPDX-License-Identifier: BSD-3-Clause
26435f9a0SRastislav Cernay  * Copyright(c) 2019 Cesnet
36435f9a0SRastislav Cernay  * Copyright(c) 2019 Netcope Technologies, a.s. <info@netcope.com>
46435f9a0SRastislav Cernay  * All rights reserved.
56435f9a0SRastislav Cernay  */
66435f9a0SRastislav Cernay 
76435f9a0SRastislav Cernay #include "nfb_stats.h"
86435f9a0SRastislav Cernay #include "nfb.h"
96435f9a0SRastislav Cernay 
106435f9a0SRastislav Cernay int
nfb_eth_stats_get(struct rte_eth_dev * dev,struct rte_eth_stats * stats)116435f9a0SRastislav Cernay nfb_eth_stats_get(struct rte_eth_dev *dev,
126435f9a0SRastislav Cernay 	struct rte_eth_stats *stats)
136435f9a0SRastislav Cernay {
146435f9a0SRastislav Cernay 	uint16_t i;
156435f9a0SRastislav Cernay 	uint16_t nb_rx = dev->data->nb_rx_queues;
166435f9a0SRastislav Cernay 	uint16_t nb_tx = dev->data->nb_tx_queues;
176435f9a0SRastislav Cernay 	uint64_t rx_total = 0;
186435f9a0SRastislav Cernay 	uint64_t tx_total = 0;
196435f9a0SRastislav Cernay 	uint64_t tx_err_total = 0;
206435f9a0SRastislav Cernay 	uint64_t rx_total_bytes = 0;
216435f9a0SRastislav Cernay 	uint64_t tx_total_bytes = 0;
226435f9a0SRastislav Cernay 
236435f9a0SRastislav Cernay 	struct ndp_rx_queue *rx_queue = *((struct ndp_rx_queue **)
246435f9a0SRastislav Cernay 		dev->data->rx_queues);
256435f9a0SRastislav Cernay 	struct ndp_tx_queue *tx_queue = *((struct ndp_tx_queue **)
266435f9a0SRastislav Cernay 		dev->data->tx_queues);
276435f9a0SRastislav Cernay 
286435f9a0SRastislav Cernay 	for (i = 0; i < nb_rx; i++) {
296435f9a0SRastislav Cernay 		if (i < RTE_ETHDEV_QUEUE_STAT_CNTRS) {
306435f9a0SRastislav Cernay 			stats->q_ipackets[i] = rx_queue[i].rx_pkts;
316435f9a0SRastislav Cernay 			stats->q_ibytes[i] = rx_queue[i].rx_bytes;
326435f9a0SRastislav Cernay 		}
336435f9a0SRastislav Cernay 		rx_total += rx_queue[i].rx_pkts;
346435f9a0SRastislav Cernay 		rx_total_bytes += rx_queue[i].rx_bytes;
356435f9a0SRastislav Cernay 	}
366435f9a0SRastislav Cernay 
376435f9a0SRastislav Cernay 	for (i = 0; i < nb_tx; i++) {
386435f9a0SRastislav Cernay 		if (i < RTE_ETHDEV_QUEUE_STAT_CNTRS) {
396435f9a0SRastislav Cernay 			stats->q_opackets[i] = tx_queue[i].tx_pkts;
406435f9a0SRastislav Cernay 			stats->q_obytes[i] = tx_queue[i].tx_bytes;
416435f9a0SRastislav Cernay 		}
426435f9a0SRastislav Cernay 		tx_total += tx_queue[i].tx_pkts;
436435f9a0SRastislav Cernay 		tx_total_bytes += tx_queue[i].tx_bytes;
446435f9a0SRastislav Cernay 		tx_err_total += tx_queue[i].err_pkts;
456435f9a0SRastislav Cernay 	}
466435f9a0SRastislav Cernay 
476435f9a0SRastislav Cernay 	stats->ipackets = rx_total;
486435f9a0SRastislav Cernay 	stats->opackets = tx_total;
496435f9a0SRastislav Cernay 	stats->ibytes = rx_total_bytes;
506435f9a0SRastislav Cernay 	stats->obytes = tx_total_bytes;
516435f9a0SRastislav Cernay 	stats->oerrors = tx_err_total;
526435f9a0SRastislav Cernay 	return 0;
536435f9a0SRastislav Cernay }
546435f9a0SRastislav Cernay 
55*9970a9adSIgor Romanov int
nfb_eth_stats_reset(struct rte_eth_dev * dev)566435f9a0SRastislav Cernay nfb_eth_stats_reset(struct rte_eth_dev *dev)
576435f9a0SRastislav Cernay {
586435f9a0SRastislav Cernay 	uint16_t i;
596435f9a0SRastislav Cernay 	uint16_t nb_rx = dev->data->nb_rx_queues;
606435f9a0SRastislav Cernay 	uint16_t nb_tx = dev->data->nb_tx_queues;
616435f9a0SRastislav Cernay 
626435f9a0SRastislav Cernay 	struct ndp_rx_queue *rx_queue = *((struct ndp_rx_queue **)
636435f9a0SRastislav Cernay 		dev->data->rx_queues);
646435f9a0SRastislav Cernay 	struct ndp_tx_queue *tx_queue = *((struct ndp_tx_queue **)
656435f9a0SRastislav Cernay 		dev->data->tx_queues);
666435f9a0SRastislav Cernay 
676435f9a0SRastislav Cernay 	for (i = 0; i < nb_rx; i++) {
686435f9a0SRastislav Cernay 		rx_queue[i].rx_pkts = 0;
696435f9a0SRastislav Cernay 		rx_queue[i].rx_bytes = 0;
706435f9a0SRastislav Cernay 		rx_queue[i].err_pkts = 0;
716435f9a0SRastislav Cernay 	}
726435f9a0SRastislav Cernay 	for (i = 0; i < nb_tx; i++) {
736435f9a0SRastislav Cernay 		tx_queue[i].tx_pkts = 0;
746435f9a0SRastislav Cernay 		tx_queue[i].tx_bytes = 0;
756435f9a0SRastislav Cernay 		tx_queue[i].err_pkts = 0;
766435f9a0SRastislav Cernay 	}
77*9970a9adSIgor Romanov 
78*9970a9adSIgor Romanov 	return 0;
796435f9a0SRastislav Cernay }
80