diff options
author | Ingo Molnar <mingo@kernel.org> | 2021-04-20 10:13:58 +0200 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2021-04-20 10:13:58 +0200 |
commit | d0d252b8ca7a636640a7dca8606edf7c3bcfe0b8 (patch) | |
tree | 992b53f3c91669f3597e05997b61fa09db2155df /net/ipv6/esp6_offload.c | |
parent | 9406415f46f6127fd31bb66f0260f7a61a8d2786 (diff) | |
parent | bf05bf16c76bb44ab5156223e1e58e26dfe30a88 (diff) | |
download | linux-d0d252b8ca7a636640a7dca8606edf7c3bcfe0b8.tar.bz2 |
Merge tag 'v5.12-rc8' into sched/core, to pick up fixes
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'net/ipv6/esp6_offload.c')
-rw-r--r-- | net/ipv6/esp6_offload.c | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/net/ipv6/esp6_offload.c b/net/ipv6/esp6_offload.c index 1ca516fb30e1..4af56affaafd 100644 --- a/net/ipv6/esp6_offload.c +++ b/net/ipv6/esp6_offload.c @@ -254,9 +254,11 @@ static struct sk_buff *esp6_gso_segment(struct sk_buff *skb, skb->encap_hdr_csum = 1; if (!(features & NETIF_F_HW_ESP) || x->xso.dev != skb->dev) - esp_features = features & ~(NETIF_F_SG | NETIF_F_CSUM_MASK); + esp_features = features & ~(NETIF_F_SG | NETIF_F_CSUM_MASK | + NETIF_F_SCTP_CRC); else if (!(features & NETIF_F_HW_ESP_TX_CSUM)) - esp_features = features & ~NETIF_F_CSUM_MASK; + esp_features = features & ~(NETIF_F_CSUM_MASK | + NETIF_F_SCTP_CRC); xo->flags |= XFRM_GSO_SEGMENT; @@ -346,8 +348,17 @@ static int esp6_xmit(struct xfrm_state *x, struct sk_buff *skb, netdev_features ipv6_hdr(skb)->payload_len = htons(len); - if (hw_offload) + if (hw_offload) { + if (!skb_ext_add(skb, SKB_EXT_SEC_PATH)) + return -ENOMEM; + + xo = xfrm_offload(skb); + if (!xo) + return -EINVAL; + + xo->flags |= XFRM_XMIT; return 0; + } err = esp6_output_tail(x, skb, &esp); if (err) |