Re: [PATCH net-next 5/5 v2] net: dsa: rtl8366rb: Support fast aging
From: Alvin Šipraga <ALSI@bang-olufsen.dk>
Date: 2021-08-31 00:24:21
On 8/30/21 11:48 PM, Linus Walleij wrote:
This implements fast aging per-port using the special "security" register, which will flush any L2 LUTs on a port. Suggested-by: Vladimir Oltean <olteanv@gmail.com> Cc: Alvin Šipraga <alsi@bang-olufsen.dk> Cc: Mauri Sandberg <redacted> Cc: DENG Qingfang <dqfext@gmail.com> Signed-off-by: Linus Walleij <redacted> ---
Vladimir is probably right about "any" being a bit misleading, but I think this is doing the right thing. Fixed LUT entries (nonexistent at the moment) should not be affected by the aging process. Reviewed-by: Alvin Šipraga <alsi@bang-olufsen.dk>
quoted hunk ↗ jump to hunk
ChangeLog v1->v2: - New patch suggested by Vladimir. --- drivers/net/dsa/rtl8366rb.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+)diff --git a/drivers/net/dsa/rtl8366rb.c b/drivers/net/dsa/rtl8366rb.c index 4cb0e336ce6b..548282119cc4 100644 --- a/drivers/net/dsa/rtl8366rb.c +++ b/drivers/net/dsa/rtl8366rb.c@@ -1219,6 +1219,19 @@ rtl8366rb_port_bridge_flags(struct dsa_switch *ds, int port, return 0; } +static void +rtl8366rb_port_fast_age(struct dsa_switch *ds, int port) +{ + struct realtek_smi *smi = ds->priv; + + /* This will age out any L2 entries */ + regmap_update_bits(smi->map, RTL8366RB_SECURITY_CTRL, + BIT(port), BIT(port)); + /* Restore the normal state of things */ + regmap_update_bits(smi->map, RTL8366RB_SECURITY_CTRL, + BIT(port), 0); +} + static int rtl8366rb_port_bridge_join(struct dsa_switch *ds, int port, struct net_device *bridge)@@ -1673,6 +1686,7 @@ static const struct dsa_switch_ops rtl8366rb_switch_ops = { .port_disable = rtl8366rb_port_disable, .port_pre_bridge_flags = rtl8366rb_port_pre_bridge_flags, .port_bridge_flags = rtl8366rb_port_bridge_flags, + .port_fast_age = rtl8366rb_port_fast_age, .port_change_mtu = rtl8366rb_change_mtu, .port_max_mtu = rtl8366rb_max_mtu, };