|
|
@@ -140,11 +140,14 @@ static int dsa_slave_close(struct net_device *dev)
|
|
|
static void dsa_slave_change_rx_flags(struct net_device *dev, int change)
|
|
|
{
|
|
|
struct net_device *master = dsa_slave_to_master(dev);
|
|
|
-
|
|
|
- if (change & IFF_ALLMULTI)
|
|
|
- dev_set_allmulti(master, dev->flags & IFF_ALLMULTI ? 1 : -1);
|
|
|
- if (change & IFF_PROMISC)
|
|
|
- dev_set_promiscuity(master, dev->flags & IFF_PROMISC ? 1 : -1);
|
|
|
+ if (dev->flags & IFF_UP) {
|
|
|
+ if (change & IFF_ALLMULTI)
|
|
|
+ dev_set_allmulti(master,
|
|
|
+ dev->flags & IFF_ALLMULTI ? 1 : -1);
|
|
|
+ if (change & IFF_PROMISC)
|
|
|
+ dev_set_promiscuity(master,
|
|
|
+ dev->flags & IFF_PROMISC ? 1 : -1);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
static void dsa_slave_set_rx_mode(struct net_device *dev)
|