• Alexander Duyck's avatar
    i40e/i40evf: Add support for new mechanism of updating adaptive ITR · a0073a4b
    Alexander Duyck authored
    This patch replaces the existing mechanism for determining the correct
    value to program for adaptive ITR with yet another new and more
    complicated approach.
    
    The basic idea from a 30K foot view is that this new approach will push the
    Rx interrupt moderation up so that by default it starts in low latency and
    is gradually pushed up into a higher latency setup as long as doing so
    increases the number of packets processed, if the number of packets drops
    to 4 to 1 per packet we will reset and just base our ITR on the size of the
    packets being received. For Tx we leave it floating at a high interrupt
    delay and do not pull it down unless we start processing more than 112
    packets per interrupt. If we start exceeding that we will cut our interrupt
    rates in half until we are back below 112.
    
    The side effect of these patches are that we will be processing more
    packets per interrupt. This is both a good and a bad thing as it means we
    will not be blocking processing in the case of things like pktgen and XDP,
    but we will also be consuming a bit more CPU in the cases of things such as
    network throughput tests using netperf.
    
    One delta from this versus the ixgbe version of the changes is that I have
    made the interrupt moderation a bit more aggressive when we are in bulk
    mode by moving our "goldilocks zone" up from 48 to 96 to 56 to 112. The
    main motivation behind moving this is to address the fact that we need to
    update less frequently, and have more fine grained control due to the
    separate Tx and Rx ITR times.
    Signed-off-by: default avatarAlexander Duyck <alexander.h.duyck@intel.com>
    Tested-by: default avatarAndrew Bowers <andrewx.bowers@intel.com>
    Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
    a0073a4b
i40e_txrx.c 71.4 KB