2018-07-25 18:57:40

by Davidlohr Bueso

[permalink] [raw]
Subject: [PATCH -next] fs/epoll: simply CONFIG_NET_RX_BUSY_POLL ifdefery

... 'tis easier on the eye.

Signed-off-by: Davidlohr Bueso <[email protected]>
---
fs/eventpoll.c | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/fs/eventpoll.c b/fs/eventpoll.c
index 1b1abc461fc0..0ab82d0d4e02 100644
--- a/fs/eventpoll.c
+++ b/fs/eventpoll.c
@@ -391,7 +391,6 @@ static bool ep_busy_loop_end(void *p, unsigned long start_time)

return ep_events_available(ep) || busy_loop_timeout(start_time);
}
-#endif /* CONFIG_NET_RX_BUSY_POLL */

/*
* Busy poll if globally on and supporting sockets found && no events,
@@ -401,20 +400,16 @@ static bool ep_busy_loop_end(void *p, unsigned long start_time)
*/
static void ep_busy_loop(struct eventpoll *ep, int nonblock)
{
-#ifdef CONFIG_NET_RX_BUSY_POLL
unsigned int napi_id = READ_ONCE(ep->napi_id);

if ((napi_id >= MIN_NAPI_ID) && net_busy_loop_on())
napi_busy_loop(napi_id, nonblock ? NULL : ep_busy_loop_end, ep);
-#endif
}

static inline void ep_reset_busy_poll_napi_id(struct eventpoll *ep)
{
-#ifdef CONFIG_NET_RX_BUSY_POLL
if (ep->napi_id)
ep->napi_id = 0;
-#endif
}

/*
@@ -422,7 +417,6 @@ static inline void ep_reset_busy_poll_napi_id(struct eventpoll *ep)
*/
static inline void ep_set_busy_poll_napi_id(struct epitem *epi)
{
-#ifdef CONFIG_NET_RX_BUSY_POLL
struct eventpoll *ep;
unsigned int napi_id;
struct socket *sock;
@@ -452,9 +446,15 @@ static inline void ep_set_busy_poll_napi_id(struct epitem *epi)

/* record NAPI ID for use in next busy poll */
ep->napi_id = napi_id;
-#endif
}

+#else
+#define ep_busy_loop(ep, nonblock) do { } while (0)
+#define ep_reset_busy_poll_napi_id(ep) do { } while (0)
+#define ep_set_busy_poll_napi_id(epi) do { } while (0)
+
+#endif /* CONFIG_NET_RX_BUSY_POLL */
+
/**
* ep_call_nested - Perform a bound (possibly) nested call, by checking
* that the recursion limit is not exceeded, and that
--
2.16.4



2018-07-25 19:36:20

by Andrew Morton

[permalink] [raw]
Subject: Re: [PATCH -next] fs/epoll: simply CONFIG_NET_RX_BUSY_POLL ifdefery

On Wed, 25 Jul 2018 11:56:20 -0700 Davidlohr Bueso <[email protected]> wrote:

> ... 'tis easier on the eye.

true, but.

> +#else
> +#define ep_busy_loop(ep, nonblock) do { } while (0)
> +#define ep_reset_busy_poll_napi_id(ep) do { } while (0)
> +#define ep_set_busy_poll_napi_id(epi) do { } while (0)
> +
> +#endif /* CONFIG_NET_RX_BUSY_POLL */

inlines are preferred. Because macros are fugly and can cause
unused-var warnings when the stub versions are used.

This?

--- a/fs/eventpoll.c~fs-epoll-simply-config_net_rx_busy_poll-ifdefery-fix
+++ a/fs/eventpoll.c
@@ -449,9 +449,18 @@ static inline void ep_set_busy_poll_napi
}

#else
-#define ep_busy_loop(ep, nonblock) do { } while (0)
-#define ep_reset_busy_poll_napi_id(ep) do { } while (0)
-#define ep_set_busy_poll_napi_id(epi) do { } while (0)
+
+static inline void ep_busy_loop(struct eventpoll *ep, int nonblock)
+{
+}
+
+static inline void ep_reset_busy_poll_napi_id(struct eventpoll *ep)
+{
+}
+
+static inline void ep_set_busy_poll_napi_id(struct epitem *epi)
+{
+}

#endif /* CONFIG_NET_RX_BUSY_POLL */

_


2018-07-25 20:07:57

by Davidlohr Bueso

[permalink] [raw]
Subject: Re: [PATCH -next] fs/epoll: simply CONFIG_NET_RX_BUSY_POLL ifdefery

On Wed, 25 Jul 2018, Andrew Morton wrote:

>On Wed, 25 Jul 2018 11:56:20 -0700 Davidlohr Bueso <[email protected]> wrote:
>
>> ... 'tis easier on the eye.
>
>true, but.
>
>> +#else
>> +#define ep_busy_loop(ep, nonblock) do { } while (0)
>> +#define ep_reset_busy_poll_napi_id(ep) do { } while (0)
>> +#define ep_set_busy_poll_napi_id(epi) do { } while (0)
>> +
>> +#endif /* CONFIG_NET_RX_BUSY_POLL */
>
>inlines are preferred. Because macros are fugly and can cause
>unused-var warnings when the stub versions are used.

Fair enough.

>This?

Do you want me to send a v2 or will you fold in the below?

Thanks,
Davidlohr

>
>--- a/fs/eventpoll.c~fs-epoll-simply-config_net_rx_busy_poll-ifdefery-fix
>+++ a/fs/eventpoll.c
>@@ -449,9 +449,18 @@ static inline void ep_set_busy_poll_napi
> }
>
> #else
>-#define ep_busy_loop(ep, nonblock) do { } while (0)
>-#define ep_reset_busy_poll_napi_id(ep) do { } while (0)
>-#define ep_set_busy_poll_napi_id(epi) do { } while (0)
>+
>+static inline void ep_busy_loop(struct eventpoll *ep, int nonblock)
>+{
>+}
>+
>+static inline void ep_reset_busy_poll_napi_id(struct eventpoll *ep)
>+{
>+}
>+
>+static inline void ep_set_busy_poll_napi_id(struct epitem *epi)
>+{
>+}
>
> #endif /* CONFIG_NET_RX_BUSY_POLL */
>
>_
>

2018-07-25 21:32:04

by Andrew Morton

[permalink] [raw]
Subject: Re: [PATCH -next] fs/epoll: simply CONFIG_NET_RX_BUSY_POLL ifdefery

On Wed, 25 Jul 2018 13:06:33 -0700 Davidlohr Bueso <[email protected]> wrote:

> >> +#else
> >> +#define ep_busy_loop(ep, nonblock) do { } while (0)
> >> +#define ep_reset_busy_poll_napi_id(ep) do { } while (0)
> >> +#define ep_set_busy_poll_napi_id(epi) do { } while (0)
> >> +
> >> +#endif /* CONFIG_NET_RX_BUSY_POLL */
> >
> >inlines are preferred. Because macros are fugly and can cause
> >unused-var warnings when the stub versions are used.
>
> Fair enough.
>
> >This?
>
> Do you want me to send a v2 or will you fold in the below?

I queued both patches.