From: David Binder <david.bin...@unisys.com>

Changes the conditional logic by looking for the absence of work
to do, instead of the opposite.

Signed-off-by: David Binder <david.bin...@unisys.com>
Reviewed-by: Tim Sell <timothy.s...@unisys.com>
Signed-off-by: David Kershner <david.kersh...@unisys.com>
---
 drivers/staging/unisys/visornic/visornic_main.c | 41 +++++++++++++------------
 1 file changed, 22 insertions(+), 19 deletions(-)

diff --git a/drivers/staging/unisys/visornic/visornic_main.c 
b/drivers/staging/unisys/visornic/visornic_main.c
index fd7c9a6..992543a 100644
--- a/drivers/staging/unisys/visornic/visornic_main.c
+++ b/drivers/staging/unisys/visornic/visornic_main.c
@@ -1000,25 +1000,28 @@ visornic_set_multi(struct net_device *netdev)
        struct uiscmdrsp *cmdrsp;
        struct visornic_devdata *devdata = netdev_priv(netdev);
 
-       /* any filtering changes */
-       if (devdata->old_flags != netdev->flags) {
-               if ((netdev->flags & IFF_PROMISC) !=
-                   (devdata->old_flags & IFF_PROMISC)) {
-                       cmdrsp = kmalloc(SIZEOF_CMDRSP, GFP_ATOMIC);
-                       if (!cmdrsp)
-                               return;
-                       cmdrsp->cmdtype = CMD_NET_TYPE;
-                       cmdrsp->net.type = NET_RCV_PROMISC;
-                       cmdrsp->net.enbdis.context = netdev;
-                       cmdrsp->net.enbdis.enable =
-                               netdev->flags & IFF_PROMISC;
-                       visorchannel_signalinsert(devdata->dev->visorchannel,
-                                                 IOCHAN_TO_IOPART,
-                                                 cmdrsp);
-                       kfree(cmdrsp);
-               }
-               devdata->old_flags = netdev->flags;
-       }
+       if (devdata->old_flags == netdev->flags)
+               return;
+
+       if ((netdev->flags & IFF_PROMISC) ==
+           (devdata->old_flags & IFF_PROMISC))
+               goto out_save_flags;
+
+       cmdrsp = kmalloc(SIZEOF_CMDRSP, GFP_ATOMIC);
+       if (!cmdrsp)
+               return;
+       cmdrsp->cmdtype = CMD_NET_TYPE;
+       cmdrsp->net.type = NET_RCV_PROMISC;
+       cmdrsp->net.enbdis.context = netdev;
+       cmdrsp->net.enbdis.enable =
+               netdev->flags & IFF_PROMISC;
+       visorchannel_signalinsert(devdata->dev->visorchannel,
+                                 IOCHAN_TO_IOPART,
+                                 cmdrsp);
+       kfree(cmdrsp);
+
+out_save_flags:
+       devdata->old_flags = netdev->flags;
 }
 
 /**
-- 
1.9.1

_______________________________________________
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel

Reply via email to