[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