• Ilan Tayari's avatar
    gso: Validate assumption of frag_list segementation · 7a7a9bd7
    Ilan Tayari authored
    Commit 07b26c94 ("gso: Support partial splitting at the frag_list
    pointer") assumes that all SKBs in a frag_list (except maybe the last
    one) contain the same amount of GSO payload.
    
    This assumption is not always correct, resulting in the following
    warning message in the log:
        skb_segment: too many frags
    
    For example, mlx5 driver in Striding RQ mode creates some RX SKBs with
    one frag, and some with 2 frags.
    After GRO, the frag_list SKBs end up having different amounts of payload.
    If this frag_list SKB is then forwarded, the aforementioned assumption
    is violated.
    
    Validate the assumption, and fall back to software GSO if it not true.
    
    Fixes: 07b26c94 ("gso: Support partial splitting at the frag_list pointer")
    Signed-off-by: default avatarIlan Tayari <ilant@mellanox.com>
    Signed-off-by: default avatarIlya Lesokhin <ilyal@mellanox.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    7a7a9bd7
skbuff.c 123 KB