On Tue, 2017-07-18 at 18:23 -0700, Jeff Kirsher wrote: > 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. [] > diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c > b/drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c [] > @@ -681,6 +681,7 @@ static int ixgbe_set_vf_macvlan(struct ixgbe_adapter > *adapter, > { > struct list_head *pos; > struct vf_macvlans *entry; > + s32 retval = 0;
This function returns int, why use s32 here? > if (index <= 1) { > list_for_each(pos, &adapter->vf_mvs.l) { > @@ -721,14 +722,15 @@ static int ixgbe_set_vf_macvlan(struct ixgbe_adapter > *adapter, > if (!entry || !entry->free) > return -ENOSPC; > > - 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); > + retval = ixgbe_add_mac_filter(adapter, mac_addr, vf); > + if (retval >= 0) { > + entry->free = false; > + entry->is_macvlan = true; > + entry->vf = vf; > + memcpy(entry->vf_macvlan, mac_addr, ETH_ALEN); > + } > > - return 0; > + return retval; This is also backwards logic from typical style and unnecessarily indents code. 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);> return 0; } This patch also sets the return value to a possible positive value. Is that really desired? The only code that seems to use a possible positive value also limits its return to 0 static int ixgbe_uc_sync(struct net_device *netdev, const unsigned char *addr) { struct ixgbe_adapter *adapter = netdev_priv(netdev); int ret; ret = ixgbe_add_mac_filter(adapter, addr, VMDQ_P(0)); return min_t(int, ret, 0); }