IB/ipath: Disable IB link earlier in shutdown sequence
authorBryan O'Sullivan <bos@pathscale.com>
Thu, 15 Mar 2007 21:45:11 +0000 (14:45 -0700)
committerRoland Dreier <rolandd@cisco.com>
Thu, 19 Apr 2007 03:20:59 +0000 (20:20 -0700)
Move the code that shuts down the IB link earlier in the unload
process, to be sure no new packets can arrive while we are unloading.

Signed-off-by: Dave Olson <dave.olson@qlogic.com>
Signed-off-by: Bryan O'Sullivan <bryan.osullivan@qlogic.com>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
drivers/infiniband/hw/ipath/ipath_driver.c

index 13b9785e684cdb93dc5db4f107d48096b062e524..e3a223209710bd7fa81a13798d18a8cb253f80be 100644 (file)
@@ -536,8 +536,6 @@ static void __devexit cleanup_device(struct ipath_devdata *dd)
 {
        int port;
 
-       ipath_shutdown_device(dd);
-
        if (*dd->ipath_statusp & IPATH_STATUS_CHIP_PRESENT) {
                /* can't do anything more with chip; needs re-init */
                *dd->ipath_statusp &= ~IPATH_STATUS_CHIP_PRESENT;
@@ -634,6 +632,12 @@ static void __devexit ipath_remove_one(struct pci_dev *pdev)
 
        ipath_cdbg(VERBOSE, "removing, pdev=%p, dd=%p\n", pdev, dd);
 
+       /*
+        * disable the IB link early, to be sure no new packets arrive, which
+        * complicates the shutdown process
+        */
+       ipath_shutdown_device(dd);
+
        if (dd->verbs_dev)
                ipath_unregister_ib_device(dd->verbs_dev);