summaryrefslogtreecommitdiffstats
path: root/drivers/scsi/isci
diff options
context:
space:
mode:
authorJeff Skirvin <jeffrey.d.skirvin@intel.com>2011-06-20 14:08:51 -0700
committerDan Williams <dan.j.williams@intel.com>2011-07-03 04:04:50 -0700
commitff717ab05f0c33f93514eccea6dfe1a15983e1d1 (patch)
treee5894d5bd8138ec1c56bcb6b754d04a862f86804 /drivers/scsi/isci
parent7c78da3175177c905a75c54b5830029c778494ea (diff)
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')
-rw-r--r--drivers/scsi/isci/task.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/scsi/isci/task.c b/drivers/scsi/isci/task.c
index b54ef2b0fca..69f17b98e4f 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) "