diff options
author | Robert Hodaszi <robert.hodaszi@digi.com> | 2024-12-11 15:47:41 +0100 |
---|---|---|
committer | Jakub Kicinski <kuba@kernel.org> | 2024-12-12 16:10:27 +0100 |
commit | 36ff681d2283410742489ce77e7b01419eccf58c (patch) | |
tree | 2cef3cb5ae520536f292880208072c484c354476 /net | |
parent | net: dsa: microchip: KSZ9896 register regmap alignment to 32 bit boundaries (diff) | |
download | linux-36ff681d2283410742489ce77e7b01419eccf58c.tar.xz linux-36ff681d2283410742489ce77e7b01419eccf58c.zip |
net: dsa: tag_ocelot_8021q: fix broken reception
The blamed commit changed the dsa_8021q_rcv() calling convention to
accept pre-populated source_port and switch_id arguments. If those are
not available, as in the case of tag_ocelot_8021q, the arguments must be
pre-initialized with -1.
Due to the bug of passing uninitialized arguments in tag_ocelot_8021q,
dsa_8021q_rcv() does not detect that it needs to populate the
source_port and switch_id, and this makes dsa_conduit_find_user() fail,
which leads to packet loss on reception.
Fixes: dcfe7673787b ("net: dsa: tag_sja1105: absorb logic for not overwriting precise info into dsa_8021q_rcv()")
Signed-off-by: Robert Hodaszi <robert.hodaszi@digi.com>
Reviewed-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Link: https://patch.msgid.link/20241211144741.1415758-1-robert.hodaszi@digi.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'net')
-rw-r--r-- | net/dsa/tag_ocelot_8021q.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/net/dsa/tag_ocelot_8021q.c b/net/dsa/tag_ocelot_8021q.c index 8e8b1bef6af6..11ea8cfd6266 100644 --- a/net/dsa/tag_ocelot_8021q.c +++ b/net/dsa/tag_ocelot_8021q.c @@ -79,7 +79,7 @@ static struct sk_buff *ocelot_xmit(struct sk_buff *skb, static struct sk_buff *ocelot_rcv(struct sk_buff *skb, struct net_device *netdev) { - int src_port, switch_id; + int src_port = -1, switch_id = -1; dsa_8021q_rcv(skb, &src_port, &switch_id, NULL, NULL); |