Commit 1fad9e93 authored by Jeff Skirvin's avatar Jeff Skirvin Committed by Dan Williams
Browse files

isci: save the i/o tag outside the scic request structure.



The pointer to the core representation of a request is marked NULL at
completion, but we need to save the i/o tag for task management.

Signed-off-by: default avatarJeff Skirvin <jeffrey.d.skirvin@intel.com>
Signed-off-by: default avatarJacek Danecki <Jacek.Danecki@intel.com>
[revise changelog]
Signed-off-by: default avatarDan Williams <dan.j.williams@intel.com>
parent ec6c9638
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -463,6 +463,12 @@ int isci_request_execute(
				 */
				status = SCI_SUCCESS;
			}
			else
				/* Save the tag for possible task mgmt later. */
				request->io_tag = scic_io_request_get_io_tag(
						     request->sci_request_handle);


		} else
			dev_warn(&isci_host->pdev->dev,
				 "%s: failed request start\n",
+4 −6
Original line number Diff line number Diff line
@@ -544,7 +544,7 @@ void isci_task_build_tmf(
	void (*tmf_sent_cb)(enum isci_tmf_cb_state,
			    struct isci_tmf *,
			    void *),
	void *cb_data)
	struct isci_request *old_request)
{
	dev_dbg(&isci_device->isci_port->isci_host->pdev->dev,
		"%s: isci_device = %p\n", __func__, isci_device);
@@ -555,7 +555,9 @@ void isci_task_build_tmf(
	tmf->tmf_code      = code;
	tmf->timeout_timer = NULL;
	tmf->cb_state_func = tmf_sent_cb;
	tmf->cb_data       = cb_data;
	tmf->cb_data       = old_request;
	tmf->io_tag        = old_request->io_tag;

}

static struct isci_request *isci_task_get_request_from_task(
@@ -1248,10 +1250,6 @@ int isci_task_abort_task(struct sas_task *task)
		isci_task_build_tmf(&tmf, isci_device, isci_tmf_ssp_task_abort,
				    isci_abort_task_process_cb, old_request);

		tmf.io_tag = scic_io_request_get_io_tag(
			old_request->sci_request_handle
			);

		spin_unlock_irqrestore(&isci_host->scic_lock, flags);

		#define ISCI_ABORT_TASK_TIMEOUT_MS 500 /* half second timeout. */
+1 −1
Original line number Diff line number Diff line
@@ -224,7 +224,7 @@ void isci_task_build_tmf(
	void (*tmf_sent_cb)(
		enum isci_tmf_cb_state,
		struct isci_tmf *, void *),
	void *cb_data);
	struct isci_request *old_request);

int isci_task_execute_tmf(
	struct isci_host *isci_host,