Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1933a785 authored by Tom Herbert's avatar Tom Herbert Committed by David S. Miller
Browse files

net: add gro_compute_pseudo functions



Add inet_gro_compute_pseudo and ip6_gro_compute_pseudo. These are
the logical equivalents of inet_compute_pseudo and ip6_compute_pseudo
for GRO path. The IP header is taken from skb_gro_network_header.

Signed-off-by: default avatarTom Herbert <therbert@google.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 573e8fca
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -364,6 +364,14 @@ static inline void inet_set_txhash(struct sock *sk)
	sk->sk_txhash = flow_hash_from_keys(&keys);
}

static inline __wsum inet_gro_compute_pseudo(struct sk_buff *skb, int proto)
{
	const struct iphdr *iph = skb_gro_network_header(skb);

	return csum_tcpudp_nofold(iph->saddr, iph->daddr,
				  skb_gro_len(skb), proto, 0);
}

/*
 *	Map a multicast IP onto multicast MAC for type ethernet.
 */
+8 −0
Original line number Diff line number Diff line
@@ -48,6 +48,14 @@ static inline __wsum ip6_compute_pseudo(struct sk_buff *skb, int proto)
					    skb->len, proto, 0));
}

static inline __wsum ip6_gro_compute_pseudo(struct sk_buff *skb, int proto)
{
	const struct ipv6hdr *iph = skb_gro_network_header(skb);

	return ~csum_unfold(csum_ipv6_magic(&iph->saddr, &iph->daddr,
					    skb_gro_len(skb), proto, 0));
}

static __inline__ __sum16 tcp_v6_check(int len,
				   const struct in6_addr *saddr,
				   const struct in6_addr *daddr,