adm5120: fix promiscuous mode handling (patch from #8581)
authornbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Fri, 15 Apr 2011 00:20:59 +0000 (00:20 +0000)
committernbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Fri, 15 Apr 2011 00:20:59 +0000 (00:20 +0000)
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@26673 3c298f89-4303-0410-b956-a3cf2f4a3e73

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

index 09cb909..9adbf6c 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);