> -----Original Message----- > From: Stephen Hemminger <step...@networkplumber.org> > Sent: Wednesday, October 9, 2024 12:00 AM > To: dev@dpdk.org > Cc: Stephen Hemminger <step...@networkplumber.org>; jiawe...@trustnetic.com > Subject: [RFC 1/5] net/txgbe: fix query handling in xstats_get > > The xstats_get function in this driver did not act the same > as other drivers when queried. The correct check is to look > at the requested number of stats and compare it to the available > stats and if the request is too small, return the correct size. > > Bugzilla ID: 1560 > Fixes: 91fe49c87d76 ("net/txgbe: support device xstats") > Cc: jiawe...@trustnetic.com > > Signed-off-by: Stephen Hemminger <step...@networkplumber.org> > --- > drivers/net/txgbe/txgbe_ethdev.c | 12 +++--------- > 1 file changed, 3 insertions(+), 9 deletions(-) > > diff --git a/drivers/net/txgbe/txgbe_ethdev.c > b/drivers/net/txgbe/txgbe_ethdev.c > index 2834468764..ee829d9120 100644 > --- a/drivers/net/txgbe/txgbe_ethdev.c > +++ b/drivers/net/txgbe/txgbe_ethdev.c > @@ -2547,19 +2547,13 @@ txgbe_dev_xstats_get(struct rte_eth_dev *dev, struct > rte_eth_xstat *xstats, > struct txgbe_hw_stats *hw_stats = TXGBE_DEV_STATS(dev); > unsigned int i, count; > > - txgbe_read_stats_registers(hw, hw_stats); > - > - /* If this is a reset xstats is NULL, and we have cleared the > - * registers by reading them. > - */ > count = txgbe_xstats_calc_num(dev); > - if (xstats == NULL) > + if (limit < count) > return count; > > - limit = min(limit, txgbe_xstats_calc_num(dev)); > - > + txgbe_read_stats_registers(hw, hw_stats); > /* Extended stats from txgbe_hw_stats */ > - for (i = 0; i < limit; i++) { > + for (i = 0; i < count; i++) { > uint32_t offset = 0; > > if (txgbe_get_offset_by_id(i, &offset)) { > -- > 2.45.2 > >
Thanks! Reviewed-by: Jiawen Wu <jiawe...@trustnetic.com>