• Michael Chan's avatar
    tg3: Disable multiple TX rings by default due to hardware flaw · cf6d6ea6
    Michael Chan authored
    Simple round-robin hardware TX scheduling can cause starvation of TX rings
    with small packets when other TX rings have large TSO or jumbo packets.
    
    In the simplest case, consider 2 TCP streams running in opposite
    directions.  The TSO TX traffic will hash to one ring and the ACKs for the
    incoming data on a different TCP connection will hash to a different TX
    ring.  The hardware fetches one complete TSO packet (up to 64K data)
    before servicing the other TX ring.  When it gets to the other TX ring, it
    will only fetch one packet (64-byte ACK packet in this case).  After that,
    it will switch back to the 1st ring filled with more TSO packets.  Because
    only one ACK can go out roughly every 500 usec in this case, the incoming
    data rate becomes very low.
    
    Update version to 3.125.
    Signed-off-by: default avatarMichael Chan <mchan@broadcom.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    cf6d6ea6
tg3.c 429 KB