Merge branch 'sch_sfq-derived-limit'
authorDavid S. Miller <davem@davemloft.net>
Wed, 9 Apr 2025 11:55:48 +0000 (12:55 +0100)
committerDavid S. Miller <davem@davemloft.net>
Wed, 9 Apr 2025 11:55:48 +0000 (12:55 +0100)
commit29d261466fa6ef540e991681069a736791d7b60a
treec1fc441b6293dfb48ea7ba1aef013231da78379a
parent7f1ff1b38a7c8b872382b796023419d87d78c47e
parent26e705184e7a67bdcded69b4b86b583fc81971ce
Merge branch 'sch_sfq-derived-limit'

Octavian Purdila says:

====================
net_sched: sch_sfq: reject a derived limit of 1

Because sfq parameters can influence each other there can be
situations where although the user sets a limit of 2 it can be lowered
to 1:

$ tc qdisc add dev dummy0 handle 1: root sfq limit 2 flows 1 depth 1
$ tc qdisc show dev dummy0
qdisc sfq 1: dev dummy0 root refcnt 2 limit 1p quantum 1514b depth 1 divisor 1024

$ tc qdisc add dev dummy0 handle 1: root sfq limit 2 flows 10 depth 1 divisor 1
$ tc qdisc show dev dummy0
qdisc sfq 2: root refcnt 2 limit 1p quantum 1514b depth 1 divisor 1

As a limit of 1 is invalid, this patch series moves the limit
validation to after all configuration changes have been done. To do
so, the configuration is done in a temporary work area then applied to
the internal state.

The patch series also adds new test cases.

v3:
 - remove a couple of unnecessary comments
 - rearrange local variables to use reverse Christmas tree style
   declaration order

v2: https://lore.kernel.org/all/20250402162750.1671155-1-tavip@google.com/
 - remove tmp struct and directly use local variables

v1: https://lore.kernel.org/all/20250328201634.3876474-1-tavip@google.com/
===================

Signed-off-by: David S. Miller <davem@davemloft.net>