]> Gentwo Git Trees - linux/.git/commitdiff
net: dsa: tag_brcm: use the dsa_xmit_port_mask() helper
authorVladimir Oltean <vladimir.oltean@nxp.com>
Thu, 27 Nov 2025 12:08:49 +0000 (14:08 +0200)
committerJakub Kicinski <kuba@kernel.org>
Sat, 29 Nov 2025 04:03:39 +0000 (20:03 -0800)
The "brcm" and "brcm-prepend" tagging protocols populate a bit mask for
the TX ports, so we can use dsa_xmit_port_mask() to centralize the
decision of how to set that field. The port mask is written u8 by u8,
first the high octet and then the low octet.

Cc: Florian Fainelli <florian.fainelli@broadcom.com>
Cc: Jonas Gorski <jonas.gorski@gmail.com>
Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Link: https://patch.msgid.link/20251127120902.292555-3-vladimir.oltean@nxp.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/dsa/tag_brcm.c

index eadb358179ce331d513d97340a74411e676145cf..cf94204390543f1584bab3b5f0fd60c858402303 100644 (file)
@@ -92,6 +92,7 @@ static struct sk_buff *brcm_tag_xmit_ll(struct sk_buff *skb,
 {
        struct dsa_port *dp = dsa_user_to_port(dev);
        u16 queue = skb_get_queue_mapping(skb);
+       u16 port_mask;
        u8 *brcm_tag;
 
        /* The Ethernet switch we are interfaced with needs packets to be at
@@ -119,10 +120,9 @@ static struct sk_buff *brcm_tag_xmit_ll(struct sk_buff *skb,
        brcm_tag[0] = (1 << BRCM_OPCODE_SHIFT) |
                       ((queue & BRCM_IG_TC_MASK) << BRCM_IG_TC_SHIFT);
        brcm_tag[1] = 0;
-       brcm_tag[2] = 0;
-       if (dp->index == 8)
-               brcm_tag[2] = BRCM_IG_DSTMAP2_MASK;
-       brcm_tag[3] = (1 << dp->index) & BRCM_IG_DSTMAP1_MASK;
+       port_mask = dsa_xmit_port_mask(skb, dev);
+       brcm_tag[2] = (port_mask >> 8) & BRCM_IG_DSTMAP2_MASK;
+       brcm_tag[3] = port_mask & BRCM_IG_DSTMAP1_MASK;
 
        /* Now tell the conduit network device about the desired output queue
         * as well