• Xin Long's avatar
    udp: support sctp over udp in skb_udp_tunnel_segment · 527beb8e
    Xin Long authored
    For the gso of sctp over udp packets, sctp_gso_segment() will be called in
    skb_udp_tunnel_segment(), we need to set transport_header to sctp header.
    
    As all the current HWs can't handle both crc checksum and udp checksum at
    the same time, the crc checksum has to be done in sctp_gso_segment() by
    removing the NETIF_F_SCTP_CRC flag from the features.
    
    Meanwhile, if the HW can't do udp checksum, csum and csum_start has to be
    set correctly, and udp checksum will be done in __skb_udp_tunnel_segment()
    by calling gso_make_checksum().
    
    Thanks to Paolo, Marcelo and Guillaume for helping with this one.
    
    v1->v2:
      - no change.
    v2->v3:
      - remove the he NETIF_F_SCTP_CRC flag from the features.
      - set csum and csum_start in sctp_gso_make_checksum().
    Signed-off-by: default avatarXin Long <lucien.xin@gmail.com>
    Acked-by: default avatarMarcelo Ricardo Leitner <marcelo.leitner@gmail.com>
    Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
    527beb8e
udp_offload.c 16.3 KB