Patchwork [V3,1/1] DSA: Enable cascading in multi-chip 6131 configuration

login
register
mail settings
Submitter Barry Grussling
Date June 25, 2011, 5:53 a.m.
Message ID <1308981231-2561-1-git-send-email-barry@grussling.com>
Download mbox | patch
Permalink /patch/101936/
State Accepted
Delegated to: David Miller
Headers show

Comments

Barry Grussling - June 25, 2011, 5:53 a.m.
From: Barry Grussling <barry@grussling.com>

This patch enables the 6131 family of chips to forward DSA
packets to other switch chips.  This is needed if multiple
DSA chips are used in a device.  Without this patch the
chip will drop any DSA packets not destined for it.

This patch only enables the forwarding of DSA packets if
multiple chips are used in the switch configuration.

Signed-off-by: Barry Grussling <barry@grussling.com>

---
David Miller - June 29, 2011, 12:54 p.m.
From: Barry Grussling <barry@grussling.com>
Date: Fri, 24 Jun 2011 22:53:51 -0700

> From: Barry Grussling <barry@grussling.com>
> 
> This patch enables the 6131 family of chips to forward DSA
> packets to other switch chips.  This is needed if multiple
> DSA chips are used in a device.  Without this patch the
> chip will drop any DSA packets not destined for it.
> 
> This patch only enables the forwarding of DSA packets if
> multiple chips are used in the switch configuration.
> 
> Signed-off-by: Barry Grussling <barry@grussling.com>

Applied.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch

diff --git a/net/dsa/mv88e6131.c b/net/dsa/mv88e6131.c
index 45f7411..9bd1061 100644
--- a/net/dsa/mv88e6131.c
+++ b/net/dsa/mv88e6131.c
@@ -118,10 +118,14 @@  static int mv88e6131_setup_global(struct dsa_switch *ds)
 	REG_WRITE(REG_GLOBAL, 0x1a, (dsa_upstream_port(ds) * 0x1100) | 0x00f0);
 
 	/*
-	 * Disable cascade port functionality, and set the switch's
+	 * Disable cascade port functionality unless this device
+	 * is used in a cascade configuration, and set the switch's
 	 * DSA device number.
 	 */
-	REG_WRITE(REG_GLOBAL, 0x1c, 0xe000 | (ds->index & 0x1f));
+	if (ds->dst->pd->nr_chips > 1)
+		REG_WRITE(REG_GLOBAL, 0x1c, 0xf000 | (ds->index & 0x1f));
+	else
+		REG_WRITE(REG_GLOBAL, 0x1c, 0xe000 | (ds->index & 0x1f));
 
 	/*
 	 * Send all frames with destination addresses matching