eventpoll: Trigger napi_busy_loop, if prefer_busy_poll is set
authorMartin Karsten <mkarsten@uwaterloo.ca>
Sat, 9 Nov 2024 05:02:33 +0000 (05:02 +0000)
committerJakub Kicinski <kuba@kernel.org>
Tue, 12 Nov 2024 02:45:06 +0000 (18:45 -0800)
Setting prefer_busy_poll now leads to an effectively nonblocking
iteration though napi_busy_loop, even when busy_poll_usecs is 0.

Signed-off-by: Martin Karsten <mkarsten@uwaterloo.ca>
Co-developed-by: Joe Damato <jdamato@fastly.com>
Signed-off-by: Joe Damato <jdamato@fastly.com>
Tested-by: Joe Damato <jdamato@fastly.com>
Tested-by: Martin Karsten <mkarsten@uwaterloo.ca>
Acked-by: Stanislav Fomichev <sdf@fomichev.me>
Reviewed-by: Sridhar Samudrala <sridhar.samudrala@intel.com>
Link: https://patch.msgid.link/20241109050245.191288-4-jdamato@fastly.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
fs/eventpoll.c

index 1ae4542..f9e0d93 100644 (file)
@@ -420,7 +420,9 @@ static bool busy_loop_ep_timeout(unsigned long start_time,
 
 static bool ep_busy_loop_on(struct eventpoll *ep)
 {
-       return !!READ_ONCE(ep->busy_poll_usecs) || net_busy_loop_on();
+       return !!READ_ONCE(ep->busy_poll_usecs) ||
+              READ_ONCE(ep->prefer_busy_poll) ||
+              net_busy_loop_on();
 }
 
 static bool ep_busy_loop_end(void *p, unsigned long start_time)