• Jesse Brandeburg's avatar
    ice: update dim usage and moderation · d8eb7ad5
    Jesse Brandeburg authored
    The driver was having trouble with unreliable latency when doing single
    threaded ping-pong tests. This was root caused to the DIM algorithm
    landing on a too slow interrupt value, which caused high latency, and it
    was especially present when queues were being switched frequently by the
    scheduler as happens on default setups today.
    
    In attempting to improve this, we allow the upper rate limit for
    interrupts to move to rate limit of 4 microseconds as a max, which means
    that no vector can generate more than 250,000 interrupts per second. The
    old config was up to 100,000. The driver previously tried to program the
    rate limit too frequently and if the receive and transmit side were both
    active on the same vector, the INTRL would be set incorrectly, and this
    change fixes that issue as a side effect of the redesign.
    
    This driver will operate from now on with a slightly changed DIM table
    with more emphasis towards latency sensitivity by having more table
    entries with lower latency than with high latency (high being >= 64
    microseconds).
    
    The driver also resets the DIM algorithm state with a new stats set when
    there is no work done and the data becomes stale (older than 1 second),
    for the respective receive or transmit portion of the interrupt.
    
    Add a new helper for setting rate limit, which will be used more
    in a followup patch.
    Signed-off-by: default avatarJesse Brandeburg <jesse.brandeburg@intel.com>
    Tested-by: default avatarGurucharan G <gurucharanx.g@intel.com>
    Signed-off-by: default avatarTony Nguyen <anthony.l.nguyen@intel.com>
    d8eb7ad5
ice_lib.c 101 KB