generic: b53: clear SM_SW_FWD_MODE unconditionally when enabling VLAN
authorJonas Gorski <jogo@openwrt.org>
Thu, 21 Feb 2013 11:45:38 +0000 (11:45 +0000)
committerJonas Gorski <jogo@openwrt.org>
Thu, 21 Feb 2013 11:45:38 +0000 (11:45 +0000)
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>
SVN-Revision: 35723

target/linux/generic/files/drivers/net/phy/b53/b53_common.c

index 923d1555d11ca3a54e65eeacc3bcba2746f71d38..41e6fa988190e2a8f5dbc21a39dbbfa3a73f6404 100644 (file)
@@ -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;