diff mbox

[U-Boot,2/5] drivers: net: vsc9953: Fix FDB aging time

Message ID 1450185666-6069-3-git-send-email-codrin.ciubotariu@freescale.com
State Accepted
Commit ba389e65e5bb64506ad35b3d7007ec1b3b9cf4de
Delegated to: Joe Hershberger
Headers show

Commit Message

Codrin Ciubotariu Dec. 15, 2015, 1:21 p.m. UTC
By default, the aging period is set to 0, so the dynamic
FDB entries are never removed. This patch sets the aging
time to 300 seconds.

Signed-off-by: Codrin Ciubotariu <codrin.ciubotariu@freescale.com>
---
 drivers/net/vsc9953.c | 23 +++++++++++++++++++++++
 include/vsc9953.h     |  4 ++++
 2 files changed, 27 insertions(+)

Comments

Joe Hershberger Dec. 15, 2015, 5 p.m. UTC | #1
On Tue, Dec 15, 2015 at 7:21 AM, Codrin Ciubotariu
<codrin.ciubotariu@freescale.com> wrote:
> By default, the aging period is set to 0, so the dynamic
> FDB entries are never removed. This patch sets the aging
> time to 300 seconds.
>
> Signed-off-by: Codrin Ciubotariu <codrin.ciubotariu@freescale.com>

Acked-by: Joe Hershberger <joe.hershberger@ni.com>
Joe Hershberger Jan. 29, 2016, 9:25 p.m. UTC | #2
Hi Codrin,

https://patchwork.ozlabs.org/patch/556955/ was applied to u-boot-net.git.

Thanks!
-Joe
Joe Hershberger Jan. 29, 2016, 9:26 p.m. UTC | #3
Hi Codrin,

https://patchwork.ozlabs.org/patch/556955/ was applied to u-boot-net.git.

Thanks!
-Joe
diff mbox

Patch

diff --git a/drivers/net/vsc9953.c b/drivers/net/vsc9953.c
index 7595db1..160f478 100644
--- a/drivers/net/vsc9953.c
+++ b/drivers/net/vsc9953.c
@@ -593,6 +593,25 @@  static void vsc9953_port_all_vlan_egress_untagged_set(
 		vsc9953_port_vlan_egr_untag_set(i, mode);
 }
 
+static int vsc9953_autoage_time_set(int age_period)
+{
+	u32 autoage;
+	struct vsc9953_analyzer *l2ana_reg;
+
+	l2ana_reg = (struct vsc9953_analyzer *)(VSC9953_OFFSET +
+						VSC9953_ANA_OFFSET);
+
+	if (age_period < 0 || age_period > VSC9953_AUTOAGE_PERIOD_MASK)
+		return -EINVAL;
+
+	autoage = bitfield_replace_by_mask(in_le32(&l2ana_reg->ana.auto_age),
+					   VSC9953_AUTOAGE_PERIOD_MASK,
+					   age_period);
+	out_le32(&l2ana_reg->ana.auto_age, autoage);
+
+	return 0;
+}
+
 #ifdef CONFIG_CMD_ETHSW
 
 /* Enable/disable status of a VSC9953 port */
@@ -2107,6 +2126,10 @@  void vsc9953_default_configuration(void)
 {
 	int i;
 
+	if (vsc9953_autoage_time_set(VSC9953_DEFAULT_AGE_TIME))
+		debug("VSC9953: failed to set AGE time to %d\n",
+		      VSC9953_DEFAULT_AGE_TIME);
+
 	for (i = 0; i < VSC9953_MAX_VLAN; i++)
 		vsc9953_vlan_table_membership_all_set(i, 0);
 	vsc9953_port_all_vlan_aware_set(1);
diff --git a/include/vsc9953.h b/include/vsc9953.h
index 00aa222..35fcbb5 100644
--- a/include/vsc9953.h
+++ b/include/vsc9953.h
@@ -136,6 +136,9 @@ 
 /* Macros for vsc9953_ana_ana.adv_learn register */
 #define VSC9953_VLAN_CHK		0x00000400
 
+/* Macros for vsc9953_ana_ana.auto_age register */
+#define VSC9953_AUTOAGE_PERIOD_MASK	0x001ffffe
+
 /* Macros for vsc9953_rew_port.port_tag_cfg register */
 #define VSC9953_TAG_CFG_MASK		0x00000180
 #define VSC9953_TAG_CFG_NONE		0x00000000
@@ -164,6 +167,7 @@ 
 #define VSC9953_MAX_VLAN		4096
 #define VSC9953_VLAN_CHECK(vid)	\
 	(((vid) < 0 || (vid) >= VSC9953_MAX_VLAN) ? 0 : 1)
+#define VSC9953_DEFAULT_AGE_TIME	300
 
 #define DEFAULT_VSC9953_MDIO_NAME	"VSC9953_MDIO0"