We cannot configure the queues when the device is started. So, that part is still before the device starts. I just moved bond_ethdev_8023ad_flow_set() after the device start.
On Thu, Sep 29, 2022 at 9:05 AM Usman Tanveer <usman.tanv...@emumba.com> wrote: > > when dedicated queues are enable with bonding mode 4 (mlx5), the > application sets the flow, which cannot be set if the device is not > started. This fixed the issue by starting the device just before > setting the flow. Because device should be started to set the flow. > Also it does not effect other driver codes (I have tried on ixgbe). > > Bugzilla ID: 759 > > Signed-off-by: Usman Tanveer <usman.tanv...@emumba.com> > --- > drivers/net/bonding/rte_eth_bond_pmd.c | 19 +++++++++++-------- > 1 file changed, 11 insertions(+), 8 deletions(-) > > diff --git a/drivers/net/bonding/rte_eth_bond_pmd.c > b/drivers/net/bonding/rte_eth_bond_pmd.c > index fd2d95a751..69cbbe19ff 100644 > --- a/drivers/net/bonding/rte_eth_bond_pmd.c > +++ b/drivers/net/bonding/rte_eth_bond_pmd.c > @@ -1828,7 +1828,18 @@ slave_start(struct rte_eth_dev *bonded_eth_dev, > RTE_BOND_LOG(ERR, "bond_ethdev_8023ad_flow_destroy: > port=%d, err (%d)", > slave_eth_dev->data->port_id, errval); > } > + } > + > + /* Start device */ > + errval = rte_eth_dev_start(slave_eth_dev->data->port_id); > + if (errval != 0) { > + RTE_BOND_LOG(ERR, "rte_eth_dev_start: port=%u, err (%d)", > + slave_eth_dev->data->port_id, errval); > + return -1; > + } > > + if (internals->mode == BONDING_MODE_8023AD && > + internals->mode4.dedicated_queues.enabled == 1) { > errval = bond_ethdev_8023ad_flow_set(bonded_eth_dev, > slave_eth_dev->data->port_id); > if (errval != 0) { > @@ -1839,14 +1850,6 @@ slave_start(struct rte_eth_dev *bonded_eth_dev, > } > } > > - /* Start device */ > - errval = rte_eth_dev_start(slave_eth_dev->data->port_id); > - if (errval != 0) { > - RTE_BOND_LOG(ERR, "rte_eth_dev_start: port=%u, err (%d)", > - slave_eth_dev->data->port_id, errval); > - return -1; > - } > - > /* If RSS is enabled for bonding, synchronize RETA */ > if (bonded_eth_dev->data->dev_conf.rxmode.mq_mode & > RTE_ETH_MQ_RX_RSS) { > int i; > -- > 2.25.1 >