* [PATCH net] net: accept an empty mask in /sys/class/net/*/queues/rx-*/rps_cpus
@ 2020-08-12 1:34 Eric Dumazet
2020-08-12 2:25 ` Maciej Żenczykowski
` (4 more replies)
0 siblings, 5 replies; 11+ messages in thread
From: Eric Dumazet @ 2020-08-12 1:34 UTC (permalink / raw)
To: David S . Miller
Cc: netdev, Eric Dumazet, Eric Dumazet, Maciej Żenczykowski,
Alex Belits, Nitesh Narayan Lal, Peter Zijlstra
We must accept an empty mask in store_rps_map(), or we are not able
to disable RPS on a queue.
Fixes: 07bbecb34106 ("net: Restrict receive packets queuing to housekeeping CPUs")
Signed-off-by: Eric Dumazet <edumazet@google.com>
Reported-by: Maciej Żenczykowski <maze@google.com>
Cc: Alex Belits <abelits@marvell.com>
Cc: Nitesh Narayan Lal <nitesh@redhat.com>
Cc: Peter Zijlstra (Intel) <peterz@infradead.org>
---
net/core/net-sysfs.c | 12 +++++++-----
1 file changed, 7 insertions(+), 5 deletions(-)
diff --git a/net/core/net-sysfs.c b/net/core/net-sysfs.c
index 9de33b594ff2693c054022a42703c90084122444..efec66fa78b70b2fe5b0a5920317eb1d0415d9e3 100644
--- a/net/core/net-sysfs.c
+++ b/net/core/net-sysfs.c
@@ -757,11 +757,13 @@ static ssize_t store_rps_map(struct netdev_rx_queue *queue,
return err;
}
- hk_flags = HK_FLAG_DOMAIN | HK_FLAG_WQ;
- cpumask_and(mask, mask, housekeeping_cpumask(hk_flags));
- if (cpumask_empty(mask)) {
- free_cpumask_var(mask);
- return -EINVAL;
+ if (!cpumask_empty(mask)) {
+ hk_flags = HK_FLAG_DOMAIN | HK_FLAG_WQ;
+ cpumask_and(mask, mask, housekeeping_cpumask(hk_flags));
+ if (cpumask_empty(mask)) {
+ free_cpumask_var(mask);
+ return -EINVAL;
+ }
}
map = kzalloc(max_t(unsigned int,
--
2.28.0.236.gb10cc79966-goog
^ permalink raw reply related [flat|nested] 11+ messages in thread
* Re: [PATCH net] net: accept an empty mask in /sys/class/net/*/queues/rx-*/rps_cpus
2020-08-12 1:34 [PATCH net] net: accept an empty mask in /sys/class/net/*/queues/rx-*/rps_cpus Eric Dumazet
@ 2020-08-12 2:25 ` Maciej Żenczykowski
2020-08-12 3:16 ` David Ahern
` (3 subsequent siblings)
4 siblings, 0 replies; 11+ messages in thread
From: Maciej Żenczykowski @ 2020-08-12 2:25 UTC (permalink / raw)
To: Eric Dumazet
Cc: David S . Miller, netdev, Eric Dumazet, Alex Belits,
Nitesh Narayan Lal, Peter Zijlstra
Reviewed-by: Maciej Żenczykowski <maze@google.com>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH net] net: accept an empty mask in /sys/class/net/*/queues/rx-*/rps_cpus
2020-08-12 1:34 [PATCH net] net: accept an empty mask in /sys/class/net/*/queues/rx-*/rps_cpus Eric Dumazet
2020-08-12 2:25 ` Maciej Żenczykowski
@ 2020-08-12 3:16 ` David Ahern
2020-08-12 3:18 ` David Ahern
2020-08-12 3:19 ` Maciej Żenczykowski
[not found] ` <CANP3RGc6Gz73Gt3v9M7KYNeNd57o--=3mF6yqdRjqOViG+TG7A@mail.gmail.com>
` (2 subsequent siblings)
4 siblings, 2 replies; 11+ messages in thread
From: David Ahern @ 2020-08-12 3:16 UTC (permalink / raw)
To: Eric Dumazet, David S . Miller
Cc: netdev, Eric Dumazet, Maciej Żenczykowski, Alex Belits,
Nitesh Narayan Lal, Peter Zijlstra
On 8/11/20 7:34 PM, Eric Dumazet wrote:
> We must accept an empty mask in store_rps_map(), or we are not able
> to disable RPS on a queue.
0 works. Is that not sufficient?
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH net] net: accept an empty mask in /sys/class/net/*/queues/rx-*/rps_cpus
2020-08-12 3:16 ` David Ahern
@ 2020-08-12 3:18 ` David Ahern
2020-08-12 3:19 ` Maciej Żenczykowski
1 sibling, 0 replies; 11+ messages in thread
From: David Ahern @ 2020-08-12 3:18 UTC (permalink / raw)
To: Eric Dumazet, David S . Miller
Cc: netdev, Eric Dumazet, Maciej Żenczykowski, Alex Belits,
Nitesh Narayan Lal, Peter Zijlstra
On 8/11/20 9:16 PM, David Ahern wrote:
> On 8/11/20 7:34 PM, Eric Dumazet wrote:
>> We must accept an empty mask in store_rps_map(), or we are not able
>> to disable RPS on a queue.
>
> 0 works. Is that not sufficient?
>
To re-phrase:
echo 0 > /sys/class/net/*/queues/rx-*/rps_cpus
works to disable rps. I don't get the difference in what you are
changing here.
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH net] net: accept an empty mask in /sys/class/net/*/queues/rx-*/rps_cpus
2020-08-12 3:16 ` David Ahern
2020-08-12 3:18 ` David Ahern
@ 2020-08-12 3:19 ` Maciej Żenczykowski
2020-08-12 3:22 ` David Ahern
1 sibling, 1 reply; 11+ messages in thread
From: Maciej Żenczykowski @ 2020-08-12 3:19 UTC (permalink / raw)
To: David Ahern
Cc: Eric Dumazet, David S . Miller, netdev, Eric Dumazet,
Alex Belits, Nitesh Narayan Lal, Peter Zijlstra
Before breakage, post fix:
sfp6:~# echo 0 > /sys/class/net/lo/queues/rx-0/rps_cpus
With breakage:
lpk17:~# echo 0 > /sys/class/net/lo/queues/rx-0/rps_cpus
-bash: echo: write error: Invalid argument
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH net] net: accept an empty mask in /sys/class/net/*/queues/rx-*/rps_cpus
2020-08-12 3:19 ` Maciej Żenczykowski
@ 2020-08-12 3:22 ` David Ahern
2020-08-12 3:27 ` Eric Dumazet
0 siblings, 1 reply; 11+ messages in thread
From: David Ahern @ 2020-08-12 3:22 UTC (permalink / raw)
To: Maciej Żenczykowski
Cc: Eric Dumazet, David S . Miller, netdev, Eric Dumazet,
Alex Belits, Nitesh Narayan Lal, Peter Zijlstra
On 8/11/20 9:19 PM, Maciej Żenczykowski wrote:
> Before breakage, post fix:
>
> sfp6:~# echo 0 > /sys/class/net/lo/queues/rx-0/rps_cpus
>
> With breakage:
> lpk17:~# echo 0 > /sys/class/net/lo/queues/rx-0/rps_cpus
> -bash: echo: write error: Invalid argument
>
ah, so this is recent breakage with 5.9. I had not hit before hence the
question. thanks for clarifying.
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH net] net: accept an empty mask in /sys/class/net/*/queues/rx-*/rps_cpus
2020-08-12 3:22 ` David Ahern
@ 2020-08-12 3:27 ` Eric Dumazet
0 siblings, 0 replies; 11+ messages in thread
From: Eric Dumazet @ 2020-08-12 3:27 UTC (permalink / raw)
To: David Ahern
Cc: Maciej Żenczykowski, David S . Miller, netdev, Eric Dumazet,
Alex Belits, Nitesh Narayan Lal, Peter Zijlstra
On Tue, Aug 11, 2020 at 8:22 PM David Ahern <dsahern@gmail.com> wrote:
>
> On 8/11/20 9:19 PM, Maciej Żenczykowski wrote:
> > Before breakage, post fix:
> >
> > sfp6:~# echo 0 > /sys/class/net/lo/queues/rx-0/rps_cpus
> >
> > With breakage:
> > lpk17:~# echo 0 > /sys/class/net/lo/queues/rx-0/rps_cpus
> > -bash: echo: write error: Invalid argument
> >
>
> ah, so this is recent breakage with 5.9. I had not hit before hence the
> question. thanks for clarifying.
Yup, 07bbecb34106 ("net: Restrict receive packets queuing to
housekeeping CPUs") has been merged only recently.
(This was not in David net-next tree btw, this is why it took us so
long to come to this issue)
^ permalink raw reply [flat|nested] 11+ messages in thread
[parent not found: <CANP3RGc6Gz73Gt3v9M7KYNeNd57o--=3mF6yqdRjqOViG+TG7A@mail.gmail.com>]
* Re: [PATCH net] net: accept an empty mask in /sys/class/net/*/queues/rx-*/rps_cpus
[not found] ` <CANP3RGc6Gz73Gt3v9M7KYNeNd57o--=3mF6yqdRjqOViG+TG7A@mail.gmail.com>
@ 2020-08-12 8:00 ` peterz
2020-08-12 15:19 ` Eric Dumazet
0 siblings, 1 reply; 11+ messages in thread
From: peterz @ 2020-08-12 8:00 UTC (permalink / raw)
To: Maciej Żenczykowski
Cc: Eric Dumazet, David S . Miller, netdev, Eric Dumazet,
Alex Belits, Nitesh Narayan Lal
On Tue, Aug 11, 2020 at 06:45:23PM -0700, Maciej Żenczykowski wrote:
> On Tue, Aug 11, 2020 at 6:34 PM Eric Dumazet <edumazet@google.com> wrote:
>
> > We must accept an empty mask in store_rps_map(), or we are not able
> > to disable RPS on a queue.
> >
> > Fixes: 07bbecb34106 ("net: Restrict receive packets queuing to
> > housekeeping CPUs")
> > Signed-off-by: Eric Dumazet <edumazet@google.com>
> > Reported-by: Maciej Żenczykowski <maze@google.com>
> > Cc: Alex Belits <abelits@marvell.com>
> > Cc: Nitesh Narayan Lal <nitesh@redhat.com>
> > Cc: Peter Zijlstra (Intel) <peterz@infradead.org>
> > ---
> > net/core/net-sysfs.c | 12 +++++++-----
> > 1 file changed, 7 insertions(+), 5 deletions(-)
> >
> > diff --git a/net/core/net-sysfs.c b/net/core/net-sysfs.c
> > index
> > 9de33b594ff2693c054022a42703c90084122444..efec66fa78b70b2fe5b0a5920317eb1d0415d9e3
> > 100644
> > --- a/net/core/net-sysfs.c
> > +++ b/net/core/net-sysfs.c
> > @@ -757,11 +757,13 @@ static ssize_t store_rps_map(struct netdev_rx_queue
> > *queue,
> > return err;
> > }
> >
> > - hk_flags = HK_FLAG_DOMAIN | HK_FLAG_WQ;
> > - cpumask_and(mask, mask, housekeeping_cpumask(hk_flags));
> > - if (cpumask_empty(mask)) {
> > - free_cpumask_var(mask);
> > - return -EINVAL;
> > + if (!cpumask_empty(mask)) {
> > + hk_flags = HK_FLAG_DOMAIN | HK_FLAG_WQ;
> > + cpumask_and(mask, mask, housekeeping_cpumask(hk_flags));
> > + if (cpumask_empty(mask)) {
> > + free_cpumask_var(mask);
> > + return -EINVAL;
> > + }
> > }
Ah indeed! Sorry about that.
Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH net] net: accept an empty mask in /sys/class/net/*/queues/rx-*/rps_cpus
2020-08-12 8:00 ` peterz
@ 2020-08-12 15:19 ` Eric Dumazet
0 siblings, 0 replies; 11+ messages in thread
From: Eric Dumazet @ 2020-08-12 15:19 UTC (permalink / raw)
To: peterz, Maciej Żenczykowski
Cc: Eric Dumazet, David S . Miller, netdev, Eric Dumazet,
Alex Belits, Nitesh Narayan Lal
On 8/12/20 1:00 AM, peterz@infradead.org wrote:
> On Tue, Aug 11, 2020 at 06:45:23PM -0700, Maciej Żenczykowski wrote:
>> On Tue, Aug 11, 2020 at 6:34 PM Eric Dumazet <edumazet@google.com> wrote:
>>
>>> We must accept an empty mask in store_rps_map(), or we are not able
>>> to disable RPS on a queue.
>>>
>>> Fixes: 07bbecb34106 ("net: Restrict receive packets queuing to
>>> housekeeping CPUs")
>>> Signed-off-by: Eric Dumazet <edumazet@google.com>
>>> Reported-by: Maciej Żenczykowski <maze@google.com>
>>> Cc: Alex Belits <abelits@marvell.com>
>>> Cc: Nitesh Narayan Lal <nitesh@redhat.com>
>>> Cc: Peter Zijlstra (Intel) <peterz@infradead.org>
>>> ---
>>> net/core/net-sysfs.c | 12 +++++++-----
>>> 1 file changed, 7 insertions(+), 5 deletions(-)
>>>
>>> diff --git a/net/core/net-sysfs.c b/net/core/net-sysfs.c
>>> index
>>> 9de33b594ff2693c054022a42703c90084122444..efec66fa78b70b2fe5b0a5920317eb1d0415d9e3
>>> 100644
>>> --- a/net/core/net-sysfs.c
>>> +++ b/net/core/net-sysfs.c
>>> @@ -757,11 +757,13 @@ static ssize_t store_rps_map(struct netdev_rx_queue
>>> *queue,
>>> return err;
>>> }
>>>
>>> - hk_flags = HK_FLAG_DOMAIN | HK_FLAG_WQ;
>>> - cpumask_and(mask, mask, housekeeping_cpumask(hk_flags));
>>> - if (cpumask_empty(mask)) {
>>> - free_cpumask_var(mask);
>>> - return -EINVAL;
>>> + if (!cpumask_empty(mask)) {
>>> + hk_flags = HK_FLAG_DOMAIN | HK_FLAG_WQ;
>>> + cpumask_and(mask, mask, housekeeping_cpumask(hk_flags));
>>> + if (cpumask_empty(mask)) {
>>> + free_cpumask_var(mask);
>>> + return -EINVAL;
>>> + }
>>> }
>
> Ah indeed! Sorry about that.
>
> Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
>
No worries, thanks for the review guys.
We probably should add a test doing something like
echo ffffffff >/sys/class/net/lo/queues/rx-0/rps_cpus
echo 0 >/sys/class/net/lo/queues/rx-0/rps_cpus
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH net] net: accept an empty mask in /sys/class/net/*/queues/rx-*/rps_cpus
2020-08-12 1:34 [PATCH net] net: accept an empty mask in /sys/class/net/*/queues/rx-*/rps_cpus Eric Dumazet
` (2 preceding siblings ...)
[not found] ` <CANP3RGc6Gz73Gt3v9M7KYNeNd57o--=3mF6yqdRjqOViG+TG7A@mail.gmail.com>
@ 2020-08-12 12:53 ` Nitesh Narayan Lal
2020-08-12 21:25 ` David Miller
4 siblings, 0 replies; 11+ messages in thread
From: Nitesh Narayan Lal @ 2020-08-12 12:53 UTC (permalink / raw)
To: Eric Dumazet, David S . Miller
Cc: netdev, Eric Dumazet, Maciej Żenczykowski, Alex Belits,
Peter Zijlstra
[-- Attachment #1.1: Type: text/plain, Size: 1489 bytes --]
On 8/11/20 9:34 PM, Eric Dumazet wrote:
> We must accept an empty mask in store_rps_map(), or we are not able
> to disable RPS on a queue.
>
> Fixes: 07bbecb34106 ("net: Restrict receive packets queuing to housekeeping CPUs")
> Signed-off-by: Eric Dumazet <edumazet@google.com>
> Reported-by: Maciej Żenczykowski <maze@google.com>
> Cc: Alex Belits <abelits@marvell.com>
> Cc: Nitesh Narayan Lal <nitesh@redhat.com>
> Cc: Peter Zijlstra (Intel) <peterz@infradead.org>
> ---
> net/core/net-sysfs.c | 12 +++++++-----
> 1 file changed, 7 insertions(+), 5 deletions(-)
>
> diff --git a/net/core/net-sysfs.c b/net/core/net-sysfs.c
> index 9de33b594ff2693c054022a42703c90084122444..efec66fa78b70b2fe5b0a5920317eb1d0415d9e3 100644
> --- a/net/core/net-sysfs.c
> +++ b/net/core/net-sysfs.c
> @@ -757,11 +757,13 @@ static ssize_t store_rps_map(struct netdev_rx_queue *queue,
> return err;
> }
>
> - hk_flags = HK_FLAG_DOMAIN | HK_FLAG_WQ;
> - cpumask_and(mask, mask, housekeeping_cpumask(hk_flags));
> - if (cpumask_empty(mask)) {
> - free_cpumask_var(mask);
> - return -EINVAL;
> + if (!cpumask_empty(mask)) {
> + hk_flags = HK_FLAG_DOMAIN | HK_FLAG_WQ;
> + cpumask_and(mask, mask, housekeeping_cpumask(hk_flags));
> + if (cpumask_empty(mask)) {
> + free_cpumask_var(mask);
> + return -EINVAL;
> + }
> }
>
> map = kzalloc(max_t(unsigned int,
Ah! my bad.
Thanks for the fix.
Acked-by: Nitesh Narayan Lal <nitesh@redhat.com>
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH net] net: accept an empty mask in /sys/class/net/*/queues/rx-*/rps_cpus
2020-08-12 1:34 [PATCH net] net: accept an empty mask in /sys/class/net/*/queues/rx-*/rps_cpus Eric Dumazet
` (3 preceding siblings ...)
2020-08-12 12:53 ` Nitesh Narayan Lal
@ 2020-08-12 21:25 ` David Miller
4 siblings, 0 replies; 11+ messages in thread
From: David Miller @ 2020-08-12 21:25 UTC (permalink / raw)
To: edumazet; +Cc: netdev, eric.dumazet, maze, abelits, nitesh, peterz
From: Eric Dumazet <edumazet@google.com>
Date: Tue, 11 Aug 2020 18:34:40 -0700
> We must accept an empty mask in store_rps_map(), or we are not able
> to disable RPS on a queue.
>
> Fixes: 07bbecb34106 ("net: Restrict receive packets queuing to housekeeping CPUs")
> Signed-off-by: Eric Dumazet <edumazet@google.com>
> Reported-by: Maciej Żenczykowski <maze@google.com>
Applied, thanks Eric.
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2020-08-12 21:25 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-08-12 1:34 [PATCH net] net: accept an empty mask in /sys/class/net/*/queues/rx-*/rps_cpus Eric Dumazet
2020-08-12 2:25 ` Maciej Żenczykowski
2020-08-12 3:16 ` David Ahern
2020-08-12 3:18 ` David Ahern
2020-08-12 3:19 ` Maciej Żenczykowski
2020-08-12 3:22 ` David Ahern
2020-08-12 3:27 ` Eric Dumazet
[not found] ` <CANP3RGc6Gz73Gt3v9M7KYNeNd57o--=3mF6yqdRjqOViG+TG7A@mail.gmail.com>
2020-08-12 8:00 ` peterz
2020-08-12 15:19 ` Eric Dumazet
2020-08-12 12:53 ` Nitesh Narayan Lal
2020-08-12 21:25 ` David Miller
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).