]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
net: airoha: configure QoS channel for HW accelerated flowtable traffic
authorLorenzo Bianconi <lorenzo@kernel.org>
Thu, 30 Apr 2026 08:47:38 +0000 (10:47 +0200)
committerJakub Kicinski <kuba@kernel.org>
Sat, 2 May 2026 00:52:12 +0000 (17:52 -0700)
As done for the SW path, configure the QoS channel for HW accelerated
traffic according to the user port index when forwarding to a DSA port,
or rely on the GDM port identifier otherwise. This allows HTB shaping
to be applied to HW accelerated traffic.

Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Link: https://patch.msgid.link/20260430-airoha-ppe-qos-channel-v1-1-5ef9221e85c1@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/airoha/airoha_ppe.c

index 5c9dff6bccd1e3a62e18c840d80ee864fded23f9..e833c50ac35fead537d6af1a38b8a340ebecd79f 100644 (file)
@@ -334,7 +334,7 @@ static int airoha_ppe_foe_entry_prepare(struct airoha_eth *eth,
                                                info.wcid);
                } else {
                        struct airoha_gdm_port *port = netdev_priv(dev);
-                       u8 pse_port;
+                       u8 pse_port, channel;
 
                        if (!airoha_is_valid_gdm_port(eth, port))
                                return -EINVAL;
@@ -347,6 +347,14 @@ static int airoha_ppe_foe_entry_prepare(struct airoha_eth *eth,
                                               * loopback
                                               */
 
+                       /* For traffic forwarded to DSA devices select QoS
+                        * channel according to the DSA user port index, rely
+                        * on port id otherwise.
+                        */
+                       channel = dsa_port >= 0 ? dsa_port : port->id;
+                       channel = channel % AIROHA_NUM_QOS_CHANNELS;
+                       qdata |= FIELD_PREP(AIROHA_FOE_CHANNEL, channel);
+
                        val |= FIELD_PREP(AIROHA_FOE_IB2_PSE_PORT, pse_port) |
                               AIROHA_FOE_IB2_PSE_QOS;
                        /* For downlink traffic consume SRAM memory for hw