adm5120: fix promiscuous mode handling (patch from #8581), backport of r26673
authornbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Fri, 15 Apr 2011 00:21:27 +0000 (00:21 +0000)
committernbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Fri, 15 Apr 2011 00:21:27 +0000 (00:21 +0000)
git-svn-id: svn://svn.openwrt.org/openwrt/branches/backfire@26674 3c298f89-4303-0410-b956-a3cf2f4a3e73

target/linux/adm5120/files/drivers/net/adm5120sw.c

index 09cb9097e87d7afc2265309a35ca32623281c17a..9adbf6cbefd286e67a9d3351ddf9b52e0d297479 100644 (file)
@@ -962,10 +962,10 @@ static void adm5120_if_set_multicast_list(struct net_device *dev)
        /* to the CPU, the Bridge Test Mode has to be activated.               */
 
        /* Check if there is any vlan in promisc mode. */
-       if (t & (SWITCH_PORTS_NOCPU << CPUP_CONF_DUNP_SHIFT))
-               t &= ~CPUP_CONF_BTM; /* Disable Bridge Testing Mode */
-       else
+       if (~t & (SWITCH_PORTS_NOCPU << CPUP_CONF_DUNP_SHIFT))
                t |= CPUP_CONF_BTM;  /* Enable Bridge Testing Mode */
+       else
+               t &= ~CPUP_CONF_BTM; /* Disable Bridge Testing Mode */
 
        sw_write_reg(SWITCH_REG_CPUP_CONF, t);