]> www.infradead.org Git - users/hch/misc.git/commitdiff
net: airoha: Fix channel configuration for ETS Qdisc
authorLorenzo Bianconi <lorenzo@kernel.org>
Tue, 7 Jan 2025 22:26:28 +0000 (23:26 +0100)
committerJakub Kicinski <kuba@kernel.org>
Sat, 11 Jan 2025 21:09:10 +0000 (13:09 -0800)
Limit ETS QoS channel to AIROHA_NUM_QOS_CHANNELS in
airoha_tc_setup_qdisc_ets() in order to align the configured channel to
the value set in airoha_dev_select_queue().

Fixes: 20bf7d07c956 ("net: airoha: Add sched ETS offload support")
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Reviewed-by: Michal Swiatkowski <michal.swiatkowski@linux.intel.com>
Link: https://patch.msgid.link/20250107-airoha-ets-fix-chan-v1-1-97f66ed3a068@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/mediatek/airoha_eth.c

index b9f1c42f0a40ca268506b4595dfa1902a15be26c..a30c417d66f2f9b0958fe1dd3829fb9ac530a34c 100644 (file)
@@ -2840,11 +2840,14 @@ static int airoha_qdma_get_tx_ets_stats(struct airoha_gdm_port *port,
 static int airoha_tc_setup_qdisc_ets(struct airoha_gdm_port *port,
                                     struct tc_ets_qopt_offload *opt)
 {
-       int channel = TC_H_MAJ(opt->handle) >> 16;
+       int channel;
 
        if (opt->parent == TC_H_ROOT)
                return -EINVAL;
 
+       channel = TC_H_MAJ(opt->handle) >> 16;
+       channel = channel % AIROHA_NUM_QOS_CHANNELS;
+
        switch (opt->command) {
        case TC_ETS_REPLACE:
                return airoha_qdma_set_tx_ets_sched(port, channel, opt);