Patch "net: dsa: tag_rtl4_a: Fix egress tags" has been added to the 5.10-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    net: dsa: tag_rtl4_a: Fix egress tags

to the 5.10-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     net-dsa-tag_rtl4_a-fix-egress-tags.patch
and it can be found in the queue-5.10 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 2f839a4ca35f7d6c1697f5cb4003bdf469975476
Author: Linus Walleij <linus.walleij@xxxxxxxxxx>
Date:   Tue Aug 31 20:50:50 2021 +0200

    net: dsa: tag_rtl4_a: Fix egress tags
    
    [ Upstream commit 0e90dfa7a8d817db755c7b5d89d77b9c485e4180 ]
    
    I noticed that only port 0 worked on the RTL8366RB since we
    started to use custom tags.
    
    It turns out that the format of egress custom tags is actually
    different from ingress custom tags. While the lower bits just
    contain the port number in ingress tags, egress tags need to
    indicate destination port by setting the bit for the
    corresponding port.
    
    It was working on port 0 because port 0 added 0x00 as port
    number in the lower bits, and if you do this the packet appears
    at all ports, including the intended port. Ooops.
    
    Fix this and all ports work again. Use the define for shifting
    the "type A" into place while we're at it.
    
    Tested on the D-Link DIR-685 by sending traffic to each of
    the ports in turn. It works.
    
    Fixes: 86dd9868b878 ("net: dsa: tag_rtl4_a: Support also egress tags")
    Cc: DENG Qingfang <dqfext@xxxxxxxxx>
    Cc: Mauri Sandberg <sandberg@xxxxxxxxxxxxx>
    Signed-off-by: Linus Walleij <linus.walleij@xxxxxxxxxx>
    Reviewed-by: Florian Fainelli <f.fainelli@xxxxxxxxx>
    Signed-off-by: David S. Miller <davem@xxxxxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/net/dsa/tag_rtl4_a.c b/net/dsa/tag_rtl4_a.c
index e9176475bac8..24375ebd684e 100644
--- a/net/dsa/tag_rtl4_a.c
+++ b/net/dsa/tag_rtl4_a.c
@@ -54,9 +54,10 @@ static struct sk_buff *rtl4a_tag_xmit(struct sk_buff *skb,
 	p = (__be16 *)tag;
 	*p = htons(RTL4_A_ETHERTYPE);
 
-	out = (RTL4_A_PROTOCOL_RTL8366RB << 12) | (2 << 8);
-	/* The lower bits is the port number */
-	out |= (u8)dp->index;
+	out = (RTL4_A_PROTOCOL_RTL8366RB << RTL4_A_PROTOCOL_SHIFT) | (2 << 8);
+	/* The lower bits indicate the port number */
+	out |= BIT(dp->index);
+
 	p = (__be16 *)(tag + 2);
 	*p = htons(out);
 



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux