net: dsa: tag_brcm: Set output queue from skb queue mapping
authorFlorian Fainelli <f.fainelli@gmail.com>
Mon, 4 Sep 2017 03:27:01 +0000 (20:27 -0700)
committerDavid S. Miller <davem@davemloft.net>
Tue, 5 Sep 2017 18:53:34 +0000 (11:53 -0700)
We originally used skb->priority but that was not quite correct as this
bitfield needs to contain the egress switch queue we intend to send this
SKB to.

Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/dsa/tag_brcm.c

index de74c3f778182f91ea29a065d207a2ad22bf5c06..dbb016434ace8e3952d707c57f41b9e9eab48dd3 100644 (file)
@@ -62,6 +62,7 @@
 static struct sk_buff *brcm_tag_xmit(struct sk_buff *skb, struct net_device *dev)
 {
        struct dsa_slave_priv *p = netdev_priv(dev);
+       u16 queue = skb_get_queue_mapping(skb);
        u8 *brcm_tag;
 
        if (skb_cow_head(skb, BRCM_TAG_LEN) < 0)
@@ -78,7 +79,7 @@ static struct sk_buff *brcm_tag_xmit(struct sk_buff *skb, struct net_device *dev
         * deprecated
         */
        brcm_tag[0] = (1 << BRCM_OPCODE_SHIFT) |
-                       ((skb->priority << BRCM_IG_TC_SHIFT) & BRCM_IG_TC_MASK);
+                      ((queue & BRCM_IG_TC_MASK) << BRCM_IG_TC_SHIFT);
        brcm_tag[1] = 0;
        brcm_tag[2] = 0;
        if (p->dp->index == 8)