Commit 5412e25c authored by Jeff Skirvin's avatar Jeff Skirvin Committed by James Bottomley
Browse files

[SCSI] isci: No need to manage the pending reset bit on pending requests.



The lldd does not need to look at or manage the pending device
reset bit in pending sas_tasks.

Signed-off-by: default avatarJeff Skirvin <jeffrey.d.skirvin@intel.com>
Signed-off-by: default avatarDan Williams <dan.j.williams@intel.com>
Signed-off-by: default avatarJames Bottomley <JBottomley@Parallels.com>
parent 3b34c169
Loading
Loading
Loading
Loading
+0 −35
Original line number Diff line number Diff line
@@ -1438,38 +1438,3 @@ int isci_remote_device_found(struct domain_device *domain_dev)

	return status == SCI_SUCCESS ? 0 : -ENODEV;
}

/**
 * isci_device_clear_reset_pending() - This function will clear if any pending
 *    reset condition flags on the device.
 * @request: This parameter is the isci_device object.
 *
 * true if there is a reset pending for the device.
 */
void isci_device_clear_reset_pending(struct isci_host *ihost, struct isci_remote_device *idev)
{
	struct isci_request *isci_request;
	struct isci_request *tmp_req;
	unsigned long flags = 0;

	dev_dbg(&ihost->pdev->dev, "%s: idev=%p, ihost=%p\n",
		 __func__, idev, ihost);

	spin_lock_irqsave(&ihost->scic_lock, flags);

	/* Clear reset pending on all pending requests. */
	list_for_each_entry_safe(isci_request, tmp_req,
				 &idev->reqs_in_process, dev_node) {
		dev_dbg(&ihost->pdev->dev, "%s: idev = %p request = %p\n",
			 __func__, idev, isci_request);

		if (!test_bit(IREQ_TMF, &isci_request->flags)) {
			struct sas_task *task = isci_request_access_task(isci_request);

			spin_lock(&task->task_state_lock);
			task->task_state_flags &= ~SAS_TASK_NEED_DEV_RESET;
			spin_unlock(&task->task_state_lock);
		}
	}
	spin_unlock_irqrestore(&ihost->scic_lock, flags);
}
+1 −2
Original line number Diff line number Diff line
@@ -132,8 +132,7 @@ void isci_remote_device_nuke_requests(struct isci_host *ihost,
				      struct isci_remote_device *idev);
void isci_remote_device_gone(struct domain_device *domain_dev);
int isci_remote_device_found(struct domain_device *domain_dev);
void isci_device_clear_reset_pending(struct isci_host *ihost,
				     struct isci_remote_device *idev);

/**
 * sci_remote_device_stop() - This method will stop both transmission and
 *    reception of link activity for the supplied remote device.  This method
+0 −3
Original line number Diff line number Diff line
@@ -1570,9 +1570,6 @@ static int isci_reset_device(struct isci_host *ihost,
	}
	spin_unlock_irqrestore(&ihost->scic_lock, flags);

	/* Make sure all pending requests are able to be fully terminated. */
	isci_device_clear_reset_pending(ihost, idev);

	/* If this is a device on an expander, disable BCN processing. */
	if (!scsi_is_sas_phy_local(phy))
		set_bit(IPORT_BCN_BLOCKED, &iport->flags);