• Alexander Duyck's avatar
    ixgbe: Reset interface after enabling SR-IOV · bf4d67d9
    Alexander Duyck authored
    Enabling SR-IOV and then bringing the interface up was resulting in the PF
    MAC addresses getting into a bad state.  Specifically the MAC address was
    enabled for both VF 0 and the PF.  This resulted in some odd behaviors such
    as VF 0 receiving a copy of the PFs traffic, which in turn enables the
    ability for VF 0 to spoof the PF.
    
    A workaround for this issue appears to be to bring up the interface first
    and then enable SR-IOV as this way the reset is then triggered in the
    existing code.
    
    In order to correct this I have added a change to ixgbe_setup_tc where if
    the interface is down we still will at least call ixgbe_reset so that the
    MAC addresses for the device are reset to the correct pools.
    
    Steps to reproduce issue:
    modprobe ixgbe
    echo 7 > /sys/bus/pci/devices/0000\:01\:00.1/sriov_numvfs
    ifconfig enp1s0f1 up
    ethregs -s 1:00.1 | grep MPSAR | grep -v 00000000
    
    Result:
    	MPSAR[0]               00000081
    	MPSAR[254]             00000001
    
    Expected Result, behavior after patch:
    	MPSAR[0]               00000080
    	MPSAR[254]             00000080
    Signed-off-by: default avatarAlexander Duyck <aduyck@mirantis.com>
    Tested-by: default avatarDarin Miller <darin.j.miller@intel.com>
    Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
    bf4d67d9
ixgbe_main.c 255 KB