Lines Matching refs:ascb
35 static int asd_enqueue_internal(struct asd_ascb *ascb, in asd_enqueue_internal() argument
42 ascb->tasklet_complete = tasklet_complete; in asd_enqueue_internal()
43 ascb->uldd_timer = 1; in asd_enqueue_internal()
45 ascb->timer.data = (unsigned long) ascb; in asd_enqueue_internal()
46 ascb->timer.function = timed_out; in asd_enqueue_internal()
47 ascb->timer.expires = jiffies + AIC94XX_SCB_TIMEOUT; in asd_enqueue_internal()
49 add_timer(&ascb->timer); in asd_enqueue_internal()
51 res = asd_post_ascb_list(ascb->ha, ascb, 1); in asd_enqueue_internal()
53 del_timer(&ascb->timer); in asd_enqueue_internal()
75 static void asd_clear_nexus_tasklet_complete(struct asd_ascb *ascb, in asd_clear_nexus_tasklet_complete() argument
78 struct tasklet_completion_status *tcs = ascb->uldd_task; in asd_clear_nexus_tasklet_complete()
80 if (!del_timer(&ascb->timer)) { in asd_clear_nexus_tasklet_complete()
86 complete(ascb->completion); in asd_clear_nexus_tasklet_complete()
87 asd_ascb_free(ascb); in asd_clear_nexus_tasklet_complete()
92 struct asd_ascb *ascb = (void *)data; in asd_clear_nexus_timedout() local
93 struct tasklet_completion_status *tcs = ascb->uldd_task; in asd_clear_nexus_timedout()
97 complete(ascb->completion); in asd_clear_nexus_timedout()
101 struct asd_ascb *ascb; \
109 ascb = asd_ascb_alloc_list(asd_ha, &res, GFP_KERNEL); \
110 if (!ascb) \
113 ascb->completion = &completion; \
114 ascb->uldd_task = &tcs; \
115 scb = ascb->scb; \
120 res = asd_enqueue_internal(ascb, asd_clear_nexus_tasklet_complete, \
131 asd_ascb_free(ascb); \
266 struct asd_ascb *ascb = (void *) data; in asd_tmf_timedout() local
267 struct tasklet_completion_status *tcs = ascb->uldd_task; in asd_tmf_timedout()
271 complete(ascb->completion); in asd_tmf_timedout()
274 static int asd_get_tmf_resp_tasklet(struct asd_ascb *ascb, in asd_get_tmf_resp_tasklet() argument
277 struct asd_ha_struct *asd_ha = ascb->ha; in asd_get_tmf_resp_tasklet()
305 ascb->tag = *(__be16 *)(edb->vaddr+4); in asd_get_tmf_resp_tasklet()
312 ascb->tag = fh->tag; in asd_get_tmf_resp_tasklet()
314 ascb->tag_valid = 1; in asd_get_tmf_resp_tasklet()
320 static void asd_tmf_tasklet_complete(struct asd_ascb *ascb, in asd_tmf_tasklet_complete() argument
325 if (!del_timer(&ascb->timer)) in asd_tmf_tasklet_complete()
328 tcs = ascb->uldd_task; in asd_tmf_tasklet_complete()
334 tcs->tmf_state = asd_get_tmf_resp_tasklet(ascb, dl); in asd_tmf_tasklet_complete()
335 tcs->tag_valid = ascb->tag_valid; in asd_tmf_tasklet_complete()
336 tcs->tag = ascb->tag; in asd_tmf_tasklet_complete()
339 complete(ascb->completion); in asd_tmf_tasklet_complete()
340 asd_ascb_free(ascb); in asd_tmf_tasklet_complete()
411 struct asd_ascb *ascb = NULL; in asd_abort_task() local
429 ascb = asd_ascb_alloc_list(asd_ha, &res, GFP_KERNEL); in asd_abort_task()
430 if (!ascb) in asd_abort_task()
433 ascb->uldd_task = &tcs; in asd_abort_task()
434 ascb->completion = &completion; in asd_abort_task()
435 scb = ascb->scb; in asd_abort_task()
474 res = asd_enqueue_internal(ascb, asd_tmf_tasklet_complete, in asd_abort_task()
555 asd_ascb_free(ascb); in asd_abort_task()
579 struct asd_ascb *ascb; in asd_initiate_ssp_tmf() local
588 ascb = asd_ascb_alloc_list(asd_ha, &res, GFP_KERNEL); in asd_initiate_ssp_tmf()
589 if (!ascb) in asd_initiate_ssp_tmf()
592 ascb->completion = &completion; in asd_initiate_ssp_tmf()
593 ascb->uldd_task = &tcs; in asd_initiate_ssp_tmf()
594 scb = ascb->scb; in asd_initiate_ssp_tmf()
622 res = asd_enqueue_internal(ascb, asd_tmf_tasklet_complete, in asd_initiate_ssp_tmf()
653 asd_ascb_free(ascb); in asd_initiate_ssp_tmf()
705 struct asd_ascb *ascb = task->lldd_task; in asd_query_task() local
708 if (ascb) { in asd_query_task()
709 index = ascb->tc_index; in asd_query_task()