aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/generic/files/drivers/net/phy/mvsw61xx.h
diff options
context:
space:
mode:
authorDeng Qingfang <dengqf6@mail2.sysu.edu.cn>2018-12-14 18:24:11 +0800
committerHauke Mehrtens <hauke@hauke-m.de>2018-12-16 00:57:20 +0100
commit18501889f6e353334152b31517bc21094d672da7 (patch)
tree4d5be3f0833544aa7a05f15a97266f7301598443 /target/linux/generic/files/drivers/net/phy/mvsw61xx.h
parentb88ce25e816d7c98f682acf2b6ce6b523a532d77 (diff)
downloadupstream-18501889f6e353334152b31517bc21094d672da7.tar.gz
upstream-18501889f6e353334152b31517bc21094d672da7.tar.bz2
upstream-18501889f6e353334152b31517bc21094d672da7.zip
kernel: add mv88e61xx switch port-mirroring support
Compile & run tested on mvebu Signed-off-by: Deng Qingfang <dengqf6@mail2.sysu.edu.cn>
Diffstat (limited to 'target/linux/generic/files/drivers/net/phy/mvsw61xx.h')
-rw-r--r--target/linux/generic/files/drivers/net/phy/mvsw61xx.h17
1 files changed, 17 insertions, 0 deletions
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];
};