Commit 185a108f authored by Alex Elder's avatar Alex Elder Committed by David S. Miller

net: qualcomm: rmnet: IPv6 payload length is simple

We don't support any extension headers for IPv6 packets.  Extension
headers therefore contribute 0 bytes to the payload length.  As a
result we can just use the IPv6 payload length as the length used to
compute the pseudo header checksum for both UDP and TCP messages.
Signed-off-by: default avatarAlex Elder <elder@linaro.org>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 411a795e
...@@ -114,7 +114,6 @@ rmnet_map_ipv6_dl_csum_trailer(struct sk_buff *skb, ...@@ -114,7 +114,6 @@ rmnet_map_ipv6_dl_csum_trailer(struct sk_buff *skb,
__sum16 *csum_field, pseudo_csum; __sum16 *csum_field, pseudo_csum;
__sum16 ip6_payload_csum; __sum16 ip6_payload_csum;
__be16 ip_header_csum; __be16 ip_header_csum;
u32 length;
/* Checksum offload is only supported for UDP and TCP protocols; /* Checksum offload is only supported for UDP and TCP protocols;
* the packet cannot include any IPv6 extension headers * the packet cannot include any IPv6 extension headers
...@@ -134,11 +133,9 @@ rmnet_map_ipv6_dl_csum_trailer(struct sk_buff *skb, ...@@ -134,11 +133,9 @@ rmnet_map_ipv6_dl_csum_trailer(struct sk_buff *skb,
ip_header_csum = (__force __be16)ip_fast_csum(ip6h, sizeof(*ip6h) / 4); ip_header_csum = (__force __be16)ip_fast_csum(ip6h, sizeof(*ip6h) / 4);
ip6_payload_csum = csum16_sub(csum_trailer->csum_value, ip_header_csum); ip6_payload_csum = csum16_sub(csum_trailer->csum_value, ip_header_csum);
length = (ip6h->nexthdr == IPPROTO_UDP) ?
ntohs(((struct udphdr *)txporthdr)->len) :
ntohs(ip6h->payload_len);
pseudo_csum = csum_ipv6_magic(&ip6h->saddr, &ip6h->daddr, pseudo_csum = csum_ipv6_magic(&ip6h->saddr, &ip6h->daddr,
length, ip6h->nexthdr, 0); ntohs(ip6h->payload_len),
ip6h->nexthdr, 0);
/* It's sufficient to compare the IP payload checksum with the /* It's sufficient to compare the IP payload checksum with the
* negated pseudo checksum to determine whether the packet * negated pseudo checksum to determine whether the packet
......
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