mbox series

[net-next,0/3] net: sched: update default qdisc visibility after Tx queue cnt changes

Message ID 20210913225332.662291-1-kuba@kernel.org
Headers show
Series net: sched: update default qdisc visibility after Tx queue cnt changes | expand

Message

Jakub Kicinski Sept. 13, 2021, 10:53 p.m. UTC
Matthew noticed that number of children reported by mq does not match
number of queues on reconfigured interfaces. For example if mq is
instantiated when there is 8 queues it will always show 8 children,
regardless of config being changed:

 # ethtool -L eth0 combined 8
 # tc qdisc replace dev eth0 root handle 100: mq
 # tc qdisc show dev eth0
 qdisc mq 100: root 
 qdisc pfifo_fast 0: parent 100:8 bands 3 priomap 1 2 ...
 qdisc pfifo_fast 0: parent 100:7 bands 3 priomap 1 2 ...
 qdisc pfifo_fast 0: parent 100:6 bands 3 priomap 1 2 ...
 qdisc pfifo_fast 0: parent 100:5 bands 3 priomap 1 2 ...
 qdisc pfifo_fast 0: parent 100:4 bands 3 priomap 1 2 ...
 qdisc pfifo_fast 0: parent 100:3 bands 3 priomap 1 2 ...
 qdisc pfifo_fast 0: parent 100:2 bands 3 priomap 1 2 ...
 qdisc pfifo_fast 0: parent 100:1 bands 3 priomap 1 2 ...
 # ethtool -L eth0 combined 1
 # tc qdisc show dev eth0
 qdisc mq 100: root 
 qdisc pfifo_fast 0: parent 100:8 bands 3 priomap 1 2 ...
 qdisc pfifo_fast 0: parent 100:7 bands 3 priomap 1 2 ...
 qdisc pfifo_fast 0: parent 100:6 bands 3 priomap 1 2 ...
 qdisc pfifo_fast 0: parent 100:5 bands 3 priomap 1 2 ...
 qdisc pfifo_fast 0: parent 100:4 bands 3 priomap 1 2 ...
 qdisc pfifo_fast 0: parent 100:3 bands 3 priomap 1 2 ...
 qdisc pfifo_fast 0: parent 100:2 bands 3 priomap 1 2 ...
 qdisc pfifo_fast 0: parent 100:1 bands 3 priomap 1 2 ...
 # ethtool -L eth0 combined 32
 # tc qdisc show dev eth0
 qdisc mq 100: root 
 qdisc pfifo_fast 0: parent 100:8 bands 3 priomap 1 2 ...
 qdisc pfifo_fast 0: parent 100:7 bands 3 priomap 1 2 ...
 qdisc pfifo_fast 0: parent 100:6 bands 3 priomap 1 2 ...
 qdisc pfifo_fast 0: parent 100:5 bands 3 priomap 1 2 ...
 qdisc pfifo_fast 0: parent 100:4 bands 3 priomap 1 2 ...
 qdisc pfifo_fast 0: parent 100:3 bands 3 priomap 1 2 ...
 qdisc pfifo_fast 0: parent 100:2 bands 3 priomap 1 2 ...
 qdisc pfifo_fast 0: parent 100:1 bands 3 priomap 1 2 ...

This patchset fixes this by hashing and unhasing the default
child qdiscs as number of queues gets adjusted.

Jakub Kicinski (3):
  net: sched: update default qdisc visibility after Tx queue cnt changes
  netdevsim: add ability to change channel count
  selftests: net: test ethtool -L vs mq

 drivers/net/netdevsim/ethtool.c               | 28 +++++++
 drivers/net/netdevsim/netdevsim.h             |  1 +
 include/net/sch_generic.h                     |  4 +
 net/core/dev.c                                |  2 +
 net/sched/sch_generic.c                       |  9 +++
 net/sched/sch_mq.c                            | 24 ++++++
 net/sched/sch_mqprio.c                        | 23 ++++++
 .../drivers/net/netdevsim/ethtool-common.sh   |  2 +-
 .../drivers/net/netdevsim/tc-mq-visibility.sh | 77 +++++++++++++++++++
 9 files changed, 169 insertions(+), 1 deletion(-)
 create mode 100755 tools/testing/selftests/drivers/net/netdevsim/tc-mq-visibility.sh

Comments

patchwork-bot+netdevbpf@kernel.org Sept. 15, 2021, 3:20 p.m. UTC | #1
Hello:

This series was applied to netdev/net-next.git (refs/heads/master):

On Mon, 13 Sep 2021 15:53:29 -0700 you wrote:
> Matthew noticed that number of children reported by mq does not match

> number of queues on reconfigured interfaces. For example if mq is

> instantiated when there is 8 queues it will always show 8 children,

> regardless of config being changed:

> 

>  # ethtool -L eth0 combined 8

>  # tc qdisc replace dev eth0 root handle 100: mq

>  # tc qdisc show dev eth0

>  qdisc mq 100: root

>  qdisc pfifo_fast 0: parent 100:8 bands 3 priomap 1 2 ...

>  qdisc pfifo_fast 0: parent 100:7 bands 3 priomap 1 2 ...

>  qdisc pfifo_fast 0: parent 100:6 bands 3 priomap 1 2 ...

>  qdisc pfifo_fast 0: parent 100:5 bands 3 priomap 1 2 ...

>  qdisc pfifo_fast 0: parent 100:4 bands 3 priomap 1 2 ...

>  qdisc pfifo_fast 0: parent 100:3 bands 3 priomap 1 2 ...

>  qdisc pfifo_fast 0: parent 100:2 bands 3 priomap 1 2 ...

>  qdisc pfifo_fast 0: parent 100:1 bands 3 priomap 1 2 ...

>  # ethtool -L eth0 combined 1

>  # tc qdisc show dev eth0

>  qdisc mq 100: root

>  qdisc pfifo_fast 0: parent 100:8 bands 3 priomap 1 2 ...

>  qdisc pfifo_fast 0: parent 100:7 bands 3 priomap 1 2 ...

>  qdisc pfifo_fast 0: parent 100:6 bands 3 priomap 1 2 ...

>  qdisc pfifo_fast 0: parent 100:5 bands 3 priomap 1 2 ...

>  qdisc pfifo_fast 0: parent 100:4 bands 3 priomap 1 2 ...

>  qdisc pfifo_fast 0: parent 100:3 bands 3 priomap 1 2 ...

>  qdisc pfifo_fast 0: parent 100:2 bands 3 priomap 1 2 ...

>  qdisc pfifo_fast 0: parent 100:1 bands 3 priomap 1 2 ...

>  # ethtool -L eth0 combined 32

>  # tc qdisc show dev eth0

>  qdisc mq 100: root

>  qdisc pfifo_fast 0: parent 100:8 bands 3 priomap 1 2 ...

>  qdisc pfifo_fast 0: parent 100:7 bands 3 priomap 1 2 ...

>  qdisc pfifo_fast 0: parent 100:6 bands 3 priomap 1 2 ...

>  qdisc pfifo_fast 0: parent 100:5 bands 3 priomap 1 2 ...

>  qdisc pfifo_fast 0: parent 100:4 bands 3 priomap 1 2 ...

>  qdisc pfifo_fast 0: parent 100:3 bands 3 priomap 1 2 ...

>  qdisc pfifo_fast 0: parent 100:2 bands 3 priomap 1 2 ...

>  qdisc pfifo_fast 0: parent 100:1 bands 3 priomap 1 2 ...

> 

> [...]


Here is the summary with links:
  - [net-next,1/3] net: sched: update default qdisc visibility after Tx queue cnt changes
    https://git.kernel.org/netdev/net-next/c/1e080f17750d
  - [net-next,2/3] netdevsim: add ability to change channel count
    https://git.kernel.org/netdev/net-next/c/2e367522ce6b
  - [net-next,3/3] selftests: net: test ethtool -L vs mq
    https://git.kernel.org/netdev/net-next/c/2d6a58996ee2

You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html