From 18501889f6e353334152b31517bc21094d672da7 Mon Sep 17 00:00:00 2001 From: Deng Qingfang Date: Fri, 14 Dec 2018 18:24:11 +0800 Subject: kernel: add mv88e61xx switch port-mirroring support Compile & run tested on mvebu Signed-off-by: Deng Qingfang --- target/linux/generic/files/drivers/net/phy/mvsw61xx.h | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'target/linux/generic/files/drivers/net/phy/mvsw61xx.h') diff --git a/target/linux/generic/files/drivers/net/phy/mvsw61xx.h b/target/linux/generic/files/drivers/net/phy/mvsw61xx.h index a07b09cd14..545e2dd660 100644 --- a/target/linux/generic/files/drivers/net/phy/mvsw61xx.h +++ b/target/linux/generic/files/drivers/net/phy/mvsw61xx.h @@ -165,6 +165,7 @@ enum { MV_GLOBAL_VTU_DATA1 = 0x07, MV_GLOBAL_VTU_DATA2 = 0x08, MV_GLOBAL_VTU_DATA3 = 0x09, + MV_GLOBAL_MONITOR_CTRL = 0x1a, MV_GLOBAL_CONTROL2 = 0x1c, }; #define MV_GLOBALREG(_type) MV_SWITCH_GLOBAL, MV_GLOBAL_##_type @@ -242,6 +243,16 @@ enum { #define MV_FDB_HI_SHIFT 4 #define MV_FDB_LO_SHIFT 12 +#define MV_MIRROR_RX_DEST_MASK 0xf000 +#define MV_MIRROR_TX_DEST_MASK 0x0f00 +#define MV_MIRROR_RX_DEST_SHIFT 12 +#define MV_MIRROR_TX_DEST_SHIFT 8 + +#define MV_MIRROR_RX_SRC_SHIFT 4 +#define MV_MIRROR_RX_SRC_MASK (1 << MV_MIRROR_RX_SRC_SHIFT) +#define MV_MIRROR_TX_SRC_SHIFT 5 +#define MV_MIRROR_TX_SRC_MASK (1 << MV_MIRROR_TX_SRC_SHIFT) + /* Marvell Specific PHY register */ #define MII_MV_SPEC_CTRL 16 enum { @@ -284,6 +295,12 @@ struct mvsw61xx_state { u32 port_sstate; } vlans[MV_VLANS]; + /* mirroring */ + bool mirror_rx; + bool mirror_tx; + int source_port; + int monitor_port; + char buf[128]; }; -- cgit v1.2.3