• Jacob Keller's avatar
    i40e: reduce wait time for adminq command completion · 9e3f23f4
    Jacob Keller authored
    When sending an adminq command, we wait for the command to complete in
    a loop. This loop waits for an entire millisecond, when in practice the
    adminq command is processed often much faster.
    
    Change the loop to use i40e_usec_delay instead, and wait for 50 usecs
    each time instead. This appears to be about the minimum time required,
    based on some manual observation and testing.
    
    The primary benefit of this change is reducing latency of various
    operations in the PF driver, especially when related to having a large
    number of VFs enabled.
    
    For example, on Linux, when instantiating 128 VFs, the time to finish
    the operation dropped from about 9 seconds down to under 6 seconds.
    Additionally, the time it takes to finish a PF reset with 128 VFs
    dropped from 5.1 seconds down to 0.7 seconds.
    
    As the examples above show, a significant portion of the delay is wasted
    waiting for admiqn operations which have already finished.
    
    This patch shouldn't cause impact to functionality, as we still check
    and keep waiting until the command does get processed. The only expected
    change is an increase in CPU utilization as we now check for completion
    far more times. However, in practice the commands appear to generally be
    complete within the first delay window anyways.
    
    Change-ID: If8af8388e100da0a14eaf9e1af3afadf73a958cf
    Signed-off-by: default avatarJacob Keller <jacob.e.keller@intel.com>
    Tested-by: default avatarAndrew Bowers <andrewx.bowers@intel.com>
    Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
    9e3f23f4
i40e_adminq.c 26.3 KB