diff options
author | Jeff Skirvin <jeffrey.d.skirvin@intel.com> | 2011-06-20 23:08:51 +0200 |
---|---|---|
committer | Dan Williams <dan.j.williams@intel.com> | 2011-07-03 13:04:50 +0200 |
commit | ff717ab05f0c33f93514eccea6dfe1a15983e1d1 (patch) | |
tree | e5894d5bd8138ec1c56bcb6b754d04a862f86804 /drivers/scsi/isci/task.c | |
parent | isci: remove 'min memory' infrastructure (diff) | |
download | linux-ff717ab05f0c33f93514eccea6dfe1a15983e1d1.tar.xz linux-ff717ab05f0c33f93514eccea6dfe1a15983e1d1.zip |
isci: Move the reset delay after the remote node resumption.
Delay after bringing up the RNC to allow for resumption latency.
Signed-off-by: Jeff Skirvin <jeffrey.d.skirvin@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Diffstat (limited to 'drivers/scsi/isci/task.c')
-rw-r--r-- | drivers/scsi/isci/task.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/scsi/isci/task.c b/drivers/scsi/isci/task.c index b54ef2b0fca1..69f17b98e4fa 100644 --- a/drivers/scsi/isci/task.c +++ b/drivers/scsi/isci/task.c @@ -1433,15 +1433,17 @@ static int isci_reset_device(struct domain_device *dev, int hard_reset) isci_device_clear_reset_pending(ihost, idev); rc = sas_phy_reset(phy, hard_reset); - msleep(2000); /* just like mvsas */ /* Terminate in-progress I/O now. */ isci_remote_device_nuke_requests(ihost, idev); + /* Since all pending TCs have been cleaned, resume the RNC. */ spin_lock_irqsave(&ihost->scic_lock, flags); status = scic_remote_device_reset_complete(&idev->sci); spin_unlock_irqrestore(&ihost->scic_lock, flags); + msleep(2000); /* just like mvsas */ + if (status != SCI_SUCCESS) { dev_warn(&ihost->pdev->dev, "%s: scic_remote_device_reset_complete(%p) " |