mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-23 23:42:43 +00:00
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)
|