• R
    qed: Fix interrupt flags on Rx LL2 · 1df2aded
    Ram Amrani 提交于
    Before iterating over the the LL2 Rx ring, the ring's
    spinlock is taken via spin_lock_irqsave().
    The actual processing of the packet [including handling
    by the protocol driver] is done without said lock,
    so qed releases the spinlock and re-claims it afterwards.
    
    Problem is that the final spin_lock_irqrestore() at the end
    of the iteration uses the original flags saved from the
    initial irqsave() instead of the flags from the most recent
    irqsave(). So it's possible that the interrupt status would
    be incorrect at the end of the processing.
    
    Fixes: 0a7fb11c ("qed: Add Light L2 support");
    CC: Ram Amrani <Ram.Amrani@cavium.com>
    Signed-off-by: NYuval Mintz <Yuval.Mintz@cavium.com>
    Signed-off-by: NDavid S. Miller <davem@davemloft.net>
    1df2aded
qed_ll2.c 64.2 KB