ehea: fix promiscuous mode
authorThadeu Lima de Souza Cascardo <cascardo@linux.vnet.ibm.com>
Wed, 25 Apr 2012 07:32:12 +0000 (07:32 +0000)
committerDavid S. Miller <davem@davemloft.net>
Thu, 26 Apr 2012 09:07:45 +0000 (05:07 -0400)
commit a4910b744486254cfa61995954c118fb2283c4fd has broken promiscuous
mode, which is never set. port->promisc just reflects the last setting
of PROMISCUOUS mode to avoid doing an extra hypercall when it's already
set.

However, since it may fail because of hypervisor permissions, we should
still respect the multicast settings and not simply exit after setting
promiscuous mode.

Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@linux.vnet.ibm.com>
Cc: Breno Leitao <leitao@linux.vnet.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/ibm/ehea/ehea_main.c

index 9dcb5fd373711b0882c29e2d1d7fea49597b0818..c9069a28832b0bfa39e4b118c7399a744ac0c8a2 100644 (file)
@@ -1946,11 +1946,7 @@ static void ehea_set_multicast_list(struct net_device *dev)
        struct netdev_hw_addr *ha;
        int ret;
 
-       if (port->promisc) {
-               ehea_promiscuous(dev, 1);
-               return;
-       }
-       ehea_promiscuous(dev, 0);
+       ehea_promiscuous(dev, !!(dev->flags & IFF_PROMISC));
 
        if (dev->flags & IFF_ALLMULTI) {
                ehea_allmulti(dev, 1);