[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Date: Thu, 2 Feb 2023 02:36:04 +0200
From: Vladimir Oltean <vladimir.oltean@....com>
To: netdev@...r.kernel.org
Cc: "David S. Miller" <davem@...emloft.net>,
Eric Dumazet <edumazet@...gle.com>,
Jakub Kicinski <kuba@...nel.org>,
Paolo Abeni <pabeni@...hat.com>,
Claudiu Manoil <claudiu.manoil@....com>,
Vinicius Costa Gomes <vinicius.gomes@...el.com>,
Kurt Kanzenbach <kurt@...utronix.de>,
Jacob Keller <jacob.e.keller@...el.com>,
Jamal Hadi Salim <jhs@...atatu.com>,
Cong Wang <xiyou.wangcong@...il.com>,
Jiri Pirko <jiri@...nulli.us>,
Simon Horman <simon.horman@...igine.com>,
Igor Russkikh <irusskikh@...vell.com>,
Yisen Zhuang <yisen.zhuang@...wei.com>,
Salil Mehta <salil.mehta@...wei.com>,
Jesse Brandeburg <jesse.brandeburg@...el.com>,
Tony Nguyen <anthony.l.nguyen@...el.com>,
Thomas Petazzoni <thomas.petazzoni@...tlin.com>,
Saeed Mahameed <saeedm@...dia.com>,
Leon Romanovsky <leon@...nel.org>,
Horatiu Vultur <horatiu.vultur@...rochip.com>,
Lars Povlsen <lars.povlsen@...rochip.com>,
Steen Hegelund <Steen.Hegelund@...rochip.com>,
Daniel Machon <daniel.machon@...rochip.com>,
UNGLinuxDriver@...rochip.com,
Gerhard Engleder <gerhard@...leder-embedded.com>,
Siddharth Vadapalli <s-vadapalli@...com>,
Roger Quadros <rogerq@...nel.org>
Subject: [PATCH v5 net-next 00/17] ENETC mqprio/taprio cleanup
Please excuse the increased patch set size compared to v4's 15 patches,
but Claudiu stirred up the pot :) when he pointed out that the mqprio
TXQ validation procedure is still incorrect, so I had to fix that, and
then do some consolidation work so that taprio doesn't duplicate
mqprio's bugs. Compared to v4, 3 patches are new and 1 was dropped for now
("net/sched: taprio: mask off bits in gate mask that exceed number of TCs"),
since there's not really much to gain from it. Since the previous patch
set has largely been reviewed, I hope that a delta overview will help
and make up for the large size.
v4->v5:
- new patches:
"[08/17] net/sched: mqprio: allow reverse TC:TXQ mappings"
"[11/17] net/sched: taprio: centralize mqprio qopt validation"
"[12/17] net/sched: refactor mqprio qopt reconstruction to a library function"
- changed patches worth revisiting:
"[09/17] net/sched: mqprio: allow offloading drivers to request queue
count validation"
v4 at:
https://patchwork.kernel.org/project/netdevbpf/cover/20230130173145.475943-1-vladimir.oltean@nxp.com/
v3->v4:
- adjusted patch 07/15 to not remove "#include <net/pkt_sched.h>" from
ti cpsw
https://patchwork.kernel.org/project/netdevbpf/cover/20230127001516.592984-1-vladimir.oltean@nxp.com/
v2->v3:
- move min_num_stack_tx_queues definition so it doesn't conflict with
the ethtool mm patches I haven't submitted yet for enetc (and also to
make use of a 4 byte hole)
- warn and mask off excess TCs in gate mask instead of failing
- finally CC qdisc maintainers
v2 at:
https://patchwork.kernel.org/project/netdevbpf/patch/20230126125308.1199404-16-vladimir.oltean@nxp.com/
v1->v2:
- patches 1->4 are new
- update some header inclusions in drivers
- fix typo (said "taprio" instead of "mqprio")
- better enetc mqprio error handling
- dynamically reconstruct mqprio configuration in taprio offload
- also let stmmac and tsnep use per-TXQ gate_mask
v1 (RFC) at:
https://patchwork.kernel.org/project/netdevbpf/cover/20230120141537.1350744-1-vladimir.oltean@nxp.com/
The main goal of this patch set is to make taprio pass the mqprio queue
configuration structure down to ndo_setup_tc() - patch 13/17. But mqprio
itself is not in the best shape currently, so there are some
consolidation patches on that as well.
Next, there are some consolidation patches in the enetc driver's
handling of TX queues and their traffic class assignment. Then, there is
a consolidation between the TX queue configuration for mqprio and
taprio.
Finally, there is a change in the meaning of the gate_mask passed by
taprio through ndo_setup_tc(). We introduce a capability through which
drivers can request the gate mask to be per TXQ. The default is changed
so that it is per TC.
Cc: Igor Russkikh <irusskikh@...vell.com>
Cc: Yisen Zhuang <yisen.zhuang@...wei.com>
Cc: Salil Mehta <salil.mehta@...wei.com>
Cc: Jesse Brandeburg <jesse.brandeburg@...el.com>
Cc: Tony Nguyen <anthony.l.nguyen@...el.com>
Cc: Thomas Petazzoni <thomas.petazzoni@...tlin.com>
Cc: Saeed Mahameed <saeedm@...dia.com>
Cc: Leon Romanovsky <leon@...nel.org>
Cc: Horatiu Vultur <horatiu.vultur@...rochip.com>
Cc: Lars Povlsen <lars.povlsen@...rochip.com>
Cc: Steen Hegelund <Steen.Hegelund@...rochip.com>
Cc: Daniel Machon <daniel.machon@...rochip.com>
Cc: UNGLinuxDriver@...rochip.com
Cc: Gerhard Engleder <gerhard@...leder-embedded.com>
Cc: Siddharth Vadapalli <s-vadapalli@...com>
Cc: Roger Quadros <rogerq@...nel.org>
Vladimir Oltean (17):
net: enetc: simplify enetc_num_stack_tx_queues()
net: enetc: allow the enetc_reconfigure() callback to fail
net: enetc: recalculate num_real_tx_queues when XDP program attaches
net: enetc: ensure we always have a minimum number of TXQs for stack
net/sched: mqprio: refactor nlattr parsing to a separate function
net/sched: mqprio: refactor offloading and unoffloading to dedicated
functions
net/sched: move struct tc_mqprio_qopt_offload from pkt_cls.h to
pkt_sched.h
net/sched: mqprio: allow reverse TC:TXQ mappings
net/sched: mqprio: allow offloading drivers to request queue count
validation
net/sched: mqprio: add extack messages for queue count validation
net/sched: taprio: centralize mqprio qopt validation
net/sched: refactor mqprio qopt reconstruction to a library function
net/sched: taprio: pass mqprio queue configuration to ndo_setup_tc()
net/sched: taprio: only calculate gate mask per TXQ for igc, stmmac
and tsnep
net: enetc: request mqprio to validate the queue counts
net: enetc: act upon the requested mqprio queue configuration
net: enetc: act upon mqprio queue config in taprio offload
.../net/ethernet/aquantia/atlantic/aq_main.c | 1 +
.../ethernet/chelsio/cxgb4/cxgb4_tc_mqprio.h | 2 +-
drivers/net/ethernet/engleder/tsnep_tc.c | 21 ++
drivers/net/ethernet/freescale/enetc/enetc.c | 173 +++++++----
drivers/net/ethernet/freescale/enetc/enetc.h | 3 +
.../net/ethernet/freescale/enetc/enetc_qos.c | 27 +-
drivers/net/ethernet/hisilicon/hns3/hnae3.h | 1 +
.../net/ethernet/hisilicon/hns3/hns3_enet.c | 1 +
drivers/net/ethernet/intel/i40e/i40e.h | 1 +
drivers/net/ethernet/intel/iavf/iavf.h | 1 +
drivers/net/ethernet/intel/ice/ice.h | 1 +
drivers/net/ethernet/intel/igc/igc_main.c | 23 ++
drivers/net/ethernet/marvell/mvneta.c | 2 +-
.../net/ethernet/mellanox/mlx5/core/en_main.c | 1 +
.../ethernet/microchip/lan966x/lan966x_tc.c | 1 +
.../net/ethernet/microchip/sparx5/sparx5_tc.c | 1 +
drivers/net/ethernet/stmicro/stmmac/hwif.h | 5 +
.../net/ethernet/stmicro/stmmac/stmmac_main.c | 2 +
.../net/ethernet/stmicro/stmmac/stmmac_tc.c | 20 ++
drivers/net/ethernet/ti/cpsw_priv.c | 1 +
include/net/pkt_cls.h | 10 -
include/net/pkt_sched.h | 16 +
net/sched/Kconfig | 7 +
net/sched/Makefile | 1 +
net/sched/sch_mqprio.c | 285 +++++++++---------
net/sched/sch_mqprio_lib.c | 114 +++++++
net/sched/sch_mqprio_lib.h | 18 ++
net/sched/sch_taprio.c | 70 ++---
28 files changed, 538 insertions(+), 271 deletions(-)
create mode 100644 net/sched/sch_mqprio_lib.c
create mode 100644 net/sched/sch_mqprio_lib.h
--
2.34.1
Powered by blists - more mailing lists