• Matt Carlson's avatar
    tg3: Unwedge stuck MSI-X vectors · f89f38b8
    Matt Carlson authored
    The previous patch changed the code so that new rx buffer submissions to
    the hardware stall if a new submission would overwrite data needed by an
    unserviced rx packet.  On very busy 5717 and 57765 asic rev devices,
    there is a corner case where the hardware will fail to assert an MSI-X
    interrupt for rx traffic.  If that vector's interrupt never has another
    reason to assert, any rx buffers held will never be serviced.  If the
    buffers are never serviced and the hardware consumes all the available
    rx packets for other rx rings, deadlock will result.
    
    The most reliable and least intrusive way to work around the problem is
    to detect the case where new submissions would overwrite existing data
    and force all rx interrupt vectors to fire.
    Signed-off-by: default avatarMatt Carlson <mcarlson@broadcom.com>
    Reviewed-by: default avatarMichael Chan <mchan@broadcom.com>
    Reviewed-by: default avatarBenjamin Li <benli@broadcom.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    f89f38b8
tg3.h 109 KB