be2net: replace udelay() with schedule_timeout() in mbox polling
authorSathya Perla <sathyap@serverengines.com>
Sun, 30 May 2010 23:34:14 +0000 (23:34 +0000)
committerDavid S. Miller <davem@davemloft.net>
Tue, 1 Jun 2010 07:15:52 +0000 (00:15 -0700)
As mbox polling is done only in process context, it is better to
use schedule_timeout() instead of udelay().

Signed-off-by: Sathya Perla <sathyap@serverengines.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/benet/be_cmds.c

index 9e305d7fb4bdb8623cc29a6633b61b2fa56c2187..ce437b639cf8c8d8bcfb18e505b9cd9bb833ca8c 100644 (file)
@@ -186,7 +186,7 @@ static int be_mcc_notify_wait(struct be_adapter *adapter)
 
 static int be_mbox_db_ready_wait(struct be_adapter *adapter, void __iomem *db)
 {
-       int cnt = 0, wait = 5;
+       int msecs = 0;
        u32 ready;
 
        do {
@@ -201,15 +201,14 @@ static int be_mbox_db_ready_wait(struct be_adapter *adapter, void __iomem *db)
                if (ready)
                        break;
 
-               if (cnt > 4000000) {
+               if (msecs > 4000) {
                        dev_err(&adapter->pdev->dev, "mbox poll timed out\n");
                        return -1;
                }
 
-               if (cnt > 50)
-                       wait = 200;
-               cnt += wait;
-               udelay(wait);
+               set_current_state(TASK_INTERRUPTIBLE);
+               schedule_timeout(msecs_to_jiffies(1));
+               msecs++;
        } while (true);
 
        return 0;