net: dsa: tag_sja1105: absorb logic for not overwriting precise info into dsa_8021q_rcv()
authorVladimir Oltean <vladimir.oltean@nxp.com>
Sat, 13 Jul 2024 21:16:09 +0000 (23:16 +0200)
committerJakub Kicinski <kuba@kernel.org>
Mon, 15 Jul 2024 13:55:15 +0000 (06:55 -0700)
commitdcfe7673787b4bfea2c213df443d312aa754757b
tree455228bffe177fa8af23240f1f4d554dc8956155
parent6b783ded364ad037dd526c0be5860f58a51ca084
net: dsa: tag_sja1105: absorb logic for not overwriting precise info into dsa_8021q_rcv()

In both sja1105_rcv() and sja1110_rcv(), we may have precise source port
information coming from parallel hardware mechanisms, in addition to the
tag_8021q header.

Only sja1105_rcv() has extra logic to not overwrite that precise info
with what's present in the VLAN tag. This is because sja1110_rcv() gets
by, by having a reversed set of checks when assigning skb->dev. When the
source port is imprecise (vbid >=1), source_port and switch_id will be
set to zeroes by dsa_8021q_rcv(), which might be problematic. But by
checking for vbid >= 1 first, sja1110_rcv() fends that off.

We would like to make more code common between sja1105_rcv() and
sja1110_rcv(), and for that, we need to make sure that sja1110_rcv()
also goes through the precise source port preservation logic.

Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Signed-off-by: Pawel Dembicki <paweldembicki@gmail.com>
Reviewed-by: Vladimir Oltean <olteanv@gmail.com>
Tested-by: Vladimir Oltean <olteanv@gmail.com>
Link: https://patch.msgid.link/20240713211620.1125910-4-paweldembicki@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/dsa/tag_8021q.c
net/dsa/tag_sja1105.c