Commit 1ac75864 authored by Vivien Didelot's avatar Vivien Didelot Committed by David S. Miller
Browse files

net: dsa: mv88e6xxx: support the VTU Page bit



Newer chips such as the 88E6390 have a VTU Page bit in the VTU VID
register to specify a 13th bit for the VID. This can be used to support
8K VLANs.

When dumping the whole VTU, all VID bits must be set to one, including
this VTU Page bit. Add support for VID greater than 4095.

Signed-off-by: default avatarVivien Didelot <vivien.didelot@savoirfairelinux.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 567aa59a
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -95,6 +95,10 @@ static int mv88e6xxx_g1_vtu_vid_read(struct mv88e6xxx_chip *chip,
		return err;

	entry->vid = val & 0xfff;

	if (val & GLOBAL_VTU_VID_PAGE)
		entry->vid |= 0x1000;

	entry->valid = !!(val & GLOBAL_VTU_VID_VALID);

	return 0;
@@ -105,6 +109,9 @@ static int mv88e6xxx_g1_vtu_vid_write(struct mv88e6xxx_chip *chip,
{
	u16 val = entry->vid & 0xfff;

	if (entry->vid & 0x1000)
		val |= GLOBAL_VTU_VID_PAGE;

	if (entry->valid)
		val |= GLOBAL_VTU_VID_VALID;

+1 −0
Original line number Diff line number Diff line
@@ -249,6 +249,7 @@
#define GLOBAL_VTU_OP_STU_GET_NEXT	((0x06 << 12) | GLOBAL_VTU_OP_BUSY)
#define GLOBAL_VTU_VID		0x06
#define GLOBAL_VTU_VID_MASK	0xfff
#define GLOBAL_VTU_VID_PAGE	BIT(13)
#define GLOBAL_VTU_VID_VALID	BIT(12)
#define GLOBAL_VTU_DATA_0_3	0x07
#define GLOBAL_VTU_DATA_4_7	0x08