adm5120: fix promiscuous mode handling (patch from #8581), backport of r26673
[openwrt-10.03/.git] / 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);