• Eric Dumazet's avatar
    net-gro: avoid reorders · d61d072e
    Eric Dumazet authored
    Receiving a GSO packet in dev_gro_receive() is not uncommon
    in stacked devices, or devices partially implementing LRO/GRO
    like bnx2x. GRO is implementing the aggregation the device
    was not able to do itself.
    
    Current code causes reorders, like in following case :
    
    For a given flow where sender sent 3 packets P1,P2,P3,P4
    
    Receiver might receive P1 as a single packet, stored in GRO engine.
    
    Then P2-P4 are received as a single GSO packet, immediately given to
    upper stack, while P1 is held in GRO engine.
    
    This patch will make sure P1 is given to upper stack, then P2-P4
    immediately after.
    Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    d61d072e
dev.c 207 KB