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: Tom Herbert <therbert@google.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
573e8fca25
commit
1933a7852c
|
@ -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.
|
||||
*/
|
||||
|
|
|
@ -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,
|
||||
|
|
Loading…
Reference in New Issue