]> www.infradead.org Git - users/hch/misc.git/commitdiff
net: renesas: rswitch: configure default ageing time
authorMichael Dege <michael.dege@renesas.com>
Mon, 1 Sep 2025 04:58:06 +0000 (06:58 +0200)
committerPaolo Abeni <pabeni@redhat.com>
Thu, 4 Sep 2025 07:43:23 +0000 (09:43 +0200)
Enable MAC ageing by setting up the timer and setting the ageging
time to the default of 300s.

Signed-off-by: Michael Dege <michael.dege@renesas.com>
Link: https://patch.msgid.link/20250901-add_l2_switching-v5-2-5f13e46860d5@renesas.com
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
drivers/net/ethernet/renesas/rswitch.h
drivers/net/ethernet/renesas/rswitch_main.c

index 532192cbca4b520e06a7e35653929d8364f1ccb2..131034d5d992eb59fd2299fa25de3a65285d29ad 100644 (file)
@@ -1,7 +1,7 @@
 /* SPDX-License-Identifier: GPL-2.0 */
 /* Renesas Ethernet Switch device driver
  *
- * Copyright (C) 2022 Renesas Electronics Corporation
+ * Copyright (C) 2022-2025 Renesas Electronics Corporation
  */
 
 #ifndef __RSWITCH_H__
@@ -826,6 +826,18 @@ enum rswitch_gwca_mode {
 
 #define FWPBFCSDC(j, i)         (FWPBFCSDC00 + (i) * 0x10 + (j) * 0x04)
 
+#define FWMACAGUSPC_MACAGUSP   GENMASK(9, 0)
+#define FWMACAGC_MACAGT                GENMASK(15, 0)
+#define FWMACAGC_MACAGE                BIT(16)
+#define FWMACAGC_MACAGSL       BIT(17)
+#define FWMACAGC_MACAGPM       BIT(18)
+#define FWMACAGC_MACDES                BIT(24)
+#define FWMACAGC_MACAGOG       BIT(28)
+#define FWMACAGC_MACDESOG      BIT(29)
+
+#define RSW_AGEING_CLK_PER_US  0x140
+#define RSW_AGEING_TIME                300
+
 /* TOP */
 #define TPEMIMC7(queue)                (TPEMIMC70 + (queue) * 4)
 
index aba772e14555d30891dc74a5a123121dad77e92b..99019ad9de224eaf1c4128bd29609b24d1a6f263 100644 (file)
@@ -1,7 +1,7 @@
 // SPDX-License-Identifier: GPL-2.0
 /* Renesas Ethernet Switch device driver
  *
- * Copyright (C) 2022 Renesas Electronics Corporation
+ * Copyright (C) 2022-2025 Renesas Electronics Corporation
  */
 
 #include <linux/clk.h>
@@ -113,6 +113,7 @@ static void rswitch_fwd_init(struct rswitch_private *priv)
 {
        u32 all_ports_mask = GENMASK(RSWITCH_NUM_AGENTS - 1, 0);
        unsigned int i;
+       u32 reg_val;
 
        /* Start with empty configuration */
        for (i = 0; i < RSWITCH_NUM_AGENTS; i++) {
@@ -128,6 +129,14 @@ static void rswitch_fwd_init(struct rswitch_private *priv)
                iowrite32(0, priv->addr + FWPBFC(i));
        }
 
+       /* Configure MAC table aging */
+       rswitch_modify(priv->addr, FWMACAGUSPC, FWMACAGUSPC_MACAGUSP,
+                      FIELD_PREP(FWMACAGUSPC_MACAGUSP, RSW_AGEING_CLK_PER_US));
+
+       reg_val = FIELD_PREP(FWMACAGC_MACAGT, RSW_AGEING_TIME);
+       reg_val |= FWMACAGC_MACAGE | FWMACAGC_MACAGSL;
+       iowrite32(reg_val, priv->addr + FWMACAGC);
+
        /* For enabled ETHA ports, setup port based forwarding */
        rswitch_for_each_enabled_port(priv, i) {
                /* Port based forwarding from port i to GWCA port */