aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJonas Gorski <jogo@openwrt.org>2013-02-21 11:45:38 +0000
committerJonas Gorski <jogo@openwrt.org>2013-02-21 11:45:38 +0000
commit45d8b5166b188943a15d2eeba07cc9cec96e1b7b (patch)
tree76f94fb869a87c95b4c3333035143d2992a3785d
parent1dc038ecb445c2df40c74c1a7fe9d41942bbf1de (diff)
downloadupstream-45d8b5166b188943a15d2eeba07cc9cec96e1b7b.tar.gz
upstream-45d8b5166b188943a15d2eeba07cc9cec96e1b7b.tar.bz2
upstream-45d8b5166b188943a15d2eeba07cc9cec96e1b7b.zip
generic: b53: clear SM_SW_FWD_MODE unconditionally when enabling VLAN
Setting this bit stops BCM53125 (bgmac actually) from receiving any packets. This bit is cleared conditionally in b53_switch_reset and it seems the same is done in bcmrobo.c which never sets that bit again. Signed-off-by: Rafał Miłecki <zajec5@gmail.com> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@35723 3c298f89-4303-0410-b956-a3cf2f4a3e73
-rw-r--r--target/linux/generic/files/drivers/net/phy/b53/b53_common.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/target/linux/generic/files/drivers/net/phy/b53/b53_common.c b/target/linux/generic/files/drivers/net/phy/b53/b53_common.c
index 923d1555d1..41e6fa9881 100644
--- a/target/linux/generic/files/drivers/net/phy/b53/b53_common.c
+++ b/target/linux/generic/files/drivers/net/phy/b53/b53_common.c
@@ -244,10 +244,9 @@ static void b53_enable_vlan(struct b53_device *dev, int enable)
b53_read8(dev, B53_VLAN_PAGE, B53_VLAN_CTRL5, &vc5);
}
- if (enable) {
- if (!is63xx(dev))
- mgmt |= SM_SW_FWD_MODE;
+ mgmt &= ~SM_SW_FWD_MODE;
+ if (enable) {
vc0 |= VC0_VLAN_EN | VC0_VID_CHK_EN | VC0_VID_HASH_VID;
vc1 |= VC1_RX_MCST_UNTAG_EN | VC1_RX_MCST_FWD_EN;
vc4 &= ~VC4_ING_VID_CHECK_MASK;
@@ -267,7 +266,6 @@ static void b53_enable_vlan(struct b53_device *dev, int enable)
vc5 &= ~VC5_VID_FFF_EN;
}
} else {
- mgmt &= ~SM_SW_FWD_MODE;
vc0 &= ~(VC0_VLAN_EN | VC0_VID_CHK_EN | VC0_VID_HASH_VID);
vc1 &= ~(VC1_RX_MCST_UNTAG_EN | VC1_RX_MCST_FWD_EN);
vc4 &= ~VC4_ING_VID_CHECK_MASK;