aboutsummaryrefslogtreecommitdiffstats
path: root/include/net/busy_poll.h
diff options
context:
space:
mode:
authorChristoph Hellwig <hch@lst.de>2018-01-09 16:07:34 +0100
committerChristoph Hellwig <hch@lst.de>2018-05-26 09:16:44 +0200
commit3cafb37633a1230011c5415e6f394b05260d21ad (patch)
tree4bb789ef23b3e6e8a9ed3295a1a1ddb674dd250d /include/net/busy_poll.h
parentaio: try to complete poll iocbs without context switch (diff)
downloadlinux-dev-3cafb37633a1230011c5415e6f394b05260d21ad.tar.xz
linux-dev-3cafb37633a1230011c5415e6f394b05260d21ad.zip
net: refactor socket_poll
Factor out two busy poll related helpers for late reuse, and remove a command that isn't very helpful, especially with the __poll_t annotations in place. Signed-off-by: Christoph Hellwig <hch@lst.de>
Diffstat (limited to 'include/net/busy_poll.h')
-rw-r--r--include/net/busy_poll.h15
1 files changed, 15 insertions, 0 deletions
diff --git a/include/net/busy_poll.h b/include/net/busy_poll.h
index 71c72a939bf8..c5187438af38 100644
--- a/include/net/busy_poll.h
+++ b/include/net/busy_poll.h
@@ -121,6 +121,21 @@ static inline void sk_busy_loop(struct sock *sk, int nonblock)
#endif
}
+static inline void sock_poll_busy_loop(struct socket *sock, __poll_t events)
+{
+ if (sk_can_busy_loop(sock->sk) &&
+ events && (events & POLL_BUSY_LOOP)) {
+ /* once, only if requested by syscall */
+ sk_busy_loop(sock->sk, 1);
+ }
+}
+
+/* if this socket can poll_ll, tell the system call */
+static inline __poll_t sock_poll_busy_flag(struct socket *sock)
+{
+ return sk_can_busy_loop(sock->sk) ? POLL_BUSY_LOOP : 0;
+}
+
/* used in the NIC receive handler to mark the skb */
static inline void skb_mark_napi_id(struct sk_buff *skb,
struct napi_struct *napi)