]> git.proxmox.com Git - ceph.git/blame - ceph/src/spdk/dpdk/drivers/net/nfb/nfb_stats.c
update source to Ceph Pacific 16.2.2
[ceph.git] / ceph / src / spdk / dpdk / drivers / net / nfb / nfb_stats.c
CommitLineData
9f95a23c
TL
1/* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright(c) 2019 Cesnet
3 * Copyright(c) 2019 Netcope Technologies, a.s. <info@netcope.com>
4 * All rights reserved.
5 */
6
7#include "nfb_stats.h"
8#include "nfb.h"
9
10int
11nfb_eth_stats_get(struct rte_eth_dev *dev,
12 struct rte_eth_stats *stats)
13{
14 uint16_t i;
15 uint16_t nb_rx = dev->data->nb_rx_queues;
16 uint16_t nb_tx = dev->data->nb_tx_queues;
17 uint64_t rx_total = 0;
18 uint64_t tx_total = 0;
19 uint64_t tx_err_total = 0;
20 uint64_t rx_total_bytes = 0;
21 uint64_t tx_total_bytes = 0;
22
23 struct ndp_rx_queue *rx_queue = *((struct ndp_rx_queue **)
24 dev->data->rx_queues);
25 struct ndp_tx_queue *tx_queue = *((struct ndp_tx_queue **)
26 dev->data->tx_queues);
27
28 for (i = 0; i < nb_rx; i++) {
29 if (i < RTE_ETHDEV_QUEUE_STAT_CNTRS) {
30 stats->q_ipackets[i] = rx_queue[i].rx_pkts;
31 stats->q_ibytes[i] = rx_queue[i].rx_bytes;
32 }
33 rx_total += rx_queue[i].rx_pkts;
34 rx_total_bytes += rx_queue[i].rx_bytes;
35 }
36
37 for (i = 0; i < nb_tx; i++) {
38 if (i < RTE_ETHDEV_QUEUE_STAT_CNTRS) {
39 stats->q_opackets[i] = tx_queue[i].tx_pkts;
40 stats->q_obytes[i] = tx_queue[i].tx_bytes;
41 }
42 tx_total += tx_queue[i].tx_pkts;
43 tx_total_bytes += tx_queue[i].tx_bytes;
44 tx_err_total += tx_queue[i].err_pkts;
45 }
46
47 stats->ipackets = rx_total;
48 stats->opackets = tx_total;
49 stats->ibytes = rx_total_bytes;
50 stats->obytes = tx_total_bytes;
51 stats->oerrors = tx_err_total;
52 return 0;
53}
54
f67539c2 55int
9f95a23c
TL
56nfb_eth_stats_reset(struct rte_eth_dev *dev)
57{
58 uint16_t i;
59 uint16_t nb_rx = dev->data->nb_rx_queues;
60 uint16_t nb_tx = dev->data->nb_tx_queues;
61
62 struct ndp_rx_queue *rx_queue = *((struct ndp_rx_queue **)
63 dev->data->rx_queues);
64 struct ndp_tx_queue *tx_queue = *((struct ndp_tx_queue **)
65 dev->data->tx_queues);
66
67 for (i = 0; i < nb_rx; i++) {
68 rx_queue[i].rx_pkts = 0;
69 rx_queue[i].rx_bytes = 0;
70 rx_queue[i].err_pkts = 0;
71 }
72 for (i = 0; i < nb_tx; i++) {
73 tx_queue[i].tx_pkts = 0;
74 tx_queue[i].tx_bytes = 0;
75 tx_queue[i].err_pkts = 0;
76 }
f67539c2
TL
77
78 return 0;
9f95a23c 79}