* [PATCH net] net: dsa: tag_8021q: fix the VLAN IDs used for encoding sub-VLANs
@ 2021-05-31 10:20 Vladimir Oltean
2021-06-01 22:10 ` patchwork-bot+netdevbpf
0 siblings, 1 reply; 2+ messages in thread
From: Vladimir Oltean @ 2021-05-31 10:20 UTC (permalink / raw)
To: Jakub Kicinski, David S. Miller, netdev
Cc: Florian Fainelli, Andrew Lunn, Vivien Didelot, Vladimir Oltean
From: Vladimir Oltean <vladimir.oltean@nxp.com>
When using sub-VLANs in the range of 1-7, the resulting value from:
rx_vid = dsa_8021q_rx_vid_subvlan(ds, port, subvlan);
is wrong according to the description from tag_8021q.c:
| 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
+-----------+-----+-----------------+-----------+-----------------------+
| DIR | SVL | SWITCH_ID | SUBVLAN | PORT |
+-----------+-----+-----------------+-----------+-----------------------+
For example, when ds->index == 0, port == 3 and subvlan == 1,
dsa_8021q_rx_vid_subvlan() returns 1027, same as it returns for
subvlan == 0, but it should have returned 1043.
This is because the low portion of the subvlan bits are not masked
properly when writing into the 12-bit VLAN value. They are masked into
bits 4:3, but they should be masked into bits 5:4.
Fixes: 3eaae1d05f2b ("net: dsa: tag_8021q: support up to 8 VLANs per port using sub-VLANs")
Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
---
net/dsa/tag_8021q.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/net/dsa/tag_8021q.c b/net/dsa/tag_8021q.c
index 008c1ec6e20c..122ad5833fb1 100644
--- a/net/dsa/tag_8021q.c
+++ b/net/dsa/tag_8021q.c
@@ -64,7 +64,7 @@
#define DSA_8021Q_SUBVLAN_HI_SHIFT 9
#define DSA_8021Q_SUBVLAN_HI_MASK GENMASK(9, 9)
#define DSA_8021Q_SUBVLAN_LO_SHIFT 4
-#define DSA_8021Q_SUBVLAN_LO_MASK GENMASK(4, 3)
+#define DSA_8021Q_SUBVLAN_LO_MASK GENMASK(5, 4)
#define DSA_8021Q_SUBVLAN_HI(x) (((x) & GENMASK(2, 2)) >> 2)
#define DSA_8021Q_SUBVLAN_LO(x) ((x) & GENMASK(1, 0))
#define DSA_8021Q_SUBVLAN(x) \
--
2.25.1
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH net] net: dsa: tag_8021q: fix the VLAN IDs used for encoding sub-VLANs
2021-05-31 10:20 [PATCH net] net: dsa: tag_8021q: fix the VLAN IDs used for encoding sub-VLANs Vladimir Oltean
@ 2021-06-01 22:10 ` patchwork-bot+netdevbpf
0 siblings, 0 replies; 2+ messages in thread
From: patchwork-bot+netdevbpf @ 2021-06-01 22:10 UTC (permalink / raw)
To: Vladimir Oltean
Cc: kuba, davem, netdev, f.fainelli, andrew, vivien.didelot, vladimir.oltean
Hello:
This patch was applied to netdev/net.git (refs/heads/master):
On Mon, 31 May 2021 13:20:45 +0300 you wrote:
> From: Vladimir Oltean <vladimir.oltean@nxp.com>
>
> When using sub-VLANs in the range of 1-7, the resulting value from:
>
> rx_vid = dsa_8021q_rx_vid_subvlan(ds, port, subvlan);
>
> is wrong according to the description from tag_8021q.c:
>
> [...]
Here is the summary with links:
- [net] net: dsa: tag_8021q: fix the VLAN IDs used for encoding sub-VLANs
https://git.kernel.org/netdev/net/c/4ef8d857b5f4
You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2021-06-01 22:10 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-05-31 10:20 [PATCH net] net: dsa: tag_8021q: fix the VLAN IDs used for encoding sub-VLANs Vladimir Oltean
2021-06-01 22:10 ` patchwork-bot+netdevbpf
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.