]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - drivers/net/bnx2.c
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
[karo-tx-linux.git] / drivers / net / bnx2.c
index e1787a1e1e73530208cc77525f7a8a07a84cf677..2c52d2c7c4958594a0aa3b12fa1132ecc012e22d 100644 (file)
@@ -56,8 +56,8 @@
 
 #define DRV_MODULE_NAME                "bnx2"
 #define PFX DRV_MODULE_NAME    ": "
-#define DRV_MODULE_VERSION     "1.7.5"
-#define DRV_MODULE_RELDATE     "April 29, 2008"
+#define DRV_MODULE_VERSION     "1.7.6"
+#define DRV_MODULE_RELDATE     "May 16, 2008"
 
 #define RUN_AT(x) (jiffies + (x))
 
@@ -5664,14 +5664,12 @@ bnx2_reset_task(struct work_struct *work)
        if (!netif_running(bp->dev))
                return;
 
-       bp->in_reset_task = 1;
        bnx2_netif_stop(bp);
 
        bnx2_init_nic(bp, 1);
 
        atomic_set(&bp->intr_sem, 1);
        bnx2_netif_start(bp);
-       bp->in_reset_task = 0;
 }
 
 static void
@@ -5847,12 +5845,7 @@ bnx2_close(struct net_device *dev)
        struct bnx2 *bp = netdev_priv(dev);
        u32 reset_code;
 
-       /* Calling flush_scheduled_work() may deadlock because
-        * linkwatch_event() may be on the workqueue and it will try to get
-        * the rtnl_lock which we are holding.
-        */
-       while (bp->in_reset_task)
-               msleep(1);
+       cancel_work_sync(&bp->reset_task);
 
        bnx2_disable_int_sync(bp);
        bnx2_napi_disable(bp);