| From foo@baz Thu Mar 28 21:57:57 CET 2019 |
| From: Dmitry Bogdanov <dmitry.bogdanov@aquantia.com> |
| Date: Sat, 16 Mar 2019 08:28:18 +0000 |
| Subject: net: aquantia: fix rx checksum offload for UDP/TCP over IPv6 |
| |
| From: Dmitry Bogdanov <dmitry.bogdanov@aquantia.com> |
| |
| [ 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 | 5 +++-- |
| 1 file changed, 3 insertions(+), 2 deletions(-) |
| |
| --- a/drivers/net/ethernet/aquantia/atlantic/aq_ring.c |
| +++ b/drivers/net/ethernet/aquantia/atlantic/aq_ring.c |
| @@ -270,11 +270,12 @@ int aq_ring_rx_clean(struct aq_ring_s *s |
| } 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, |