From: Vivien Didelot > Sent: 13 October 2017 19:18 > As for mv88e6xxx, setup the switch from within the mv88e6060 driver with > a random MAC address, and remove the .set_addr implementation. > > Signed-off-by: Vivien Didelot <vivien.dide...@savoirfairelinux.com> > --- > drivers/net/dsa/mv88e6060.c | 43 ++++++++++++++++++++++++++----------------- > 1 file changed, 26 insertions(+), 17 deletions(-) > > diff --git a/drivers/net/dsa/mv88e6060.c b/drivers/net/dsa/mv88e6060.c > index d64be2b83d3c..6173be889d95 100644 > --- a/drivers/net/dsa/mv88e6060.c > +++ b/drivers/net/dsa/mv88e6060.c > @@ -9,6 +9,7 @@ > */ > > #include <linux/delay.h> > +#include <linux/etherdevice.h> > #include <linux/jiffies.h> > #include <linux/list.h> > #include <linux/module.h> > @@ -188,6 +189,27 @@ static int mv88e6060_setup_port(struct dsa_switch *ds, > int p) > return 0; > } > > +static int mv88e6060_setup_addr(struct dsa_switch *ds) > +{ > + u8 addr[ETH_ALEN]; > + u16 val; > + > + eth_random_addr(addr); > + > + val = addr[0] << 8 | addr[1]; > + > + /* The multicast bit is always transmitted as a zero, so the switch uses > + * bit 8 for "DiffAddr", where 0 means all ports transmit the same SA. > + */ > + val &= 0xfeff;
The comment is probably ok, but the mask isn't needed. eth_randmon_addr() won't return and address with the multicast bit set. David