summaryrefslogtreecommitdiff
path: root/include/net
diff options
context:
space:
mode:
authorChristoph Hellwig <hch@lst.de>2018-01-09 18:07:34 +0300
committerChristoph Hellwig <hch@lst.de>2018-05-26 10:16:44 +0300
commit3cafb37633a1230011c5415e6f394b05260d21ad (patch)
tree4bb789ef23b3e6e8a9ed3295a1a1ddb674dd250d /include/net
parent1962da0d2198a00a056a2915fbc6ec684c3bef0a (diff)
downloadlinux-3cafb37633a1230011c5415e6f394b05260d21ad.tar.xz
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')
-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)