> From: Stephen Hemminger [mailto:step...@networkplumber.org] > Sent: Thursday, 7 November 2024 00.26 T v10] ethdev: support single queue per port > > On Wed, 6 Nov 2024 22:02:16 +0000 > Morten Brørup <m...@smartsharesystems.com> wrote: > > > iff --git a/drivers/net/vmxnet3/vmxnet3_ethdev.c > b/drivers/net/vmxnet3/vmxnet3_ethdev.c > > index 78fac63ab6..1752c58069 100644 > > --- a/drivers/net/vmxnet3/vmxnet3_ethdev.c > > +++ b/drivers/net/vmxnet3/vmxnet3_ethdev.c > > @@ -1470,42 +1470,52 @@ vmxnet3_dev_stats_get(struct rte_eth_dev > *dev, struct rte_eth_stats *stats) > > struct vmxnet3_hw *hw = dev->data->dev_private; > > struct UPT1_TxStats txStats; > > struct UPT1_RxStats rxStats; > > + uint64_t packets, bytes; > > > > VMXNET3_WRITE_BAR1_REG(hw, VMXNET3_REG_CMD, > VMXNET3_CMD_GET_STATS); > > > > for (i = 0; i < hw->num_tx_queues; i++) { > > vmxnet3_tx_stats_get(hw, i, &txStats); > > > > - stats->q_opackets[i] = txStats.ucastPktsTxOK + > > + packets = txStats.ucastPktsTxOK + > > txStats.mcastPktsTxOK + > > txStats.bcastPktsTxOK; > > > > - stats->q_obytes[i] = txStats.ucastBytesTxOK + > > + bytes = txStats.ucastBytesTxOK + > > txStats.mcastBytesTxOK + > > txStats.bcastBytesTxOK; > > > > - stats->opackets += stats->q_opackets[i]; > > - stats->obytes += stats->q_obytes[i]; > > + stats->opackets += packets; > > + stats->obytes += bytes; > > stats->oerrors += txStats.pktsTxError + > txStats.pktsTxDiscard; > > + > > + if (i < RTE_ETHDEV_QUEUE_STAT_CNTRS) { > > + stats->q_opackets[i] = packets; > > + stats->q_obytes[i] = bytes; > > + } > > } > > > > for (i = 0; i < hw->num_rx_queues; i++) { > > vmxnet3_rx_stats_get(hw, i, &rxStats); > > > > - stats->q_ipackets[i] = rxStats.ucastPktsRxOK + > > + packets = rxStats.ucastPktsRxOK + > > rxStats.mcastPktsRxOK + > > rxStats.bcastPktsRxOK; > > > > - stats->q_ibytes[i] = rxStats.ucastBytesRxOK + > > + bytes = rxStats.ucastBytesRxOK + > > rxStats.mcastBytesRxOK + > > rxStats.bcastBytesRxOK; > > > > - stats->ipackets += stats->q_ipackets[i]; > > - stats->ibytes += stats->q_ibytes[i]; > > - > > - stats->q_errors[i] = rxStats.pktsRxError; > > + stats->ipackets += packets; > > + stats->ibytes += bytes; > > stats->ierrors += rxStats.pktsRxError; > > stats->imissed += rxStats.pktsRxOutOfBuf; > > + > > + if (i < RTE_ETHDEV_QUEUE_STAT_CNTRS) { > > + stats->q_ipackets[i] = packets; > > + stats->q_ibytes[i] = bytes; > > + stats->q_errors[i] = rxStats.pktsRxError; > > + } > > } > > > > return 0; > > This fixes a bug in existing code of RTE_ETHDEV_QUEUE_STAT_CNTRS < num > queues. > Probably deserves its own patch with Fixes
Thanks for noticing, Stephen. Ferruh also noticed, and has already applied such a patch: https://patchwork.dpdk.org/project/dpdk/patch/20241104105220.1421305-1...@smartsharesystems.com/ The turnaround time was unusual quick on that one - it went in and out of Patchwork in a flash. Don't blink! ;-)