diff options
Diffstat (limited to 'drivers/net/dsa')
| -rw-r--r-- | drivers/net/dsa/Makefile | 1 | ||||
| -rw-r--r-- | drivers/net/dsa/b53/Makefile | 1 | ||||
| -rw-r--r-- | drivers/net/dsa/dsa_loop.h | 1 | ||||
| -rw-r--r-- | drivers/net/dsa/lan9303.h | 1 | ||||
| -rw-r--r-- | drivers/net/dsa/mv88e6060.c | 10 | ||||
| -rw-r--r-- | drivers/net/dsa/mv88e6xxx/Makefile | 1 | ||||
| -rw-r--r-- | drivers/net/dsa/mv88e6xxx/chip.c | 6 | 
7 files changed, 19 insertions, 2 deletions
| diff --git a/drivers/net/dsa/Makefile b/drivers/net/dsa/Makefile index 4a5b5bd297ee..d040aeb45172 100644 --- a/drivers/net/dsa/Makefile +++ b/drivers/net/dsa/Makefile @@ -1,3 +1,4 @@ +# SPDX-License-Identifier: GPL-2.0  obj-$(CONFIG_NET_DSA_BCM_SF2)	+= bcm-sf2.o  bcm-sf2-objs			:= bcm_sf2.o bcm_sf2_cfp.o  obj-$(CONFIG_NET_DSA_LOOP)	+= dsa_loop.o dsa_loop_bdinfo.o diff --git a/drivers/net/dsa/b53/Makefile b/drivers/net/dsa/b53/Makefile index 7e6f9a8bfd75..4256fb42a4dd 100644 --- a/drivers/net/dsa/b53/Makefile +++ b/drivers/net/dsa/b53/Makefile @@ -1,3 +1,4 @@ +# SPDX-License-Identifier: GPL-2.0  obj-$(CONFIG_B53)		+= b53_common.o  obj-$(CONFIG_B53_SPI_DRIVER)	+= b53_spi.o diff --git a/drivers/net/dsa/dsa_loop.h b/drivers/net/dsa/dsa_loop.h index dc396877fc95..93e5c15d0efd 100644 --- a/drivers/net/dsa/dsa_loop.h +++ b/drivers/net/dsa/dsa_loop.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */  #ifndef __DSA_LOOP_H  #define __DSA_LOOP_H diff --git a/drivers/net/dsa/lan9303.h b/drivers/net/dsa/lan9303.h index 4d8be555ff4d..7df2ac77fc8f 100644 --- a/drivers/net/dsa/lan9303.h +++ b/drivers/net/dsa/lan9303.h @@ -1,3 +1,4 @@ +/* SPDX-License-Identifier: GPL-2.0 */  #include <linux/regmap.h>  #include <linux/device.h>  #include <net/dsa.h> diff --git a/drivers/net/dsa/mv88e6060.c b/drivers/net/dsa/mv88e6060.c index dce7fa57eb55..f123ed57630d 100644 --- a/drivers/net/dsa/mv88e6060.c +++ b/drivers/net/dsa/mv88e6060.c @@ -214,8 +214,14 @@ static int mv88e6060_setup(struct dsa_switch *ds)  static int mv88e6060_set_addr(struct dsa_switch *ds, u8 *addr)  { -	/* Use the same MAC Address as FD Pause frames for all ports */ -	REG_WRITE(REG_GLOBAL, GLOBAL_MAC_01, (addr[0] << 9) | addr[1]); +	u16 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; + +	REG_WRITE(REG_GLOBAL, GLOBAL_MAC_01, val);  	REG_WRITE(REG_GLOBAL, GLOBAL_MAC_23, (addr[2] << 8) | addr[3]);  	REG_WRITE(REG_GLOBAL, GLOBAL_MAC_45, (addr[4] << 8) | addr[5]); diff --git a/drivers/net/dsa/mv88e6xxx/Makefile b/drivers/net/dsa/mv88e6xxx/Makefile index 5cd5551461e3..58a4a0014e59 100644 --- a/drivers/net/dsa/mv88e6xxx/Makefile +++ b/drivers/net/dsa/mv88e6xxx/Makefile @@ -1,3 +1,4 @@ +# SPDX-License-Identifier: GPL-2.0  obj-$(CONFIG_NET_DSA_MV88E6XXX) += mv88e6xxx.o  mv88e6xxx-objs := chip.o  mv88e6xxx-objs += global1.o diff --git a/drivers/net/dsa/mv88e6xxx/chip.c b/drivers/net/dsa/mv88e6xxx/chip.c index c6678aa9b4ef..d74c7335c512 100644 --- a/drivers/net/dsa/mv88e6xxx/chip.c +++ b/drivers/net/dsa/mv88e6xxx/chip.c @@ -1100,6 +1100,10 @@ static int mv88e6xxx_port_check_hw_vlan(struct dsa_switch *ds, int port,  	};  	int i, err; +	/* DSA and CPU ports have to be members of multiple vlans */ +	if (dsa_is_dsa_port(ds, port) || dsa_is_cpu_port(ds, port)) +		return 0; +  	if (!vid_begin)  		return -EOPNOTSUPP; @@ -3947,7 +3951,9 @@ static void mv88e6xxx_remove(struct mdio_device *mdiodev)  	if (chip->irq > 0) {  		if (chip->info->g2_irqs > 0)  			mv88e6xxx_g2_irq_free(chip); +		mutex_lock(&chip->reg_lock);  		mv88e6xxx_g1_irq_free(chip); +		mutex_unlock(&chip->reg_lock);  	}  } |