mwl8k: use cond_resched() when loading firmware blocks
authorLennert Buytenhek <buytenh@wantstofly.org>
Thu, 22 Oct 2009 18:20:16 +0000 (20:20 +0200)
committerJohn W. Linville <linville@tuxdriver.com>
Wed, 4 Nov 2009 23:44:45 +0000 (18:44 -0500)
Since each firmware block takes on the order of several hundred usec
to upload to the hardware, using msleep in the inner loop would make
the firmware loading process take a lot more time than just doing
busy-waiting like we do now.  But if we keep the busy-waiting, we can
at least add a cond_resched() to the inner loop so that we give other
tasks a chance to run while the firmware is being loaded.

Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/mwl8k.c

index fcf7139..496d3c5 100644 (file)
@@ -12,6 +12,7 @@
 #include <linux/init.h>
 #include <linux/module.h>
 #include <linux/kernel.h>
+#include <linux/sched.h>
 #include <linux/spinlock.h>
 #include <linux/list.h>
 #include <linux/pci.h>
@@ -428,6 +429,7 @@ mwl8k_send_fw_load_cmd(struct mwl8k_priv *priv, void *data, int length)
                        break;
                }
 
+               cond_resched();
                udelay(1);
        } while (--loops);