diff options
Diffstat (limited to 'target/linux/generic/backport-5.4/746-v5.5-net-dsa-mv88e6xxx-Split-monitor-port-configuration.patch')
-rw-r--r-- | target/linux/generic/backport-5.4/746-v5.5-net-dsa-mv88e6xxx-Split-monitor-port-configuration.patch | 149 |
1 files changed, 0 insertions, 149 deletions
diff --git a/target/linux/generic/backport-5.4/746-v5.5-net-dsa-mv88e6xxx-Split-monitor-port-configuration.patch b/target/linux/generic/backport-5.4/746-v5.5-net-dsa-mv88e6xxx-Split-monitor-port-configuration.patch deleted file mode 100644 index 683178727c..0000000000 --- a/target/linux/generic/backport-5.4/746-v5.5-net-dsa-mv88e6xxx-Split-monitor-port-configuration.patch +++ /dev/null @@ -1,149 +0,0 @@ -From 5c74c54ce6fff719999ff48f128cf4150ee4ff59 Mon Sep 17 00:00:00 2001 -From: Iwan R Timmer <irtimmer@gmail.com> -Date: Thu, 7 Nov 2019 22:11:13 +0100 -Subject: [PATCH] net: dsa: mv88e6xxx: Split monitor port configuration - -Separate the configuration of the egress and ingress monitor port. -This allows the port mirror functionality to do ingress and egress -port mirroring to separate ports. - -Signed-off-by: Iwan R Timmer <irtimmer@gmail.com> -Reviewed-by: Andrew Lunn <andrew@lunn.ch> -Signed-off-by: David S. Miller <davem@davemloft.net> ---- - drivers/net/dsa/mv88e6xxx/chip.c | 9 ++++++- - drivers/net/dsa/mv88e6xxx/chip.h | 9 ++++++- - drivers/net/dsa/mv88e6xxx/global1.c | 42 ++++++++++++++++++++--------- - drivers/net/dsa/mv88e6xxx/global1.h | 8 ++++-- - 4 files changed, 52 insertions(+), 16 deletions(-) - ---- a/drivers/net/dsa/mv88e6xxx/chip.c -+++ b/drivers/net/dsa/mv88e6xxx/chip.c -@@ -2384,7 +2384,14 @@ static int mv88e6xxx_setup_upstream_port - - if (chip->info->ops->set_egress_port) { - err = chip->info->ops->set_egress_port(chip, -- upstream_port); -+ MV88E6XXX_EGRESS_DIR_INGRESS, -+ upstream_port); -+ if (err) -+ return err; -+ -+ err = chip->info->ops->set_egress_port(chip, -+ MV88E6XXX_EGRESS_DIR_EGRESS, -+ upstream_port); - if (err) - return err; - } ---- a/drivers/net/dsa/mv88e6xxx/chip.h -+++ b/drivers/net/dsa/mv88e6xxx/chip.h -@@ -33,6 +33,11 @@ enum mv88e6xxx_egress_mode { - MV88E6XXX_EGRESS_MODE_ETHERTYPE, - }; - -+enum mv88e6xxx_egress_direction { -+ MV88E6XXX_EGRESS_DIR_INGRESS, -+ MV88E6XXX_EGRESS_DIR_EGRESS, -+}; -+ - enum mv88e6xxx_frame_mode { - MV88E6XXX_FRAME_MODE_NORMAL, - MV88E6XXX_FRAME_MODE_DSA, -@@ -464,7 +469,9 @@ struct mv88e6xxx_ops { - int (*stats_get_stats)(struct mv88e6xxx_chip *chip, int port, - uint64_t *data); - int (*set_cpu_port)(struct mv88e6xxx_chip *chip, int port); -- int (*set_egress_port)(struct mv88e6xxx_chip *chip, int port); -+ int (*set_egress_port)(struct mv88e6xxx_chip *chip, -+ enum mv88e6xxx_egress_direction direction, -+ int port); - - #define MV88E6XXX_CASCADE_PORT_NONE 0xe - #define MV88E6XXX_CASCADE_PORT_MULTIPLE 0xf ---- a/drivers/net/dsa/mv88e6xxx/global1.c -+++ b/drivers/net/dsa/mv88e6xxx/global1.c -@@ -294,7 +294,9 @@ int mv88e6250_g1_ieee_pri_map(struct mv8 - /* Offset 0x1a: Monitor Control */ - /* Offset 0x1a: Monitor & MGMT Control on some devices */ - --int mv88e6095_g1_set_egress_port(struct mv88e6xxx_chip *chip, int port) -+int mv88e6095_g1_set_egress_port(struct mv88e6xxx_chip *chip, -+ enum mv88e6xxx_egress_direction direction, -+ int port) - { - u16 reg; - int err; -@@ -303,11 +305,20 @@ int mv88e6095_g1_set_egress_port(struct - if (err) - return err; - -- reg &= ~(MV88E6185_G1_MONITOR_CTL_INGRESS_DEST_MASK | -- MV88E6185_G1_MONITOR_CTL_EGRESS_DEST_MASK); -- -- reg |= port << __bf_shf(MV88E6185_G1_MONITOR_CTL_INGRESS_DEST_MASK) | -- port << __bf_shf(MV88E6185_G1_MONITOR_CTL_EGRESS_DEST_MASK); -+ switch (direction) { -+ case MV88E6XXX_EGRESS_DIR_INGRESS: -+ reg &= MV88E6185_G1_MONITOR_CTL_INGRESS_DEST_MASK; -+ reg |= port << -+ __bf_shf(MV88E6185_G1_MONITOR_CTL_INGRESS_DEST_MASK); -+ break; -+ case MV88E6XXX_EGRESS_DIR_EGRESS: -+ reg &= MV88E6185_G1_MONITOR_CTL_EGRESS_DEST_MASK; -+ reg |= port << -+ __bf_shf(MV88E6185_G1_MONITOR_CTL_EGRESS_DEST_MASK); -+ break; -+ default: -+ return -EINVAL; -+ } - - return mv88e6xxx_g1_write(chip, MV88E6185_G1_MONITOR_CTL, reg); - } -@@ -341,17 +352,24 @@ static int mv88e6390_g1_monitor_write(st - return mv88e6xxx_g1_write(chip, MV88E6390_G1_MONITOR_MGMT_CTL, reg); - } - --int mv88e6390_g1_set_egress_port(struct mv88e6xxx_chip *chip, int port) -+int mv88e6390_g1_set_egress_port(struct mv88e6xxx_chip *chip, -+ enum mv88e6xxx_egress_direction direction, -+ int port) - { - u16 ptr; - int err; - -- ptr = MV88E6390_G1_MONITOR_MGMT_CTL_PTR_INGRESS_DEST; -- err = mv88e6390_g1_monitor_write(chip, ptr, port); -- if (err) -- return err; -+ switch (direction) { -+ case MV88E6XXX_EGRESS_DIR_INGRESS: -+ ptr = MV88E6390_G1_MONITOR_MGMT_CTL_PTR_INGRESS_DEST; -+ break; -+ case MV88E6XXX_EGRESS_DIR_EGRESS: -+ ptr = MV88E6390_G1_MONITOR_MGMT_CTL_PTR_EGRESS_DEST; -+ break; -+ default: -+ return -EINVAL; -+ } - -- ptr = MV88E6390_G1_MONITOR_MGMT_CTL_PTR_EGRESS_DEST; - err = mv88e6390_g1_monitor_write(chip, ptr, port); - if (err) - return err; ---- a/drivers/net/dsa/mv88e6xxx/global1.h -+++ b/drivers/net/dsa/mv88e6xxx/global1.h -@@ -289,8 +289,12 @@ int mv88e6095_g1_stats_set_histogram(str - int mv88e6390_g1_stats_set_histogram(struct mv88e6xxx_chip *chip); - void mv88e6xxx_g1_stats_read(struct mv88e6xxx_chip *chip, int stat, u32 *val); - int mv88e6xxx_g1_stats_clear(struct mv88e6xxx_chip *chip); --int mv88e6095_g1_set_egress_port(struct mv88e6xxx_chip *chip, int port); --int mv88e6390_g1_set_egress_port(struct mv88e6xxx_chip *chip, int port); -+int mv88e6095_g1_set_egress_port(struct mv88e6xxx_chip *chip, -+ enum mv88e6xxx_egress_direction direction, -+ int port); -+int mv88e6390_g1_set_egress_port(struct mv88e6xxx_chip *chip, -+ enum mv88e6xxx_egress_direction direction, -+ int port); - int mv88e6095_g1_set_cpu_port(struct mv88e6xxx_chip *chip, int port); - int mv88e6390_g1_set_cpu_port(struct mv88e6xxx_chip *chip, int port); - int mv88e6390_g1_mgmt_rsvd2cpu(struct mv88e6xxx_chip *chip); |