static void asd_tmf_tasklet_complete(struct asd_ascb *ascb, struct done_list_struct *dl) { if (!del_timer(&ascb->timer)) return; ASD_DPRINTK("tmf tasklet complete\n"); if (dl->opcode == TC_SSP_RESP) ascb->uldd_task = (void *) (unsigned long) asd_get_tmf_resp_tasklet(ascb, dl); else ascb->uldd_task = (void *) 0xFF00 + (unsigned long) dl->opcode; complete(&ascb->completion); }
static void asd_tmf_tasklet_complete(struct asd_ascb *ascb, struct done_list_struct *dl) { struct tasklet_completion_status *tcs; if (!del_timer(&ascb->timer)) return; tcs = ascb->uldd_task; ASD_DPRINTK("tmf tasklet complete\n"); tcs->dl_opcode = dl->opcode; if (dl->opcode == TC_SSP_RESP) { tcs->tmf_state = asd_get_tmf_resp_tasklet(ascb, dl); tcs->tag_valid = ascb->tag_valid; tcs->tag = ascb->tag; } complete(ascb->completion); asd_ascb_free(ascb); }