summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOleksij Rempel <o.rempel@pengutronix.de>2022-11-08 07:10:05 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2022-11-08 11:12:49 +0100
commit062717c8ce04ec2fe0678b29e4b73ec97029d024 (patch)
treee9a21c33bbb9970f99199d543d528e571b127522
parent32f68233fe4bba7616af6cb61d3e121dfac50d0c (diff)
downloadbarebox-062717c8ce04ec2fe0678b29e4b73ec97029d024.tar.gz
barebox-062717c8ce04ec2fe0678b29e4b73ec97029d024.tar.xz
net: dsa: enable promiscuous mode for switch master edev
Typical use case for DSA framework on barebox is a port multiplexer. This means, we mostly have different MAC addresses on each port. To make this work, we need to enable promiscuous mode on the master Ethernet controller. With this patch, promiscuous mode will be enabled automatically, as soon as at least one switch port is enabled and this mode will be disabled after all switch ports are disabled as well. Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de> Link: https://lore.barebox.org/20221108061009.4168735-4-o.rempel@pengutronix.de Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
-rw-r--r--drivers/net/dsa.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/net/dsa.c b/drivers/net/dsa.c
index 040ba897e2..124059ee3c 100644
--- a/drivers/net/dsa.c
+++ b/drivers/net/dsa.c
@@ -129,6 +129,11 @@ static int dsa_port_start(struct eth_device *edev)
return ret;
}
+ ret = eth_set_promisc(ds->edev_master, true);
+ if (ret)
+ dev_warn(ds->dev, "Failed to set promisc mode. Using different eth addresses may not work. %pe\n",
+ ERR_PTR(ret));
+
eth_open(ds->edev_master);
}
@@ -160,6 +165,7 @@ static void dsa_port_stop(struct eth_device *edev)
ops->port_disable(dpc, ds->cpu_port,
ds->cpu_port_fixed_phy);
+ eth_set_promisc(ds->edev_master, false);
eth_close(ds->edev_master);
}
}