net: dsa: tag_sja1105: prefer precise source port info on SJA1110 too
authorVladimir Oltean <vladimir.oltean@nxp.com>
Sat, 13 Jul 2024 21:16:11 +0000 (23:16 +0200)
committerJakub Kicinski <kuba@kernel.org>
Mon, 15 Jul 2024 13:55:15 +0000 (06:55 -0700)
Now that dsa_8021q_rcv() handles better the case where we don't
overwrite the precise source information if it comes from an external
(non-tag_8021q) source, we can now unify the call sequence between
sja1105_rcv() and sja1110_rcv().

This is a preparatory change for creating a higher-level wrapper for the
entire sequence which will live in tag_8021q.

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

index 7639ccb94d3591ebca0ecf83c17d841d05a7613c..35a6346549f231a1f37d0fe9bc0e140bf6de5728 100644 (file)
@@ -652,12 +652,12 @@ static struct sk_buff *sja1110_rcv(struct sk_buff *skb,
        if (likely(sja1105_skb_has_tag_8021q(skb)))
                dsa_8021q_rcv(skb, &source_port, &switch_id, &vbid, &vid);
 
-       if (vbid >= 1)
+       if (source_port != -1 && switch_id != -1)
+               skb->dev = dsa_conduit_find_user(netdev, switch_id, source_port);
+       else if (vbid >= 1)
                skb->dev = dsa_tag_8021q_find_port_by_vbid(netdev, vbid);
-       else if (source_port == -1 || switch_id == -1)
-               skb->dev = dsa_find_designated_bridge_port_by_vid(netdev, vid);
        else
-               skb->dev = dsa_conduit_find_user(netdev, switch_id, source_port);
+               skb->dev = dsa_find_designated_bridge_port_by_vid(netdev, vid);
        if (!skb->dev) {
                netdev_warn(netdev, "Couldn't decode source port\n");
                return NULL;