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..4906701a95 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)

Reply via email to