]> git.droids-corp.org - dpdk.git/commitdiff
net/bnxt: fix setting default MAC address
authorKalesh AP <kalesh-anakkur.purayil@broadcom.com>
Wed, 2 Oct 2019 23:25:50 +0000 (16:25 -0700)
committerFerruh Yigit <ferruh.yigit@intel.com>
Tue, 8 Oct 2019 10:14:31 +0000 (12:14 +0200)
Driver was incorrectly programming the MAC with the already
configured one instead of the newly requested MAC by user.

Also, fix to restore the old mac address back to the default
vnic filter if the mac update operation fails.

Fixes: 68f589f2c728 ("net/bnxt: fix setting primary MAC address")
Cc: stable@dpdk.org
Signed-off-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
Reviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
Reviewed-by: Somnath Kotur <somnath.kotur@broadcom.com>
drivers/net/bnxt/bnxt_ethdev.c

index 7cd3213558e4f829369397dc03372623c63ad063..2c9eaaa2ef906a0ea26415fbae719315d14f142d 100644 (file)
@@ -1904,7 +1904,7 @@ bnxt_set_default_mac_addr_op(struct rte_eth_dev *dev,
                if (filter->mac_index != 0)
                        continue;
 
-               memcpy(filter->l2_addr, bp->mac_addr, RTE_ETHER_ADDR_LEN);
+               memcpy(filter->l2_addr, addr, RTE_ETHER_ADDR_LEN);
                memset(filter->l2_addr_mask, 0xff, RTE_ETHER_ADDR_LEN);
                filter->flags |= HWRM_CFA_L2_FILTER_ALLOC_INPUT_FLAGS_PATH_RX |
                        HWRM_CFA_L2_FILTER_ALLOC_INPUT_FLAGS_OUTERMOST;
@@ -1913,8 +1913,11 @@ bnxt_set_default_mac_addr_op(struct rte_eth_dev *dev,
                        HWRM_CFA_L2_FILTER_ALLOC_INPUT_ENABLES_L2_ADDR_MASK;
 
                rc = bnxt_hwrm_set_l2_filter(bp, vnic->fw_vnic_id, filter);
-               if (rc)
+               if (rc) {
+                       memcpy(filter->l2_addr, bp->mac_addr,
+                              RTE_ETHER_ADDR_LEN);
                        return rc;
+               }
 
                memcpy(bp->mac_addr, addr, RTE_ETHER_ADDR_LEN);
                PMD_DRV_LOG(DEBUG, "Set MAC addr\n");