summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVlad Yasevich <vyasevich@gmail.com>2017-01-29 22:52:53 -0500
committerDavid S. Miller <davem@davemloft.net>2017-01-30 15:51:12 -0500
commit2b89ed65a6f201a6a4f0450ad289aa4bf491608c (patch)
tree84d46ed640f648af30847b308ccc88a467dba2df
parentd585df1c5ccf995fcee910705ad7a9cdd11d4152 (diff)
downloadlinux-2b89ed65a6f201a6a4f0450ad289aa4bf491608c.tar.gz
linux-2b89ed65a6f201a6a4f0450ad289aa4bf491608c.tar.bz2
linux-2b89ed65a6f201a6a4f0450ad289aa4bf491608c.zip
ipv6: Paritially checksum full MTU frames
IPv6 will mark data that is smaller that mtu - headersize as CHECKSUM_PARTIAL, but if the data will completely fill the mtu, the packet checksum will be computed in software instead. Extend the conditional to include the data that fills the mtu as well. Signed-off-by: Vladislav Yasevich <vyasevic@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--net/ipv6/ip6_output.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c
index 2c0df09e9036..b6a94ff0bbd0 100644
--- a/net/ipv6/ip6_output.c
+++ b/net/ipv6/ip6_output.c
@@ -1344,7 +1344,7 @@ emsgsize:
*/
if (transhdrlen && sk->sk_protocol == IPPROTO_UDP &&
headersize == sizeof(struct ipv6hdr) &&
- length < mtu - headersize &&
+ length <= mtu - headersize &&
!(flags & MSG_MORE) &&
rt->dst.dev->features & (NETIF_F_IPV6_CSUM | NETIF_F_HW_CSUM))
csummode = CHECKSUM_PARTIAL;