• Dan Williams's avatar
    ioat2: fix performance regression · c50a898f
    Dan Williams authored
    Commit 07934481 "DMAENGINE: generic channel status v2" changed the interface for
    how dma channel progress is retrieved.  It inadvertently exported an internal
    helper function ioat_tx_status() instead of ioat_dma_tx_status().  The latter
    polls the hardware to get the latest completion state, while the helper just
    evaluates the current state without touching hardware.  The effect is that we
    end up waiting for completion timeouts or descriptor allocation errors before
    the completion state is updated.
    
    iperf (before fix):
    [SUM]  0.0-41.3 sec   364 MBytes  73.9 Mbits/sec
    
    iperf (after fix):
    [SUM]  0.0- 4.5 sec   499 MBytes   940 Mbits/sec
    
    This is a regression starting with 2.6.35.
    
    Cc: <stable@kernel.org>
    Cc: Dave Jiang <dave.jiang@intel.com>
    Cc: Jesse Brandeburg <jesse.brandeburg@intel.com>
    Cc: Linus Walleij <linus.walleij@stericsson.com>
    Cc: Maciej Sosnowski <maciej.sosnowski@intel.com>
    Reported-by: default avatarRichard Scobie <richard@sauce.co.nz>
    Signed-off-by: default avatarDan Williams <dan.j.williams@intel.com>
    c50a898f
dma_v2.c 24.3 KB