diff options
author | Eric Dumazet <dada1@cosmosbay.com> | 2009-05-07 03:20:39 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-05-07 17:52:28 -0400 |
commit | 7aedec2ad5314b173e78ca3f4edb4ceaa02248bb (patch) | |
tree | 9b9ed7561bf13bcaa11f1f6ac7b4da2c444b0044 /include/net | |
parent | f5f8d86b231e0489c33542c42afbb14d32411ee8 (diff) |
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>
Diffstat (limited to 'include/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) | |||
908 | 908 | ||
909 | tp->ucopy.memory = 0; | 909 | tp->ucopy.memory = 0; |
910 | } else if (skb_queue_len(&tp->ucopy.prequeue) == 1) { | 910 | } else if (skb_queue_len(&tp->ucopy.prequeue) == 1) { |
911 | wake_up_interruptible(sk->sk_sleep); | 911 | wake_up_interruptible_poll(sk->sk_sleep, |
912 | POLLIN | POLLRDNORM | POLLRDBAND); | ||
912 | if (!inet_csk_ack_scheduled(sk)) | 913 | if (!inet_csk_ack_scheduled(sk)) |
913 | inet_csk_reset_xmit_timer(sk, ICSK_TIME_DACK, | 914 | inet_csk_reset_xmit_timer(sk, ICSK_TIME_DACK, |
914 | (3 * TCP_RTO_MIN) / 4, | 915 | (3 * TCP_RTO_MIN) / 4, |