[PATCH] net/bonding: fix iavf bond device query stats

Stephen Hemminger stephen at networkplumber.org
Thu Jun 8 17:41:13 CEST 2023


On Thu,  8 Jun 2023 15:26:36 +0800
Kaiwen Deng <kaiwenx.deng at intel.com> wrote:

> If the rte_eth_stats_get function does not work properly,
> the update function of the slave device does not work
> properly When device is bonded as BONDING_MODE_TLB mode.
> 
> This commit adds handling for functions that do not get
> stats properly.
> 
> Fixes: 7c76a747e68c ("bond: add mode 5")
> Cc: stable at dpdk.org
> 
> Signed-off-by: Kaiwen Deng <kaiwenx.deng at intel.com>
> ---
>  drivers/net/bonding/rte_eth_bond_pmd.c | 7 ++++++-
>  1 file changed, 6 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/net/bonding/rte_eth_bond_pmd.c b/drivers/net/bonding/rte_eth_bond_pmd.c
> index f0c4f7d26b..edce621496 100644
> --- a/drivers/net/bonding/rte_eth_bond_pmd.c
> +++ b/drivers/net/bonding/rte_eth_bond_pmd.c
> @@ -894,6 +894,7 @@ bond_ethdev_update_tlb_slave_cb(void *arg)
>  	uint8_t update_stats = 0;
>  	uint16_t slave_id;
>  	uint16_t i;
> +	int ret;
>  
>  	internals->slave_update_idx++;
>  
> @@ -903,7 +904,10 @@ bond_ethdev_update_tlb_slave_cb(void *arg)
>  
>  	for (i = 0; i < internals->active_slave_count; i++) {
>  		slave_id = internals->active_slaves[i];
> -		rte_eth_stats_get(slave_id, &slave_stats);
> +		ret = rte_eth_stats_get(slave_id, &slave_stats);
> +		if (ret)
> +			goto OUT;
> +
>  		tx_bytes = slave_stats.obytes - tlb_last_obytets[slave_id];
>  		bandwidth_left(slave_id, tx_bytes,
>  				internals->slave_update_idx, &bwg_array[i]);
> @@ -922,6 +926,7 @@ bond_ethdev_update_tlb_slave_cb(void *arg)
>  	for (i = 0; i < slave_count; i++)
>  		internals->tlb_slaves_order[i] = bwg_array[i].slave;
>  
> +OUT:
>  	rte_eal_alarm_set(REORDER_PERIOD_MS * 1000, bond_ethdev_update_tlb_slave_cb,
>  			(struct bond_dev_private *)internals);
>  }

Why is stats get failing on a device, looks like the real bug is there?
Better to fix the buggy driver. Other usages might already be affected.

Silently ignoring the error without logging is also not good.
Lastly, DPDK coding style is to use lower case for goto labels.


More information about the stable mailing list