Lines Matching defs:itnim

19 static void bfa_itnim_update_del_itn_stats(struct bfa_itnim_s *itnim);
68 * itnim state machine event
71 BFA_ITNIM_SM_CREATE = 1, /* itnim is created */
72 BFA_ITNIM_SM_ONLINE = 2, /* itnim is online */
73 BFA_ITNIM_SM_OFFLINE = 3, /* itnim is offline */
75 BFA_ITNIM_SM_DELETE = 5, /* deleting an existing itnim */
118 BFA_IOIM_SM_CLEANUP = 14, /* IO cleanup from itnim */
140 bfa_itnim_tskdone((__tskim)->itnim); \
159 static void bfa_itnim_iocdisable_cleanup(struct bfa_itnim_s *itnim);
160 static bfa_boolean_t bfa_itnim_send_fwcreate(struct bfa_itnim_s *itnim);
161 static bfa_boolean_t bfa_itnim_send_fwdelete(struct bfa_itnim_s *itnim);
163 static void bfa_itnim_cleanup(struct bfa_itnim_s *itnim);
167 static void bfa_itnim_iotov_online(struct bfa_itnim_s *itnim);
168 static void bfa_itnim_iotov_cleanup(struct bfa_itnim_s *itnim);
170 static void bfa_itnim_iotov_start(struct bfa_itnim_s *itnim);
171 static void bfa_itnim_iotov_stop(struct bfa_itnim_s *itnim);
172 static void bfa_itnim_iotov_delete(struct bfa_itnim_s *itnim);
177 static void bfa_itnim_sm_uninit(struct bfa_itnim_s *itnim,
179 static void bfa_itnim_sm_created(struct bfa_itnim_s *itnim,
181 static void bfa_itnim_sm_fwcreate(struct bfa_itnim_s *itnim,
183 static void bfa_itnim_sm_delete_pending(struct bfa_itnim_s *itnim,
185 static void bfa_itnim_sm_online(struct bfa_itnim_s *itnim,
187 static void bfa_itnim_sm_sler(struct bfa_itnim_s *itnim,
189 static void bfa_itnim_sm_cleanup_offline(struct bfa_itnim_s *itnim,
191 static void bfa_itnim_sm_cleanup_delete(struct bfa_itnim_s *itnim,
193 static void bfa_itnim_sm_fwdelete(struct bfa_itnim_s *itnim,
195 static void bfa_itnim_sm_offline(struct bfa_itnim_s *itnim,
197 static void bfa_itnim_sm_iocdisable(struct bfa_itnim_s *itnim,
199 static void bfa_itnim_sm_deleting(struct bfa_itnim_s *itnim,
201 static void bfa_itnim_sm_fwcreate_qfull(struct bfa_itnim_s *itnim,
203 static void bfa_itnim_sm_fwdelete_qfull(struct bfa_itnim_s *itnim,
205 static void bfa_itnim_sm_deleting_qfull(struct bfa_itnim_s *itnim,
337 struct bfa_itnim_s *itnim;
344 itnim = (struct bfa_itnim_s *) qe;
345 bfa_itnim_iocdisable(itnim);
426 struct bfa_itnim_s *itnim;
428 /* accumulate IO stats from itnim */
431 itnim = (struct bfa_itnim_s *) qe;
432 if (itnim->rport->rport_info.lp_tag != lp_tag)
434 bfa_fcpim_add_stats(stats, &(itnim->stats));
443 &(ioim->itnim->ioprofile.io_latency);
448 bfa_itnim_ioprofile_update(ioim->itnim, idx);
465 struct bfa_itnim_s *itnim;
469 /* accumulate IO stats from itnim */
471 itnim = (struct bfa_itnim_s *) qe;
472 bfa_itnim_clear_stats(itnim);
508 bfa_itnim_sm_uninit(struct bfa_itnim_s *itnim, enum bfa_itnim_event event)
510 bfa_trc(itnim->bfa, itnim->rport->rport_tag);
511 bfa_trc(itnim->bfa, event);
515 bfa_sm_set_state(itnim, bfa_itnim_sm_created);
516 itnim->is_online = BFA_FALSE;
517 bfa_fcpim_additn(itnim);
521 bfa_sm_fault(itnim->bfa, event);
529 bfa_itnim_sm_created(struct bfa_itnim_s *itnim, enum bfa_itnim_event event)
531 bfa_trc(itnim->bfa, itnim->rport->rport_tag);
532 bfa_trc(itnim->bfa, event);
536 if (bfa_itnim_send_fwcreate(itnim))
537 bfa_sm_set_state(itnim, bfa_itnim_sm_fwcreate);
539 bfa_sm_set_state(itnim, bfa_itnim_sm_fwcreate_qfull);
543 bfa_sm_set_state(itnim, bfa_itnim_sm_uninit);
544 bfa_fcpim_delitn(itnim);
548 bfa_sm_set_state(itnim, bfa_itnim_sm_iocdisable);
552 bfa_sm_fault(itnim->bfa, event);
557 * Waiting for itnim create response from firmware.
560 bfa_itnim_sm_fwcreate(struct bfa_itnim_s *itnim, enum bfa_itnim_event event)
562 bfa_trc(itnim->bfa, itnim->rport->rport_tag);
563 bfa_trc(itnim->bfa, event);
567 bfa_sm_set_state(itnim, bfa_itnim_sm_online);
568 itnim->is_online = BFA_TRUE;
569 bfa_itnim_iotov_online(itnim);
570 bfa_itnim_online_cb(itnim);
574 bfa_sm_set_state(itnim, bfa_itnim_sm_delete_pending);
578 if (bfa_itnim_send_fwdelete(itnim))
579 bfa_sm_set_state(itnim, bfa_itnim_sm_fwdelete);
581 bfa_sm_set_state(itnim, bfa_itnim_sm_fwdelete_qfull);
585 bfa_sm_set_state(itnim, bfa_itnim_sm_iocdisable);
589 bfa_sm_fault(itnim->bfa, event);
594 bfa_itnim_sm_fwcreate_qfull(struct bfa_itnim_s *itnim,
597 bfa_trc(itnim->bfa, itnim->rport->rport_tag);
598 bfa_trc(itnim->bfa, event);
602 bfa_sm_set_state(itnim, bfa_itnim_sm_fwcreate);
603 bfa_itnim_send_fwcreate(itnim);
607 bfa_sm_set_state(itnim, bfa_itnim_sm_uninit);
608 bfa_reqq_wcancel(&itnim->reqq_wait);
609 bfa_fcpim_delitn(itnim);
613 bfa_sm_set_state(itnim, bfa_itnim_sm_offline);
614 bfa_reqq_wcancel(&itnim->reqq_wait);
615 bfa_itnim_offline_cb(itnim);
619 bfa_sm_set_state(itnim, bfa_itnim_sm_iocdisable);
620 bfa_reqq_wcancel(&itnim->reqq_wait);
624 bfa_sm_fault(itnim->bfa, event);
629 * Waiting for itnim create response from firmware, a delete is pending.
632 bfa_itnim_sm_delete_pending(struct bfa_itnim_s *itnim,
635 bfa_trc(itnim->bfa, itnim->rport->rport_tag);
636 bfa_trc(itnim->bfa, event);
640 if (bfa_itnim_send_fwdelete(itnim))
641 bfa_sm_set_state(itnim, bfa_itnim_sm_deleting);
643 bfa_sm_set_state(itnim, bfa_itnim_sm_deleting_qfull);
647 bfa_sm_set_state(itnim, bfa_itnim_sm_uninit);
648 bfa_fcpim_delitn(itnim);
652 bfa_sm_fault(itnim->bfa, event);
660 bfa_itnim_sm_online(struct bfa_itnim_s *itnim, enum bfa_itnim_event event)
662 bfa_trc(itnim->bfa, itnim->rport->rport_tag);
663 bfa_trc(itnim->bfa, event);
667 bfa_sm_set_state(itnim, bfa_itnim_sm_cleanup_offline);
668 itnim->is_online = BFA_FALSE;
669 bfa_itnim_iotov_start(itnim);
670 bfa_itnim_cleanup(itnim);
674 bfa_sm_set_state(itnim, bfa_itnim_sm_cleanup_delete);
675 itnim->is_online = BFA_FALSE;
676 bfa_itnim_cleanup(itnim);
680 bfa_sm_set_state(itnim, bfa_itnim_sm_sler);
681 itnim->is_online = BFA_FALSE;
682 bfa_itnim_iotov_start(itnim);
683 bfa_itnim_sler_cb(itnim);
687 bfa_sm_set_state(itnim, bfa_itnim_sm_iocdisable);
688 itnim->is_online = BFA_FALSE;
689 bfa_itnim_iotov_start(itnim);
690 bfa_itnim_iocdisable_cleanup(itnim);
694 bfa_sm_fault(itnim->bfa, event);
702 bfa_itnim_sm_sler(struct bfa_itnim_s *itnim, enum bfa_itnim_event event)
704 bfa_trc(itnim->bfa, itnim->rport->rport_tag);
705 bfa_trc(itnim->bfa, event);
709 bfa_sm_set_state(itnim, bfa_itnim_sm_cleanup_offline);
710 bfa_itnim_cleanup(itnim);
714 bfa_sm_set_state(itnim, bfa_itnim_sm_cleanup_delete);
715 bfa_itnim_cleanup(itnim);
716 bfa_itnim_iotov_delete(itnim);
720 bfa_sm_set_state(itnim, bfa_itnim_sm_iocdisable);
721 bfa_itnim_iocdisable_cleanup(itnim);
725 bfa_sm_fault(itnim->bfa, event);
733 bfa_itnim_sm_cleanup_offline(struct bfa_itnim_s *itnim,
736 bfa_trc(itnim->bfa, itnim->rport->rport_tag);
737 bfa_trc(itnim->bfa, event);
741 if (bfa_itnim_send_fwdelete(itnim))
742 bfa_sm_set_state(itnim, bfa_itnim_sm_fwdelete);
744 bfa_sm_set_state(itnim, bfa_itnim_sm_fwdelete_qfull);
748 bfa_sm_set_state(itnim, bfa_itnim_sm_cleanup_delete);
749 bfa_itnim_iotov_delete(itnim);
753 bfa_sm_set_state(itnim, bfa_itnim_sm_iocdisable);
754 bfa_itnim_iocdisable_cleanup(itnim);
755 bfa_itnim_offline_cb(itnim);
762 bfa_sm_fault(itnim->bfa, event);
767 * Deleting itnim. Waiting for active IO cleanup.
770 bfa_itnim_sm_cleanup_delete(struct bfa_itnim_s *itnim,
773 bfa_trc(itnim->bfa, itnim->rport->rport_tag);
774 bfa_trc(itnim->bfa, event);
778 if (bfa_itnim_send_fwdelete(itnim))
779 bfa_sm_set_state(itnim, bfa_itnim_sm_deleting);
781 bfa_sm_set_state(itnim, bfa_itnim_sm_deleting_qfull);
785 bfa_sm_set_state(itnim, bfa_itnim_sm_iocdisable);
786 bfa_itnim_iocdisable_cleanup(itnim);
790 bfa_sm_fault(itnim->bfa, event);
795 * Rport offline. Fimrware itnim is being deleted - awaiting f/w response.
798 bfa_itnim_sm_fwdelete(struct bfa_itnim_s *itnim, enum bfa_itnim_event event)
800 bfa_trc(itnim->bfa, itnim->rport->rport_tag);
801 bfa_trc(itnim->bfa, event);
805 bfa_sm_set_state(itnim, bfa_itnim_sm_offline);
806 bfa_itnim_offline_cb(itnim);
810 bfa_sm_set_state(itnim, bfa_itnim_sm_deleting);
814 bfa_sm_set_state(itnim, bfa_itnim_sm_iocdisable);
815 bfa_itnim_offline_cb(itnim);
819 bfa_sm_fault(itnim->bfa, event);
824 bfa_itnim_sm_fwdelete_qfull(struct bfa_itnim_s *itnim,
827 bfa_trc(itnim->bfa, itnim->rport->rport_tag);
828 bfa_trc(itnim->bfa, event);
832 bfa_sm_set_state(itnim, bfa_itnim_sm_fwdelete);
833 bfa_itnim_send_fwdelete(itnim);
837 bfa_sm_set_state(itnim, bfa_itnim_sm_deleting_qfull);
841 bfa_sm_set_state(itnim, bfa_itnim_sm_iocdisable);
842 bfa_reqq_wcancel(&itnim->reqq_wait);
843 bfa_itnim_offline_cb(itnim);
847 bfa_sm_fault(itnim->bfa, event);
855 bfa_itnim_sm_offline(struct bfa_itnim_s *itnim, enum bfa_itnim_event event)
857 bfa_trc(itnim->bfa, itnim->rport->rport_tag);
858 bfa_trc(itnim->bfa, event);
862 bfa_sm_set_state(itnim, bfa_itnim_sm_uninit);
863 bfa_itnim_iotov_delete(itnim);
864 bfa_fcpim_delitn(itnim);
868 if (bfa_itnim_send_fwcreate(itnim))
869 bfa_sm_set_state(itnim, bfa_itnim_sm_fwcreate);
871 bfa_sm_set_state(itnim, bfa_itnim_sm_fwcreate_qfull);
875 bfa_sm_set_state(itnim, bfa_itnim_sm_iocdisable);
879 bfa_sm_fault(itnim->bfa, event);
884 bfa_itnim_sm_iocdisable(struct bfa_itnim_s *itnim,
887 bfa_trc(itnim->bfa, itnim->rport->rport_tag);
888 bfa_trc(itnim->bfa, event);
892 bfa_sm_set_state(itnim, bfa_itnim_sm_uninit);
893 bfa_itnim_iotov_delete(itnim);
894 bfa_fcpim_delitn(itnim);
898 bfa_itnim_offline_cb(itnim);
902 if (bfa_itnim_send_fwcreate(itnim))
903 bfa_sm_set_state(itnim, bfa_itnim_sm_fwcreate);
905 bfa_sm_set_state(itnim, bfa_itnim_sm_fwcreate_qfull);
912 bfa_sm_fault(itnim->bfa, event);
920 bfa_itnim_sm_deleting(struct bfa_itnim_s *itnim, enum bfa_itnim_event event)
922 bfa_trc(itnim->bfa, itnim->rport->rport_tag);
923 bfa_trc(itnim->bfa, event);
928 bfa_sm_set_state(itnim, bfa_itnim_sm_uninit);
929 bfa_fcpim_delitn(itnim);
933 bfa_sm_fault(itnim->bfa, event);
938 bfa_itnim_sm_deleting_qfull(struct bfa_itnim_s *itnim,
941 bfa_trc(itnim->bfa, itnim->rport->rport_tag);
942 bfa_trc(itnim->bfa, event);
946 bfa_sm_set_state(itnim, bfa_itnim_sm_deleting);
947 bfa_itnim_send_fwdelete(itnim);
951 bfa_sm_set_state(itnim, bfa_itnim_sm_uninit);
952 bfa_reqq_wcancel(&itnim->reqq_wait);
953 bfa_fcpim_delitn(itnim);
957 bfa_sm_fault(itnim->bfa, event);
965 bfa_itnim_iocdisable_cleanup(struct bfa_itnim_s *itnim)
971 list_for_each_safe(qe, qen, &itnim->tsk_q) {
976 list_for_each_safe(qe, qen, &itnim->io_q) {
984 list_for_each_safe(qe, qen, &itnim->pending_q) {
989 list_for_each_safe(qe, qen, &itnim->io_cleanup_q) {
1001 struct bfa_itnim_s *itnim = itnim_cbarg;
1003 bfa_stats(itnim, cleanup_comps);
1004 bfa_sm_send_event(itnim, BFA_ITNIM_SM_CLEANUP);
1011 bfa_itnim_cleanup(struct bfa_itnim_s *itnim)
1017 bfa_wc_init(&itnim->wc, bfa_itnim_cleanp_comp, itnim);
1019 list_for_each_safe(qe, qen, &itnim->io_q) {
1027 list_add_tail(&ioim->qe, &itnim->io_cleanup_q);
1029 bfa_wc_up(&itnim->wc);
1033 list_for_each_safe(qe, qen, &itnim->tsk_q) {
1035 bfa_wc_up(&itnim->wc);
1039 bfa_wc_wait(&itnim->wc);
1045 struct bfa_itnim_s *itnim = cbarg;
1048 bfa_cb_itnim_online(itnim->ditn);
1054 struct bfa_itnim_s *itnim = cbarg;
1057 bfa_cb_itnim_offline(itnim->ditn);
1063 struct bfa_itnim_s *itnim = cbarg;
1066 bfa_cb_itnim_sler(itnim->ditn);
1075 struct bfa_itnim_s *itnim = cbarg;
1077 bfa_sm_send_event(itnim, BFA_ITNIM_SM_QRESUME);
1085 bfa_itnim_iodone(struct bfa_itnim_s *itnim)
1087 bfa_wc_down(&itnim->wc);
1091 bfa_itnim_tskdone(struct bfa_itnim_s *itnim)
1093 bfa_wc_down(&itnim->wc);
1110 struct bfa_itnim_s *itnim;
1115 itnim = (struct bfa_itnim_s *) bfa_mem_kva_curp(fcp);
1116 fcpim->itnim_arr = itnim;
1118 for (i = 0; i < fcpim->num_itnims; i++, itnim++) {
1119 memset(itnim, 0, sizeof(struct bfa_itnim_s));
1120 itnim->bfa = bfa;
1121 itnim->fcpim = fcpim;
1122 itnim->reqq = BFA_REQQ_QOS_LO;
1123 itnim->rport = BFA_RPORT_FROM_TAG(bfa, i);
1124 itnim->iotov_active = BFA_FALSE;
1125 bfa_reqq_winit(&itnim->reqq_wait, bfa_itnim_qresume, itnim);
1127 INIT_LIST_HEAD(&itnim->io_q);
1128 INIT_LIST_HEAD(&itnim->io_cleanup_q);
1129 INIT_LIST_HEAD(&itnim->pending_q);
1130 INIT_LIST_HEAD(&itnim->tsk_q);
1131 INIT_LIST_HEAD(&itnim->delay_comp_q);
1133 itnim->ioprofile.io_latency.min[j] = ~0;
1134 bfa_sm_set_state(itnim, bfa_itnim_sm_uninit);
1137 bfa_mem_kva_curp(fcp) = (u8 *) itnim;
1141 bfa_itnim_iocdisable(struct bfa_itnim_s *itnim)
1143 bfa_stats(itnim, ioc_disabled);
1144 bfa_sm_send_event(itnim, BFA_ITNIM_SM_HWFAIL);
1148 bfa_itnim_send_fwcreate(struct bfa_itnim_s *itnim)
1152 itnim->msg_no++;
1157 m = bfa_reqq_next(itnim->bfa, itnim->reqq);
1159 bfa_reqq_wait(itnim->bfa, itnim->reqq, &itnim->reqq_wait);
1164 bfa_fn_lpu(itnim->bfa));
1165 m->fw_handle = itnim->rport->fw_handle;
1167 m->seq_rec = itnim->seq_rec;
1168 m->msg_no = itnim->msg_no;
1169 bfa_stats(itnim, fw_create);
1174 bfa_reqq_produce(itnim->bfa, itnim->reqq, m->mh);
1179 bfa_itnim_send_fwdelete(struct bfa_itnim_s *itnim)
1186 m = bfa_reqq_next(itnim->bfa, itnim->reqq);
1188 bfa_reqq_wait(itnim->bfa, itnim->reqq, &itnim->reqq_wait);
1193 bfa_fn_lpu(itnim->bfa));
1194 m->fw_handle = itnim->rport->fw_handle;
1195 bfa_stats(itnim, fw_delete);
1200 bfa_reqq_produce(itnim->bfa, itnim->reqq, m->mh);
1208 bfa_itnim_delayed_comp(struct bfa_itnim_s *itnim, bfa_boolean_t iotov)
1213 list_for_each_safe(qe, qen, &itnim->delay_comp_q) {
1223 bfa_itnim_iotov_online(struct bfa_itnim_s *itnim)
1227 bfa_itnim_iotov_stop(itnim);
1232 bfa_itnim_delayed_comp(itnim, BFA_FALSE);
1237 while (!list_empty(&itnim->pending_q)) {
1238 bfa_q_deq(&itnim->pending_q, &ioim);
1239 list_add_tail(&ioim->qe, &itnim->io_q);
1248 bfa_itnim_iotov_cleanup(struct bfa_itnim_s *itnim)
1255 bfa_itnim_delayed_comp(itnim, BFA_TRUE);
1260 while (!list_empty(&itnim->pending_q)) {
1261 bfa_q_deq(&itnim->pending_q, &ioim);
1273 struct bfa_itnim_s *itnim = itnim_arg;
1275 itnim->iotov_active = BFA_FALSE;
1277 bfa_cb_itnim_tov_begin(itnim->ditn);
1278 bfa_itnim_iotov_cleanup(itnim);
1279 bfa_cb_itnim_tov(itnim->ditn);
1286 bfa_itnim_iotov_start(struct bfa_itnim_s *itnim)
1288 if (itnim->fcpim->path_tov > 0) {
1290 itnim->iotov_active = BFA_TRUE;
1291 WARN_ON(!bfa_itnim_hold_io(itnim));
1292 bfa_timer_start(itnim->bfa, &itnim->timer,
1293 bfa_itnim_iotov, itnim, itnim->fcpim->path_tov);
1301 bfa_itnim_iotov_stop(struct bfa_itnim_s *itnim)
1303 if (itnim->iotov_active) {
1304 itnim->iotov_active = BFA_FALSE;
1305 bfa_timer_stop(&itnim->timer);
1313 bfa_itnim_iotov_delete(struct bfa_itnim_s *itnim)
1317 if (itnim->iotov_active)
1320 bfa_itnim_iotov_stop(itnim);
1322 bfa_cb_itnim_tov_begin(itnim->ditn);
1323 bfa_itnim_iotov_cleanup(itnim);
1325 bfa_cb_itnim_tov(itnim->ditn);
1329 bfa_itnim_update_del_itn_stats(struct bfa_itnim_s *itnim)
1331 struct bfa_fcpim_s *fcpim = BFA_FCPIM(itnim->bfa);
1333 itnim->stats.iocomp_aborted;
1335 itnim->stats.iocomp_timedout;
1337 itnim->stats.iocom_sqer_needed;
1339 itnim->stats.iocom_res_free;
1341 itnim->stats.iocom_hostabrts;
1342 fcpim->del_itn_stats.del_itn_total_ios += itnim->stats.total_ios;
1343 fcpim->del_itn_stats.del_io_iocdowns += itnim->stats.io_iocdowns;
1344 fcpim->del_itn_stats.del_tm_iocdowns += itnim->stats.tm_iocdowns;
1359 struct bfa_itnim_s *itnim;
1367 itnim = BFA_ITNIM_FROM_TAG(fcpim,
1370 bfa_stats(itnim, create_comps);
1371 bfa_sm_send_event(itnim, BFA_ITNIM_SM_FWRSP);
1375 itnim = BFA_ITNIM_FROM_TAG(fcpim,
1378 bfa_stats(itnim, delete_comps);
1379 bfa_sm_send_event(itnim, BFA_ITNIM_SM_FWRSP);
1383 itnim = BFA_ITNIM_FROM_TAG(fcpim,
1385 bfa_stats(itnim, sler_events);
1386 bfa_sm_send_event(itnim, BFA_ITNIM_SM_SLER);
1403 struct bfa_itnim_s *itnim;
1407 itnim = BFA_ITNIM_FROM_TAG(fcpim, rport->rport_tag);
1408 WARN_ON(itnim->rport != rport);
1410 itnim->ditn = ditn;
1412 bfa_stats(itnim, creates);
1413 bfa_sm_send_event(itnim, BFA_ITNIM_SM_CREATE);
1415 return itnim;
1419 bfa_itnim_delete(struct bfa_itnim_s *itnim)
1421 bfa_stats(itnim, deletes);
1422 bfa_sm_send_event(itnim, BFA_ITNIM_SM_DELETE);
1426 bfa_itnim_online(struct bfa_itnim_s *itnim, bfa_boolean_t seq_rec)
1428 itnim->seq_rec = seq_rec;
1429 bfa_stats(itnim, onlines);
1430 bfa_sm_send_event(itnim, BFA_ITNIM_SM_ONLINE);
1434 bfa_itnim_offline(struct bfa_itnim_s *itnim)
1436 bfa_stats(itnim, offlines);
1437 bfa_sm_send_event(itnim, BFA_ITNIM_SM_OFFLINE);
1441 * Return true if itnim is considered offline for holding off IO request.
1442 * IO is not held if itnim is being deleted.
1445 bfa_itnim_hold_io(struct bfa_itnim_s *itnim)
1447 return itnim->fcpim->path_tov && itnim->iotov_active &&
1448 (bfa_sm_cmp_state(itnim, bfa_itnim_sm_fwcreate) ||
1449 bfa_sm_cmp_state(itnim, bfa_itnim_sm_sler) ||
1450 bfa_sm_cmp_state(itnim, bfa_itnim_sm_cleanup_offline) ||
1451 bfa_sm_cmp_state(itnim, bfa_itnim_sm_fwdelete) ||
1452 bfa_sm_cmp_state(itnim, bfa_itnim_sm_offline) ||
1453 bfa_sm_cmp_state(itnim, bfa_itnim_sm_iocdisable));
1459 bfa_itnim_get_ioprofile(struct bfa_itnim_s *itnim,
1464 if (!itnim)
1467 fcpim = BFA_FCPIM(itnim->bfa);
1472 itnim->ioprofile.index = BFA_IOBUCKET_MAX;
1474 itnim->ioprofile.io_profile_start_time =
1475 bfa_io_profile_start_time(itnim->bfa);
1476 itnim->ioprofile.clock_res_mul = bfa_io_lat_clock_res_mul;
1477 itnim->ioprofile.clock_res_div = bfa_io_lat_clock_res_div;
1478 *ioprofile = itnim->ioprofile;
1484 bfa_itnim_clear_stats(struct bfa_itnim_s *itnim)
1488 if (!itnim)
1491 memset(&itnim->stats, 0, sizeof(itnim->stats));
1492 memset(&itnim->ioprofile, 0, sizeof(itnim->ioprofile));
1494 itnim->ioprofile.io_latency.min[j] = ~0;
1509 if (!bfa_itnim_is_online(ioim->itnim)) {
1510 if (!bfa_itnim_hold_io(ioim->itnim)) {
1520 &ioim->itnim->pending_q);
1553 WARN_ON(!bfa_q_is_on_q(&ioim->itnim->pending_q, ioim));
1646 bfa_stats(ioim->itnim, qwait);
1660 bfa_stats(ioim->itnim, qwait);
1716 bfa_stats(ioim->itnim, qwait);
1787 bfa_stats(ioim->itnim, qwait);
2161 bfa_stats(ioim->itnim, iocomp_underrun);
2166 bfa_stats(ioim->itnim, iocomp_overrun);
2405 bfa_stats(ioim->itnim, path_tov_expired);
2445 struct bfa_itnim_s *itnim = ioim->itnim;
2463 bfa_stats(ioim->itnim, qwait);
2473 m->rport_hdl = ioim->itnim->rport->fw_handle;
2564 bfa_stats(itnim, input_reqs);
2565 ioim->itnim->stats.rd_throughput += fcp_dl;
2569 bfa_stats(itnim, output_reqs);
2570 ioim->itnim->stats.wr_throughput += fcp_dl;
2573 bfa_stats(itnim, input_reqs);
2574 bfa_stats(itnim, output_reqs);
2579 if (itnim->seq_rec ||
2663 bfa_stats(ioim->itnim, qresumes);
2672 * Move IO from itnim queue to fcpim global queue since itnim will be
2679 if (ioim->fcpim->delay_comp && ioim->itnim->iotov_active) {
2682 list_add_tail(&ioim->qe, &ioim->itnim->delay_comp_q);
2684 bfa_itnim_iodone(ioim->itnim);
2693 (!bfa_q_is_on_q(&ioim->itnim->pending_q, ioim))) ||
2718 bfa_stats(ioim->itnim, iocom_nexus_abort);
2723 * Move IO to fcpim global queue since itnim will be
2801 bfa_stats(ioim->itnim, iocomp_ok);
2809 bfa_stats(ioim->itnim, iocomp_timedout);
2813 bfa_stats(ioim->itnim, iocomp_aborted);
2821 bfa_stats(ioim->itnim, iocom_proto_err);
2827 bfa_stats(ioim->itnim, iocom_sqer_needed);
2833 bfa_stats(ioim->itnim, iocom_res_free);
2838 bfa_stats(ioim->itnim, iocom_hostabrts);
2852 bfa_stats(ioim->itnim, iocom_utags);
2882 * Called by itnim to clean up IO while going offline.
2888 bfa_stats(ioim->itnim, io_cleanups);
2898 bfa_stats(ioim->itnim, io_tmaborts);
2911 bfa_stats(ioim->itnim, io_iocdowns);
2931 struct bfa_itnim_s *itnim, u16 nsges)
2942 bfa_stats(itnim, no_iotags);
2949 ioim->itnim = itnim;
2953 bfa_stats(itnim, total_ios);
2956 list_add_tail(&ioim->qe, &itnim->io_q);
2970 bfa_stats(ioim->itnim, io_comps);
3013 bfa_stats(ioim->itnim, io_aborts);
3040 if (!bfa_itnim_is_online(tskim->itnim)) {
3049 bfa_stats(tskim->itnim, tm_qwait);
3050 bfa_reqq_wait(tskim->bfa, tskim->itnim->reqq,
3079 bfa_stats(tskim->itnim, tm_qwait);
3080 bfa_reqq_wait(tskim->bfa, tskim->itnim->reqq,
3260 bfa_stats(tskim->itnim, tm_success);
3274 bfa_stats(tskim->itnim, tm_failures);
3305 struct bfa_itnim_s *itnim = tskim->itnim;
3316 list_for_each_safe(qe, qen, &itnim->io_q) {
3329 list_for_each_safe(qe, qen, &itnim->pending_q) {
3349 bfa_stats(tskim->itnim, tm_io_comps);
3379 struct bfa_itnim_s *itnim = tskim->itnim;
3385 m = bfa_reqq_next(tskim->bfa, itnim->reqq);
3396 m->itn_fhdl = tskim->itnim->rport->fw_handle;
3404 bfa_reqq_produce(tskim->bfa, itnim->reqq, m->mh);
3414 struct bfa_itnim_s *itnim = tskim->itnim;
3420 m = bfa_reqq_next(tskim->bfa, itnim->reqq);
3435 bfa_reqq_produce(tskim->bfa, itnim->reqq, m->mh);
3447 bfa_stats(tskim->itnim, tm_qresumes);
3476 * Handle IOC h/w failure notification from itnim.
3482 bfa_stats(tskim->itnim, tm_iocdowns);
3493 bfa_stats(tskim->itnim, tm_cleanups);
3550 bfa_stats(tskim->itnim, tm_cleanup_comps);
3555 bfa_stats(tskim->itnim, tm_fw_rsps);
3578 WARN_ON(!bfa_q_is_on_q_func(&tskim->itnim->tsk_q, &tskim->qe));
3587 * @param[in] itnim i-t nexus for the task management command
3595 bfa_tskim_start(struct bfa_tskim_s *tskim, struct bfa_itnim_s *itnim,
3599 tskim->itnim = itnim;
3604 bfa_stats(itnim, tm_cmnds);
3606 list_add_tail(&tskim->qe, &itnim->tsk_q);