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 Cernaynfb_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 Cernaynfb_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