From: Madhuker Mythri <madhuker.myt...@oracle.com> In bonding PMD, member_start() function checks whether RSS(mq_mode) is enabled and then calling the RSS rte_eth_dev_rss_reta_update() API, which is returning error in-case of device configured in flow isolation-mode. When the device configured with flow isolation mode RSS reta update is not required and the API was not supported. For example in-case of mlx5 PMD, RSS reta update API was not supported, when the device is configured in flow isolation-mode.
So, added check to verify if the device is configured in flow-isolation mode, then do not call the rte_eth_dev_rss_reta_update() API. Fixes: 734ce47f71e0 ("bonding: support RSS dynamic configuration") Cc: tomaszx.kula...@intel.com Signed-off-by: Madhuker Mythri <madhuker.myt...@oracle.com> --- drivers/net/bonding/rte_eth_bond_pmd.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/drivers/net/bonding/rte_eth_bond_pmd.c b/drivers/net/bonding/rte_eth_bond_pmd.c index 83339bae3d..bcbb7cae7b 100644 --- a/drivers/net/bonding/rte_eth_bond_pmd.c +++ b/drivers/net/bonding/rte_eth_bond_pmd.c @@ -1904,12 +1904,13 @@ member_start(struct rte_eth_dev *bonding_eth_dev, } } - /* If RSS is enabled for bonding, synchronize RETA */ - if (bonding_eth_dev->data->dev_conf.rxmode.mq_mode & RTE_ETH_MQ_RX_RSS) { + /* + * If flow-isolation is not enabled, then check whether RSS is enabled for + * bonding, synchronize RETA + */ + if (internals->flow_isolated_valid == 0 && + (bonding_eth_dev->data->dev_conf.rxmode.mq_mode & RTE_ETH_MQ_RX_RSS)) { int i; - struct bond_dev_private *internals; - - internals = bonding_eth_dev->data->dev_private; for (i = 0; i < internals->member_count; i++) { if (internals->members[i].port_id == member_port_id) { -- 2.39.5 (Apple Git-154)