mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-23 15:32:33 +00:00
ac8bfe316b
Import patches for the MT7530 DSA driver from net-next tree: cae425cb43fe net: dsa: allow DSA switch drivers to provide their own phylink mac ops dd0c9855b413 net: dsa: introduce dsa_phylink_to_port() 7c5e37d7ee78 net: dsa: mt7530: simplify core operations 868ff5f4944a net: dsa: mt7530-mdio: read PHY address of switch from device tree 2c606d138518 net: dsa: mt7530: fix port mirroring for MT7988 SoC switch d59cf049c837 net: dsa: mt7530: fix mirroring frames received on local port 62d6d91db98a net: dsa: mt7530: provide own phylink MAC operations Signed-off-by: Daniel Golle <daniel@makrotopia.org>
71 lines
2.3 KiB
Diff
71 lines
2.3 KiB
Diff
From d4097ddef078a113643a6dcde01e99741f852adb Mon Sep 17 00:00:00 2001
|
||
From: =?UTF-8?q?Ar=C4=B1n=C3=A7=20=C3=9CNAL?= <arinc.unal@arinc9.com>
|
||
Date: Sat, 13 Apr 2024 16:01:39 +0300
|
||
Subject: [PATCH 2/5] net: dsa: mt7530: fix mirroring frames received on local
|
||
port
|
||
MIME-Version: 1.0
|
||
Content-Type: text/plain; charset=UTF-8
|
||
Content-Transfer-Encoding: 8bit
|
||
|
||
This switch intellectual property provides a bit on the ARL global control
|
||
register which controls allowing mirroring frames which are received on the
|
||
local port (monitor port). This bit is unset after reset.
|
||
|
||
This ability must be enabled to fully support the port mirroring feature on
|
||
this switch intellectual property.
|
||
|
||
Therefore, this patch fixes the traffic not being reflected on a port,
|
||
which would be configured like below:
|
||
|
||
tc qdisc add dev swp0 clsact
|
||
|
||
tc filter add dev swp0 ingress matchall skip_sw \
|
||
action mirred egress mirror dev swp0
|
||
|
||
As a side note, this configuration provides the hairpinning feature for a
|
||
single port.
|
||
|
||
Fixes: 37feab6076aa ("net: dsa: mt7530: add support for port mirroring")
|
||
Signed-off-by: Arınç ÜNAL <arinc.unal@arinc9.com>
|
||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||
---
|
||
drivers/net/dsa/mt7530.c | 6 ++++++
|
||
drivers/net/dsa/mt7530.h | 4 ++++
|
||
2 files changed, 10 insertions(+)
|
||
|
||
--- a/drivers/net/dsa/mt7530.c
|
||
+++ b/drivers/net/dsa/mt7530.c
|
||
@@ -2471,6 +2471,9 @@ mt7530_setup(struct dsa_switch *ds)
|
||
PVC_EG_TAG(MT7530_VLAN_EG_CONSISTENT));
|
||
}
|
||
|
||
+ /* Allow mirroring frames received on the local port (monitor port). */
|
||
+ mt7530_set(priv, MT753X_AGC, LOCAL_EN);
|
||
+
|
||
/* Setup VLAN ID 0 for VLAN-unaware bridges */
|
||
ret = mt7530_setup_vlan0(priv);
|
||
if (ret)
|
||
@@ -2582,6 +2585,9 @@ mt7531_setup_common(struct dsa_switch *d
|
||
PVC_EG_TAG(MT7530_VLAN_EG_CONSISTENT));
|
||
}
|
||
|
||
+ /* Allow mirroring frames received on the local port (monitor port). */
|
||
+ mt7530_set(priv, MT753X_AGC, LOCAL_EN);
|
||
+
|
||
/* Flush the FDB table */
|
||
ret = mt7530_fdb_cmd(priv, MT7530_FDB_FLUSH, NULL);
|
||
if (ret < 0)
|
||
--- a/drivers/net/dsa/mt7530.h
|
||
+++ b/drivers/net/dsa/mt7530.h
|
||
@@ -32,6 +32,10 @@ enum mt753x_id {
|
||
#define SYSC_REG_RSTCTRL 0x34
|
||
#define RESET_MCM BIT(2)
|
||
|
||
+/* Register for ARL global control */
|
||
+#define MT753X_AGC 0xc
|
||
+#define LOCAL_EN BIT(7)
|
||
+
|
||
/* Registers to mac forward control for unknown frames */
|
||
#define MT7530_MFC 0x10
|
||
#define BC_FFP(x) (((x) & 0xff) << 24)
|