• Jacob Keller's avatar
    i40e: make use of i40e_reset_all_vfs when initializing new VFs · 1b484370
    Jacob Keller authored
    When allocating a large number of VFs, the driver previously used
    i40e_reset_vf in a sequence. Just as when performing a normal reset,
    this accumulates a large amount of delay for handling all of the VFs in
    sequence. This delay is mainly due to a hardware requirement to wait
    after initiating a reset on the VF.
    
    We recently added a new function, i40e_reset_all_vfs() which can be used
    to amortize the delay time, by first triggering all VF resets, then
    waiting once, and finally cleaning up and allocating the VFs. This is
    almost as good as truly running the resets in parallel.
    
    In order to avoid sending a spurious reset message to a client
    interface, we have a check to see whether we've assigned
    pf->num_alloc_vfs yet. This was originally intended as a way to
    distinguish the "initialization" case from the regular reset case.
    
    Unfortunately, this means that we can't directly use i40e_reset_all_vfs
    yet. Lets avoid this check of pf->num_alloc_vfs by replacing it with
    a proper VSI state bit which we can use instead. This makes the
    intention much clearer and allows us to re-use the i40e_reset_all_vfs
    function directly.
    
    Change-ID: I694279b37eb6b5a91b6670182d0c15d10244fd6e
    Signed-off-by: default avatarJacob Keller <jacob.e.keller@intel.com>
    Reviewed-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>
    1b484370
i40e_virtchnl_pf.h 4.86 KB