Commit 2b89ed65 authored by Vlad Yasevich's avatar Vlad Yasevich Committed by David S. Miller

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: default avatarVladislav Yasevich <vyasevic@redhat.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent d585df1c
...@@ -1344,7 +1344,7 @@ static int __ip6_append_data(struct sock *sk, ...@@ -1344,7 +1344,7 @@ static int __ip6_append_data(struct sock *sk,
*/ */
if (transhdrlen && sk->sk_protocol == IPPROTO_UDP && if (transhdrlen && sk->sk_protocol == IPPROTO_UDP &&
headersize == sizeof(struct ipv6hdr) && headersize == sizeof(struct ipv6hdr) &&
length < mtu - headersize && length <= mtu - headersize &&
!(flags & MSG_MORE) && !(flags & MSG_MORE) &&
rt->dst.dev->features & (NETIF_F_IPV6_CSUM | NETIF_F_HW_CSUM)) rt->dst.dev->features & (NETIF_F_IPV6_CSUM | NETIF_F_HW_CSUM))
csummode = CHECKSUM_PARTIAL; csummode = CHECKSUM_PARTIAL;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment