Commit db40980fcdb560d7992b0511df16cdd3f7e381f3
Committed by
David S. Miller
1 parent
d61702f127
Exists in
master
and in
39 other branches
net: poll() optimizations
No need to test twice sk->sk_shutdown & RCV_SHUTDOWN Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Showing 4 changed files with 8 additions and 12 deletions Side-by-side Diff
net/bluetooth/af_bluetooth.c
... | ... | @@ -297,13 +297,12 @@ |
297 | 297 | mask |= POLLERR; |
298 | 298 | |
299 | 299 | if (sk->sk_shutdown & RCV_SHUTDOWN) |
300 | - mask |= POLLRDHUP; | |
300 | + mask |= POLLRDHUP | POLLIN | POLLRDNORM; | |
301 | 301 | |
302 | 302 | if (sk->sk_shutdown == SHUTDOWN_MASK) |
303 | 303 | mask |= POLLHUP; |
304 | 304 | |
305 | - if (!skb_queue_empty(&sk->sk_receive_queue) || | |
306 | - (sk->sk_shutdown & RCV_SHUTDOWN)) | |
305 | + if (!skb_queue_empty(&sk->sk_receive_queue)) | |
307 | 306 | mask |= POLLIN | POLLRDNORM; |
308 | 307 | |
309 | 308 | if (sk->sk_state == BT_CLOSED) |
net/core/datagram.c
... | ... | @@ -746,13 +746,12 @@ |
746 | 746 | if (sk->sk_err || !skb_queue_empty(&sk->sk_error_queue)) |
747 | 747 | mask |= POLLERR; |
748 | 748 | if (sk->sk_shutdown & RCV_SHUTDOWN) |
749 | - mask |= POLLRDHUP; | |
749 | + mask |= POLLRDHUP | POLLIN | POLLRDNORM; | |
750 | 750 | if (sk->sk_shutdown == SHUTDOWN_MASK) |
751 | 751 | mask |= POLLHUP; |
752 | 752 | |
753 | 753 | /* readable? */ |
754 | - if (!skb_queue_empty(&sk->sk_receive_queue) || | |
755 | - (sk->sk_shutdown & RCV_SHUTDOWN)) | |
754 | + if (!skb_queue_empty(&sk->sk_receive_queue)) | |
756 | 755 | mask |= POLLIN | POLLRDNORM; |
757 | 756 | |
758 | 757 | /* Connection-based need to check for termination and startup */ |
net/sctp/socket.c
... | ... | @@ -5707,13 +5707,12 @@ |
5707 | 5707 | if (sk->sk_err || !skb_queue_empty(&sk->sk_error_queue)) |
5708 | 5708 | mask |= POLLERR; |
5709 | 5709 | if (sk->sk_shutdown & RCV_SHUTDOWN) |
5710 | - mask |= POLLRDHUP; | |
5710 | + mask |= POLLRDHUP | POLLIN | POLLRDNORM; | |
5711 | 5711 | if (sk->sk_shutdown == SHUTDOWN_MASK) |
5712 | 5712 | mask |= POLLHUP; |
5713 | 5713 | |
5714 | 5714 | /* Is it readable? Reconsider this code with TCP-style support. */ |
5715 | - if (!skb_queue_empty(&sk->sk_receive_queue) || | |
5716 | - (sk->sk_shutdown & RCV_SHUTDOWN)) | |
5715 | + if (!skb_queue_empty(&sk->sk_receive_queue)) | |
5717 | 5716 | mask |= POLLIN | POLLRDNORM; |
5718 | 5717 | |
5719 | 5718 | /* The association is either gone or not ready. */ |
net/unix/af_unix.c
... | ... | @@ -2024,11 +2024,10 @@ |
2024 | 2024 | if (sk->sk_shutdown == SHUTDOWN_MASK) |
2025 | 2025 | mask |= POLLHUP; |
2026 | 2026 | if (sk->sk_shutdown & RCV_SHUTDOWN) |
2027 | - mask |= POLLRDHUP; | |
2027 | + mask |= POLLRDHUP | POLLIN | POLLRDNORM; | |
2028 | 2028 | |
2029 | 2029 | /* readable? */ |
2030 | - if (!skb_queue_empty(&sk->sk_receive_queue) || | |
2031 | - (sk->sk_shutdown & RCV_SHUTDOWN)) | |
2030 | + if (!skb_queue_empty(&sk->sk_receive_queue)) | |
2032 | 2031 | mask |= POLLIN | POLLRDNORM; |
2033 | 2032 | |
2034 | 2033 | /* Connection-based need to check for termination and startup */ |