diff options
author | Tobias Waldekranz <tobias@waldekranz.com> | 2022-02-03 11:16:54 +0100 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2022-02-03 14:05:56 +0000 |
commit | bb03b280e0c307c1da48ff9c6751d121bd566cd3 (patch) | |
tree | 7d552ae03e363e7049adf1567351e79870575363 /drivers/net/dsa/mv88e6xxx/global1_vtu.c | |
parent | net: dsa: mv88e6xxx: Improve isolation of standalone ports (diff) | |
download | linux-dev-bb03b280e0c307c1da48ff9c6751d121bd566cd3.tar.xz linux-dev-bb03b280e0c307c1da48ff9c6751d121bd566cd3.zip |
net: dsa: mv88e6xxx: Support policy entries in the VTU
A VTU entry with policy enabled is used in combination with a port's
VTU policy setting to override normal switching behavior for frames
assigned to the entry's VID.
A typical example is to Treat all frames in a particular VLAN as
control traffic, and trap them to the CPU. In which case the relevant
user port's VTU policy would be set to TRAP.
Signed-off-by: Tobias Waldekranz <tobias@waldekranz.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/dsa/mv88e6xxx/global1_vtu.c')
-rw-r--r-- | drivers/net/dsa/mv88e6xxx/global1_vtu.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/net/dsa/mv88e6xxx/global1_vtu.c b/drivers/net/dsa/mv88e6xxx/global1_vtu.c index ae12c981923e..b1bd9274a562 100644 --- a/drivers/net/dsa/mv88e6xxx/global1_vtu.c +++ b/drivers/net/dsa/mv88e6xxx/global1_vtu.c @@ -27,7 +27,7 @@ static int mv88e6xxx_g1_vtu_fid_read(struct mv88e6xxx_chip *chip, return err; entry->fid = val & MV88E6352_G1_VTU_FID_MASK; - + entry->policy = !!(val & MV88E6352_G1_VTU_FID_VID_POLICY); return 0; } @@ -36,6 +36,9 @@ static int mv88e6xxx_g1_vtu_fid_write(struct mv88e6xxx_chip *chip, { u16 val = entry->fid & MV88E6352_G1_VTU_FID_MASK; + if (entry->policy) + val |= MV88E6352_G1_VTU_FID_VID_POLICY; + return mv88e6xxx_g1_write(chip, MV88E6352_G1_VTU_FID, val); } |