]>
Commit | Line | Data |
---|---|---|
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 | ||
10 | int | |
11 | nfb_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 | 55 | int |
9f95a23c TL |
56 | nfb_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 | } |