diff options
author | Martin Blumenstingl <martin.blumenstingl@googlemail.com> | 2022-05-19 00:00:50 +0200 |
---|---|---|
committer | Jakub Kicinski <kuba@kernel.org> | 2022-05-19 18:40:45 -0700 |
commit | 7b4149bdee6a6363cb4eca3599296d41a7b3700d (patch) | |
tree | 504e1d12f9540d0d8f92af5cd3dd8dcab0157163 | |
parent | 86afd5a0e78eb9b84b158b33d85f711c5f748fd1 (diff) | |
download | linux-7b4149bdee6a6363cb4eca3599296d41a7b3700d.tar.bz2 |
net: dsa: lantiq_gswip: Fix start index in gswip_port_fdb()
The first N entries in priv->vlans are reserved for managing ports which
are not part of a bridge. Use priv->hw_info->max_ports to consistently
access per-bridge entries at index 7. Starting at
priv->hw_info->cpu_port (6) is harmless in this case because
priv->vlan[6].bridge is always NULL so the comparison result is always
false (which results in this entry being skipped).
Acked-by: Hauke Mehrtens <hauke@hauke-m.de>
Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
Reviewed-by: Vladimir Oltean <olteanv@gmail.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
-rw-r--r-- | drivers/net/dsa/lantiq_gswip.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/net/dsa/lantiq_gswip.c b/drivers/net/dsa/lantiq_gswip.c index 12c15da55664..0c313db23451 100644 --- a/drivers/net/dsa/lantiq_gswip.c +++ b/drivers/net/dsa/lantiq_gswip.c @@ -1360,7 +1360,7 @@ static int gswip_port_fdb(struct dsa_switch *ds, int port, struct net_device *bridge = dsa_port_bridge_dev_get(dsa_to_port(ds, port)); struct gswip_priv *priv = ds->priv; struct gswip_pce_table_entry mac_bridge = {0,}; - unsigned int cpu_port = priv->hw_info->cpu_port; + unsigned int max_ports = priv->hw_info->max_ports; int fid = -1; int i; int err; @@ -1368,7 +1368,7 @@ static int gswip_port_fdb(struct dsa_switch *ds, int port, if (!bridge) return -EINVAL; - for (i = cpu_port; i < ARRAY_SIZE(priv->vlans); i++) { + for (i = max_ports; i < ARRAY_SIZE(priv->vlans); i++) { if (priv->vlans[i].bridge == bridge) { fid = priv->vlans[i].fid; break; |