]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
net: dsa: tag_yt921x: add priority support
authorDavid Yang <mmyangfl@gmail.com>
Sat, 31 Jan 2026 02:18:48 +0000 (10:18 +0800)
committerPaolo Abeni <pabeni@redhat.com>
Tue, 3 Feb 2026 14:09:31 +0000 (15:09 +0100)
Required by DCB/QoS support of the switch driver, since the rx packets
will have non-zero priorities.

Signed-off-by: David Yang <mmyangfl@gmail.com>
Link: https://patch.msgid.link/20260131021854.3405036-3-mmyangfl@gmail.com
Reviewed-by: Vladimir Oltean <olteanv@gmail.com>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
net/dsa/tag_yt921x.c

index 098863d491ff7ec6de59c7ea2d7e80c5b74f25b8..aefef8c770e39ed7ea1a0ef5467ed1d39eea9c6c 100644 (file)
@@ -69,7 +69,9 @@ yt921x_tag_xmit(struct sk_buff *skb, struct net_device *netdev)
        tag[0] = htons(ETH_P_YT921X);
        /* VLAN tag unrelated when TX */
        tag[1] = 0;
-       tag[2] = 0;
+       ctrl = YT921X_TAG_CODE(YT921X_TAG_CODE_FORWARD) | YT921X_TAG_CODE_EN |
+              YT921X_TAG_PRIO(skb->priority);
+       tag[2] = htons(ctrl);
        ctrl = YT921X_TAG_TX_PORTS(dsa_xmit_port_mask(skb, netdev)) |
               YT921X_TAG_PORT_EN;
        tag[3] = htons(ctrl);
@@ -112,6 +114,8 @@ yt921x_tag_rcv(struct sk_buff *skb, struct net_device *netdev)
                return NULL;
        }
 
+       skb->priority = FIELD_GET(YT921X_TAG_PRIO_M, rx);
+
        if (!(rx & YT921X_TAG_CODE_EN)) {
                dev_warn_ratelimited(&netdev->dev,
                                     "Tag code not enabled in rx packet\n");