void (*tmf_sent_cb)(enum isci_tmf_cb_state,
struct isci_tmf *,
void *),
- struct isci_request *old_request)
+ void *cb_data)
{
dev_dbg(&isci_device->isci_port->isci_host->pdev->dev,
"%s: isci_device = %p\n", __func__, isci_device);
tmf->tmf_code = code;
tmf->timeout_timer = NULL;
tmf->cb_state_func = tmf_sent_cb;
- tmf->cb_data = old_request;
- tmf->io_tag = old_request->io_tag;
+ tmf->cb_data = cb_data;
+}
+void isci_task_build_abort_task_tmf(
+ struct isci_tmf *tmf,
+ struct isci_remote_device *isci_device,
+ enum isci_tmf_function_codes code,
+ void (*tmf_sent_cb)(enum isci_tmf_cb_state,
+ struct isci_tmf *,
+ void *),
+ struct isci_request *old_request)
+{
+ isci_task_build_tmf(tmf, isci_device, code, tmf_sent_cb,
+ (void *)old_request);
+ tmf->io_tag = old_request->io_tag;
}
static struct isci_request *isci_task_get_request_from_task(
*/
} else {
/* Fill in the tmf stucture */
- isci_task_build_tmf(&tmf, isci_device, isci_tmf_ssp_task_abort,
- isci_abort_task_process_cb, old_request);
+ isci_task_build_abort_task_tmf(&tmf, isci_device,
+ isci_tmf_ssp_task_abort,
+ isci_abort_task_process_cb,
+ old_request);
spin_unlock_irqrestore(&isci_host->scic_lock, flags);
int isci_bus_reset_handler(struct scsi_cmnd *cmd);
void isci_task_build_tmf(
+ struct isci_tmf *tmf,
+ struct isci_remote_device *isci_device,
+ enum isci_tmf_function_codes code,
+ void (*tmf_sent_cb)(enum isci_tmf_cb_state,
+ struct isci_tmf *,
+ void *),
+ void *cb_data);
+
+void isci_task_build_abort_task_tmf(
struct isci_tmf *tmf,
struct isci_remote_device *isci_device,
enum isci_tmf_function_codes code,