Nothing more than the title. Signed-off-by: David Marchand <david.march...@redhat.com> --- drivers/net/af_packet/rte_eth_af_packet.c | 49 +++++++++++++++++++++---------- 1 file changed, 33 insertions(+), 16 deletions(-)
diff --git a/drivers/net/af_packet/rte_eth_af_packet.c b/drivers/net/af_packet/rte_eth_af_packet.c index ec90cc0..cd36eb6 100644 --- a/drivers/net/af_packet/rte_eth_af_packet.c +++ b/drivers/net/af_packet/rte_eth_af_packet.c @@ -310,28 +310,20 @@ struct pmd_internals { static int eth_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *igb_stats) { - unsigned i, imax; + const struct pmd_internals *internal = dev->data->dev_private; unsigned long rx_total = 0, tx_total = 0, tx_err_total = 0; unsigned long rx_bytes_total = 0, tx_bytes_total = 0; - const struct pmd_internals *internal = dev->data->dev_private; + unsigned int i; - imax = (internal->nb_queues < RTE_ETHDEV_QUEUE_STAT_CNTRS ? - internal->nb_queues : RTE_ETHDEV_QUEUE_STAT_CNTRS); - for (i = 0; i < imax; i++) { - igb_stats->q_ipackets[i] = internal->rx_queue[i].rx_pkts; - igb_stats->q_ibytes[i] = internal->rx_queue[i].rx_bytes; - rx_total += igb_stats->q_ipackets[i]; - rx_bytes_total += igb_stats->q_ibytes[i]; + for (i = 0; i < internal->nb_queues; i++) { + rx_total += internal->rx_queue[i].rx_pkts; + rx_bytes_total += internal->rx_queue[i].rx_bytes; } - imax = (internal->nb_queues < RTE_ETHDEV_QUEUE_STAT_CNTRS ? - internal->nb_queues : RTE_ETHDEV_QUEUE_STAT_CNTRS); - for (i = 0; i < imax; i++) { - igb_stats->q_opackets[i] = internal->tx_queue[i].tx_pkts; - igb_stats->q_obytes[i] = internal->tx_queue[i].tx_bytes; - tx_total += igb_stats->q_opackets[i]; + for (i = 0; i < internal->nb_queues; i++) { + tx_total += internal->tx_queue[i].tx_pkts; tx_err_total += internal->tx_queue[i].err_pkts; - tx_bytes_total += igb_stats->q_obytes[i]; + tx_bytes_total += internal->tx_queue[i].tx_bytes; } igb_stats->ipackets = rx_total; @@ -342,6 +334,29 @@ struct pmd_internals { return 0; } +static int +rxq_stats_get(struct rte_eth_dev *dev, uint16_t rx_queue_id, + struct pmd_eth_rxq_stats *rxq_stats) +{ + const struct pmd_internals *internal = dev->data->dev_private; + + rxq_stats->packets = internal->rx_queue[rx_queue_id].rx_pkts; + rxq_stats->bytes = internal->rx_queue[rx_queue_id].rx_bytes; + return 0; +} + +static int +txq_stats_get(struct rte_eth_dev *dev, uint16_t tx_queue_id, + struct pmd_eth_txq_stats *txq_stats) +{ + const struct pmd_internals *internal = dev->data->dev_private; + + txq_stats->packets = internal->tx_queue[tx_queue_id].tx_pkts; + txq_stats->bytes = internal->tx_queue[tx_queue_id].tx_bytes; + txq_stats->errors = internal->tx_queue[tx_queue_id].err_pkts; + return 0; +} + static void eth_stats_reset(struct rte_eth_dev *dev) { @@ -503,6 +518,8 @@ struct pmd_internals { .tx_queue_release = eth_queue_release, .link_update = eth_link_update, .stats_get = eth_stats_get, + .rxq_stats_get = rxq_stats_get, + .txq_stats_get = txq_stats_get, .stats_reset = eth_stats_reset, }; -- 1.8.3.1