• Jesse Brandeburg's avatar
    ice: fix software generating extra interrupts · 23be7075
    Jesse Brandeburg authored
    The driver tried to work around missing completion events that occurred
    while interrupts are disabled, by triggering a software interrupt
    whenever we exit polling (but we had to have polled at least once).
    
    This was causing a *lot* of extra interrupts for some workloads like
    NVMe over TCP, which resulted in regressions in performance. It was also
    visible when polling didn't prevent interrupts when busy_poll was
    enabled.
    
    Fix the extra interrupts by utilizing our previously unused 3rd ITR
    (interrupt throttle) index and set it to 20K interrupts per second, and
    then trigger a software interrupt within that rate limit.
    
    While here, slightly refactor the code to avoid an overwrite of a local
    variable in the case of wb_en = true.
    
    Fixes: b7306b42 ("ice: manage interrupts during poll exit")
    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>
    23be7075
ice_hw_autogen.h 21.2 KB