diff options
Diffstat (limited to 'net/ipv4/tcp_ipv4.c')
| -rw-r--r-- | net/ipv4/tcp_ipv4.c | 7 | 
1 files changed, 4 insertions, 3 deletions
diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c index 202cf09c4cd..fe193e53af4 100644 --- a/net/ipv4/tcp_ipv4.c +++ b/net/ipv4/tcp_ipv4.c @@ -1555,6 +1555,7 @@ int tcp_v4_do_rcv(struct sock *sk, struct sk_buff *skb)  #endif  	if (sk->sk_state == TCP_ESTABLISHED) { /* Fast path */ +		sock_rps_save_rxhash(sk, skb->rxhash);  		TCP_CHECK_TIMER(sk);  		if (tcp_rcv_established(sk, skb, tcp_hdr(skb), skb->len)) {  			rsk = sk; @@ -1579,7 +1580,9 @@ int tcp_v4_do_rcv(struct sock *sk, struct sk_buff *skb)  			}  			return 0;  		} -	} +	} else +		sock_rps_save_rxhash(sk, skb->rxhash); +  	TCP_CHECK_TIMER(sk);  	if (tcp_rcv_state_process(sk, skb, tcp_hdr(skb), skb->len)) { @@ -1672,8 +1675,6 @@ process:  	skb->dev = NULL; -	sock_rps_save_rxhash(sk, skb->rxhash); -  	bh_lock_sock_nested(sk);  	ret = 0;  	if (!sock_owned_by_user(sk)) {  |