Lines Matching refs:tskim
254 static bfa_boolean_t bfa_tskim_match_scope(struct bfa_tskim_s *tskim,
256 static void bfa_tskim_gather_ios(struct bfa_tskim_s *tskim);
258 static void bfa_tskim_cleanup_ios(struct bfa_tskim_s *tskim);
259 static bfa_boolean_t bfa_tskim_send(struct bfa_tskim_s *tskim);
260 static bfa_boolean_t bfa_tskim_send_abort(struct bfa_tskim_s *tskim);
261 static void bfa_tskim_iocdisable_ios(struct bfa_tskim_s *tskim);
266 static void bfa_tskim_sm_uninit(struct bfa_tskim_s *tskim,
268 static void bfa_tskim_sm_active(struct bfa_tskim_s *tskim,
270 static void bfa_tskim_sm_cleanup(struct bfa_tskim_s *tskim,
272 static void bfa_tskim_sm_iocleanup(struct bfa_tskim_s *tskim,
274 static void bfa_tskim_sm_qfull(struct bfa_tskim_s *tskim,
276 static void bfa_tskim_sm_cleanup_qfull(struct bfa_tskim_s *tskim,
278 static void bfa_tskim_sm_hcb(struct bfa_tskim_s *tskim,
967 struct bfa_tskim_s *tskim; in bfa_itnim_iocdisable_cleanup() local
972 tskim = (struct bfa_tskim_s *) qe; in bfa_itnim_iocdisable_cleanup()
973 bfa_tskim_iocdisable(tskim); in bfa_itnim_iocdisable_cleanup()
1014 struct bfa_tskim_s *tskim; in bfa_itnim_cleanup() local
1034 tskim = (struct bfa_tskim_s *) qe; in bfa_itnim_cleanup()
1036 bfa_tskim_cleanup(tskim); in bfa_itnim_cleanup()
2684 if (!ioim->iosp->tskim) { in bfa_ioim_notify_cleanup()
2692 bfa_wc_down(&ioim->iosp->tskim->wc); in bfa_ioim_notify_cleanup()
2896 ioim->iosp->tskim = NULL; in bfa_ioim_cleanup()
2901 bfa_ioim_cleanup_tm(struct bfa_ioim_s *ioim, struct bfa_tskim_s *tskim) in bfa_ioim_cleanup_tm() argument
2906 ioim->iosp->tskim = tskim; in bfa_ioim_cleanup_tm()
3033 bfa_tskim_sm_uninit(struct bfa_tskim_s *tskim, enum bfa_tskim_event event) in bfa_tskim_sm_uninit() argument
3035 bfa_trc(tskim->bfa, tskim->tsk_tag << 16 | event); in bfa_tskim_sm_uninit()
3039 bfa_sm_set_state(tskim, bfa_tskim_sm_active); in bfa_tskim_sm_uninit()
3040 bfa_tskim_gather_ios(tskim); in bfa_tskim_sm_uninit()
3046 if (!bfa_itnim_is_online(tskim->itnim)) { in bfa_tskim_sm_uninit()
3047 bfa_sm_set_state(tskim, bfa_tskim_sm_iocleanup); in bfa_tskim_sm_uninit()
3048 tskim->tsk_status = BFI_TSKIM_STS_OK; in bfa_tskim_sm_uninit()
3049 bfa_tskim_cleanup_ios(tskim); in bfa_tskim_sm_uninit()
3053 if (!bfa_tskim_send(tskim)) { in bfa_tskim_sm_uninit()
3054 bfa_sm_set_state(tskim, bfa_tskim_sm_qfull); in bfa_tskim_sm_uninit()
3055 bfa_stats(tskim->itnim, tm_qwait); in bfa_tskim_sm_uninit()
3056 bfa_reqq_wait(tskim->bfa, tskim->itnim->reqq, in bfa_tskim_sm_uninit()
3057 &tskim->reqq_wait); in bfa_tskim_sm_uninit()
3062 bfa_sm_fault(tskim->bfa, event); in bfa_tskim_sm_uninit()
3071 bfa_tskim_sm_active(struct bfa_tskim_s *tskim, enum bfa_tskim_event event) in bfa_tskim_sm_active() argument
3073 bfa_trc(tskim->bfa, tskim->tsk_tag << 16 | event); in bfa_tskim_sm_active()
3077 bfa_sm_set_state(tskim, bfa_tskim_sm_iocleanup); in bfa_tskim_sm_active()
3078 bfa_tskim_cleanup_ios(tskim); in bfa_tskim_sm_active()
3082 bfa_sm_set_state(tskim, bfa_tskim_sm_cleanup); in bfa_tskim_sm_active()
3083 if (!bfa_tskim_send_abort(tskim)) { in bfa_tskim_sm_active()
3084 bfa_sm_set_state(tskim, bfa_tskim_sm_cleanup_qfull); in bfa_tskim_sm_active()
3085 bfa_stats(tskim->itnim, tm_qwait); in bfa_tskim_sm_active()
3086 bfa_reqq_wait(tskim->bfa, tskim->itnim->reqq, in bfa_tskim_sm_active()
3087 &tskim->reqq_wait); in bfa_tskim_sm_active()
3092 bfa_sm_set_state(tskim, bfa_tskim_sm_hcb); in bfa_tskim_sm_active()
3093 bfa_tskim_iocdisable_ios(tskim); in bfa_tskim_sm_active()
3094 bfa_tskim_qcomp(tskim, __bfa_cb_tskim_failed); in bfa_tskim_sm_active()
3098 bfa_sm_fault(tskim->bfa, event); in bfa_tskim_sm_active()
3107 bfa_tskim_sm_cleanup(struct bfa_tskim_s *tskim, enum bfa_tskim_event event) in bfa_tskim_sm_cleanup() argument
3109 bfa_trc(tskim->bfa, tskim->tsk_tag << 16 | event); in bfa_tskim_sm_cleanup()
3120 bfa_sm_set_state(tskim, bfa_tskim_sm_iocleanup); in bfa_tskim_sm_cleanup()
3121 bfa_tskim_cleanup_ios(tskim); in bfa_tskim_sm_cleanup()
3125 bfa_sm_set_state(tskim, bfa_tskim_sm_hcb); in bfa_tskim_sm_cleanup()
3126 bfa_tskim_iocdisable_ios(tskim); in bfa_tskim_sm_cleanup()
3127 bfa_tskim_qcomp(tskim, __bfa_cb_tskim_failed); in bfa_tskim_sm_cleanup()
3131 bfa_sm_fault(tskim->bfa, event); in bfa_tskim_sm_cleanup()
3136 bfa_tskim_sm_iocleanup(struct bfa_tskim_s *tskim, enum bfa_tskim_event event) in bfa_tskim_sm_iocleanup() argument
3138 bfa_trc(tskim->bfa, tskim->tsk_tag << 16 | event); in bfa_tskim_sm_iocleanup()
3142 bfa_sm_set_state(tskim, bfa_tskim_sm_hcb); in bfa_tskim_sm_iocleanup()
3143 bfa_tskim_qcomp(tskim, __bfa_cb_tskim_done); in bfa_tskim_sm_iocleanup()
3154 bfa_sm_set_state(tskim, bfa_tskim_sm_hcb); in bfa_tskim_sm_iocleanup()
3155 bfa_tskim_iocdisable_ios(tskim); in bfa_tskim_sm_iocleanup()
3156 bfa_tskim_qcomp(tskim, __bfa_cb_tskim_failed); in bfa_tskim_sm_iocleanup()
3160 bfa_sm_fault(tskim->bfa, event); in bfa_tskim_sm_iocleanup()
3168 bfa_tskim_sm_qfull(struct bfa_tskim_s *tskim, enum bfa_tskim_event event) in bfa_tskim_sm_qfull() argument
3170 bfa_trc(tskim->bfa, tskim->tsk_tag << 16 | event); in bfa_tskim_sm_qfull()
3174 bfa_sm_set_state(tskim, bfa_tskim_sm_active); in bfa_tskim_sm_qfull()
3175 bfa_tskim_send(tskim); in bfa_tskim_sm_qfull()
3182 bfa_sm_set_state(tskim, bfa_tskim_sm_iocleanup); in bfa_tskim_sm_qfull()
3183 bfa_reqq_wcancel(&tskim->reqq_wait); in bfa_tskim_sm_qfull()
3184 bfa_tskim_cleanup_ios(tskim); in bfa_tskim_sm_qfull()
3188 bfa_sm_set_state(tskim, bfa_tskim_sm_hcb); in bfa_tskim_sm_qfull()
3189 bfa_reqq_wcancel(&tskim->reqq_wait); in bfa_tskim_sm_qfull()
3190 bfa_tskim_iocdisable_ios(tskim); in bfa_tskim_sm_qfull()
3191 bfa_tskim_qcomp(tskim, __bfa_cb_tskim_failed); in bfa_tskim_sm_qfull()
3195 bfa_sm_fault(tskim->bfa, event); in bfa_tskim_sm_qfull()
3204 bfa_tskim_sm_cleanup_qfull(struct bfa_tskim_s *tskim, in bfa_tskim_sm_cleanup_qfull() argument
3207 bfa_trc(tskim->bfa, tskim->tsk_tag << 16 | event); in bfa_tskim_sm_cleanup_qfull()
3211 bfa_reqq_wcancel(&tskim->reqq_wait); in bfa_tskim_sm_cleanup_qfull()
3214 bfa_sm_set_state(tskim, bfa_tskim_sm_cleanup); in bfa_tskim_sm_cleanup_qfull()
3215 bfa_tskim_send_abort(tskim); in bfa_tskim_sm_cleanup_qfull()
3219 bfa_sm_set_state(tskim, bfa_tskim_sm_hcb); in bfa_tskim_sm_cleanup_qfull()
3220 bfa_reqq_wcancel(&tskim->reqq_wait); in bfa_tskim_sm_cleanup_qfull()
3221 bfa_tskim_iocdisable_ios(tskim); in bfa_tskim_sm_cleanup_qfull()
3222 bfa_tskim_qcomp(tskim, __bfa_cb_tskim_failed); in bfa_tskim_sm_cleanup_qfull()
3226 bfa_sm_fault(tskim->bfa, event); in bfa_tskim_sm_cleanup_qfull()
3234 bfa_tskim_sm_hcb(struct bfa_tskim_s *tskim, enum bfa_tskim_event event) in bfa_tskim_sm_hcb() argument
3236 bfa_trc(tskim->bfa, tskim->tsk_tag << 16 | event); in bfa_tskim_sm_hcb()
3240 bfa_sm_set_state(tskim, bfa_tskim_sm_uninit); in bfa_tskim_sm_hcb()
3241 bfa_tskim_free(tskim); in bfa_tskim_sm_hcb()
3245 bfa_tskim_notify_comp(tskim); in bfa_tskim_sm_hcb()
3252 bfa_sm_fault(tskim->bfa, event); in bfa_tskim_sm_hcb()
3259 struct bfa_tskim_s *tskim = cbarg; in __bfa_cb_tskim_done() local
3262 bfa_sm_send_event(tskim, BFA_TSKIM_SM_HCB); in __bfa_cb_tskim_done()
3266 bfa_stats(tskim->itnim, tm_success); in __bfa_cb_tskim_done()
3267 bfa_cb_tskim_done(tskim->bfa->bfad, tskim->dtsk, tskim->tsk_status); in __bfa_cb_tskim_done()
3273 struct bfa_tskim_s *tskim = cbarg; in __bfa_cb_tskim_failed() local
3276 bfa_sm_send_event(tskim, BFA_TSKIM_SM_HCB); in __bfa_cb_tskim_failed()
3280 bfa_stats(tskim->itnim, tm_failures); in __bfa_cb_tskim_failed()
3281 bfa_cb_tskim_done(tskim->bfa->bfad, tskim->dtsk, in __bfa_cb_tskim_failed()
3286 bfa_tskim_match_scope(struct bfa_tskim_s *tskim, struct scsi_lun lun) in bfa_tskim_match_scope() argument
3288 switch (tskim->tm_cmnd) { in bfa_tskim_match_scope()
3296 return !memcmp(&tskim->lun, &lun, sizeof(lun)); in bfa_tskim_match_scope()
3309 bfa_tskim_gather_ios(struct bfa_tskim_s *tskim) in bfa_tskim_gather_ios() argument
3311 struct bfa_itnim_s *itnim = tskim->itnim; in bfa_tskim_gather_ios()
3317 INIT_LIST_HEAD(&tskim->io_q); in bfa_tskim_gather_ios()
3326 if (bfa_tskim_match_scope(tskim, scsilun)) { in bfa_tskim_gather_ios()
3328 list_add_tail(&ioim->qe, &tskim->io_q); in bfa_tskim_gather_ios()
3339 if (bfa_tskim_match_scope(tskim, scsilun)) { in bfa_tskim_gather_ios()
3353 struct bfa_tskim_s *tskim = tskim_cbarg; in bfa_tskim_cleanp_comp() local
3355 bfa_stats(tskim->itnim, tm_io_comps); in bfa_tskim_cleanp_comp()
3356 bfa_sm_send_event(tskim, BFA_TSKIM_SM_IOS_DONE); in bfa_tskim_cleanp_comp()
3363 bfa_tskim_cleanup_ios(struct bfa_tskim_s *tskim) in bfa_tskim_cleanup_ios() argument
3368 bfa_wc_init(&tskim->wc, bfa_tskim_cleanp_comp, tskim); in bfa_tskim_cleanup_ios()
3370 list_for_each_safe(qe, qen, &tskim->io_q) { in bfa_tskim_cleanup_ios()
3372 bfa_wc_up(&tskim->wc); in bfa_tskim_cleanup_ios()
3373 bfa_ioim_cleanup_tm(ioim, tskim); in bfa_tskim_cleanup_ios()
3376 bfa_wc_wait(&tskim->wc); in bfa_tskim_cleanup_ios()
3383 bfa_tskim_send(struct bfa_tskim_s *tskim) in bfa_tskim_send() argument
3385 struct bfa_itnim_s *itnim = tskim->itnim; in bfa_tskim_send()
3391 m = bfa_reqq_next(tskim->bfa, itnim->reqq); in bfa_tskim_send()
3399 bfa_fn_lpu(tskim->bfa)); in bfa_tskim_send()
3401 m->tsk_tag = cpu_to_be16(tskim->tsk_tag); in bfa_tskim_send()
3402 m->itn_fhdl = tskim->itnim->rport->fw_handle; in bfa_tskim_send()
3403 m->t_secs = tskim->tsecs; in bfa_tskim_send()
3404 m->lun = tskim->lun; in bfa_tskim_send()
3405 m->tm_flags = tskim->tm_cmnd; in bfa_tskim_send()
3410 bfa_reqq_produce(tskim->bfa, itnim->reqq, m->mh); in bfa_tskim_send()
3418 bfa_tskim_send_abort(struct bfa_tskim_s *tskim) in bfa_tskim_send_abort() argument
3420 struct bfa_itnim_s *itnim = tskim->itnim; in bfa_tskim_send_abort()
3426 m = bfa_reqq_next(tskim->bfa, itnim->reqq); in bfa_tskim_send_abort()
3434 bfa_fn_lpu(tskim->bfa)); in bfa_tskim_send_abort()
3436 m->tsk_tag = cpu_to_be16(tskim->tsk_tag); in bfa_tskim_send_abort()
3441 bfa_reqq_produce(tskim->bfa, itnim->reqq, m->mh); in bfa_tskim_send_abort()
3451 struct bfa_tskim_s *tskim = cbarg; in bfa_tskim_qresume() local
3453 bfa_stats(tskim->itnim, tm_qresumes); in bfa_tskim_qresume()
3454 bfa_sm_send_event(tskim, BFA_TSKIM_SM_QRESUME); in bfa_tskim_qresume()
3461 bfa_tskim_iocdisable_ios(struct bfa_tskim_s *tskim) in bfa_tskim_iocdisable_ios() argument
3466 list_for_each_safe(qe, qen, &tskim->io_q) { in bfa_tskim_iocdisable_ios()
3476 bfa_tskim_iodone(struct bfa_tskim_s *tskim) in bfa_tskim_iodone() argument
3478 bfa_wc_down(&tskim->wc); in bfa_tskim_iodone()
3485 bfa_tskim_iocdisable(struct bfa_tskim_s *tskim) in bfa_tskim_iocdisable() argument
3487 tskim->notify = BFA_FALSE; in bfa_tskim_iocdisable()
3488 bfa_stats(tskim->itnim, tm_iocdowns); in bfa_tskim_iocdisable()
3489 bfa_sm_send_event(tskim, BFA_TSKIM_SM_HWFAIL); in bfa_tskim_iocdisable()
3496 bfa_tskim_cleanup(struct bfa_tskim_s *tskim) in bfa_tskim_cleanup() argument
3498 tskim->notify = BFA_TRUE; in bfa_tskim_cleanup()
3499 bfa_stats(tskim->itnim, tm_cleanups); in bfa_tskim_cleanup()
3500 bfa_sm_send_event(tskim, BFA_TSKIM_SM_CLEANUP); in bfa_tskim_cleanup()
3509 struct bfa_tskim_s *tskim; in bfa_tskim_attach() local
3516 tskim = (struct bfa_tskim_s *) bfa_mem_kva_curp(fcp); in bfa_tskim_attach()
3517 fcpim->tskim_arr = tskim; in bfa_tskim_attach()
3519 for (i = 0; i < fcpim->num_tskim_reqs; i++, tskim++) { in bfa_tskim_attach()
3523 memset(tskim, 0, sizeof(struct bfa_tskim_s)); in bfa_tskim_attach()
3524 tskim->tsk_tag = i; in bfa_tskim_attach()
3525 tskim->bfa = fcpim->bfa; in bfa_tskim_attach()
3526 tskim->fcpim = fcpim; in bfa_tskim_attach()
3527 tskim->notify = BFA_FALSE; in bfa_tskim_attach()
3528 bfa_reqq_winit(&tskim->reqq_wait, bfa_tskim_qresume, in bfa_tskim_attach()
3529 tskim); in bfa_tskim_attach()
3530 bfa_sm_set_state(tskim, bfa_tskim_sm_uninit); in bfa_tskim_attach()
3532 list_add_tail(&tskim->qe, &fcpim->tskim_free_q); in bfa_tskim_attach()
3535 bfa_mem_kva_curp(fcp) = (u8 *) tskim; in bfa_tskim_attach()
3543 struct bfa_tskim_s *tskim; in bfa_tskim_isr() local
3546 tskim = BFA_TSKIM_FROM_TAG(fcpim, tsk_tag); in bfa_tskim_isr()
3547 WARN_ON(tskim->tsk_tag != tsk_tag); in bfa_tskim_isr()
3549 tskim->tsk_status = rsp->tsk_status; in bfa_tskim_isr()
3556 bfa_stats(tskim->itnim, tm_cleanup_comps); in bfa_tskim_isr()
3557 bfa_sm_send_event(tskim, BFA_TSKIM_SM_CLEANUP_DONE); in bfa_tskim_isr()
3559 bfa_sm_send_event(tskim, BFA_TSKIM_SM_UTAG); in bfa_tskim_isr()
3561 bfa_stats(tskim->itnim, tm_fw_rsps); in bfa_tskim_isr()
3562 bfa_sm_send_event(tskim, BFA_TSKIM_SM_DONE); in bfa_tskim_isr()
3571 struct bfa_tskim_s *tskim; in bfa_tskim_alloc() local
3573 bfa_q_deq(&fcpim->tskim_free_q, &tskim); in bfa_tskim_alloc()
3575 if (tskim) in bfa_tskim_alloc()
3576 tskim->dtsk = dtsk; in bfa_tskim_alloc()
3578 return tskim; in bfa_tskim_alloc()
3582 bfa_tskim_free(struct bfa_tskim_s *tskim) in bfa_tskim_free() argument
3584 WARN_ON(!bfa_q_is_on_q_func(&tskim->itnim->tsk_q, &tskim->qe)); in bfa_tskim_free()
3585 list_del(&tskim->qe); in bfa_tskim_free()
3586 list_add_tail(&tskim->qe, &tskim->fcpim->tskim_free_q); in bfa_tskim_free()
3601 bfa_tskim_start(struct bfa_tskim_s *tskim, struct bfa_itnim_s *itnim, in bfa_tskim_start() argument
3605 tskim->itnim = itnim; in bfa_tskim_start()
3606 tskim->lun = lun; in bfa_tskim_start()
3607 tskim->tm_cmnd = tm_cmnd; in bfa_tskim_start()
3608 tskim->tsecs = tsecs; in bfa_tskim_start()
3609 tskim->notify = BFA_FALSE; in bfa_tskim_start()
3612 list_add_tail(&tskim->qe, &itnim->tsk_q); in bfa_tskim_start()
3613 bfa_sm_send_event(tskim, BFA_TSKIM_SM_START); in bfa_tskim_start()