[PATCH] net/bonding: fix MTU set for slaves

Min Hu (Connor) humin29 at huawei.com
Thu Jan 27 10:18:35 CET 2022


Acked-by: Min Hu (Connor) <humin29 at huawei.com>

在 2022/1/26 21:10, Ferruh Yigit 写道:
> ethdev requires device to be configured before setting MTU.
> 
> In bonding PMD, while configuring slaves, bonding first sets MTU later
> configures them, which causes failure if slaves are not configured in
> advance.
> 
> Fixing by changing the order in slave configure as requested in ethdev
> layer, configure first and set MTU later.
> 
> Bugzilla ID: 864
> Fixes: b26bee10ee37 ("ethdev: forbid MTU set before device configure")
> Cc: stable at dpdk.org
> 
> Signed-off-by: Ferruh Yigit <ferruh.yigit at intel.com>
> ---
> Cc: Andrew Rybchenko <arybchenko at solarflare.com>
> Cc: yux.jiang at intel.com
> ---
>   drivers/net/bonding/rte_eth_bond_pmd.c | 16 ++++++++--------
>   1 file changed, 8 insertions(+), 8 deletions(-)
> 
> diff --git a/drivers/net/bonding/rte_eth_bond_pmd.c b/drivers/net/bonding/rte_eth_bond_pmd.c
> index 9607141b393e..6fd52035c9a8 100644
> --- a/drivers/net/bonding/rte_eth_bond_pmd.c
> +++ b/drivers/net/bonding/rte_eth_bond_pmd.c
> @@ -1741,14 +1741,6 @@ slave_configure(struct rte_eth_dev *bonded_eth_dev,
>   		}
>   	}
>   
> -	errval = rte_eth_dev_set_mtu(slave_eth_dev->data->port_id,
> -				     bonded_eth_dev->data->mtu);
> -	if (errval != 0 && errval != -ENOTSUP) {
> -		RTE_BOND_LOG(ERR, "rte_eth_dev_set_mtu: port %u, err (%d)",
> -				slave_eth_dev->data->port_id, errval);
> -		return errval;
> -	}
> -
>   	/* Configure device */
>   	errval = rte_eth_dev_configure(slave_eth_dev->data->port_id,
>   			nb_rx_queues, nb_tx_queues,
> @@ -1759,6 +1751,14 @@ slave_configure(struct rte_eth_dev *bonded_eth_dev,
>   		return errval;
>   	}
>   
> +	errval = rte_eth_dev_set_mtu(slave_eth_dev->data->port_id,
> +				     bonded_eth_dev->data->mtu);
> +	if (errval != 0 && errval != -ENOTSUP) {
> +		RTE_BOND_LOG(ERR, "rte_eth_dev_set_mtu: port %u, err (%d)",
> +				slave_eth_dev->data->port_id, errval);
> +		return errval;
> +	}
> +
>   	/* Setup Rx Queues */
>   	for (q_id = 0; q_id < bonded_eth_dev->data->nb_rx_queues; q_id++) {
>   		bd_rx_q = (struct bond_rx_queue *)bonded_eth_dev->data->rx_queues[q_id];
> 


More information about the stable mailing list