diff options
| -rw-r--r-- | drivers/net/dsa/b53/b53_common.c | 8 | 
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/net/dsa/b53/b53_common.c b/drivers/net/dsa/b53/b53_common.c index 62866165ad03..9d4fb54b4ced 100644 --- a/drivers/net/dsa/b53/b53_common.c +++ b/drivers/net/dsa/b53/b53_common.c @@ -1135,6 +1135,11 @@ static int b53_setup(struct dsa_switch *ds)  	 */  	ds->untag_bridge_pvid = dev->tag_protocol == DSA_TAG_PROTO_NONE; +	/* The switch does not tell us the original VLAN for untagged +	 * packets, so keep the CPU port always tagged. +	 */ +	ds->untag_vlan_aware_bridge_pvid = true; +  	ret = b53_reset_switch(dev);  	if (ret) {  		dev_err(ds->dev, "failed to reset switch\n"); @@ -1545,6 +1550,9 @@ int b53_vlan_add(struct dsa_switch *ds, int port,  	if (vlan->vid == 0 && vlan->vid == b53_default_pvid(dev))  		untagged = true; +	if (vlan->vid > 0 && dsa_is_cpu_port(ds, port)) +		untagged = false; +  	vl->members |= BIT(port);  	if (untagged && !b53_vlan_port_needs_forced_tagged(ds, port))  		vl->untag |= BIT(port);  | 
