]> git.baikalelectronics.ru Git - kernel.git/commit
net: dsa: tag_rtl4_a: Fix egress tags
authorLinus Walleij <linus.walleij@linaro.org>
Tue, 31 Aug 2021 18:50:50 +0000 (20:50 +0200)
committerDavid S. Miller <davem@davemloft.net>
Wed, 1 Sep 2021 10:48:05 +0000 (11:48 +0100)
commit5828c853a75700ddfaa2dc8cf5a6558a4080c8fd
treeea6eafc222caa766e8bedd1b932c55896cd1f1f0
parente183b467f02ecbc62f54598adb312c2dcc00d4c0
net: dsa: tag_rtl4_a: Fix egress tags

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: 0ecbc7c31896 ("net: dsa: tag_rtl4_a: Support also egress tags")
Cc: DENG Qingfang <dqfext@gmail.com>
Cc: Mauri Sandberg <sandberg@mailfence.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/dsa/tag_rtl4_a.c