|
@@ -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)) {
|