aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBryan O'Sullivan <bos@pathscale.com>2007-03-15 17:45:11 -0400
committerRoland Dreier <rolandd@cisco.com>2007-04-18 23:20:59 -0400
commit53c1d2c943a67fb129ed2797182305a4633531fb (patch)
tree2737589ac0d427d95cf8b62cebd0844b9b3cb098
parent490462c2686df6e35c21d1efe935e0b4a3bddb39 (diff)
IB/ipath: Disable IB link earlier in shutdown sequence
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>
-rw-r--r--drivers/infiniband/hw/ipath/ipath_driver.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/infiniband/hw/ipath/ipath_driver.c b/drivers/infiniband/hw/ipath/ipath_driver.c
index 13b9785e684c..e3a223209710 100644
--- a/drivers/infiniband/hw/ipath/ipath_driver.c
+++ b/drivers/infiniband/hw/ipath/ipath_driver.c
@@ -536,8 +536,6 @@ static void __devexit cleanup_device(struct ipath_devdata *dd)
536{ 536{
537 int port; 537 int port;
538 538
539 ipath_shutdown_device(dd);
540
541 if (*dd->ipath_statusp & IPATH_STATUS_CHIP_PRESENT) { 539 if (*dd->ipath_statusp & IPATH_STATUS_CHIP_PRESENT) {
542 /* can't do anything more with chip; needs re-init */ 540 /* can't do anything more with chip; needs re-init */
543 *dd->ipath_statusp &= ~IPATH_STATUS_CHIP_PRESENT; 541 *dd->ipath_statusp &= ~IPATH_STATUS_CHIP_PRESENT;
@@ -634,6 +632,12 @@ static void __devexit ipath_remove_one(struct pci_dev *pdev)
634 632
635 ipath_cdbg(VERBOSE, "removing, pdev=%p, dd=%p\n", pdev, dd); 633 ipath_cdbg(VERBOSE, "removing, pdev=%p, dd=%p\n", pdev, dd);
636 634
635 /*
636 * disable the IB link early, to be sure no new packets arrive, which
637 * complicates the shutdown process
638 */
639 ipath_shutdown_device(dd);
640
637 if (dd->verbs_dev) 641 if (dd->verbs_dev)
638 ipath_unregister_ib_device(dd->verbs_dev); 642 ipath_unregister_ib_device(dd->verbs_dev);
639 643