OSDN Git Service

esp4: add gso_segment for esp4 beet mode
authorXin Long <lucien.xin@gmail.com>
Thu, 26 Mar 2020 09:02:29 +0000 (17:02 +0800)
committerSteffen Klassert <steffen.klassert@secunet.com>
Thu, 26 Mar 2020 13:51:07 +0000 (14:51 +0100)
commit384a46ea7bdc77e1e070b728d427b763e364613c
treed74fd1132a401d38f6b9e545d9c4995fe32bdddf
parentdda520c4d4623701dd70cf7b40d29a4eed232d0f
esp4: add gso_segment for esp4 beet mode

Similar to xfrm4_tunnel/transport_gso_segment(), _gso_segment()
is added to do gso_segment for esp4 beet mode. Before calling
inet_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_TCPV4 to gso_type if x->sel.family == AF_INET6
    and the proto == IPPROTO_TCP, so that the current tcp ipv4
    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/ipv4/esp4_offload.c