[PATCH net-next] net: stmmac: fix mqprio and cbs combination
flat view
WARM3d
REVIEWED: 1 (0M)
From: Lorenzo Bianconi <hidden>
Date: 2026-10-12 21:14:40
Also in:
linux-arm-kernel
Subsystem:
networking drivers, stmmac ethernet driver, the rest · Maintainers:
Andrew Lunn, "David S. Miller", Eric Dumazet, Jakub Kicinski, Paolo Abeni, Maxime Chevallier, Linus Torvalds
1 review trailer.
The channel-mode mqprio offload and the CBS offload can currently not be
enabled at the same time. tc_mqprio_validate_chan_mode() refuses the
mqprio offload as soon as any TX queue is configured in AVB mode, and
tc_setup_cbs() refuses to enable CBS while the strict-priority scheduler
is active. As a result the combination is rejected whichever order the
two are configured in.
The strict-priority scheduler selected by the channel-mode mqprio
offload and the per-queue CBS shaper are independent MTL settings and do
not conflict, so drop the checks and let the combination be offloaded.
The following configuration, which was previously refused, now works:
$ tc qdisc replace dev eth0 handle 100 parent root mqprio num_tc 4 \
map 0 0 0 0 0 1 2 3 0 0 0 0 0 0 0 0 \
queues 1@0 1@1 1@2 1@3 mode channel hw 1
$ tc qdisc replace dev eth0 parent 100:2 handle 102: cbs \
idleslope 800000 sendslope -1700000 hicredit 494 locredit -1049 offload 0
$ tc qdisc replace dev eth0 parent 100:3 handle 103: cbs \
idleslope 400000 sendslope -2100000 hicredit 247 locredit -1296 offload 1
$ tc qdisc replace dev eth0 parent 100:4 handle 104: cbs \
idleslope 200000 sendslope -2300000 hicredit 124 locredit -1419 offload 1
Fixes: 47891d501e34 ("net: stmmac: add tc mqprio hw queue priority offload")
Tested-by: Daniel Thompson <redacted>
Signed-off-by: Lorenzo Bianconi <redacted>
---
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 8 --------
drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c | 16 ----------------
2 files changed, 24 deletions(-)
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
index 56d89a696272..51d502930219 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c@@ -7740,14 +7740,6 @@ int stmmac_reinit_queues(struct net_device *dev, u8 rx_cnt, u8 tx_cnt) tx_cnt < priv->xmit_qdisc.num_tx_queues) return -EINVAL; - if (priv->xmit_qdisc.prio_offload) { - for (i = priv->plat->tx_queues_to_use; i < tx_cnt; i++) { - if (priv->plat->tx_queues_cfg[i].mode_to_use == - MTL_QUEUE_AVB) - return -EINVAL; - } - } - if (netif_running(dev)) stmmac_release(dev);
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c
index ea1f97d6f0bd..175236ba379d 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_tc.c@@ -346,9 +346,6 @@ static int tc_setup_cbs(struct stmmac_priv *priv, if (!priv->dma_cap.av) return -EOPNOTSUPP; - if (qopt->enable && priv->xmit_qdisc.prio_offload) - return -EOPNOTSUPP; - port_transmit_rate_kbps = qopt->idleslope - qopt->sendslope; if (qopt->enable) {
@@ -1340,7 +1337,6 @@ static void tc_mqprio_config_queue_prio(struct stmmac_priv *priv, static int tc_mqprio_validate_chan_mode(struct stmmac_priv *priv, struct tc_mqprio_qopt_offload *mqprio) { - struct plat_stmmacenet_data *pdata = priv->plat; struct tc_mqprio_qopt *qopt = &mqprio->qopt; int i;
@@ -1350,18 +1346,6 @@ static int tc_mqprio_validate_chan_mode(struct stmmac_priv *priv, return -EOPNOTSUPP; } - /* Forcing strict priority conflicts with the CBS algorithm - * of AVB queues, so reject the offload when any queue is - * configured as AVB. - */ - for (i = 0; i < pdata->tx_queues_to_use; i++) { - if (pdata->tx_queues_cfg[i].mode_to_use == MTL_QUEUE_AVB) { - NL_SET_ERR_MSG_MOD(mqprio->extack, - "SP conflicts with AVB queues"); - return -EOPNOTSUPP; - } - } - for (i = 0; i < qopt->num_tc; i++) { /* The offload switches the MTL scheduler to strict * priority, which only supports a 1:1 TC to TX queue
--- base-commit: d0bd617658ddfa5a115e64d1ab687bf155f6331f change-id: 20261012-stmmac-mqprio-cbs-combo-341f12749ce2 Best regards, -- Lorenzo Bianconi [off-list ref]