diff options
author | Xin Long <lucien.xin@gmail.com> | 2021-01-16 13:59:17 +0800 |
---|---|---|
committer | Jakub Kicinski <kuba@kernel.org> | 2021-01-20 22:14:59 -0800 |
commit | 4eb5d4a5b4d64bb9495141b2f323caf7524ef8a6 (patch) | |
tree | 121e7cd32e262cae296ba0b26c1ce038b57fce61 /net | |
parent | 7baf2429a1a965369b0ce44efb6315cdd515aa9c (diff) | |
download | linux-stable-4eb5d4a5b4d64bb9495141b2f323caf7524ef8a6.tar.gz linux-stable-4eb5d4a5b4d64bb9495141b2f323caf7524ef8a6.tar.bz2 linux-stable-4eb5d4a5b4d64bb9495141b2f323caf7524ef8a6.zip |
udp: not remove the CRC flag from dev features when need_csum is false
In __skb_udp_tunnel_segment(), when it's a SCTP over VxLAN/GENEVE
packet and need_csum is false, which means the outer udp checksum
doesn't need to be computed, csum_start and csum_offset could be
used by the inner SCTP CRC CSUM for SCTP HW CRC offload.
So this patch is to not remove the CRC flag from dev features when
need_csum is false.
Signed-off-by: Xin Long <lucien.xin@gmail.com>
Link: https://lore.kernel.org/r/1e81b700642498546eaa3f298e023fd7ad394f85.1610776757.git.lucien.xin@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'net')
-rw-r--r-- | net/ipv4/udp_offload.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/net/ipv4/udp_offload.c b/net/ipv4/udp_offload.c index ff39e94781bf..1168d186cc43 100644 --- a/net/ipv4/udp_offload.c +++ b/net/ipv4/udp_offload.c @@ -68,8 +68,8 @@ static struct sk_buff *__skb_udp_tunnel_segment(struct sk_buff *skb, (NETIF_F_HW_CSUM | NETIF_F_IP_CSUM)))); features &= skb->dev->hw_enc_features; - /* CRC checksum can't be handled by HW when it's a UDP tunneling packet. */ - features &= ~NETIF_F_SCTP_CRC; + if (need_csum) + features &= ~NETIF_F_SCTP_CRC; /* The only checksum offload we care about from here on out is the * outer one so strip the existing checksum feature flags and |