diff options
| author | Tom Herbert <therbert@google.com> | 2013-12-15 22:12:18 -0800 | 
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2013-12-17 16:36:21 -0500 | 
| commit | 7539fadcb8146a5f0db51e80d99c9e724efec7b0 (patch) | |
| tree | 7d3563c2240b16402d536162b4f49bdf036b91ed /net/openvswitch | |
| parent | 3958afa1b272eb07109fd31549e69193b4d7c364 (diff) | |
| download | linux-7539fadcb8146a5f0db51e80d99c9e724efec7b0.tar.bz2 | |
net: Add utility functions to clear rxhash
In several places 'skb->rxhash = 0' is being done to clear the
rxhash value in an skb.  This does not clear l4_rxhash which could
still be set so that the rxhash wouldn't be recalculated on subsequent
call to skb_get_rxhash.  This patch adds an explict function to clear
all the rxhash related information in the skb properly.
skb_clear_hash_if_not_l4 clears the rxhash only if it is not marked as
l4_rxhash.
Fixed up places where 'skb->rxhash = 0' was being called.
Signed-off-by: Tom Herbert <therbert@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/openvswitch')
| -rw-r--r-- | net/openvswitch/actions.c | 10 | 
1 files changed, 5 insertions, 5 deletions
| diff --git a/net/openvswitch/actions.c b/net/openvswitch/actions.c index 65cfaa816075..716b7eebfe70 100644 --- a/net/openvswitch/actions.c +++ b/net/openvswitch/actions.c @@ -165,7 +165,7 @@ static void set_ip_addr(struct sk_buff *skb, struct iphdr *nh,  	}  	csum_replace4(&nh->check, *addr, new_addr); -	skb->rxhash = 0; +	skb_clear_hash(skb);  	*addr = new_addr;  } @@ -199,7 +199,7 @@ static void set_ipv6_addr(struct sk_buff *skb, u8 l4_proto,  	if (recalculate_csum)  		update_ipv6_checksum(skb, l4_proto, addr, new_addr); -	skb->rxhash = 0; +	skb_clear_hash(skb);  	memcpy(addr, new_addr, sizeof(__be32[4]));  } @@ -296,7 +296,7 @@ static void set_tp_port(struct sk_buff *skb, __be16 *port,  {  	inet_proto_csum_replace2(check, skb, *port, new_port, 0);  	*port = new_port; -	skb->rxhash = 0; +	skb_clear_hash(skb);  }  static void set_udp_port(struct sk_buff *skb, __be16 *port, __be16 new_port) @@ -310,7 +310,7 @@ static void set_udp_port(struct sk_buff *skb, __be16 *port, __be16 new_port)  			uh->check = CSUM_MANGLED_0;  	} else {  		*port = new_port; -		skb->rxhash = 0; +		skb_clear_hash(skb);  	}  } @@ -381,7 +381,7 @@ static int set_sctp(struct sk_buff *skb,  		/* Carry any checksum errors through. */  		sh->checksum = old_csum ^ old_correct_csum ^ new_csum; -		skb->rxhash = 0; +		skb_clear_hash(skb);  	}  	return 0; |