]> git.droids-corp.org - dpdk.git/commitdiff
net/cnxk: fix promiscuous mode in multicast enable flow
authorAsaf Ravid <aravid@marvell.com>
Wed, 1 Dec 2021 10:29:53 +0000 (15:59 +0530)
committerJerin Jacob <jerinj@marvell.com>
Thu, 13 Jan 2022 04:04:26 +0000 (05:04 +0100)
When multicast promiscuous was being enabled it caused the unicast
promiscuous to be disabled. This fix resolves this by setting
NIX_RX_MODE_PROMISC when eth_dev->data->promiscuous is set, regardless.

Fixes: 325d79c00a5a ("net/cnxk: support all multicast")
Cc: stable@dpdk.org
Signed-off-by: Asaf Ravid <aravid@marvell.com>
Acked-by: Jerin Jacob <jerinj@marvell.com>
drivers/common/cnxk/roc_nix_npc.c
drivers/net/cnxk/cnxk_ethdev_ops.c

index c0666c87d56222a37e930380fd10502f84edc2f9..ad8839dde833088da264d1f0c8a0ecdfec18a2d1 100644 (file)
@@ -96,7 +96,7 @@ roc_nix_npc_mcast_config(struct roc_nix *roc_nix, bool mcast_enable,
 
        if (mcast_enable)
                req->mode = NIX_RX_MODE_ALLMULTI;
-       else if (prom_enable)
+       if (prom_enable)
                req->mode = NIX_RX_MODE_PROMISC;
 
        return mbox_process(mbox);
index ce5f1f7240297dbaabbba88000095e8c11cbbd7d..34e480965039779058055626ff80339bc26f2f93 100644 (file)
@@ -517,7 +517,8 @@ cnxk_nix_allmulticast_enable(struct rte_eth_dev *eth_dev)
 {
        struct cnxk_eth_dev *dev = cnxk_eth_pmd_priv(eth_dev);
 
-       return roc_nix_npc_mcast_config(&dev->nix, true, false);
+       return roc_nix_npc_mcast_config(&dev->nix, true,
+                                       eth_dev->data->promiscuous);
 }
 
 int