]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
ixgbe: Ensure MAC filter was added before setting MACVLAN
authorTony Nguyen <anthony.l.nguyen@intel.com>
Wed, 19 Jul 2017 22:00:26 +0000 (15:00 -0700)
committerJack Vogel <jack.vogel@oracle.com>
Fri, 13 Oct 2017 02:43:49 +0000 (19:43 -0700)
This patch adds a check to ensure that adding the MAC filter was
successful before setting the MACVLAN.  If it was unsuccessful, propagate
the error.

Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Orabug: 26785078
(cherry picked from commit 0e1ff3061cb529a70f03f63988a48f9fda8ed419)
Signed-off-by: Jack Vogel <jack.vogel@oracle.com>
Reviewed-by: Ethan Zhao <ethan.zhao@oracle.com>
drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c

index 45151131e8b75b180ffb556c7bb1bd71d8601819..84f99927424c28976fbfcd477bff72498cd4c607 100644 (file)
@@ -679,8 +679,9 @@ update_vlvfb:
 static int ixgbe_set_vf_macvlan(struct ixgbe_adapter *adapter,
                                int vf, int index, unsigned char *mac_addr)
 {
-       struct list_head *pos;
        struct vf_macvlans *entry;
+       struct list_head *pos;
+       int retval = 0;
 
        if (index <= 1) {
                list_for_each(pos, &adapter->vf_mvs.l) {
@@ -721,13 +722,15 @@ static int ixgbe_set_vf_macvlan(struct ixgbe_adapter *adapter,
        if (!entry || !entry->free)
                return -ENOSPC;
 
+       retval = ixgbe_add_mac_filter(adapter, mac_addr, vf);
+       if (retval < 0)
+               return retval;
+
        entry->free = false;
        entry->is_macvlan = true;
        entry->vf = vf;
        memcpy(entry->vf_macvlan, mac_addr, ETH_ALEN);
 
-       ixgbe_add_mac_filter(adapter, mac_addr, vf);
-
        return 0;
 }