• Mitch Williams's avatar
    i40evf: allow channel bonding of VFs · 209dc4da
    Mitch Williams authored
    In some modes, bonding would not enslave VF interfaces. This is due to
    bonding calling change_mtu and the immediately calling open. Because of
    the asynchronous nature of the admin queue mechanism, the VF returns
    -EBUSY to the open call, because it knows the previous operation hasn't
    finished yet. This causes bonding to fail with a less-than-useful error
    message.
    
    To fix this, remove the check for pending operations at the beginning of
    open. But this introduces a new bug where the driver will panic on a
    quick close/open cycle. To fix that, we add a new driver state,
    __I40EVF_DOWN_PENDING, that the driver enters when down is called. The
    driver finally transitions to a fully DOWN state when it receives
    confirmation from the PF driver that all the queues are disabled. This
    allows open to complete even if there is a pending mtu change, and
    bonding is finally happy.
    
    Change-ID: I06f4c7e435d5bacbfceaa7c3f209e0ff04be21cc
    Signed-off-by: default avatarMitch Williams <mitch.a.williams@intel.com>
    Tested-by: default avatarAndrew Bowers <andrewx.bowers@intel.com>
    Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
    209dc4da
i40evf_virtchnl.c 24.6 KB