diff options
author | Eric Dumazet <edumazet@google.com> | 2016-04-29 17:16:48 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2016-05-02 17:02:25 -0400 |
commit | fb3477c0f45aad5dfb2de559949872770e6cd431 (patch) | |
tree | 7c5569a3a438aca4e4aeadcefc94b096e4460deb /net/ipv4/tcp.c | |
parent | c10d9310edf5aa4a676991139d1a43ec7d87e56b (diff) |
tcp: do not block bh during prequeue processing
AFAIK, nothing in current TCP stack absolutely wants BH
being disabled once socket is owned by a thread running in
process context.
As mentioned in my prior patch ("tcp: give prequeue mode some care"),
processing a batch of packets might take time, better not block BH
at all.
Signed-off-by: Eric Dumazet <edumazet@google.com>
Acked-by: Soheil Hassas Yeganeh <soheil@google.com>
Acked-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4/tcp.c')
-rw-r--r-- | net/ipv4/tcp.c | 4 |
1 files changed, 0 insertions, 4 deletions
diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c index b24c6ed4a04f..4787f86ae64c 100644 --- a/net/ipv4/tcp.c +++ b/net/ipv4/tcp.c | |||
@@ -1449,12 +1449,8 @@ static void tcp_prequeue_process(struct sock *sk) | |||
1449 | 1449 | ||
1450 | NET_INC_STATS(sock_net(sk), LINUX_MIB_TCPPREQUEUED); | 1450 | NET_INC_STATS(sock_net(sk), LINUX_MIB_TCPPREQUEUED); |
1451 | 1451 | ||
1452 | /* RX process wants to run with disabled BHs, though it is not | ||
1453 | * necessary */ | ||
1454 | local_bh_disable(); | ||
1455 | while ((skb = __skb_dequeue(&tp->ucopy.prequeue)) != NULL) | 1452 | while ((skb = __skb_dequeue(&tp->ucopy.prequeue)) != NULL) |
1456 | sk_backlog_rcv(sk, skb); | 1453 | sk_backlog_rcv(sk, skb); |
1457 | local_bh_enable(); | ||
1458 | 1454 | ||
1459 | /* Clear memory counter. */ | 1455 | /* Clear memory counter. */ |
1460 | tp->ucopy.memory = 0; | 1456 | tp->ucopy.memory = 0; |