esp6: add gso_segment for esp6 beet mode
authorXin Long <lucien.xin@gmail.com>
Thu, 26 Mar 2020 09:02:30 +0000 (17:02 +0800)
committerSteffen Klassert <steffen.klassert@secunet.com>
Thu, 26 Mar 2020 13:51:07 +0000 (14:51 +0100)
commit7f9e40eb18a99979f194aa1bdc9bf1c358d3111a
tree2068453370a8fda28108c2be44af2c54db044b7f
parent384a46ea7bdc77e1e070b728d427b763e364613c
esp6: add gso_segment for esp6 beet mode

Similar to xfrm6_tunnel/transport_gso_segment(), _gso_segment()
is added to do gso_segment for esp6 beet mode. Before calling
inet6_offloads[proto]->callbacks.gso_segment, it needs to do:

  - Get the upper proto from ph header to get its gso_segment
    when xo->proto is IPPROTO_BEETPH.

  - Add SKB_GSO_TCPV6 to gso_type if x->sel.family != AF_INET6
    and the proto == IPPROTO_TCP, so that the current tcp ipv6
    packet can be segmented.

  - Calculate a right value for skb->transport_header and move
    skb->data to the transport header position.

Signed-off-by: Xin Long <lucien.xin@gmail.com>
Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
net/ipv6/esp6_offload.c