[PATCH net-next 02/11] net: ethernet: qualcomm: ppe: Fix multicast queue config table index

From: Luo Jie

Date: Thu Oct 08 2026 - 10:53:51 EST


PPE queues 0-255 are unicast queues and queues from 256 onwards are
multicast queues. The multicast queue configuration table has its own
index, starting from 0 for the first multicast queue.

The driver uses the absolute queue ID as the index of this table, which
is out of range for every multicast queue. As a result, the multicast
queue thresholds are never configured, and unrelated QM registers are
written instead.

Fix it by converting the queue ID to the index of the multicast queue
configuration table.

Fixes: 806268dc7efd ("net: ethernet: qualcomm: Initialize PPE queue management for IPQ9574")
Signed-off-by: Luo Jie <jie.luo@xxxxxxxxxxxxxxxx>
---
drivers/net/ethernet/qualcomm/ppe/ppe_config.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/qualcomm/ppe/ppe_config.c b/drivers/net/ethernet/qualcomm/ppe/ppe_config.c
index 125b73be92b1..8a553902ffad 100644
--- a/drivers/net/ethernet/qualcomm/ppe/ppe_config.c
+++ b/drivers/net/ethernet/qualcomm/ppe/ppe_config.c
@@ -1530,8 +1530,13 @@ static int ppe_config_qm(struct ppe_device *ppe_dev)
if (ret)
goto qm_config_fail;
} else {
+ /* The multicast queue table is indexed from 0 for
+ * the first multicast queue, which follows the
+ * unicast queues.
+ */
reg = PPE_AC_MULTICAST_QUEUE_CFG_TBL_ADDR +
- PPE_AC_MULTICAST_QUEUE_CFG_TBL_INC * queue_id;
+ PPE_AC_MULTICAST_QUEUE_CFG_TBL_INC *
+ (queue_id - PPE_AC_UNICAST_QUEUE_CFG_TBL_ENTRIES);

ret = regmap_bulk_read(ppe_dev->regmap, reg,
multicast_queue_cfg,

--
2.43.0