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()
2691 if (!ioim->iosp->tskim) { in bfa_ioim_notify_cleanup()
2699 bfa_wc_down(&ioim->iosp->tskim->wc); in bfa_ioim_notify_cleanup()
2902 ioim->iosp->tskim = NULL; in bfa_ioim_cleanup()
2907 bfa_ioim_cleanup_tm(struct bfa_ioim_s *ioim, struct bfa_tskim_s *tskim) in bfa_ioim_cleanup_tm() argument
2912 ioim->iosp->tskim = tskim; in bfa_ioim_cleanup_tm()
3039 bfa_tskim_sm_uninit(struct bfa_tskim_s *tskim, enum bfa_tskim_event event) in bfa_tskim_sm_uninit() argument
3041 bfa_trc(tskim->bfa, tskim->tsk_tag << 16 | event); in bfa_tskim_sm_uninit()
3045 bfa_sm_set_state(tskim, bfa_tskim_sm_active); in bfa_tskim_sm_uninit()
3046 bfa_tskim_gather_ios(tskim); in bfa_tskim_sm_uninit()
3052 if (!bfa_itnim_is_online(tskim->itnim)) { in bfa_tskim_sm_uninit()
3053 bfa_sm_set_state(tskim, bfa_tskim_sm_iocleanup); in bfa_tskim_sm_uninit()
3054 tskim->tsk_status = BFI_TSKIM_STS_OK; in bfa_tskim_sm_uninit()
3055 bfa_tskim_cleanup_ios(tskim); in bfa_tskim_sm_uninit()
3059 if (!bfa_tskim_send(tskim)) { in bfa_tskim_sm_uninit()
3060 bfa_sm_set_state(tskim, bfa_tskim_sm_qfull); in bfa_tskim_sm_uninit()
3061 bfa_stats(tskim->itnim, tm_qwait); in bfa_tskim_sm_uninit()
3062 bfa_reqq_wait(tskim->bfa, tskim->itnim->reqq, in bfa_tskim_sm_uninit()
3063 &tskim->reqq_wait); in bfa_tskim_sm_uninit()
3068 bfa_sm_fault(tskim->bfa, event); in bfa_tskim_sm_uninit()
3077 bfa_tskim_sm_active(struct bfa_tskim_s *tskim, enum bfa_tskim_event event) in bfa_tskim_sm_active() argument
3079 bfa_trc(tskim->bfa, tskim->tsk_tag << 16 | event); in bfa_tskim_sm_active()
3083 bfa_sm_set_state(tskim, bfa_tskim_sm_iocleanup); in bfa_tskim_sm_active()
3084 bfa_tskim_cleanup_ios(tskim); in bfa_tskim_sm_active()
3088 bfa_sm_set_state(tskim, bfa_tskim_sm_cleanup); in bfa_tskim_sm_active()
3089 if (!bfa_tskim_send_abort(tskim)) { in bfa_tskim_sm_active()
3090 bfa_sm_set_state(tskim, bfa_tskim_sm_cleanup_qfull); in bfa_tskim_sm_active()
3091 bfa_stats(tskim->itnim, tm_qwait); in bfa_tskim_sm_active()
3092 bfa_reqq_wait(tskim->bfa, tskim->itnim->reqq, in bfa_tskim_sm_active()
3093 &tskim->reqq_wait); in bfa_tskim_sm_active()
3098 bfa_sm_set_state(tskim, bfa_tskim_sm_hcb); in bfa_tskim_sm_active()
3099 bfa_tskim_iocdisable_ios(tskim); in bfa_tskim_sm_active()
3100 bfa_tskim_qcomp(tskim, __bfa_cb_tskim_failed); in bfa_tskim_sm_active()
3104 bfa_sm_fault(tskim->bfa, event); in bfa_tskim_sm_active()
3113 bfa_tskim_sm_cleanup(struct bfa_tskim_s *tskim, enum bfa_tskim_event event) in bfa_tskim_sm_cleanup() argument
3115 bfa_trc(tskim->bfa, tskim->tsk_tag << 16 | event); in bfa_tskim_sm_cleanup()
3126 bfa_sm_set_state(tskim, bfa_tskim_sm_iocleanup); in bfa_tskim_sm_cleanup()
3127 bfa_tskim_cleanup_ios(tskim); in bfa_tskim_sm_cleanup()
3131 bfa_sm_set_state(tskim, bfa_tskim_sm_hcb); in bfa_tskim_sm_cleanup()
3132 bfa_tskim_iocdisable_ios(tskim); in bfa_tskim_sm_cleanup()
3133 bfa_tskim_qcomp(tskim, __bfa_cb_tskim_failed); in bfa_tskim_sm_cleanup()
3137 bfa_sm_fault(tskim->bfa, event); in bfa_tskim_sm_cleanup()
3142 bfa_tskim_sm_iocleanup(struct bfa_tskim_s *tskim, enum bfa_tskim_event event) in bfa_tskim_sm_iocleanup() argument
3144 bfa_trc(tskim->bfa, tskim->tsk_tag << 16 | event); in bfa_tskim_sm_iocleanup()
3148 bfa_sm_set_state(tskim, bfa_tskim_sm_hcb); in bfa_tskim_sm_iocleanup()
3149 bfa_tskim_qcomp(tskim, __bfa_cb_tskim_done); in bfa_tskim_sm_iocleanup()
3160 bfa_sm_set_state(tskim, bfa_tskim_sm_hcb); in bfa_tskim_sm_iocleanup()
3161 bfa_tskim_iocdisable_ios(tskim); in bfa_tskim_sm_iocleanup()
3162 bfa_tskim_qcomp(tskim, __bfa_cb_tskim_failed); in bfa_tskim_sm_iocleanup()
3166 bfa_sm_fault(tskim->bfa, event); in bfa_tskim_sm_iocleanup()
3174 bfa_tskim_sm_qfull(struct bfa_tskim_s *tskim, enum bfa_tskim_event event) in bfa_tskim_sm_qfull() argument
3176 bfa_trc(tskim->bfa, tskim->tsk_tag << 16 | event); in bfa_tskim_sm_qfull()
3180 bfa_sm_set_state(tskim, bfa_tskim_sm_active); in bfa_tskim_sm_qfull()
3181 bfa_tskim_send(tskim); in bfa_tskim_sm_qfull()
3188 bfa_sm_set_state(tskim, bfa_tskim_sm_iocleanup); in bfa_tskim_sm_qfull()
3189 bfa_reqq_wcancel(&tskim->reqq_wait); in bfa_tskim_sm_qfull()
3190 bfa_tskim_cleanup_ios(tskim); in bfa_tskim_sm_qfull()
3194 bfa_sm_set_state(tskim, bfa_tskim_sm_hcb); in bfa_tskim_sm_qfull()
3195 bfa_reqq_wcancel(&tskim->reqq_wait); in bfa_tskim_sm_qfull()
3196 bfa_tskim_iocdisable_ios(tskim); in bfa_tskim_sm_qfull()
3197 bfa_tskim_qcomp(tskim, __bfa_cb_tskim_failed); in bfa_tskim_sm_qfull()
3201 bfa_sm_fault(tskim->bfa, event); in bfa_tskim_sm_qfull()
3210 bfa_tskim_sm_cleanup_qfull(struct bfa_tskim_s *tskim, in bfa_tskim_sm_cleanup_qfull() argument
3213 bfa_trc(tskim->bfa, tskim->tsk_tag << 16 | event); in bfa_tskim_sm_cleanup_qfull()
3217 bfa_reqq_wcancel(&tskim->reqq_wait); in bfa_tskim_sm_cleanup_qfull()
3222 bfa_sm_set_state(tskim, bfa_tskim_sm_cleanup); in bfa_tskim_sm_cleanup_qfull()
3223 bfa_tskim_send_abort(tskim); in bfa_tskim_sm_cleanup_qfull()
3227 bfa_sm_set_state(tskim, bfa_tskim_sm_hcb); in bfa_tskim_sm_cleanup_qfull()
3228 bfa_reqq_wcancel(&tskim->reqq_wait); in bfa_tskim_sm_cleanup_qfull()
3229 bfa_tskim_iocdisable_ios(tskim); in bfa_tskim_sm_cleanup_qfull()
3230 bfa_tskim_qcomp(tskim, __bfa_cb_tskim_failed); in bfa_tskim_sm_cleanup_qfull()
3234 bfa_sm_fault(tskim->bfa, event); in bfa_tskim_sm_cleanup_qfull()
3242 bfa_tskim_sm_hcb(struct bfa_tskim_s *tskim, enum bfa_tskim_event event) in bfa_tskim_sm_hcb() argument
3244 bfa_trc(tskim->bfa, tskim->tsk_tag << 16 | event); in bfa_tskim_sm_hcb()
3248 bfa_sm_set_state(tskim, bfa_tskim_sm_uninit); in bfa_tskim_sm_hcb()
3249 bfa_tskim_free(tskim); in bfa_tskim_sm_hcb()
3253 bfa_tskim_notify_comp(tskim); in bfa_tskim_sm_hcb()
3260 bfa_sm_fault(tskim->bfa, event); in bfa_tskim_sm_hcb()
3267 struct bfa_tskim_s *tskim = cbarg; in __bfa_cb_tskim_done() local
3270 bfa_sm_send_event(tskim, BFA_TSKIM_SM_HCB); in __bfa_cb_tskim_done()
3274 bfa_stats(tskim->itnim, tm_success); in __bfa_cb_tskim_done()
3275 bfa_cb_tskim_done(tskim->bfa->bfad, tskim->dtsk, tskim->tsk_status); in __bfa_cb_tskim_done()
3281 struct bfa_tskim_s *tskim = cbarg; in __bfa_cb_tskim_failed() local
3284 bfa_sm_send_event(tskim, BFA_TSKIM_SM_HCB); in __bfa_cb_tskim_failed()
3288 bfa_stats(tskim->itnim, tm_failures); in __bfa_cb_tskim_failed()
3289 bfa_cb_tskim_done(tskim->bfa->bfad, tskim->dtsk, in __bfa_cb_tskim_failed()
3294 bfa_tskim_match_scope(struct bfa_tskim_s *tskim, struct scsi_lun lun) in bfa_tskim_match_scope() argument
3296 switch (tskim->tm_cmnd) { in bfa_tskim_match_scope()
3304 return !memcmp(&tskim->lun, &lun, sizeof(lun)); in bfa_tskim_match_scope()
3317 bfa_tskim_gather_ios(struct bfa_tskim_s *tskim) in bfa_tskim_gather_ios() argument
3319 struct bfa_itnim_s *itnim = tskim->itnim; in bfa_tskim_gather_ios()
3325 INIT_LIST_HEAD(&tskim->io_q); in bfa_tskim_gather_ios()
3334 if (bfa_tskim_match_scope(tskim, scsilun)) { in bfa_tskim_gather_ios()
3336 list_add_tail(&ioim->qe, &tskim->io_q); in bfa_tskim_gather_ios()
3347 if (bfa_tskim_match_scope(tskim, scsilun)) { in bfa_tskim_gather_ios()
3361 struct bfa_tskim_s *tskim = tskim_cbarg; in bfa_tskim_cleanp_comp() local
3363 bfa_stats(tskim->itnim, tm_io_comps); in bfa_tskim_cleanp_comp()
3364 bfa_sm_send_event(tskim, BFA_TSKIM_SM_IOS_DONE); in bfa_tskim_cleanp_comp()
3371 bfa_tskim_cleanup_ios(struct bfa_tskim_s *tskim) in bfa_tskim_cleanup_ios() argument
3376 bfa_wc_init(&tskim->wc, bfa_tskim_cleanp_comp, tskim); in bfa_tskim_cleanup_ios()
3378 list_for_each_safe(qe, qen, &tskim->io_q) { in bfa_tskim_cleanup_ios()
3380 bfa_wc_up(&tskim->wc); in bfa_tskim_cleanup_ios()
3381 bfa_ioim_cleanup_tm(ioim, tskim); in bfa_tskim_cleanup_ios()
3384 bfa_wc_wait(&tskim->wc); in bfa_tskim_cleanup_ios()
3391 bfa_tskim_send(struct bfa_tskim_s *tskim) in bfa_tskim_send() argument
3393 struct bfa_itnim_s *itnim = tskim->itnim; in bfa_tskim_send()
3399 m = bfa_reqq_next(tskim->bfa, itnim->reqq); in bfa_tskim_send()
3407 bfa_fn_lpu(tskim->bfa)); in bfa_tskim_send()
3409 m->tsk_tag = cpu_to_be16(tskim->tsk_tag); in bfa_tskim_send()
3410 m->itn_fhdl = tskim->itnim->rport->fw_handle; in bfa_tskim_send()
3411 m->t_secs = tskim->tsecs; in bfa_tskim_send()
3412 m->lun = tskim->lun; in bfa_tskim_send()
3413 m->tm_flags = tskim->tm_cmnd; in bfa_tskim_send()
3418 bfa_reqq_produce(tskim->bfa, itnim->reqq, m->mh); in bfa_tskim_send()
3426 bfa_tskim_send_abort(struct bfa_tskim_s *tskim) in bfa_tskim_send_abort() argument
3428 struct bfa_itnim_s *itnim = tskim->itnim; in bfa_tskim_send_abort()
3434 m = bfa_reqq_next(tskim->bfa, itnim->reqq); in bfa_tskim_send_abort()
3442 bfa_fn_lpu(tskim->bfa)); in bfa_tskim_send_abort()
3444 m->tsk_tag = cpu_to_be16(tskim->tsk_tag); in bfa_tskim_send_abort()
3449 bfa_reqq_produce(tskim->bfa, itnim->reqq, m->mh); in bfa_tskim_send_abort()
3459 struct bfa_tskim_s *tskim = cbarg; in bfa_tskim_qresume() local
3461 bfa_stats(tskim->itnim, tm_qresumes); in bfa_tskim_qresume()
3462 bfa_sm_send_event(tskim, BFA_TSKIM_SM_QRESUME); in bfa_tskim_qresume()
3469 bfa_tskim_iocdisable_ios(struct bfa_tskim_s *tskim) in bfa_tskim_iocdisable_ios() argument
3474 list_for_each_safe(qe, qen, &tskim->io_q) { in bfa_tskim_iocdisable_ios()
3484 bfa_tskim_iodone(struct bfa_tskim_s *tskim) in bfa_tskim_iodone() argument
3486 bfa_wc_down(&tskim->wc); in bfa_tskim_iodone()
3493 bfa_tskim_iocdisable(struct bfa_tskim_s *tskim) in bfa_tskim_iocdisable() argument
3495 tskim->notify = BFA_FALSE; in bfa_tskim_iocdisable()
3496 bfa_stats(tskim->itnim, tm_iocdowns); in bfa_tskim_iocdisable()
3497 bfa_sm_send_event(tskim, BFA_TSKIM_SM_HWFAIL); in bfa_tskim_iocdisable()
3504 bfa_tskim_cleanup(struct bfa_tskim_s *tskim) in bfa_tskim_cleanup() argument
3506 tskim->notify = BFA_TRUE; in bfa_tskim_cleanup()
3507 bfa_stats(tskim->itnim, tm_cleanups); in bfa_tskim_cleanup()
3508 bfa_sm_send_event(tskim, BFA_TSKIM_SM_CLEANUP); in bfa_tskim_cleanup()
3517 struct bfa_tskim_s *tskim; in bfa_tskim_attach() local
3524 tskim = (struct bfa_tskim_s *) bfa_mem_kva_curp(fcp); in bfa_tskim_attach()
3525 fcpim->tskim_arr = tskim; in bfa_tskim_attach()
3527 for (i = 0; i < fcpim->num_tskim_reqs; i++, tskim++) { in bfa_tskim_attach()
3531 memset(tskim, 0, sizeof(struct bfa_tskim_s)); in bfa_tskim_attach()
3532 tskim->tsk_tag = i; in bfa_tskim_attach()
3533 tskim->bfa = fcpim->bfa; in bfa_tskim_attach()
3534 tskim->fcpim = fcpim; in bfa_tskim_attach()
3535 tskim->notify = BFA_FALSE; in bfa_tskim_attach()
3536 bfa_reqq_winit(&tskim->reqq_wait, bfa_tskim_qresume, in bfa_tskim_attach()
3537 tskim); in bfa_tskim_attach()
3538 bfa_sm_set_state(tskim, bfa_tskim_sm_uninit); in bfa_tskim_attach()
3540 list_add_tail(&tskim->qe, &fcpim->tskim_free_q); in bfa_tskim_attach()
3543 bfa_mem_kva_curp(fcp) = (u8 *) tskim; in bfa_tskim_attach()
3551 struct bfa_tskim_s *tskim; in bfa_tskim_isr() local
3554 tskim = BFA_TSKIM_FROM_TAG(fcpim, tsk_tag); in bfa_tskim_isr()
3555 WARN_ON(tskim->tsk_tag != tsk_tag); in bfa_tskim_isr()
3557 tskim->tsk_status = rsp->tsk_status; in bfa_tskim_isr()
3564 bfa_stats(tskim->itnim, tm_cleanup_comps); in bfa_tskim_isr()
3565 bfa_sm_send_event(tskim, BFA_TSKIM_SM_CLEANUP_DONE); in bfa_tskim_isr()
3567 bfa_sm_send_event(tskim, BFA_TSKIM_SM_UTAG); in bfa_tskim_isr()
3569 bfa_stats(tskim->itnim, tm_fw_rsps); in bfa_tskim_isr()
3570 bfa_sm_send_event(tskim, BFA_TSKIM_SM_DONE); in bfa_tskim_isr()
3579 struct bfa_tskim_s *tskim; in bfa_tskim_alloc() local
3581 bfa_q_deq(&fcpim->tskim_free_q, &tskim); in bfa_tskim_alloc()
3583 if (tskim) in bfa_tskim_alloc()
3584 tskim->dtsk = dtsk; in bfa_tskim_alloc()
3586 return tskim; in bfa_tskim_alloc()
3590 bfa_tskim_free(struct bfa_tskim_s *tskim) in bfa_tskim_free() argument
3592 WARN_ON(!bfa_q_is_on_q_func(&tskim->itnim->tsk_q, &tskim->qe)); in bfa_tskim_free()
3593 list_del(&tskim->qe); in bfa_tskim_free()
3594 list_add_tail(&tskim->qe, &tskim->fcpim->tskim_free_q); in bfa_tskim_free()
3609 bfa_tskim_start(struct bfa_tskim_s *tskim, struct bfa_itnim_s *itnim, in bfa_tskim_start() argument
3613 tskim->itnim = itnim; in bfa_tskim_start()
3614 tskim->lun = lun; in bfa_tskim_start()
3615 tskim->tm_cmnd = tm_cmnd; in bfa_tskim_start()
3616 tskim->tsecs = tsecs; in bfa_tskim_start()
3617 tskim->notify = BFA_FALSE; in bfa_tskim_start()
3620 list_add_tail(&tskim->qe, &itnim->tsk_q); in bfa_tskim_start()
3621 bfa_sm_send_event(tskim, BFA_TSKIM_SM_START); in bfa_tskim_start()