bridge: Fix incorrect judgment of promisc
[platform/kernel/linux-rpi.git] / net / bridge / br_if.c
index 091d39f..3eca3fd 100644 (file)
@@ -153,7 +153,8 @@ void br_manage_promisc(struct net_bridge *br)
                         * This lets us disable promiscuous mode and write
                         * this config to hw.
                         */
-                       if (br->auto_cnt <= br_auto_port(p))
+                       if (br->auto_cnt == 0 ||
+                           (br->auto_cnt == 1 && br_auto_port(p)))
                                br_port_clear_promisc(p);
                        else
                                br_port_set_promisc(p);
@@ -178,7 +179,7 @@ static void nbp_update_port_count(struct net_bridge *br)
 
 static void nbp_delete_promisc(struct net_bridge_port *p)
 {
-       /* If port is currently promiscous, unset promiscuity.
+       /* If port is currently promiscuous, unset promiscuity.
         * Otherwise, it is a static port so remove all addresses
         * from it.
         */
@@ -528,7 +529,7 @@ err2:
        kobject_put(&p->kobj);
        p = NULL; /* kobject_put frees */
 err1:
-       dev_set_promiscuity(dev, -1);
+       dev_set_allmulti(dev, -1);
 put_back:
        dev_put(dev);
        kfree(p);