• Home
  • Raw
  • Download

Lines Matching refs:task

50 static int pm8001_find_tag(struct sas_task *task, u32 *tag)  in pm8001_find_tag()  argument
52 if (task->lldd_task) { in pm8001_find_tag()
54 ccb = task->lldd_task; in pm8001_find_tag()
317 u32 pm8001_get_ncq_tag(struct sas_task *task, u32 *tag) in pm8001_get_ncq_tag() argument
319 struct ata_queued_cmd *qc = task->uldd_task; in pm8001_get_ncq_tag()
399 struct sas_task *task = ccb->task; in pm8001_deliver_command() local
400 enum sas_protocol task_proto = task->task_proto; in pm8001_deliver_command()
401 struct sas_tmf_task *tmf = task->tmf; in pm8001_deliver_command()
430 int pm8001_queue_command(struct sas_task *task, gfp_t gfp_flags) in pm8001_queue_command() argument
432 struct task_status_struct *ts = &task->task_status; in pm8001_queue_command()
433 enum sas_protocol task_proto = task->task_proto; in pm8001_queue_command()
434 struct domain_device *dev = task->dev; in pm8001_queue_command()
436 bool internal_abort = sas_is_internal_abort(task); in pm8001_queue_command()
448 task->task_done(task); in pm8001_queue_command()
455 task->task_done(task); in pm8001_queue_command()
472 task->task_done(task); in pm8001_queue_command()
475 task->task_done(task); in pm8001_queue_command()
481 ccb = pm8001_ccb_alloc(pm8001_ha, pm8001_dev, task); in pm8001_queue_command()
488 if (task->num_scatter) { in pm8001_queue_command()
489 n_elem = dma_map_sg(pm8001_ha->dev, task->scatter, in pm8001_queue_command()
490 task->num_scatter, task->data_dir); in pm8001_queue_command()
497 n_elem = task->num_scatter; in pm8001_queue_command()
500 task->lldd_task = ccb; in pm8001_queue_command()
509 dma_unmap_sg(pm8001_ha->dev, task->scatter, in pm8001_queue_command()
510 task->num_scatter, task->data_dir); in pm8001_queue_command()
531 struct sas_task *task = ccb->task; in pm8001_ccb_task_free() local
535 if (!task) in pm8001_ccb_task_free()
538 if (!sas_protocol_ata(task->task_proto) && ccb->n_elem) in pm8001_ccb_task_free()
539 dma_unmap_sg(pm8001_ha->dev, task->scatter, in pm8001_ccb_task_free()
540 task->num_scatter, task->data_dir); in pm8001_ccb_task_free()
542 switch (task->task_proto) { in pm8001_ccb_task_free()
544 dma_unmap_sg(pm8001_ha->dev, &task->smp_task.smp_resp, 1, in pm8001_ccb_task_free()
546 dma_unmap_sg(pm8001_ha->dev, &task->smp_task.smp_req, 1, in pm8001_ccb_task_free()
558 if (sas_protocol_ata(task->task_proto)) { in pm8001_ccb_task_free()
560 qc = task->uldd_task; in pm8001_ccb_task_free()
569 task->lldd_task = NULL; in pm8001_ccb_task_free()
748 struct sas_task *task; in pm8001_open_reject_retry() local
768 task = ccb->task; in pm8001_open_reject_retry()
769 if (!task || !task->task_done) in pm8001_open_reject_retry()
771 if (task_to_close && (task != task_to_close)) in pm8001_open_reject_retry()
773 ts = &task->task_status; in pm8001_open_reject_retry()
780 spin_lock_irqsave(&task->task_state_lock, flags1); in pm8001_open_reject_retry()
781 task->task_state_flags &= ~SAS_TASK_STATE_PENDING; in pm8001_open_reject_retry()
782 task->task_state_flags |= SAS_TASK_STATE_DONE; in pm8001_open_reject_retry()
783 if (unlikely((task->task_state_flags in pm8001_open_reject_retry()
785 spin_unlock_irqrestore(&task->task_state_lock, in pm8001_open_reject_retry()
789 spin_unlock_irqrestore(&task->task_state_lock, in pm8001_open_reject_retry()
794 task->task_done(task); in pm8001_open_reject_retry()
952 int pm8001_query_task(struct sas_task *task) in pm8001_query_task() argument
956 if (unlikely(!task || !task->lldd_task || !task->dev)) in pm8001_query_task()
959 if (task->task_proto & SAS_PROTOCOL_SSP) { in pm8001_query_task()
960 struct scsi_cmnd *cmnd = task->uldd_task; in pm8001_query_task()
961 struct domain_device *dev = task->dev; in pm8001_query_task()
965 rc = pm8001_find_tag(task, &tag); in pm8001_query_task()
972 rc = sas_query_task(task, tag); in pm8001_query_task()
992 int pm8001_abort_task(struct sas_task *task) in pm8001_abort_task() argument
994 struct pm8001_ccb_info *ccb = task->lldd_task; in pm8001_abort_task()
1004 if (!task->lldd_task || !task->dev) in pm8001_abort_task()
1007 dev = task->dev; in pm8001_abort_task()
1018 ret = pm8001_find_tag(task, &tag); in pm8001_abort_task()
1020 pm8001_info(pm8001_ha, "no tag for task:%p\n", task); in pm8001_abort_task()
1023 spin_lock_irqsave(&task->task_state_lock, flags); in pm8001_abort_task()
1024 if (task->task_state_flags & SAS_TASK_STATE_DONE) { in pm8001_abort_task()
1025 spin_unlock_irqrestore(&task->task_state_lock, flags); in pm8001_abort_task()
1028 task->task_state_flags |= SAS_TASK_STATE_ABORTED; in pm8001_abort_task()
1029 if (task->slow_task == NULL) { in pm8001_abort_task()
1031 task->slow_task = &slow_task; in pm8001_abort_task()
1033 spin_unlock_irqrestore(&task->task_state_lock, flags); in pm8001_abort_task()
1034 if (task->task_proto & SAS_PROTOCOL_SSP) { in pm8001_abort_task()
1035 rc = sas_abort_task(task, tag); in pm8001_abort_task()
1037 } else if (task->task_proto & SAS_PROTOCOL_SATA || in pm8001_abort_task()
1038 task->task_proto & SAS_PROTOCOL_STP) { in pm8001_abort_task()
1113 &task->slow_task->completion, in pm8001_abort_task()
1131 ccb->task = NULL; in pm8001_abort_task()
1135 } else if (task->task_proto & SAS_PROTOCOL_SMP) { in pm8001_abort_task()
1141 spin_lock_irqsave(&task->task_state_lock, flags); in pm8001_abort_task()
1142 if (task->slow_task == &slow_task) in pm8001_abort_task()
1143 task->slow_task = NULL; in pm8001_abort_task()
1144 spin_unlock_irqrestore(&task->task_state_lock, flags); in pm8001_abort_task()
1189 void pm8001_tmf_aborted(struct sas_task *task) in pm8001_tmf_aborted() argument
1191 struct pm8001_ccb_info *ccb = task->lldd_task; in pm8001_tmf_aborted()
1194 ccb->task = NULL; in pm8001_tmf_aborted()