01 Mar, 2015

1 commit


26 Sep, 2014

2 commits

  • The send_check logic was only interesting in cases of TCP offload and
    UDP UFO where the checksum needed to be initialized to the pseudo
    header checksum. Now we've moved that logic into the related
    gso_segment functions so gso_send_check is no longer needed.

    Signed-off-by: Tom Herbert
    Signed-off-by: David S. Miller

    Tom Herbert
     
  • In tcp_v[46]_gso_send_check the TCP checksum is initialized to the
    pseudo header checksum using __tcp_v[46]_send_check. We can move this
    logic into new tcp[46]_gso_segment functions to be done when
    ip_summed != CHECKSUM_PARTIAL (ip_summed == CHECKSUM_PARTIAL should be
    the common case, possibly always true when taking GSO path). After this
    change tcp_v[46]_gso_send_check is no-op.

    Signed-off-by: Tom Herbert
    Acked-by: Eric Dumazet
    Signed-off-by: David S. Miller

    Tom Herbert
     

25 Aug, 2014

1 commit


17 Jul, 2014

1 commit

  • Fixed a bug that was introduced by my GRE-GRO patch
    (bf5a755f5e9186406bbf50f4087100af5bd68e40 net-gre-gro: Add GRE
    support to the GRO stack) that breaks the forwarding path
    because various GSO related fields were not set. The bug will
    cause on the egress path either the GSO code to fail, or a
    GRE-TSO capable (NETIF_F_GSO_GRE) NICs to choke. The following
    fix has been tested for both cases.

    Signed-off-by: H.K. Jerry Chu
    Signed-off-by: David S. Miller

    Jerry Chu
     

22 May, 2014

1 commit

  • When GRE support was added in linux-3.14, CHECKSUM_COMPLETE handling
    broke on GRE+IPv6 because we did not update/use the appropriate csum :

    GRO layer is supposed to use/update NAPI_GRO_CB(skb)->csum instead of
    skb->csum

    Tested using a GRE tunnel and IPv6 traffic. GRO aggregation now happens
    at the first level (ethernet device) instead of being done in gre
    tunnel. Native IPv6+TCP is still properly aggregated.

    Fixes: bf5a755f5e918 ("net-gre-gro: Add GRE support to the GRO stack")
    Signed-off-by: Eric Dumazet
    Cc: Jerry Chu
    Signed-off-by: David S. Miller

    Eric Dumazet
     

13 Dec, 2013

1 commit

  • This patch modifies the GRO stack to avoid the use of "network_header"
    and associated macros like ip_hdr() and ipv6_hdr() in order to allow
    an arbitary number of IP hdrs (v4 or v6) to be used in the
    encapsulation chain. This lays the foundation for various IP
    tunneling support (IP-in-IP, GRE, VXLAN, SIT,...) to be added later.

    With this patch, the GRO stack traversing now is mostly based on
    skb_gro_offset rather than special hdr offsets saved in skb (e.g.,
    skb->network_header). As a result all but the top layer (i.e., the
    the transport layer) must have hdrs of the same length in order for
    a pkt to be considered for aggregation. Therefore when adding a new
    encap layer (e.g., for tunneling), one must check and skip flows
    (e.g., by setting NAPI_GRO_CB(p)->same_flow to 0) that have a
    different hdr length.

    Note that unlike the network header, the transport header can and
    will continue to be set by the GRO code since there will be at
    most one "transport layer" in the encap chain.

    Signed-off-by: H.K. Jerry Chu
    Suggested-by: Eric Dumazet
    Reviewed-by: Eric Dumazet
    Signed-off-by: David S. Miller

    Jerry Chu
     

24 Nov, 2013

2 commits

  • This patch simplifies the checksum verification in tcpX_gro_receive
    by reusing the CHECKSUM_COMPLETE code for CHECKSUM_NONE. All it
    does for CHECKSUM_NONE is compute the partial checksum and then
    treat it as if it came from the hardware (CHECKSUM_COMPLETE).

    Signed-off-by: Herbert Xu

    Cheers,
    Acked-by: Eric Dumazet
    Signed-off-by: David S. Miller

    Herbert Xu
     
  • In some cases we may receive IP packets that are longer than
    their stated lengths. Such packets are never merged in GRO.
    However, we may end up computing their checksums incorrectly
    and end up allowing packets with a bogus checksum enter our
    stack with the checksum status set as verified.

    Since such packets are rare and not performance-critical, this
    patch simply skips the checksum verification for them.

    Reported-by: Alexander Duyck
    Signed-off-by: Herbert Xu
    Acked-by: Alexander Duyck

    Thanks,
    Acked-by: Eric Dumazet
    Signed-off-by: David S. Miller

    Herbert Xu
     

19 Oct, 2013

1 commit


16 Nov, 2012

3 commits