1 /* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright(C) 2021 Marvell.
5 #include "cnxk_ethdev.h"
8 cnxk_nix_stats_get(struct rte_eth_dev *eth_dev, struct rte_eth_stats *stats)
10 struct cnxk_eth_dev *dev = cnxk_eth_pmd_priv(eth_dev);
11 struct roc_nix *nix = &dev->nix;
12 struct roc_nix_stats nix_stats;
15 rc = roc_nix_stats_get(nix, &nix_stats);
19 stats->opackets = nix_stats.tx_ucast;
20 stats->opackets += nix_stats.tx_mcast;
21 stats->opackets += nix_stats.tx_bcast;
22 stats->oerrors = nix_stats.tx_drop;
23 stats->obytes = nix_stats.tx_octs;
25 stats->ipackets = nix_stats.rx_ucast;
26 stats->ipackets += nix_stats.rx_mcast;
27 stats->ipackets += nix_stats.rx_bcast;
28 stats->imissed = nix_stats.rx_drop;
29 stats->ibytes = nix_stats.rx_octs;
30 stats->ierrors = nix_stats.rx_err;
32 for (i = 0; i < RTE_ETHDEV_QUEUE_STAT_CNTRS; i++) {
33 struct roc_nix_stats_queue qstats;
36 if (dev->txq_stat_map[i] & (1U << 31)) {
37 qidx = dev->txq_stat_map[i] & 0xFFFF;
38 rc = roc_nix_stats_queue_get(nix, qidx, 0, &qstats);
41 stats->q_opackets[i] = qstats.tx_pkts;
42 stats->q_obytes[i] = qstats.tx_octs;
43 stats->q_errors[i] = qstats.tx_drop_pkts;
46 if (dev->rxq_stat_map[i] & (1U << 31)) {
47 qidx = dev->rxq_stat_map[i] & 0xFFFF;
48 rc = roc_nix_stats_queue_get(nix, qidx, 1, &qstats);
51 stats->q_ipackets[i] = qstats.rx_pkts;
52 stats->q_ibytes[i] = qstats.rx_octs;
53 stats->q_errors[i] += qstats.rx_drop_pkts;
61 cnxk_nix_stats_reset(struct rte_eth_dev *eth_dev)
63 struct cnxk_eth_dev *dev = cnxk_eth_pmd_priv(eth_dev);
65 return roc_nix_stats_reset(&dev->nix);
69 cnxk_nix_queue_stats_mapping(struct rte_eth_dev *eth_dev, uint16_t queue_id,
70 uint8_t stat_idx, uint8_t is_rx)
72 struct cnxk_eth_dev *dev = cnxk_eth_pmd_priv(eth_dev);
75 if (queue_id >= dev->nb_rxq)
77 dev->rxq_stat_map[stat_idx] = ((1U << 31) | queue_id);
79 if (queue_id >= dev->nb_txq)
81 dev->txq_stat_map[stat_idx] = ((1U << 31) | queue_id);