Lines Matching refs:itnim
26 static void bfa_itnim_update_del_itn_stats(struct bfa_itnim_s *itnim);
148 bfa_itnim_tskdone((__tskim)->itnim); \
167 static void bfa_itnim_iocdisable_cleanup(struct bfa_itnim_s *itnim);
168 static bfa_boolean_t bfa_itnim_send_fwcreate(struct bfa_itnim_s *itnim);
169 static bfa_boolean_t bfa_itnim_send_fwdelete(struct bfa_itnim_s *itnim);
171 static void bfa_itnim_cleanup(struct bfa_itnim_s *itnim);
175 static void bfa_itnim_iotov_online(struct bfa_itnim_s *itnim);
176 static void bfa_itnim_iotov_cleanup(struct bfa_itnim_s *itnim);
178 static void bfa_itnim_iotov_start(struct bfa_itnim_s *itnim);
179 static void bfa_itnim_iotov_stop(struct bfa_itnim_s *itnim);
180 static void bfa_itnim_iotov_delete(struct bfa_itnim_s *itnim);
185 static void bfa_itnim_sm_uninit(struct bfa_itnim_s *itnim,
187 static void bfa_itnim_sm_created(struct bfa_itnim_s *itnim,
189 static void bfa_itnim_sm_fwcreate(struct bfa_itnim_s *itnim,
191 static void bfa_itnim_sm_delete_pending(struct bfa_itnim_s *itnim,
193 static void bfa_itnim_sm_online(struct bfa_itnim_s *itnim,
195 static void bfa_itnim_sm_sler(struct bfa_itnim_s *itnim,
197 static void bfa_itnim_sm_cleanup_offline(struct bfa_itnim_s *itnim,
199 static void bfa_itnim_sm_cleanup_delete(struct bfa_itnim_s *itnim,
201 static void bfa_itnim_sm_fwdelete(struct bfa_itnim_s *itnim,
203 static void bfa_itnim_sm_offline(struct bfa_itnim_s *itnim,
205 static void bfa_itnim_sm_iocdisable(struct bfa_itnim_s *itnim,
207 static void bfa_itnim_sm_deleting(struct bfa_itnim_s *itnim,
209 static void bfa_itnim_sm_fwcreate_qfull(struct bfa_itnim_s *itnim,
211 static void bfa_itnim_sm_fwdelete_qfull(struct bfa_itnim_s *itnim,
213 static void bfa_itnim_sm_deleting_qfull(struct bfa_itnim_s *itnim,
345 struct bfa_itnim_s *itnim; in bfa_fcpim_iocdisable() local
352 itnim = (struct bfa_itnim_s *) qe; in bfa_fcpim_iocdisable()
353 bfa_itnim_iocdisable(itnim); in bfa_fcpim_iocdisable()
434 struct bfa_itnim_s *itnim; in bfa_fcpim_port_iostats() local
439 itnim = (struct bfa_itnim_s *) qe; in bfa_fcpim_port_iostats()
440 if (itnim->rport->rport_info.lp_tag != lp_tag) in bfa_fcpim_port_iostats()
442 bfa_fcpim_add_stats(stats, &(itnim->stats)); in bfa_fcpim_port_iostats()
451 &(ioim->itnim->ioprofile.io_latency); in bfa_ioim_profile_comp()
456 bfa_itnim_ioprofile_update(ioim->itnim, idx); in bfa_ioim_profile_comp()
473 struct bfa_itnim_s *itnim; in bfa_fcpim_profile_on() local
479 itnim = (struct bfa_itnim_s *) qe; in bfa_fcpim_profile_on()
480 bfa_itnim_clear_stats(itnim); in bfa_fcpim_profile_on()
516 bfa_itnim_sm_uninit(struct bfa_itnim_s *itnim, enum bfa_itnim_event event) in bfa_itnim_sm_uninit() argument
518 bfa_trc(itnim->bfa, itnim->rport->rport_tag); in bfa_itnim_sm_uninit()
519 bfa_trc(itnim->bfa, event); in bfa_itnim_sm_uninit()
523 bfa_sm_set_state(itnim, bfa_itnim_sm_created); in bfa_itnim_sm_uninit()
524 itnim->is_online = BFA_FALSE; in bfa_itnim_sm_uninit()
525 bfa_fcpim_additn(itnim); in bfa_itnim_sm_uninit()
529 bfa_sm_fault(itnim->bfa, event); in bfa_itnim_sm_uninit()
537 bfa_itnim_sm_created(struct bfa_itnim_s *itnim, enum bfa_itnim_event event) in bfa_itnim_sm_created() argument
539 bfa_trc(itnim->bfa, itnim->rport->rport_tag); in bfa_itnim_sm_created()
540 bfa_trc(itnim->bfa, event); in bfa_itnim_sm_created()
544 if (bfa_itnim_send_fwcreate(itnim)) in bfa_itnim_sm_created()
545 bfa_sm_set_state(itnim, bfa_itnim_sm_fwcreate); in bfa_itnim_sm_created()
547 bfa_sm_set_state(itnim, bfa_itnim_sm_fwcreate_qfull); in bfa_itnim_sm_created()
551 bfa_sm_set_state(itnim, bfa_itnim_sm_uninit); in bfa_itnim_sm_created()
552 bfa_fcpim_delitn(itnim); in bfa_itnim_sm_created()
556 bfa_sm_set_state(itnim, bfa_itnim_sm_iocdisable); in bfa_itnim_sm_created()
560 bfa_sm_fault(itnim->bfa, event); in bfa_itnim_sm_created()
568 bfa_itnim_sm_fwcreate(struct bfa_itnim_s *itnim, enum bfa_itnim_event event) in bfa_itnim_sm_fwcreate() argument
570 bfa_trc(itnim->bfa, itnim->rport->rport_tag); in bfa_itnim_sm_fwcreate()
571 bfa_trc(itnim->bfa, event); in bfa_itnim_sm_fwcreate()
575 bfa_sm_set_state(itnim, bfa_itnim_sm_online); in bfa_itnim_sm_fwcreate()
576 itnim->is_online = BFA_TRUE; in bfa_itnim_sm_fwcreate()
577 bfa_itnim_iotov_online(itnim); in bfa_itnim_sm_fwcreate()
578 bfa_itnim_online_cb(itnim); in bfa_itnim_sm_fwcreate()
582 bfa_sm_set_state(itnim, bfa_itnim_sm_delete_pending); in bfa_itnim_sm_fwcreate()
586 if (bfa_itnim_send_fwdelete(itnim)) in bfa_itnim_sm_fwcreate()
587 bfa_sm_set_state(itnim, bfa_itnim_sm_fwdelete); in bfa_itnim_sm_fwcreate()
589 bfa_sm_set_state(itnim, bfa_itnim_sm_fwdelete_qfull); in bfa_itnim_sm_fwcreate()
593 bfa_sm_set_state(itnim, bfa_itnim_sm_iocdisable); in bfa_itnim_sm_fwcreate()
597 bfa_sm_fault(itnim->bfa, event); in bfa_itnim_sm_fwcreate()
602 bfa_itnim_sm_fwcreate_qfull(struct bfa_itnim_s *itnim, in bfa_itnim_sm_fwcreate_qfull() argument
605 bfa_trc(itnim->bfa, itnim->rport->rport_tag); in bfa_itnim_sm_fwcreate_qfull()
606 bfa_trc(itnim->bfa, event); in bfa_itnim_sm_fwcreate_qfull()
610 bfa_sm_set_state(itnim, bfa_itnim_sm_fwcreate); in bfa_itnim_sm_fwcreate_qfull()
611 bfa_itnim_send_fwcreate(itnim); in bfa_itnim_sm_fwcreate_qfull()
615 bfa_sm_set_state(itnim, bfa_itnim_sm_uninit); in bfa_itnim_sm_fwcreate_qfull()
616 bfa_reqq_wcancel(&itnim->reqq_wait); in bfa_itnim_sm_fwcreate_qfull()
617 bfa_fcpim_delitn(itnim); in bfa_itnim_sm_fwcreate_qfull()
621 bfa_sm_set_state(itnim, bfa_itnim_sm_offline); in bfa_itnim_sm_fwcreate_qfull()
622 bfa_reqq_wcancel(&itnim->reqq_wait); in bfa_itnim_sm_fwcreate_qfull()
623 bfa_itnim_offline_cb(itnim); in bfa_itnim_sm_fwcreate_qfull()
627 bfa_sm_set_state(itnim, bfa_itnim_sm_iocdisable); in bfa_itnim_sm_fwcreate_qfull()
628 bfa_reqq_wcancel(&itnim->reqq_wait); in bfa_itnim_sm_fwcreate_qfull()
632 bfa_sm_fault(itnim->bfa, event); in bfa_itnim_sm_fwcreate_qfull()
640 bfa_itnim_sm_delete_pending(struct bfa_itnim_s *itnim, in bfa_itnim_sm_delete_pending() argument
643 bfa_trc(itnim->bfa, itnim->rport->rport_tag); in bfa_itnim_sm_delete_pending()
644 bfa_trc(itnim->bfa, event); in bfa_itnim_sm_delete_pending()
648 if (bfa_itnim_send_fwdelete(itnim)) in bfa_itnim_sm_delete_pending()
649 bfa_sm_set_state(itnim, bfa_itnim_sm_deleting); in bfa_itnim_sm_delete_pending()
651 bfa_sm_set_state(itnim, bfa_itnim_sm_deleting_qfull); in bfa_itnim_sm_delete_pending()
655 bfa_sm_set_state(itnim, bfa_itnim_sm_uninit); in bfa_itnim_sm_delete_pending()
656 bfa_fcpim_delitn(itnim); in bfa_itnim_sm_delete_pending()
660 bfa_sm_fault(itnim->bfa, event); in bfa_itnim_sm_delete_pending()
668 bfa_itnim_sm_online(struct bfa_itnim_s *itnim, enum bfa_itnim_event event) in bfa_itnim_sm_online() argument
670 bfa_trc(itnim->bfa, itnim->rport->rport_tag); in bfa_itnim_sm_online()
671 bfa_trc(itnim->bfa, event); in bfa_itnim_sm_online()
675 bfa_sm_set_state(itnim, bfa_itnim_sm_cleanup_offline); in bfa_itnim_sm_online()
676 itnim->is_online = BFA_FALSE; in bfa_itnim_sm_online()
677 bfa_itnim_iotov_start(itnim); in bfa_itnim_sm_online()
678 bfa_itnim_cleanup(itnim); in bfa_itnim_sm_online()
682 bfa_sm_set_state(itnim, bfa_itnim_sm_cleanup_delete); in bfa_itnim_sm_online()
683 itnim->is_online = BFA_FALSE; in bfa_itnim_sm_online()
684 bfa_itnim_cleanup(itnim); in bfa_itnim_sm_online()
688 bfa_sm_set_state(itnim, bfa_itnim_sm_sler); in bfa_itnim_sm_online()
689 itnim->is_online = BFA_FALSE; in bfa_itnim_sm_online()
690 bfa_itnim_iotov_start(itnim); in bfa_itnim_sm_online()
691 bfa_itnim_sler_cb(itnim); in bfa_itnim_sm_online()
695 bfa_sm_set_state(itnim, bfa_itnim_sm_iocdisable); in bfa_itnim_sm_online()
696 itnim->is_online = BFA_FALSE; in bfa_itnim_sm_online()
697 bfa_itnim_iotov_start(itnim); in bfa_itnim_sm_online()
698 bfa_itnim_iocdisable_cleanup(itnim); in bfa_itnim_sm_online()
702 bfa_sm_fault(itnim->bfa, event); in bfa_itnim_sm_online()
710 bfa_itnim_sm_sler(struct bfa_itnim_s *itnim, enum bfa_itnim_event event) in bfa_itnim_sm_sler() argument
712 bfa_trc(itnim->bfa, itnim->rport->rport_tag); in bfa_itnim_sm_sler()
713 bfa_trc(itnim->bfa, event); in bfa_itnim_sm_sler()
717 bfa_sm_set_state(itnim, bfa_itnim_sm_cleanup_offline); in bfa_itnim_sm_sler()
718 bfa_itnim_cleanup(itnim); in bfa_itnim_sm_sler()
722 bfa_sm_set_state(itnim, bfa_itnim_sm_cleanup_delete); in bfa_itnim_sm_sler()
723 bfa_itnim_cleanup(itnim); in bfa_itnim_sm_sler()
724 bfa_itnim_iotov_delete(itnim); in bfa_itnim_sm_sler()
728 bfa_sm_set_state(itnim, bfa_itnim_sm_iocdisable); in bfa_itnim_sm_sler()
729 bfa_itnim_iocdisable_cleanup(itnim); in bfa_itnim_sm_sler()
733 bfa_sm_fault(itnim->bfa, event); in bfa_itnim_sm_sler()
741 bfa_itnim_sm_cleanup_offline(struct bfa_itnim_s *itnim, in bfa_itnim_sm_cleanup_offline() argument
744 bfa_trc(itnim->bfa, itnim->rport->rport_tag); in bfa_itnim_sm_cleanup_offline()
745 bfa_trc(itnim->bfa, event); in bfa_itnim_sm_cleanup_offline()
749 if (bfa_itnim_send_fwdelete(itnim)) in bfa_itnim_sm_cleanup_offline()
750 bfa_sm_set_state(itnim, bfa_itnim_sm_fwdelete); in bfa_itnim_sm_cleanup_offline()
752 bfa_sm_set_state(itnim, bfa_itnim_sm_fwdelete_qfull); in bfa_itnim_sm_cleanup_offline()
756 bfa_sm_set_state(itnim, bfa_itnim_sm_cleanup_delete); in bfa_itnim_sm_cleanup_offline()
757 bfa_itnim_iotov_delete(itnim); in bfa_itnim_sm_cleanup_offline()
761 bfa_sm_set_state(itnim, bfa_itnim_sm_iocdisable); in bfa_itnim_sm_cleanup_offline()
762 bfa_itnim_iocdisable_cleanup(itnim); in bfa_itnim_sm_cleanup_offline()
763 bfa_itnim_offline_cb(itnim); in bfa_itnim_sm_cleanup_offline()
770 bfa_sm_fault(itnim->bfa, event); in bfa_itnim_sm_cleanup_offline()
778 bfa_itnim_sm_cleanup_delete(struct bfa_itnim_s *itnim, in bfa_itnim_sm_cleanup_delete() argument
781 bfa_trc(itnim->bfa, itnim->rport->rport_tag); in bfa_itnim_sm_cleanup_delete()
782 bfa_trc(itnim->bfa, event); in bfa_itnim_sm_cleanup_delete()
786 if (bfa_itnim_send_fwdelete(itnim)) in bfa_itnim_sm_cleanup_delete()
787 bfa_sm_set_state(itnim, bfa_itnim_sm_deleting); in bfa_itnim_sm_cleanup_delete()
789 bfa_sm_set_state(itnim, bfa_itnim_sm_deleting_qfull); in bfa_itnim_sm_cleanup_delete()
793 bfa_sm_set_state(itnim, bfa_itnim_sm_iocdisable); in bfa_itnim_sm_cleanup_delete()
794 bfa_itnim_iocdisable_cleanup(itnim); in bfa_itnim_sm_cleanup_delete()
798 bfa_sm_fault(itnim->bfa, event); in bfa_itnim_sm_cleanup_delete()
806 bfa_itnim_sm_fwdelete(struct bfa_itnim_s *itnim, enum bfa_itnim_event event) in bfa_itnim_sm_fwdelete() argument
808 bfa_trc(itnim->bfa, itnim->rport->rport_tag); in bfa_itnim_sm_fwdelete()
809 bfa_trc(itnim->bfa, event); in bfa_itnim_sm_fwdelete()
813 bfa_sm_set_state(itnim, bfa_itnim_sm_offline); in bfa_itnim_sm_fwdelete()
814 bfa_itnim_offline_cb(itnim); in bfa_itnim_sm_fwdelete()
818 bfa_sm_set_state(itnim, bfa_itnim_sm_deleting); in bfa_itnim_sm_fwdelete()
822 bfa_sm_set_state(itnim, bfa_itnim_sm_iocdisable); in bfa_itnim_sm_fwdelete()
823 bfa_itnim_offline_cb(itnim); in bfa_itnim_sm_fwdelete()
827 bfa_sm_fault(itnim->bfa, event); in bfa_itnim_sm_fwdelete()
832 bfa_itnim_sm_fwdelete_qfull(struct bfa_itnim_s *itnim, in bfa_itnim_sm_fwdelete_qfull() argument
835 bfa_trc(itnim->bfa, itnim->rport->rport_tag); in bfa_itnim_sm_fwdelete_qfull()
836 bfa_trc(itnim->bfa, event); in bfa_itnim_sm_fwdelete_qfull()
840 bfa_sm_set_state(itnim, bfa_itnim_sm_fwdelete); in bfa_itnim_sm_fwdelete_qfull()
841 bfa_itnim_send_fwdelete(itnim); in bfa_itnim_sm_fwdelete_qfull()
845 bfa_sm_set_state(itnim, bfa_itnim_sm_deleting_qfull); in bfa_itnim_sm_fwdelete_qfull()
849 bfa_sm_set_state(itnim, bfa_itnim_sm_iocdisable); in bfa_itnim_sm_fwdelete_qfull()
850 bfa_reqq_wcancel(&itnim->reqq_wait); in bfa_itnim_sm_fwdelete_qfull()
851 bfa_itnim_offline_cb(itnim); in bfa_itnim_sm_fwdelete_qfull()
855 bfa_sm_fault(itnim->bfa, event); in bfa_itnim_sm_fwdelete_qfull()
863 bfa_itnim_sm_offline(struct bfa_itnim_s *itnim, enum bfa_itnim_event event) in bfa_itnim_sm_offline() argument
865 bfa_trc(itnim->bfa, itnim->rport->rport_tag); in bfa_itnim_sm_offline()
866 bfa_trc(itnim->bfa, event); in bfa_itnim_sm_offline()
870 bfa_sm_set_state(itnim, bfa_itnim_sm_uninit); in bfa_itnim_sm_offline()
871 bfa_itnim_iotov_delete(itnim); in bfa_itnim_sm_offline()
872 bfa_fcpim_delitn(itnim); in bfa_itnim_sm_offline()
876 if (bfa_itnim_send_fwcreate(itnim)) in bfa_itnim_sm_offline()
877 bfa_sm_set_state(itnim, bfa_itnim_sm_fwcreate); in bfa_itnim_sm_offline()
879 bfa_sm_set_state(itnim, bfa_itnim_sm_fwcreate_qfull); in bfa_itnim_sm_offline()
883 bfa_sm_set_state(itnim, bfa_itnim_sm_iocdisable); in bfa_itnim_sm_offline()
887 bfa_sm_fault(itnim->bfa, event); in bfa_itnim_sm_offline()
892 bfa_itnim_sm_iocdisable(struct bfa_itnim_s *itnim, in bfa_itnim_sm_iocdisable() argument
895 bfa_trc(itnim->bfa, itnim->rport->rport_tag); in bfa_itnim_sm_iocdisable()
896 bfa_trc(itnim->bfa, event); in bfa_itnim_sm_iocdisable()
900 bfa_sm_set_state(itnim, bfa_itnim_sm_uninit); in bfa_itnim_sm_iocdisable()
901 bfa_itnim_iotov_delete(itnim); in bfa_itnim_sm_iocdisable()
902 bfa_fcpim_delitn(itnim); in bfa_itnim_sm_iocdisable()
906 bfa_itnim_offline_cb(itnim); in bfa_itnim_sm_iocdisable()
910 if (bfa_itnim_send_fwcreate(itnim)) in bfa_itnim_sm_iocdisable()
911 bfa_sm_set_state(itnim, bfa_itnim_sm_fwcreate); in bfa_itnim_sm_iocdisable()
913 bfa_sm_set_state(itnim, bfa_itnim_sm_fwcreate_qfull); in bfa_itnim_sm_iocdisable()
920 bfa_sm_fault(itnim->bfa, event); in bfa_itnim_sm_iocdisable()
928 bfa_itnim_sm_deleting(struct bfa_itnim_s *itnim, enum bfa_itnim_event event) in bfa_itnim_sm_deleting() argument
930 bfa_trc(itnim->bfa, itnim->rport->rport_tag); in bfa_itnim_sm_deleting()
931 bfa_trc(itnim->bfa, event); in bfa_itnim_sm_deleting()
936 bfa_sm_set_state(itnim, bfa_itnim_sm_uninit); in bfa_itnim_sm_deleting()
937 bfa_fcpim_delitn(itnim); in bfa_itnim_sm_deleting()
941 bfa_sm_fault(itnim->bfa, event); in bfa_itnim_sm_deleting()
946 bfa_itnim_sm_deleting_qfull(struct bfa_itnim_s *itnim, in bfa_itnim_sm_deleting_qfull() argument
949 bfa_trc(itnim->bfa, itnim->rport->rport_tag); in bfa_itnim_sm_deleting_qfull()
950 bfa_trc(itnim->bfa, event); in bfa_itnim_sm_deleting_qfull()
954 bfa_sm_set_state(itnim, bfa_itnim_sm_deleting); in bfa_itnim_sm_deleting_qfull()
955 bfa_itnim_send_fwdelete(itnim); in bfa_itnim_sm_deleting_qfull()
959 bfa_sm_set_state(itnim, bfa_itnim_sm_uninit); in bfa_itnim_sm_deleting_qfull()
960 bfa_reqq_wcancel(&itnim->reqq_wait); in bfa_itnim_sm_deleting_qfull()
961 bfa_fcpim_delitn(itnim); in bfa_itnim_sm_deleting_qfull()
965 bfa_sm_fault(itnim->bfa, event); in bfa_itnim_sm_deleting_qfull()
973 bfa_itnim_iocdisable_cleanup(struct bfa_itnim_s *itnim) in bfa_itnim_iocdisable_cleanup() argument
979 list_for_each_safe(qe, qen, &itnim->tsk_q) { in bfa_itnim_iocdisable_cleanup()
984 list_for_each_safe(qe, qen, &itnim->io_q) { in bfa_itnim_iocdisable_cleanup()
992 list_for_each_safe(qe, qen, &itnim->pending_q) { in bfa_itnim_iocdisable_cleanup()
997 list_for_each_safe(qe, qen, &itnim->io_cleanup_q) { in bfa_itnim_iocdisable_cleanup()
1009 struct bfa_itnim_s *itnim = itnim_cbarg; in bfa_itnim_cleanp_comp() local
1011 bfa_stats(itnim, cleanup_comps); in bfa_itnim_cleanp_comp()
1012 bfa_sm_send_event(itnim, BFA_ITNIM_SM_CLEANUP); in bfa_itnim_cleanp_comp()
1019 bfa_itnim_cleanup(struct bfa_itnim_s *itnim) in bfa_itnim_cleanup() argument
1025 bfa_wc_init(&itnim->wc, bfa_itnim_cleanp_comp, itnim); in bfa_itnim_cleanup()
1027 list_for_each_safe(qe, qen, &itnim->io_q) { in bfa_itnim_cleanup()
1035 list_add_tail(&ioim->qe, &itnim->io_cleanup_q); in bfa_itnim_cleanup()
1037 bfa_wc_up(&itnim->wc); in bfa_itnim_cleanup()
1041 list_for_each_safe(qe, qen, &itnim->tsk_q) { in bfa_itnim_cleanup()
1043 bfa_wc_up(&itnim->wc); in bfa_itnim_cleanup()
1047 bfa_wc_wait(&itnim->wc); in bfa_itnim_cleanup()
1053 struct bfa_itnim_s *itnim = cbarg; in __bfa_cb_itnim_online() local
1056 bfa_cb_itnim_online(itnim->ditn); in __bfa_cb_itnim_online()
1062 struct bfa_itnim_s *itnim = cbarg; in __bfa_cb_itnim_offline() local
1065 bfa_cb_itnim_offline(itnim->ditn); in __bfa_cb_itnim_offline()
1071 struct bfa_itnim_s *itnim = cbarg; in __bfa_cb_itnim_sler() local
1074 bfa_cb_itnim_sler(itnim->ditn); in __bfa_cb_itnim_sler()
1083 struct bfa_itnim_s *itnim = cbarg; in bfa_itnim_qresume() local
1085 bfa_sm_send_event(itnim, BFA_ITNIM_SM_QRESUME); in bfa_itnim_qresume()
1093 bfa_itnim_iodone(struct bfa_itnim_s *itnim) in bfa_itnim_iodone() argument
1095 bfa_wc_down(&itnim->wc); in bfa_itnim_iodone()
1099 bfa_itnim_tskdone(struct bfa_itnim_s *itnim) in bfa_itnim_tskdone() argument
1101 bfa_wc_down(&itnim->wc); in bfa_itnim_tskdone()
1118 struct bfa_itnim_s *itnim; in bfa_itnim_attach() local
1123 itnim = (struct bfa_itnim_s *) bfa_mem_kva_curp(fcp); in bfa_itnim_attach()
1124 fcpim->itnim_arr = itnim; in bfa_itnim_attach()
1126 for (i = 0; i < fcpim->num_itnims; i++, itnim++) { in bfa_itnim_attach()
1127 memset(itnim, 0, sizeof(struct bfa_itnim_s)); in bfa_itnim_attach()
1128 itnim->bfa = bfa; in bfa_itnim_attach()
1129 itnim->fcpim = fcpim; in bfa_itnim_attach()
1130 itnim->reqq = BFA_REQQ_QOS_LO; in bfa_itnim_attach()
1131 itnim->rport = BFA_RPORT_FROM_TAG(bfa, i); in bfa_itnim_attach()
1132 itnim->iotov_active = BFA_FALSE; in bfa_itnim_attach()
1133 bfa_reqq_winit(&itnim->reqq_wait, bfa_itnim_qresume, itnim); in bfa_itnim_attach()
1135 INIT_LIST_HEAD(&itnim->io_q); in bfa_itnim_attach()
1136 INIT_LIST_HEAD(&itnim->io_cleanup_q); in bfa_itnim_attach()
1137 INIT_LIST_HEAD(&itnim->pending_q); in bfa_itnim_attach()
1138 INIT_LIST_HEAD(&itnim->tsk_q); in bfa_itnim_attach()
1139 INIT_LIST_HEAD(&itnim->delay_comp_q); in bfa_itnim_attach()
1141 itnim->ioprofile.io_latency.min[j] = ~0; in bfa_itnim_attach()
1142 bfa_sm_set_state(itnim, bfa_itnim_sm_uninit); in bfa_itnim_attach()
1145 bfa_mem_kva_curp(fcp) = (u8 *) itnim; in bfa_itnim_attach()
1149 bfa_itnim_iocdisable(struct bfa_itnim_s *itnim) in bfa_itnim_iocdisable() argument
1151 bfa_stats(itnim, ioc_disabled); in bfa_itnim_iocdisable()
1152 bfa_sm_send_event(itnim, BFA_ITNIM_SM_HWFAIL); in bfa_itnim_iocdisable()
1156 bfa_itnim_send_fwcreate(struct bfa_itnim_s *itnim) in bfa_itnim_send_fwcreate() argument
1160 itnim->msg_no++; in bfa_itnim_send_fwcreate()
1165 m = bfa_reqq_next(itnim->bfa, itnim->reqq); in bfa_itnim_send_fwcreate()
1167 bfa_reqq_wait(itnim->bfa, itnim->reqq, &itnim->reqq_wait); in bfa_itnim_send_fwcreate()
1172 bfa_fn_lpu(itnim->bfa)); in bfa_itnim_send_fwcreate()
1173 m->fw_handle = itnim->rport->fw_handle; in bfa_itnim_send_fwcreate()
1175 m->seq_rec = itnim->seq_rec; in bfa_itnim_send_fwcreate()
1176 m->msg_no = itnim->msg_no; in bfa_itnim_send_fwcreate()
1177 bfa_stats(itnim, fw_create); in bfa_itnim_send_fwcreate()
1182 bfa_reqq_produce(itnim->bfa, itnim->reqq, m->mh); in bfa_itnim_send_fwcreate()
1187 bfa_itnim_send_fwdelete(struct bfa_itnim_s *itnim) in bfa_itnim_send_fwdelete() argument
1194 m = bfa_reqq_next(itnim->bfa, itnim->reqq); in bfa_itnim_send_fwdelete()
1196 bfa_reqq_wait(itnim->bfa, itnim->reqq, &itnim->reqq_wait); in bfa_itnim_send_fwdelete()
1201 bfa_fn_lpu(itnim->bfa)); in bfa_itnim_send_fwdelete()
1202 m->fw_handle = itnim->rport->fw_handle; in bfa_itnim_send_fwdelete()
1203 bfa_stats(itnim, fw_delete); in bfa_itnim_send_fwdelete()
1208 bfa_reqq_produce(itnim->bfa, itnim->reqq, m->mh); in bfa_itnim_send_fwdelete()
1216 bfa_itnim_delayed_comp(struct bfa_itnim_s *itnim, bfa_boolean_t iotov) in bfa_itnim_delayed_comp() argument
1221 list_for_each_safe(qe, qen, &itnim->delay_comp_q) { in bfa_itnim_delayed_comp()
1231 bfa_itnim_iotov_online(struct bfa_itnim_s *itnim) in bfa_itnim_iotov_online() argument
1235 bfa_itnim_iotov_stop(itnim); in bfa_itnim_iotov_online()
1240 bfa_itnim_delayed_comp(itnim, BFA_FALSE); in bfa_itnim_iotov_online()
1245 while (!list_empty(&itnim->pending_q)) { in bfa_itnim_iotov_online()
1246 bfa_q_deq(&itnim->pending_q, &ioim); in bfa_itnim_iotov_online()
1247 list_add_tail(&ioim->qe, &itnim->io_q); in bfa_itnim_iotov_online()
1256 bfa_itnim_iotov_cleanup(struct bfa_itnim_s *itnim) in bfa_itnim_iotov_cleanup() argument
1263 bfa_itnim_delayed_comp(itnim, BFA_TRUE); in bfa_itnim_iotov_cleanup()
1268 while (!list_empty(&itnim->pending_q)) { in bfa_itnim_iotov_cleanup()
1269 bfa_q_deq(&itnim->pending_q, &ioim); in bfa_itnim_iotov_cleanup()
1281 struct bfa_itnim_s *itnim = itnim_arg; in bfa_itnim_iotov() local
1283 itnim->iotov_active = BFA_FALSE; in bfa_itnim_iotov()
1285 bfa_cb_itnim_tov_begin(itnim->ditn); in bfa_itnim_iotov()
1286 bfa_itnim_iotov_cleanup(itnim); in bfa_itnim_iotov()
1287 bfa_cb_itnim_tov(itnim->ditn); in bfa_itnim_iotov()
1294 bfa_itnim_iotov_start(struct bfa_itnim_s *itnim) in bfa_itnim_iotov_start() argument
1296 if (itnim->fcpim->path_tov > 0) { in bfa_itnim_iotov_start()
1298 itnim->iotov_active = BFA_TRUE; in bfa_itnim_iotov_start()
1299 WARN_ON(!bfa_itnim_hold_io(itnim)); in bfa_itnim_iotov_start()
1300 bfa_timer_start(itnim->bfa, &itnim->timer, in bfa_itnim_iotov_start()
1301 bfa_itnim_iotov, itnim, itnim->fcpim->path_tov); in bfa_itnim_iotov_start()
1309 bfa_itnim_iotov_stop(struct bfa_itnim_s *itnim) in bfa_itnim_iotov_stop() argument
1311 if (itnim->iotov_active) { in bfa_itnim_iotov_stop()
1312 itnim->iotov_active = BFA_FALSE; in bfa_itnim_iotov_stop()
1313 bfa_timer_stop(&itnim->timer); in bfa_itnim_iotov_stop()
1321 bfa_itnim_iotov_delete(struct bfa_itnim_s *itnim) in bfa_itnim_iotov_delete() argument
1325 if (itnim->iotov_active) in bfa_itnim_iotov_delete()
1328 bfa_itnim_iotov_stop(itnim); in bfa_itnim_iotov_delete()
1330 bfa_cb_itnim_tov_begin(itnim->ditn); in bfa_itnim_iotov_delete()
1331 bfa_itnim_iotov_cleanup(itnim); in bfa_itnim_iotov_delete()
1333 bfa_cb_itnim_tov(itnim->ditn); in bfa_itnim_iotov_delete()
1337 bfa_itnim_update_del_itn_stats(struct bfa_itnim_s *itnim) in bfa_itnim_update_del_itn_stats() argument
1339 struct bfa_fcpim_s *fcpim = BFA_FCPIM(itnim->bfa); in bfa_itnim_update_del_itn_stats()
1341 itnim->stats.iocomp_aborted; in bfa_itnim_update_del_itn_stats()
1343 itnim->stats.iocomp_timedout; in bfa_itnim_update_del_itn_stats()
1345 itnim->stats.iocom_sqer_needed; in bfa_itnim_update_del_itn_stats()
1347 itnim->stats.iocom_res_free; in bfa_itnim_update_del_itn_stats()
1349 itnim->stats.iocom_hostabrts; in bfa_itnim_update_del_itn_stats()
1350 fcpim->del_itn_stats.del_itn_total_ios += itnim->stats.total_ios; in bfa_itnim_update_del_itn_stats()
1351 fcpim->del_itn_stats.del_io_iocdowns += itnim->stats.io_iocdowns; in bfa_itnim_update_del_itn_stats()
1352 fcpim->del_itn_stats.del_tm_iocdowns += itnim->stats.tm_iocdowns; in bfa_itnim_update_del_itn_stats()
1367 struct bfa_itnim_s *itnim; in bfa_itnim_isr() local
1375 itnim = BFA_ITNIM_FROM_TAG(fcpim, in bfa_itnim_isr()
1378 bfa_stats(itnim, create_comps); in bfa_itnim_isr()
1379 bfa_sm_send_event(itnim, BFA_ITNIM_SM_FWRSP); in bfa_itnim_isr()
1383 itnim = BFA_ITNIM_FROM_TAG(fcpim, in bfa_itnim_isr()
1386 bfa_stats(itnim, delete_comps); in bfa_itnim_isr()
1387 bfa_sm_send_event(itnim, BFA_ITNIM_SM_FWRSP); in bfa_itnim_isr()
1391 itnim = BFA_ITNIM_FROM_TAG(fcpim, in bfa_itnim_isr()
1393 bfa_stats(itnim, sler_events); in bfa_itnim_isr()
1394 bfa_sm_send_event(itnim, BFA_ITNIM_SM_SLER); in bfa_itnim_isr()
1411 struct bfa_itnim_s *itnim; in bfa_itnim_create() local
1415 itnim = BFA_ITNIM_FROM_TAG(fcpim, rport->rport_tag); in bfa_itnim_create()
1416 WARN_ON(itnim->rport != rport); in bfa_itnim_create()
1418 itnim->ditn = ditn; in bfa_itnim_create()
1420 bfa_stats(itnim, creates); in bfa_itnim_create()
1421 bfa_sm_send_event(itnim, BFA_ITNIM_SM_CREATE); in bfa_itnim_create()
1423 return itnim; in bfa_itnim_create()
1427 bfa_itnim_delete(struct bfa_itnim_s *itnim) in bfa_itnim_delete() argument
1429 bfa_stats(itnim, deletes); in bfa_itnim_delete()
1430 bfa_sm_send_event(itnim, BFA_ITNIM_SM_DELETE); in bfa_itnim_delete()
1434 bfa_itnim_online(struct bfa_itnim_s *itnim, bfa_boolean_t seq_rec) in bfa_itnim_online() argument
1436 itnim->seq_rec = seq_rec; in bfa_itnim_online()
1437 bfa_stats(itnim, onlines); in bfa_itnim_online()
1438 bfa_sm_send_event(itnim, BFA_ITNIM_SM_ONLINE); in bfa_itnim_online()
1442 bfa_itnim_offline(struct bfa_itnim_s *itnim) in bfa_itnim_offline() argument
1444 bfa_stats(itnim, offlines); in bfa_itnim_offline()
1445 bfa_sm_send_event(itnim, BFA_ITNIM_SM_OFFLINE); in bfa_itnim_offline()
1453 bfa_itnim_hold_io(struct bfa_itnim_s *itnim) in bfa_itnim_hold_io() argument
1455 return itnim->fcpim->path_tov && itnim->iotov_active && in bfa_itnim_hold_io()
1456 (bfa_sm_cmp_state(itnim, bfa_itnim_sm_fwcreate) || in bfa_itnim_hold_io()
1457 bfa_sm_cmp_state(itnim, bfa_itnim_sm_sler) || in bfa_itnim_hold_io()
1458 bfa_sm_cmp_state(itnim, bfa_itnim_sm_cleanup_offline) || in bfa_itnim_hold_io()
1459 bfa_sm_cmp_state(itnim, bfa_itnim_sm_fwdelete) || in bfa_itnim_hold_io()
1460 bfa_sm_cmp_state(itnim, bfa_itnim_sm_offline) || in bfa_itnim_hold_io()
1461 bfa_sm_cmp_state(itnim, bfa_itnim_sm_iocdisable)); in bfa_itnim_hold_io()
1467 bfa_itnim_get_ioprofile(struct bfa_itnim_s *itnim, in bfa_itnim_get_ioprofile() argument
1472 if (!itnim) in bfa_itnim_get_ioprofile()
1475 fcpim = BFA_FCPIM(itnim->bfa); in bfa_itnim_get_ioprofile()
1480 itnim->ioprofile.index = BFA_IOBUCKET_MAX; in bfa_itnim_get_ioprofile()
1481 itnim->ioprofile.io_profile_start_time = in bfa_itnim_get_ioprofile()
1482 bfa_io_profile_start_time(itnim->bfa); in bfa_itnim_get_ioprofile()
1483 itnim->ioprofile.clock_res_mul = bfa_io_lat_clock_res_mul; in bfa_itnim_get_ioprofile()
1484 itnim->ioprofile.clock_res_div = bfa_io_lat_clock_res_div; in bfa_itnim_get_ioprofile()
1485 *ioprofile = itnim->ioprofile; in bfa_itnim_get_ioprofile()
1491 bfa_itnim_clear_stats(struct bfa_itnim_s *itnim) in bfa_itnim_clear_stats() argument
1495 if (!itnim) in bfa_itnim_clear_stats()
1498 memset(&itnim->stats, 0, sizeof(itnim->stats)); in bfa_itnim_clear_stats()
1499 memset(&itnim->ioprofile, 0, sizeof(itnim->ioprofile)); in bfa_itnim_clear_stats()
1501 itnim->ioprofile.io_latency.min[j] = ~0; in bfa_itnim_clear_stats()
1516 if (!bfa_itnim_is_online(ioim->itnim)) { in bfa_ioim_sm_uninit()
1517 if (!bfa_itnim_hold_io(ioim->itnim)) { in bfa_ioim_sm_uninit()
1527 &ioim->itnim->pending_q); in bfa_ioim_sm_uninit()
1560 WARN_ON(!bfa_q_is_on_q(&ioim->itnim->pending_q, ioim)); in bfa_ioim_sm_uninit()
1653 bfa_stats(ioim->itnim, qwait); in bfa_ioim_sm_active()
1667 bfa_stats(ioim->itnim, qwait); in bfa_ioim_sm_active()
1723 bfa_stats(ioim->itnim, qwait); in bfa_ioim_sm_cmnd_retry()
1794 bfa_stats(ioim->itnim, qwait); in bfa_ioim_sm_abort()
2168 bfa_stats(ioim->itnim, iocomp_underrun); in __bfa_cb_ioim_comp()
2173 bfa_stats(ioim->itnim, iocomp_overrun); in __bfa_cb_ioim_comp()
2418 bfa_stats(ioim->itnim, path_tov_expired); in __bfa_cb_ioim_pathtov()
2458 struct bfa_itnim_s *itnim = ioim->itnim; in bfa_ioim_send_ioreq() local
2476 bfa_stats(ioim->itnim, qwait); in bfa_ioim_send_ioreq()
2486 m->rport_hdl = ioim->itnim->rport->fw_handle; in bfa_ioim_send_ioreq()
2577 bfa_stats(itnim, input_reqs); in bfa_ioim_send_ioreq()
2578 ioim->itnim->stats.rd_throughput += fcp_dl; in bfa_ioim_send_ioreq()
2582 bfa_stats(itnim, output_reqs); in bfa_ioim_send_ioreq()
2583 ioim->itnim->stats.wr_throughput += fcp_dl; in bfa_ioim_send_ioreq()
2586 bfa_stats(itnim, input_reqs); in bfa_ioim_send_ioreq()
2587 bfa_stats(itnim, output_reqs); in bfa_ioim_send_ioreq()
2591 if (itnim->seq_rec || in bfa_ioim_send_ioreq()
2675 bfa_stats(ioim->itnim, qresumes); in bfa_ioim_qresume()
2691 if (ioim->fcpim->delay_comp && ioim->itnim->iotov_active) { in bfa_ioim_notify_cleanup()
2694 list_add_tail(&ioim->qe, &ioim->itnim->delay_comp_q); in bfa_ioim_notify_cleanup()
2696 bfa_itnim_iodone(ioim->itnim); in bfa_ioim_notify_cleanup()
2705 (!bfa_q_is_on_q(&ioim->itnim->pending_q, ioim))) || in bfa_ioim_is_abortable()
2730 bfa_stats(ioim->itnim, iocom_nexus_abort); in bfa_ioim_delayed_comp()
2813 bfa_stats(ioim->itnim, iocomp_ok); in bfa_ioim_isr()
2821 bfa_stats(ioim->itnim, iocomp_timedout); in bfa_ioim_isr()
2824 bfa_stats(ioim->itnim, iocomp_aborted); in bfa_ioim_isr()
2832 bfa_stats(ioim->itnim, iocom_proto_err); in bfa_ioim_isr()
2838 bfa_stats(ioim->itnim, iocom_sqer_needed); in bfa_ioim_isr()
2844 bfa_stats(ioim->itnim, iocom_res_free); in bfa_ioim_isr()
2849 bfa_stats(ioim->itnim, iocom_hostabrts); in bfa_ioim_isr()
2863 bfa_stats(ioim->itnim, iocom_utags); in bfa_ioim_isr()
2899 bfa_stats(ioim->itnim, io_cleanups); in bfa_ioim_cleanup()
2909 bfa_stats(ioim->itnim, io_tmaborts); in bfa_ioim_cleanup_tm()
2922 bfa_stats(ioim->itnim, io_iocdowns); in bfa_ioim_iocdisable()
2942 struct bfa_itnim_s *itnim, u16 nsges) in bfa_ioim_alloc() argument
2953 bfa_stats(itnim, no_iotags); in bfa_ioim_alloc()
2960 ioim->itnim = itnim; in bfa_ioim_alloc()
2964 bfa_stats(itnim, total_ios); in bfa_ioim_alloc()
2967 list_add_tail(&ioim->qe, &itnim->io_q); in bfa_ioim_alloc()
2981 bfa_stats(ioim->itnim, io_comps); in bfa_ioim_free()
3024 bfa_stats(ioim->itnim, io_aborts); in bfa_ioim_abort()
3051 if (!bfa_itnim_is_online(tskim->itnim)) { 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()
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()
3273 bfa_stats(tskim->itnim, tm_success); in __bfa_cb_tskim_done()
3287 bfa_stats(tskim->itnim, tm_failures); in __bfa_cb_tskim_failed()
3318 struct bfa_itnim_s *itnim = tskim->itnim; in bfa_tskim_gather_ios() local
3329 list_for_each_safe(qe, qen, &itnim->io_q) { in bfa_tskim_gather_ios()
3342 list_for_each_safe(qe, qen, &itnim->pending_q) { in bfa_tskim_gather_ios()
3362 bfa_stats(tskim->itnim, tm_io_comps); in bfa_tskim_cleanp_comp()
3392 struct bfa_itnim_s *itnim = tskim->itnim; in bfa_tskim_send() local
3398 m = bfa_reqq_next(tskim->bfa, itnim->reqq); in bfa_tskim_send()
3409 m->itn_fhdl = tskim->itnim->rport->fw_handle; in bfa_tskim_send()
3417 bfa_reqq_produce(tskim->bfa, itnim->reqq, m->mh); in bfa_tskim_send()
3427 struct bfa_itnim_s *itnim = tskim->itnim; in bfa_tskim_send_abort() local
3433 m = bfa_reqq_next(tskim->bfa, itnim->reqq); in bfa_tskim_send_abort()
3448 bfa_reqq_produce(tskim->bfa, itnim->reqq, m->mh); in bfa_tskim_send_abort()
3460 bfa_stats(tskim->itnim, tm_qresumes); in bfa_tskim_qresume()
3495 bfa_stats(tskim->itnim, tm_iocdowns); in bfa_tskim_iocdisable()
3506 bfa_stats(tskim->itnim, tm_cleanups); in bfa_tskim_cleanup()
3563 bfa_stats(tskim->itnim, tm_cleanup_comps); in bfa_tskim_isr()
3568 bfa_stats(tskim->itnim, tm_fw_rsps); in bfa_tskim_isr()
3591 WARN_ON(!bfa_q_is_on_q_func(&tskim->itnim->tsk_q, &tskim->qe)); 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()
3617 bfa_stats(itnim, tm_cmnds); in bfa_tskim_start()
3619 list_add_tail(&tskim->qe, &itnim->tsk_q); in bfa_tskim_start()