Re: [PATCH v2 net-next] net: poll/select low latency socket support

2013-06-18 Thread Eliezer Tamir
On 18/06/2013 17:45, Eliezer Tamir wrote: On 18/06/2013 17:35, Eric Dumazet wrote: On Tue, 2013-06-18 at 16:25 +0300, Eliezer Tamir wrote: One other thing, sock_poll() will only ll_poll if the flag was set _and_ the socket has a none-zero value in sk->sk_ll_usec so you still only poll on socke

Re: [PATCH v2 net-next] net: poll/select low latency socket support

2013-06-18 Thread Eliezer Tamir
On 18/06/2013 17:35, Eric Dumazet wrote: On Tue, 2013-06-18 at 16:25 +0300, Eliezer Tamir wrote: One other thing, sock_poll() will only ll_poll if the flag was set _and_ the socket has a none-zero value in sk->sk_ll_usec so you still only poll on sockets that were enabled for LLS, not on every

Re: [PATCH v2 net-next] net: poll/select low latency socket support

2013-06-18 Thread Eric Dumazet
On Tue, 2013-06-18 at 16:25 +0300, Eliezer Tamir wrote: > One other thing, > sock_poll() will only ll_poll if the flag was set _and_ the socket has a > none-zero value in sk->sk_ll_usec so you still only poll on sockets > that were enabled for LLS, not on every socket. But sockets are default ena

Re: [PATCH v2 net-next] net: poll/select low latency socket support

2013-06-18 Thread Eliezer Tamir
On 18/06/2013 13:25, Eric Dumazet wrote: On Tue, 2013-06-18 at 11:58 +0300, Eliezer Tamir wrote: @@ -731,7 +755,11 @@ static inline unsigned int do_pollfd(struct pollfd *pollfd, poll_table *pwait) mask = DEFAULT_POLLMASK; if (f.file->f_op && f.f

Re: [PATCH v2 net-next] net: poll/select low latency socket support

2013-06-18 Thread Eliezer Tamir
On 18/06/2013 13:25, Eric Dumazet wrote: On Tue, 2013-06-18 at 11:58 +0300, Eliezer Tamir wrote: @@ -393,6 +394,15 @@ static inline void wait_key_set(poll_table *wait, unsigned long in, wait->_key |= POLLOUT_SET; } +static inline void wait_key_set_lls(poll_table *wait, bool

Re: [PATCH v2 net-next] net: poll/select low latency socket support

2013-06-18 Thread Eric Dumazet
On Tue, 2013-06-18 at 11:58 +0300, Eliezer Tamir wrote: > select/poll busy-poll support. > > Add a new poll flag POLL_LL. When this flag is set, sock poll will call > sk_poll_ll() if possible. sock_poll sets this flag in its return value > to indicate to select/poll when a socket that can busy pol

Re: [PATCH v2 net-next] net: poll/select low latency socket support

2013-06-18 Thread Eliezer Tamir
On 18/06/2013 12:08, Eric Dumazet wrote: On Tue, 2013-06-18 at 11:58 +0300, Eliezer Tamir wrote: select/poll busy-poll support. */ -static inline u64 ll_end_time(struct sock *sk) +static inline u64 ll_sk_end_time(struct sock *sk) { - u64 end_time = ACCESS_ONCE(sk->sk_ll_usec); -

Re: [PATCH v2 net-next] net: poll/select low latency socket support

2013-06-18 Thread Eric Dumazet
On Tue, 2013-06-18 at 11:58 +0300, Eliezer Tamir wrote: > select/poll busy-poll support. > > */ > -static inline u64 ll_end_time(struct sock *sk) > +static inline u64 ll_sk_end_time(struct sock *sk) > { > - u64 end_time = ACCESS_ONCE(sk->sk_ll_usec); > - > - /* we don't mind a ~2.5% i

[PATCH v2 net-next] net: poll/select low latency socket support

2013-06-18 Thread Eliezer Tamir
select/poll busy-poll support. Add a new poll flag POLL_LL. When this flag is set, sock poll will call sk_poll_ll() if possible. sock_poll sets this flag in its return value to indicate to select/poll when a socket that can busy poll is found. When poll/select have nothing to report, call the low