aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2009-06-29 21:54:16 +0000
committerFelix Fietkau <nbd@openwrt.org>2009-06-29 21:54:16 +0000
commitc604fdef857813a2d00a51a4f92c6f29f9320dfb (patch)
tree57e2fa3a40afedd290e155068f471c2c908ce714
parentf3c0929d37057113bfd21480606b31c679b6c93a (diff)
downloadupstream-c604fdef857813a2d00a51a4f92c6f29f9320dfb.tar.gz
upstream-c604fdef857813a2d00a51a4f92c6f29f9320dfb.tar.bz2
upstream-c604fdef857813a2d00a51a4f92c6f29f9320dfb.zip
ar8216: fix transmission of large frames by setting the switch mtu
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@16629 3c298f89-4303-0410-b956-a3cf2f4a3e73
-rw-r--r--target/linux/generic-2.6/files/drivers/net/phy/ar8216.c4
-rw-r--r--target/linux/generic-2.6/files/drivers/net/phy/ar8216.h3
2 files changed, 7 insertions, 0 deletions
diff --git a/target/linux/generic-2.6/files/drivers/net/phy/ar8216.c b/target/linux/generic-2.6/files/drivers/net/phy/ar8216.c
index f629058ae0..4354be9b0c 100644
--- a/target/linux/generic-2.6/files/drivers/net/phy/ar8216.c
+++ b/target/linux/generic-2.6/files/drivers/net/phy/ar8216.c
@@ -488,6 +488,10 @@ ar8216_reset_switch(struct switch_dev *dev)
}
/* XXX: undocumented magic from atheros, required! */
priv->write(priv, 0x38, 0xc000050e);
+
+ ar8216_rmw(priv, AR8216_REG_GLOBAL_CTRL,
+ AR8216_GCTRL_MTU, 1518 + 8 + 2);
+
return ar8216_hw_apply(dev);
}
diff --git a/target/linux/generic-2.6/files/drivers/net/phy/ar8216.h b/target/linux/generic-2.6/files/drivers/net/phy/ar8216.h
index e0f0452cb8..b8a4f23d45 100644
--- a/target/linux/generic-2.6/files/drivers/net/phy/ar8216.h
+++ b/target/linux/generic-2.6/files/drivers/net/phy/ar8216.h
@@ -26,6 +26,9 @@
#define AR8216_REG_CTRL 0x0000
#define AR8216_CTRL_RESET BIT(31)
+#define AR8216_REG_GLOBAL_CTRL 0x0030
+#define AR8216_GCTRL_MTU BITS(0, 10)
+
#define AR8216_REG_VTU 0x0040
#define AR8216_VTU_OP BITS(0, 3)
#define AR8216_VTU_OP_NOOP 0x0