From: Gabor Juhos <juhosg@openwrt.org>
Date: Wed, 5 Sep 2012 20:08:42 +0000 (+0000)
Subject: ramips: Use doubletagging to disable ramips_esw vlan by default, it seems more reliable.
X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=04c6143ca977a71c39dcf471f5a60d93890df649;p=openwrt%2Fstaging%2Fdedeckeh.git

ramips: Use doubletagging to disable ramips_esw vlan by default, it seems more reliable.

Use doubletagging to disable ramips_esw vlan by default, it seems
more reliable.

Daniel Golle found an issue where sometimes (possibly only for
RT3352) the default vlan disable method (clearing en_vlan, untag,
doubletag and putting all ports into vlan 0) doesn't work and the
packets get sent out vlan-tagged with vlan 0.

Instead switch to using the doubletagging method (allow doubletagged
packets, put all ports into vlan 0 with untag enabled) by default.

Unless someone figures out a way to really globally disable vlan for
this switch, this seems like the best (most reliable) option.

I did some tests regarding maximum packet size and did not see any

difference between the two methods, both allow for slightly bigger packets
than the ramips_main.c ethernet driver (ping stops going through
above "ping -s 1472" (1514 bytes), on the switch packets are recv_good until
"ping -s 1490", or about 1532 bytes).

Signed-off-by: Tobias Diedrich <ranma+openwrt@tdiedrich.de>

SVN-Revision: 33321
---

diff --git a/target/linux/ramips/files/drivers/net/ethernet/ramips/ramips_esw.c b/target/linux/ramips/files/drivers/net/ethernet/ramips/ramips_esw.c
index 309efdeb78..f01baa1709 100644
--- a/target/linux/ramips/files/drivers/net/ethernet/ramips/ramips_esw.c
+++ b/target/linux/ramips/files/drivers/net/ethernet/ramips/ramips_esw.c
@@ -534,7 +534,7 @@ rt305x_esw_apply_config(struct switch_dev *dev)
 			untag     |= esw->ports[i].untag     << i;
 			pvid       = esw->ports[i].pvid;
 		} else {
-			int x = esw->alt_vlan_disable ? 1 : 0;
+			int x = esw->alt_vlan_disable ? 0 : 1;
 			doubletag |= x << i;
 			en_vlan   |= x << i;
 			untag     |= x << i;