Lines Matching refs:tskim
262 static bfa_boolean_t bfa_tskim_match_scope(struct bfa_tskim_s *tskim,
264 static void bfa_tskim_gather_ios(struct bfa_tskim_s *tskim);
266 static void bfa_tskim_cleanup_ios(struct bfa_tskim_s *tskim);
267 static bfa_boolean_t bfa_tskim_send(struct bfa_tskim_s *tskim);
268 static bfa_boolean_t bfa_tskim_send_abort(struct bfa_tskim_s *tskim);
269 static void bfa_tskim_iocdisable_ios(struct bfa_tskim_s *tskim);
274 static void bfa_tskim_sm_uninit(struct bfa_tskim_s *tskim,
276 static void bfa_tskim_sm_active(struct bfa_tskim_s *tskim,
278 static void bfa_tskim_sm_cleanup(struct bfa_tskim_s *tskim,
280 static void bfa_tskim_sm_iocleanup(struct bfa_tskim_s *tskim,
282 static void bfa_tskim_sm_qfull(struct bfa_tskim_s *tskim,
284 static void bfa_tskim_sm_cleanup_qfull(struct bfa_tskim_s *tskim,
286 static void bfa_tskim_sm_hcb(struct bfa_tskim_s *tskim,
975 struct bfa_tskim_s *tskim; in bfa_itnim_iocdisable_cleanup() local
980 tskim = (struct bfa_tskim_s *) qe; in bfa_itnim_iocdisable_cleanup()
981 bfa_tskim_iocdisable(tskim); in bfa_itnim_iocdisable_cleanup()
1022 struct bfa_tskim_s *tskim; in bfa_itnim_cleanup() local
1042 tskim = (struct bfa_tskim_s *) qe; in bfa_itnim_cleanup()
1044 bfa_tskim_cleanup(tskim); in bfa_itnim_cleanup()
2690 if (!ioim->iosp->tskim) { in bfa_ioim_notify_cleanup()
2698 bfa_wc_down(&ioim->iosp->tskim->wc); in bfa_ioim_notify_cleanup()
2901 ioim->iosp->tskim = NULL; in bfa_ioim_cleanup()
2906 bfa_ioim_cleanup_tm(struct bfa_ioim_s *ioim, struct bfa_tskim_s *tskim) in bfa_ioim_cleanup_tm() argument
2911 ioim->iosp->tskim = tskim; in bfa_ioim_cleanup_tm()
3038 bfa_tskim_sm_uninit(struct bfa_tskim_s *tskim, enum bfa_tskim_event event) in bfa_tskim_sm_uninit() argument
3040 bfa_trc(tskim->bfa, tskim->tsk_tag << 16 | event); in bfa_tskim_sm_uninit()
3044 bfa_sm_set_state(tskim, bfa_tskim_sm_active); in bfa_tskim_sm_uninit()
3045 bfa_tskim_gather_ios(tskim); in bfa_tskim_sm_uninit()
3051 if (!bfa_itnim_is_online(tskim->itnim)) { in bfa_tskim_sm_uninit()
3052 bfa_sm_set_state(tskim, bfa_tskim_sm_iocleanup); in bfa_tskim_sm_uninit()
3053 tskim->tsk_status = BFI_TSKIM_STS_OK; in bfa_tskim_sm_uninit()
3054 bfa_tskim_cleanup_ios(tskim); in bfa_tskim_sm_uninit()
3058 if (!bfa_tskim_send(tskim)) { in bfa_tskim_sm_uninit()
3059 bfa_sm_set_state(tskim, bfa_tskim_sm_qfull); in bfa_tskim_sm_uninit()
3060 bfa_stats(tskim->itnim, tm_qwait); in bfa_tskim_sm_uninit()
3061 bfa_reqq_wait(tskim->bfa, tskim->itnim->reqq, in bfa_tskim_sm_uninit()
3062 &tskim->reqq_wait); in bfa_tskim_sm_uninit()
3067 bfa_sm_fault(tskim->bfa, event); in bfa_tskim_sm_uninit()
3076 bfa_tskim_sm_active(struct bfa_tskim_s *tskim, enum bfa_tskim_event event) in bfa_tskim_sm_active() argument
3078 bfa_trc(tskim->bfa, tskim->tsk_tag << 16 | event); in bfa_tskim_sm_active()
3082 bfa_sm_set_state(tskim, bfa_tskim_sm_iocleanup); in bfa_tskim_sm_active()
3083 bfa_tskim_cleanup_ios(tskim); in bfa_tskim_sm_active()
3087 bfa_sm_set_state(tskim, bfa_tskim_sm_cleanup); in bfa_tskim_sm_active()
3088 if (!bfa_tskim_send_abort(tskim)) { in bfa_tskim_sm_active()
3089 bfa_sm_set_state(tskim, bfa_tskim_sm_cleanup_qfull); in bfa_tskim_sm_active()
3090 bfa_stats(tskim->itnim, tm_qwait); in bfa_tskim_sm_active()
3091 bfa_reqq_wait(tskim->bfa, tskim->itnim->reqq, in bfa_tskim_sm_active()
3092 &tskim->reqq_wait); in bfa_tskim_sm_active()
3097 bfa_sm_set_state(tskim, bfa_tskim_sm_hcb); in bfa_tskim_sm_active()
3098 bfa_tskim_iocdisable_ios(tskim); in bfa_tskim_sm_active()
3099 bfa_tskim_qcomp(tskim, __bfa_cb_tskim_failed); in bfa_tskim_sm_active()
3103 bfa_sm_fault(tskim->bfa, event); in bfa_tskim_sm_active()
3112 bfa_tskim_sm_cleanup(struct bfa_tskim_s *tskim, enum bfa_tskim_event event) in bfa_tskim_sm_cleanup() argument
3114 bfa_trc(tskim->bfa, tskim->tsk_tag << 16 | event); in bfa_tskim_sm_cleanup()
3125 bfa_sm_set_state(tskim, bfa_tskim_sm_iocleanup); in bfa_tskim_sm_cleanup()
3126 bfa_tskim_cleanup_ios(tskim); in bfa_tskim_sm_cleanup()
3130 bfa_sm_set_state(tskim, bfa_tskim_sm_hcb); in bfa_tskim_sm_cleanup()
3131 bfa_tskim_iocdisable_ios(tskim); in bfa_tskim_sm_cleanup()
3132 bfa_tskim_qcomp(tskim, __bfa_cb_tskim_failed); in bfa_tskim_sm_cleanup()
3136 bfa_sm_fault(tskim->bfa, event); in bfa_tskim_sm_cleanup()
3141 bfa_tskim_sm_iocleanup(struct bfa_tskim_s *tskim, enum bfa_tskim_event event) in bfa_tskim_sm_iocleanup() argument
3143 bfa_trc(tskim->bfa, tskim->tsk_tag << 16 | event); in bfa_tskim_sm_iocleanup()
3147 bfa_sm_set_state(tskim, bfa_tskim_sm_hcb); in bfa_tskim_sm_iocleanup()
3148 bfa_tskim_qcomp(tskim, __bfa_cb_tskim_done); in bfa_tskim_sm_iocleanup()
3159 bfa_sm_set_state(tskim, bfa_tskim_sm_hcb); in bfa_tskim_sm_iocleanup()
3160 bfa_tskim_iocdisable_ios(tskim); in bfa_tskim_sm_iocleanup()
3161 bfa_tskim_qcomp(tskim, __bfa_cb_tskim_failed); in bfa_tskim_sm_iocleanup()
3165 bfa_sm_fault(tskim->bfa, event); in bfa_tskim_sm_iocleanup()
3173 bfa_tskim_sm_qfull(struct bfa_tskim_s *tskim, enum bfa_tskim_event event) in bfa_tskim_sm_qfull() argument
3175 bfa_trc(tskim->bfa, tskim->tsk_tag << 16 | event); in bfa_tskim_sm_qfull()
3179 bfa_sm_set_state(tskim, bfa_tskim_sm_active); in bfa_tskim_sm_qfull()
3180 bfa_tskim_send(tskim); in bfa_tskim_sm_qfull()
3187 bfa_sm_set_state(tskim, bfa_tskim_sm_iocleanup); in bfa_tskim_sm_qfull()
3188 bfa_reqq_wcancel(&tskim->reqq_wait); in bfa_tskim_sm_qfull()
3189 bfa_tskim_cleanup_ios(tskim); in bfa_tskim_sm_qfull()
3193 bfa_sm_set_state(tskim, bfa_tskim_sm_hcb); in bfa_tskim_sm_qfull()
3194 bfa_reqq_wcancel(&tskim->reqq_wait); in bfa_tskim_sm_qfull()
3195 bfa_tskim_iocdisable_ios(tskim); in bfa_tskim_sm_qfull()
3196 bfa_tskim_qcomp(tskim, __bfa_cb_tskim_failed); in bfa_tskim_sm_qfull()
3200 bfa_sm_fault(tskim->bfa, event); in bfa_tskim_sm_qfull()
3209 bfa_tskim_sm_cleanup_qfull(struct bfa_tskim_s *tskim, in bfa_tskim_sm_cleanup_qfull() argument
3212 bfa_trc(tskim->bfa, tskim->tsk_tag << 16 | event); in bfa_tskim_sm_cleanup_qfull()
3216 bfa_reqq_wcancel(&tskim->reqq_wait); in bfa_tskim_sm_cleanup_qfull()
3221 bfa_sm_set_state(tskim, bfa_tskim_sm_cleanup); in bfa_tskim_sm_cleanup_qfull()
3222 bfa_tskim_send_abort(tskim); in bfa_tskim_sm_cleanup_qfull()
3226 bfa_sm_set_state(tskim, bfa_tskim_sm_hcb); in bfa_tskim_sm_cleanup_qfull()
3227 bfa_reqq_wcancel(&tskim->reqq_wait); in bfa_tskim_sm_cleanup_qfull()
3228 bfa_tskim_iocdisable_ios(tskim); in bfa_tskim_sm_cleanup_qfull()
3229 bfa_tskim_qcomp(tskim, __bfa_cb_tskim_failed); in bfa_tskim_sm_cleanup_qfull()
3233 bfa_sm_fault(tskim->bfa, event); in bfa_tskim_sm_cleanup_qfull()
3241 bfa_tskim_sm_hcb(struct bfa_tskim_s *tskim, enum bfa_tskim_event event) in bfa_tskim_sm_hcb() argument
3243 bfa_trc(tskim->bfa, tskim->tsk_tag << 16 | event); in bfa_tskim_sm_hcb()
3247 bfa_sm_set_state(tskim, bfa_tskim_sm_uninit); in bfa_tskim_sm_hcb()
3248 bfa_tskim_free(tskim); in bfa_tskim_sm_hcb()
3252 bfa_tskim_notify_comp(tskim); in bfa_tskim_sm_hcb()
3259 bfa_sm_fault(tskim->bfa, event); in bfa_tskim_sm_hcb()
3266 struct bfa_tskim_s *tskim = cbarg; in __bfa_cb_tskim_done() local
3269 bfa_sm_send_event(tskim, BFA_TSKIM_SM_HCB); in __bfa_cb_tskim_done()
3273 bfa_stats(tskim->itnim, tm_success); in __bfa_cb_tskim_done()
3274 bfa_cb_tskim_done(tskim->bfa->bfad, tskim->dtsk, tskim->tsk_status); in __bfa_cb_tskim_done()
3280 struct bfa_tskim_s *tskim = cbarg; in __bfa_cb_tskim_failed() local
3283 bfa_sm_send_event(tskim, BFA_TSKIM_SM_HCB); in __bfa_cb_tskim_failed()
3287 bfa_stats(tskim->itnim, tm_failures); in __bfa_cb_tskim_failed()
3288 bfa_cb_tskim_done(tskim->bfa->bfad, tskim->dtsk, in __bfa_cb_tskim_failed()
3293 bfa_tskim_match_scope(struct bfa_tskim_s *tskim, struct scsi_lun lun) in bfa_tskim_match_scope() argument
3295 switch (tskim->tm_cmnd) { in bfa_tskim_match_scope()
3303 return !memcmp(&tskim->lun, &lun, sizeof(lun)); in bfa_tskim_match_scope()
3316 bfa_tskim_gather_ios(struct bfa_tskim_s *tskim) in bfa_tskim_gather_ios() argument
3318 struct bfa_itnim_s *itnim = tskim->itnim; in bfa_tskim_gather_ios()
3324 INIT_LIST_HEAD(&tskim->io_q); in bfa_tskim_gather_ios()
3333 if (bfa_tskim_match_scope(tskim, scsilun)) { in bfa_tskim_gather_ios()
3335 list_add_tail(&ioim->qe, &tskim->io_q); in bfa_tskim_gather_ios()
3346 if (bfa_tskim_match_scope(tskim, scsilun)) { in bfa_tskim_gather_ios()
3360 struct bfa_tskim_s *tskim = tskim_cbarg; in bfa_tskim_cleanp_comp() local
3362 bfa_stats(tskim->itnim, tm_io_comps); in bfa_tskim_cleanp_comp()
3363 bfa_sm_send_event(tskim, BFA_TSKIM_SM_IOS_DONE); in bfa_tskim_cleanp_comp()
3370 bfa_tskim_cleanup_ios(struct bfa_tskim_s *tskim) in bfa_tskim_cleanup_ios() argument
3375 bfa_wc_init(&tskim->wc, bfa_tskim_cleanp_comp, tskim); in bfa_tskim_cleanup_ios()
3377 list_for_each_safe(qe, qen, &tskim->io_q) { in bfa_tskim_cleanup_ios()
3379 bfa_wc_up(&tskim->wc); in bfa_tskim_cleanup_ios()
3380 bfa_ioim_cleanup_tm(ioim, tskim); in bfa_tskim_cleanup_ios()
3383 bfa_wc_wait(&tskim->wc); in bfa_tskim_cleanup_ios()
3390 bfa_tskim_send(struct bfa_tskim_s *tskim) in bfa_tskim_send() argument
3392 struct bfa_itnim_s *itnim = tskim->itnim; in bfa_tskim_send()
3398 m = bfa_reqq_next(tskim->bfa, itnim->reqq); in bfa_tskim_send()
3406 bfa_fn_lpu(tskim->bfa)); in bfa_tskim_send()
3408 m->tsk_tag = cpu_to_be16(tskim->tsk_tag); in bfa_tskim_send()
3409 m->itn_fhdl = tskim->itnim->rport->fw_handle; in bfa_tskim_send()
3410 m->t_secs = tskim->tsecs; in bfa_tskim_send()
3411 m->lun = tskim->lun; in bfa_tskim_send()
3412 m->tm_flags = tskim->tm_cmnd; in bfa_tskim_send()
3417 bfa_reqq_produce(tskim->bfa, itnim->reqq, m->mh); in bfa_tskim_send()
3425 bfa_tskim_send_abort(struct bfa_tskim_s *tskim) in bfa_tskim_send_abort() argument
3427 struct bfa_itnim_s *itnim = tskim->itnim; in bfa_tskim_send_abort()
3433 m = bfa_reqq_next(tskim->bfa, itnim->reqq); in bfa_tskim_send_abort()
3441 bfa_fn_lpu(tskim->bfa)); in bfa_tskim_send_abort()
3443 m->tsk_tag = cpu_to_be16(tskim->tsk_tag); in bfa_tskim_send_abort()
3448 bfa_reqq_produce(tskim->bfa, itnim->reqq, m->mh); in bfa_tskim_send_abort()
3458 struct bfa_tskim_s *tskim = cbarg; in bfa_tskim_qresume() local
3460 bfa_stats(tskim->itnim, tm_qresumes); in bfa_tskim_qresume()
3461 bfa_sm_send_event(tskim, BFA_TSKIM_SM_QRESUME); in bfa_tskim_qresume()
3468 bfa_tskim_iocdisable_ios(struct bfa_tskim_s *tskim) in bfa_tskim_iocdisable_ios() argument
3473 list_for_each_safe(qe, qen, &tskim->io_q) { in bfa_tskim_iocdisable_ios()
3483 bfa_tskim_iodone(struct bfa_tskim_s *tskim) in bfa_tskim_iodone() argument
3485 bfa_wc_down(&tskim->wc); in bfa_tskim_iodone()
3492 bfa_tskim_iocdisable(struct bfa_tskim_s *tskim) in bfa_tskim_iocdisable() argument
3494 tskim->notify = BFA_FALSE; in bfa_tskim_iocdisable()
3495 bfa_stats(tskim->itnim, tm_iocdowns); in bfa_tskim_iocdisable()
3496 bfa_sm_send_event(tskim, BFA_TSKIM_SM_HWFAIL); in bfa_tskim_iocdisable()
3503 bfa_tskim_cleanup(struct bfa_tskim_s *tskim) in bfa_tskim_cleanup() argument
3505 tskim->notify = BFA_TRUE; in bfa_tskim_cleanup()
3506 bfa_stats(tskim->itnim, tm_cleanups); in bfa_tskim_cleanup()
3507 bfa_sm_send_event(tskim, BFA_TSKIM_SM_CLEANUP); in bfa_tskim_cleanup()
3516 struct bfa_tskim_s *tskim; in bfa_tskim_attach() local
3523 tskim = (struct bfa_tskim_s *) bfa_mem_kva_curp(fcp); in bfa_tskim_attach()
3524 fcpim->tskim_arr = tskim; in bfa_tskim_attach()
3526 for (i = 0; i < fcpim->num_tskim_reqs; i++, tskim++) { in bfa_tskim_attach()
3530 memset(tskim, 0, sizeof(struct bfa_tskim_s)); in bfa_tskim_attach()
3531 tskim->tsk_tag = i; in bfa_tskim_attach()
3532 tskim->bfa = fcpim->bfa; in bfa_tskim_attach()
3533 tskim->fcpim = fcpim; in bfa_tskim_attach()
3534 tskim->notify = BFA_FALSE; in bfa_tskim_attach()
3535 bfa_reqq_winit(&tskim->reqq_wait, bfa_tskim_qresume, in bfa_tskim_attach()
3536 tskim); in bfa_tskim_attach()
3537 bfa_sm_set_state(tskim, bfa_tskim_sm_uninit); in bfa_tskim_attach()
3539 list_add_tail(&tskim->qe, &fcpim->tskim_free_q); in bfa_tskim_attach()
3542 bfa_mem_kva_curp(fcp) = (u8 *) tskim; in bfa_tskim_attach()
3550 struct bfa_tskim_s *tskim; in bfa_tskim_isr() local
3553 tskim = BFA_TSKIM_FROM_TAG(fcpim, tsk_tag); in bfa_tskim_isr()
3554 WARN_ON(tskim->tsk_tag != tsk_tag); in bfa_tskim_isr()
3556 tskim->tsk_status = rsp->tsk_status; in bfa_tskim_isr()
3563 bfa_stats(tskim->itnim, tm_cleanup_comps); in bfa_tskim_isr()
3564 bfa_sm_send_event(tskim, BFA_TSKIM_SM_CLEANUP_DONE); in bfa_tskim_isr()
3566 bfa_sm_send_event(tskim, BFA_TSKIM_SM_UTAG); in bfa_tskim_isr()
3568 bfa_stats(tskim->itnim, tm_fw_rsps); in bfa_tskim_isr()
3569 bfa_sm_send_event(tskim, BFA_TSKIM_SM_DONE); in bfa_tskim_isr()
3578 struct bfa_tskim_s *tskim; in bfa_tskim_alloc() local
3580 bfa_q_deq(&fcpim->tskim_free_q, &tskim); in bfa_tskim_alloc()
3582 if (tskim) in bfa_tskim_alloc()
3583 tskim->dtsk = dtsk; in bfa_tskim_alloc()
3585 return tskim; in bfa_tskim_alloc()
3589 bfa_tskim_free(struct bfa_tskim_s *tskim) in bfa_tskim_free() argument
3591 WARN_ON(!bfa_q_is_on_q_func(&tskim->itnim->tsk_q, &tskim->qe)); in bfa_tskim_free()
3592 list_del(&tskim->qe); in bfa_tskim_free()
3593 list_add_tail(&tskim->qe, &tskim->fcpim->tskim_free_q); in bfa_tskim_free()
3608 bfa_tskim_start(struct bfa_tskim_s *tskim, struct bfa_itnim_s *itnim, in bfa_tskim_start() argument
3612 tskim->itnim = itnim; in bfa_tskim_start()
3613 tskim->lun = lun; in bfa_tskim_start()
3614 tskim->tm_cmnd = tm_cmnd; in bfa_tskim_start()
3615 tskim->tsecs = tsecs; in bfa_tskim_start()
3616 tskim->notify = BFA_FALSE; in bfa_tskim_start()
3619 list_add_tail(&tskim->qe, &itnim->tsk_q); in bfa_tskim_start()
3620 bfa_sm_send_event(tskim, BFA_TSKIM_SM_START); in bfa_tskim_start()