• Brett Creeley's avatar
    ionic: Rework Tx start/stop flow · 061b9bed
    Brett Creeley authored
    Currently the driver attempts to wake the Tx queue
    for every descriptor processed. However, this is
    overkill and can cause thrashing since Tx xmit can be
    running concurrently on a different CPU than Tx clean.
    Fix this by refactoring Tx cq servicing into its own
    function so the Tx wake code can run after processing
    all Tx descriptors.
    
    The driver isn't using the expected memory barriers
    to make sure the stop/start bits are coherent. Fix
    this by  making sure to use the correct memory barriers.
    
    Also, the driver is using the wake API during Tx
    xmit even though it's already scheduled. Fix this by
    using the start API during Tx xmit.
    Signed-off-by: default avatarBrett Creeley <brett.creeley@amd.com>
    Signed-off-by: default avatarShannon Nelson <shannon.nelson@amd.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    061b9bed
ionic_txrx.h 759 Bytes