diff options
author | Eric Dumazet <dada1@cosmosbay.com> | 2009-05-07 09:20:39 +0200 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-05-07 23:52:28 +0200 |
commit | 7aedec2ad5314b173e78ca3f4edb4ceaa02248bb (patch) | |
tree | 9b9ed7561bf13bcaa11f1f6ac7b4da2c444b0044 | |
parent | tcp: tcp_prequeue() cleanup (diff) | |
download | linux-7aedec2ad5314b173e78ca3f4edb4ceaa02248bb.tar.xz linux-7aedec2ad5314b173e78ca3f4edb4ceaa02248bb.zip |
tcp: tcp_prequeue() can use keyed wakeups
We can avoid waking up tasks not interested in receive notifications,
using wake_up_interruptible_poll() instead of wake_up_interruptible()
Signed-off-by: Eric Dumazet <dada1@cosmosbay.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | include/net/tcp.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/include/net/tcp.h b/include/net/tcp.h index ac37228b7001..87d210bb12a4 100644 --- a/include/net/tcp.h +++ b/include/net/tcp.h @@ -908,7 +908,8 @@ static inline int tcp_prequeue(struct sock *sk, struct sk_buff *skb) tp->ucopy.memory = 0; } else if (skb_queue_len(&tp->ucopy.prequeue) == 1) { - wake_up_interruptible(sk->sk_sleep); + wake_up_interruptible_poll(sk->sk_sleep, + POLLIN | POLLRDNORM | POLLRDBAND); if (!inet_csk_ack_scheduled(sk)) inet_csk_reset_xmit_timer(sk, ICSK_TIME_DACK, (3 * TCP_RTO_MIN) / 4, |