Lines Matching refs:task
233 static int asd_clear_nexus_tag(struct sas_task *task) in asd_clear_nexus_tag() argument
235 struct asd_ha_struct *asd_ha = task->dev->port->ha->lldd_ha; in asd_clear_nexus_tag()
236 struct asd_ascb *tascb = task->lldd_task; in asd_clear_nexus_tag()
240 memcpy(scb->clear_nexus.ssp_task.lun, task->ssp_task.LUN, 8); in asd_clear_nexus_tag()
242 if (task->dev->tproto) in asd_clear_nexus_tag()
244 task->dev->lldd_dev); in asd_clear_nexus_tag()
248 static int asd_clear_nexus_index(struct sas_task *task) in asd_clear_nexus_index() argument
250 struct asd_ha_struct *asd_ha = task->dev->port->ha->lldd_ha; in asd_clear_nexus_index()
251 struct asd_ascb *tascb = task->lldd_task; in asd_clear_nexus_index()
255 if (task->dev->tproto) in asd_clear_nexus_index()
257 task->dev->lldd_dev); in asd_clear_nexus_index()
343 static int asd_clear_nexus(struct sas_task *task) in asd_clear_nexus() argument
347 struct asd_ascb *tascb = task->lldd_task; in asd_clear_nexus()
355 res = asd_clear_nexus_tag(task); in asd_clear_nexus()
357 res = asd_clear_nexus_index(task); in asd_clear_nexus()
362 spin_lock_irqsave(&task->task_state_lock, flags); in asd_clear_nexus()
365 if (task->task_state_flags & SAS_TASK_STATE_DONE) in asd_clear_nexus()
367 spin_unlock_irqrestore(&task->task_state_lock, flags); in asd_clear_nexus()
405 int asd_abort_task(struct sas_task *task) in asd_abort_task() argument
407 struct asd_ascb *tascb = task->lldd_task; in asd_abort_task()
420 spin_lock_irqsave(&task->task_state_lock, flags); in asd_abort_task()
421 if (task->task_state_flags & SAS_TASK_STATE_DONE) { in asd_abort_task()
422 spin_unlock_irqrestore(&task->task_state_lock, flags); in asd_abort_task()
424 ASD_DPRINTK("%s: task 0x%p done\n", __func__, task); in asd_abort_task()
427 spin_unlock_irqrestore(&task->task_state_lock, flags); in asd_abort_task()
438 switch (task->task_proto) { in asd_abort_task()
445 scb->abort_task.proto_conn_rate |= task->dev->linkrate; in asd_abort_task()
453 if (task->task_proto == SAS_PROTOCOL_SSP) { in asd_abort_task()
456 task->dev->hashed_sas_addr, HASHED_SAS_ADDR_SIZE); in asd_abort_task()
458 task->dev->port->ha->hashed_sas_addr, in asd_abort_task()
462 memcpy(scb->abort_task.ssp_task.lun, task->ssp_task.LUN, 8); in asd_abort_task()
469 (u16)(unsigned long)task->dev->lldd_dev); in asd_abort_task()
484 spin_lock_irqsave(&task->task_state_lock, flags); in asd_abort_task()
485 if (task->task_state_flags & SAS_TASK_STATE_DONE) { in asd_abort_task()
486 spin_unlock_irqrestore(&task->task_state_lock, flags); in asd_abort_task()
488 ASD_DPRINTK("%s: task 0x%p done\n", __func__, task); in asd_abort_task()
491 spin_unlock_irqrestore(&task->task_state_lock, flags); in asd_abort_task()
497 res = asd_clear_nexus(task); in asd_abort_task()
511 res = asd_clear_nexus(task); in asd_abort_task()
527 spin_lock_irqsave(&task->task_state_lock, flags); in asd_abort_task()
530 if (task->task_state_flags & SAS_TASK_STATE_DONE) in asd_abort_task()
532 spin_unlock_irqrestore(&task->task_state_lock, flags); in asd_abort_task()
547 task->lldd_task = NULL; in asd_abort_task()
551 ASD_DPRINTK("task 0x%p aborted, res: 0x%x\n", task, res); in asd_abort_task()
556 ASD_DPRINTK("task 0x%p aborted, res: 0x%x\n", task, res); in asd_abort_task()
703 int asd_query_task(struct sas_task *task) in asd_query_task() argument
705 struct asd_ascb *ascb = task->lldd_task; in asd_query_task()
710 return asd_initiate_ssp_tmf(task->dev, task->ssp_task.LUN, in asd_query_task()