From: Kalesh AP <kalesh-anakkur.pura...@broadcom.com>

Fixed multicast filter programming and allmulti programming.
Fixed to skip programming multicast macs if the user requests
allmulti mode.

Also removed a comment in bnxt_hwrm_cfa_l2_set_rx_mask() which is
no longer valid now.

Fixes: d69851df12b2 ("net/bnxt: support multicast filter and set MAC addr")
Cc: sta...@dpdk.org

Signed-off-by: Kalesh AP <kalesh-anakkur.pura...@broadcom.com>
Reviewed-by: Ajit Khaparde <ajit.khapa...@broadcom.com>
---
 drivers/net/bnxt/bnxt_ethdev.c |  4 ++++
 drivers/net/bnxt/bnxt_hwrm.c   | 11 ++++-------
 2 files changed, 8 insertions(+), 7 deletions(-)

diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c
index e305ad4163..02eacf7965 100644
--- a/drivers/net/bnxt/bnxt_ethdev.c
+++ b/drivers/net/bnxt/bnxt_ethdev.c
@@ -2053,6 +2053,10 @@ bnxt_dev_set_mc_addr_list_op(struct rte_eth_dev *eth_dev,
        }
 
        vnic->mc_addr_cnt = i;
+       if (vnic->mc_addr_cnt)
+               vnic->flags |= BNXT_VNIC_INFO_MCAST;
+       else
+               vnic->flags &= ~BNXT_VNIC_INFO_MCAST;
 
 allmulti:
        return bnxt_hwrm_cfa_l2_set_rx_mask(bp, vnic, 0, NULL);
diff --git a/drivers/net/bnxt/bnxt_hwrm.c b/drivers/net/bnxt/bnxt_hwrm.c
index 2a7e0d6d15..011cd05ae0 100644
--- a/drivers/net/bnxt/bnxt_hwrm.c
+++ b/drivers/net/bnxt/bnxt_hwrm.c
@@ -295,20 +295,17 @@ int bnxt_hwrm_cfa_l2_set_rx_mask(struct bnxt *bp,
        HWRM_PREP(req, CFA_L2_SET_RX_MASK, BNXT_USE_CHIMP_MB);
        req.vnic_id = rte_cpu_to_le_16(vnic->fw_vnic_id);
 
-       /* FIXME add multicast flag, when multicast adding options is supported
-        * by ethtool.
-        */
        if (vnic->flags & BNXT_VNIC_INFO_BCAST)
                mask |= HWRM_CFA_L2_SET_RX_MASK_INPUT_MASK_BCAST;
        if (vnic->flags & BNXT_VNIC_INFO_UNTAGGED)
                mask |= HWRM_CFA_L2_SET_RX_MASK_INPUT_MASK_VLAN_NONVLAN;
+
        if (vnic->flags & BNXT_VNIC_INFO_PROMISC)
                mask |= HWRM_CFA_L2_SET_RX_MASK_INPUT_MASK_PROMISCUOUS;
-       if (vnic->flags & BNXT_VNIC_INFO_ALLMULTI)
+
+       if (vnic->flags & BNXT_VNIC_INFO_ALLMULTI) {
                mask |= HWRM_CFA_L2_SET_RX_MASK_INPUT_MASK_ALL_MCAST;
-       if (vnic->flags & BNXT_VNIC_INFO_MCAST)
-               mask |= HWRM_CFA_L2_SET_RX_MASK_INPUT_MASK_MCAST;
-       if (vnic->mc_addr_cnt) {
+       } else if (vnic->flags & BNXT_VNIC_INFO_MCAST) {
                mask |= HWRM_CFA_L2_SET_RX_MASK_INPUT_MASK_MCAST;
                req.num_mc_entries = rte_cpu_to_le_32(vnic->mc_addr_cnt);
                req.mc_tbl_addr = rte_cpu_to_le_64(vnic->mc_list_dma_addr);
-- 
2.20.1 (Apple Git-117)

Reply via email to