mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-10 15:13:44 -04:00
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>
This commit is contained in:
committed by
Jakub Kicinski
parent
86afd5a0e7
commit
7b4149bdee
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user