Commit 0c94d657 authored by Horatiu Vultur's avatar Horatiu Vultur Committed by David S. Miller

net: lan966x: Fix the vlan used by host ports

The blamed commit changed the vlan used by the host ports to be 4095
instead of 0.
Because of this change the following issues are seen:
- when the port is probed first it was adding an entry in the MAC table
  with the wrong vlan (port->pvid which is default 0) and not HOST_PVID
- when the port is removed from a bridge, it was using the wrong vlan to
  add entries in the MAC table. It was using the old PVID and not the
  HOST_PVID

This patch fixes this two issues by using the HOST_PVID instead of
port->pvid.

Fixes: 6d2c186a ("net: lan966x: Add vlan support.")
Signed-off-by: default avatarHoratiu Vultur <horatiu.vultur@microchip.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 099eac91
...@@ -322,7 +322,7 @@ static int lan966x_mc_unsync(struct net_device *dev, const unsigned char *addr) ...@@ -322,7 +322,7 @@ static int lan966x_mc_unsync(struct net_device *dev, const unsigned char *addr)
struct lan966x_port *port = netdev_priv(dev); struct lan966x_port *port = netdev_priv(dev);
struct lan966x *lan966x = port->lan966x; struct lan966x *lan966x = port->lan966x;
return lan966x_mac_forget(lan966x, addr, port->pvid, ENTRYTYPE_LOCKED); return lan966x_mac_forget(lan966x, addr, HOST_PVID, ENTRYTYPE_LOCKED);
} }
static int lan966x_mc_sync(struct net_device *dev, const unsigned char *addr) static int lan966x_mc_sync(struct net_device *dev, const unsigned char *addr)
...@@ -330,7 +330,7 @@ static int lan966x_mc_sync(struct net_device *dev, const unsigned char *addr) ...@@ -330,7 +330,7 @@ static int lan966x_mc_sync(struct net_device *dev, const unsigned char *addr)
struct lan966x_port *port = netdev_priv(dev); struct lan966x_port *port = netdev_priv(dev);
struct lan966x *lan966x = port->lan966x; struct lan966x *lan966x = port->lan966x;
return lan966x_mac_cpu_learn(lan966x, addr, port->pvid); return lan966x_mac_cpu_learn(lan966x, addr, HOST_PVID);
} }
static void lan966x_port_set_rx_mode(struct net_device *dev) static void lan966x_port_set_rx_mode(struct net_device *dev)
...@@ -594,7 +594,7 @@ static int lan966x_probe_port(struct lan966x *lan966x, u32 p, ...@@ -594,7 +594,7 @@ static int lan966x_probe_port(struct lan966x *lan966x, u32 p,
eth_hw_addr_gen(dev, lan966x->base_mac, p + 1); eth_hw_addr_gen(dev, lan966x->base_mac, p + 1);
lan966x_mac_learn(lan966x, PGID_CPU, dev->dev_addr, port->pvid, lan966x_mac_learn(lan966x, PGID_CPU, dev->dev_addr, HOST_PVID,
ENTRYTYPE_LOCKED); ENTRYTYPE_LOCKED);
port->phylink_config.dev = &port->dev->dev; port->phylink_config.dev = &port->dev->dev;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment