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 6558dfd899da..acdc4c989853 100644 --- a/net/ipv4/tcp_ipv4.c +++ b/net/ipv4/tcp_ipv4.c | |||
@@ -1557,6 +1557,7 @@ int tcp_v4_do_rcv(struct sock *sk, struct sk_buff *skb) | |||
1557 | #endif | 1557 | #endif |
1558 | 1558 | ||
1559 | if (sk->sk_state == TCP_ESTABLISHED) { /* Fast path */ | 1559 | if (sk->sk_state == TCP_ESTABLISHED) { /* Fast path */ |
1560 | sock_rps_save_rxhash(sk, skb->rxhash); | ||
1560 | TCP_CHECK_TIMER(sk); | 1561 | TCP_CHECK_TIMER(sk); |
1561 | if (tcp_rcv_established(sk, skb, tcp_hdr(skb), skb->len)) { | 1562 | if (tcp_rcv_established(sk, skb, tcp_hdr(skb), skb->len)) { |
1562 | rsk = sk; | 1563 | rsk = sk; |
@@ -1581,7 +1582,9 @@ int tcp_v4_do_rcv(struct sock *sk, struct sk_buff *skb) | |||
1581 | } | 1582 | } |
1582 | return 0; | 1583 | return 0; |
1583 | } | 1584 | } |
1584 | } | 1585 | } else |
1586 | sock_rps_save_rxhash(sk, skb->rxhash); | ||
1587 | |||
1585 | 1588 | ||
1586 | TCP_CHECK_TIMER(sk); | 1589 | TCP_CHECK_TIMER(sk); |
1587 | if (tcp_rcv_state_process(sk, skb, tcp_hdr(skb), skb->len)) { | 1590 | if (tcp_rcv_state_process(sk, skb, tcp_hdr(skb), skb->len)) { |
@@ -1674,8 +1677,6 @@ process: | |||
1674 | 1677 | ||
1675 | skb->dev = NULL; | 1678 | skb->dev = NULL; |
1676 | 1679 | ||
1677 | sock_rps_save_rxhash(sk, skb->rxhash); | ||
1678 | |||
1679 | bh_lock_sock_nested(sk); | 1680 | bh_lock_sock_nested(sk); |
1680 | ret = 0; | 1681 | ret = 0; |
1681 | if (!sock_owned_by_user(sk)) { | 1682 | if (!sock_owned_by_user(sk)) { |