Commit 62230325 authored by Michael Dege's avatar Michael Dege Committed by Paolo Abeni
Browse files

net: renesas: rswitch: configure default ageing time



Enable MAC ageing by setting up the timer and setting the ageging
time to the default of 300s.

Signed-off-by: default avatarMichael Dege <michael.dege@renesas.com>
Link: https://patch.msgid.link/20250901-add_l2_switching-v5-2-5f13e46860d5@renesas.com


Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
parent 5ee21c00
Loading
Loading
Loading
Loading
+13 −1
Original line number Diff line number Diff line
/* 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)

+10 −1
Original line number Diff line number Diff line
// 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 */