mirror of
https://github.com/torvalds/linux
synced 2024-10-15 07:47:34 +00:00
netfilter: nat: skip checksum on offload SCTP packets
SCTP GSO and hardware can do CRC32c computation after netfilter processing, so we can avoid calling sctp_compute_checksum() on skb if skb->ip_summed is equal to CHECKSUM_PARTIAL. Moreover, set skb->ip_summed to CHECKSUM_NONE when the NAT code computes the CRC, to prevent offloaders from computing it again (on ixgbe this resulted in a transmission with wrong L4 checksum). Signed-off-by: Davide Caratti <dcaratti@redhat.com> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
This commit is contained in:
parent
3b760dcb0f
commit
3189a290f9
|
@ -47,7 +47,10 @@ sctp_manip_pkt(struct sk_buff *skb,
|
|||
hdr->dest = tuple->dst.u.sctp.port;
|
||||
}
|
||||
|
||||
hdr->checksum = sctp_compute_cksum(skb, hdroff);
|
||||
if (skb->ip_summed != CHECKSUM_PARTIAL) {
|
||||
hdr->checksum = sctp_compute_cksum(skb, hdroff);
|
||||
skb->ip_summed = CHECKSUM_NONE;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue