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>
This commit is contained in:
parent
f5f8d86b23
commit
7aedec2ad5
|
@ -908,7 +908,8 @@ static inline int tcp_prequeue(struct sock *sk, struct sk_buff *skb)
|
||||||
|
|
||||||
tp->ucopy.memory = 0;
|
tp->ucopy.memory = 0;
|
||||||
} else if (skb_queue_len(&tp->ucopy.prequeue) == 1) {
|
} 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))
|
if (!inet_csk_ack_scheduled(sk))
|
||||||
inet_csk_reset_xmit_timer(sk, ICSK_TIME_DACK,
|
inet_csk_reset_xmit_timer(sk, ICSK_TIME_DACK,
|
||||||
(3 * TCP_RTO_MIN) / 4,
|
(3 * TCP_RTO_MIN) / 4,
|
||||||
|
|
Loading…
Reference in New Issue