]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
net: aquantia: fix rx checksum offload for UDP/TCP over IPv6
authorDmitry Bogdanov <dmitry.bogdanov@aquantia.com>
Sat, 16 Mar 2019 08:28:18 +0000 (08:28 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 3 Apr 2019 04:25:11 +0000 (06:25 +0200)
[ Upstream commit a7faaa0c5dc7d091cc9f72b870d7edcdd6f43f12 ]

TCP/UDP checksum validity was propagated to skb
only if IP checksum is valid.
But for IPv6 there is no validity as there is no checksum in IPv6.
This patch propagates TCP/UDP checksum validity regardless of IP checksum.

Fixes: 018423e90bee ("net: ethernet: aquantia: Add ring support code")
Signed-off-by: Igor Russkikh <igor.russkikh@aquantia.com>
Signed-off-by: Nikita Danilov <nikita.danilov@aquantia.com>
Signed-off-by: Dmitry Bogdanov <dmitry.bogdanov@aquantia.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/net/ethernet/aquantia/atlantic/aq_ring.c

index 640babf752ea6bacd38cd47a1a91b8676de92002..784c3522aaa3eac565c74aaae41b49bf03eba9b1 100644 (file)
@@ -270,11 +270,12 @@ int aq_ring_rx_clean(struct aq_ring_s *self,
                } else {
                        if (buff->is_ip_cso) {
                                __skb_incr_checksum_unnecessary(skb);
-                               if (buff->is_udp_cso || buff->is_tcp_cso)
-                                       __skb_incr_checksum_unnecessary(skb);
                        } else {
                                skb->ip_summed = CHECKSUM_NONE;
                        }
+
+                       if (buff->is_udp_cso || buff->is_tcp_cso)
+                               __skb_incr_checksum_unnecessary(skb);
                }
 
                skb_set_hash(skb, buff->rss_hash,