ethdev: return diagnostic when setting MAC address
[dpdk.git] / drivers / net / bnxt / bnxt_ethdev.c
index 54348de..a856c7e 100644 (file)
@@ -1403,7 +1403,7 @@ bnxt_vlan_offload_set_op(struct rte_eth_dev *dev, int mask)
        return 0;
 }
 
-static void
+static int
 bnxt_set_default_mac_addr_op(struct rte_eth_dev *dev, struct ether_addr *addr)
 {
        struct bnxt *bp = (struct bnxt *)dev->data->dev_private;
@@ -1413,7 +1413,7 @@ bnxt_set_default_mac_addr_op(struct rte_eth_dev *dev, struct ether_addr *addr)
        int rc;
 
        if (BNXT_VF(bp))
-               return;
+               return -EPERM;
 
        memcpy(bp->mac_addr, addr, sizeof(bp->mac_addr));
 
@@ -1423,7 +1423,7 @@ bnxt_set_default_mac_addr_op(struct rte_eth_dev *dev, struct ether_addr *addr)
                        continue;
                rc = bnxt_hwrm_clear_l2_filter(bp, filter);
                if (rc)
-                       break;
+                       return rc;
                memcpy(filter->l2_addr, bp->mac_addr, ETHER_ADDR_LEN);
                memset(filter->l2_addr_mask, 0xff, ETHER_ADDR_LEN);
                filter->flags |= HWRM_CFA_L2_FILTER_ALLOC_INPUT_FLAGS_PATH_RX;
@@ -1432,10 +1432,12 @@ bnxt_set_default_mac_addr_op(struct rte_eth_dev *dev, struct ether_addr *addr)
                        HWRM_CFA_L2_FILTER_ALLOC_INPUT_ENABLES_L2_ADDR_MASK;
                rc = bnxt_hwrm_set_l2_filter(bp, vnic->fw_vnic_id, filter);
                if (rc)
-                       break;
+                       return rc;
                filter->mac_index = 0;
                PMD_DRV_LOG(DEBUG, "Set MAC addr\n");
        }
+
+       return 0;
 }
 
 static int