|
@@ -2089,10 +2089,11 @@ void dev_set_promiscuity(struct net_device *dev, int inc)
|
|
|
{
|
|
|
unsigned short old_flags = dev->flags;
|
|
|
|
|
|
- dev->flags |= IFF_PROMISC;
|
|
|
if ((dev->promiscuity += inc) == 0)
|
|
|
dev->flags &= ~IFF_PROMISC;
|
|
|
- if (dev->flags ^ old_flags) {
|
|
|
+ else
|
|
|
+ dev->flags |= IFF_PROMISC;
|
|
|
+ if (dev->flags != old_flags) {
|
|
|
dev_mc_upload(dev);
|
|
|
printk(KERN_INFO "device %s %s promiscuous mode\n",
|
|
|
dev->name, (dev->flags & IFF_PROMISC) ? "entered" :
|