Lines Matching refs:iocpf
125 IOC_E_PFFAILED = 8, /* failure notice by iocpf sm */
175 * Forward declareations for iocpf state machine
284 bfa_fsm_set_state(&ioc->iocpf, bfa_iocpf_sm_reset);
317 bfa_fsm_send_event(&ioc->iocpf, IOCPF_E_ENABLE);
340 bfa_fsm_send_event(&ioc->iocpf, IOCPF_E_INITFAIL);
354 bfa_fsm_send_event(&ioc->iocpf, IOCPF_E_STOP);
395 bfa_fsm_send_event(&ioc->iocpf, IOCPF_E_GETATTRFAIL);
442 if (ioc->iocpf.auto_recover)
450 bfa_fsm_send_event(&ioc->iocpf, IOCPF_E_FAIL);
463 bfa_fsm_send_event(&ioc->iocpf, IOCPF_E_DISABLE);
484 * after iocpf sm completes failure processing and
487 bfa_fsm_send_event(&ioc->iocpf, IOCPF_E_FAIL);
525 bfa_fsm_send_event(&ioc->iocpf, IOCPF_E_STOP);
561 bfa_fsm_send_event(&ioc->iocpf, IOCPF_E_INITFAIL);
578 bfa_fsm_send_event(&ioc->iocpf, IOCPF_E_STOP);
613 bfa_fsm_send_event(&ioc->iocpf, IOCPF_E_STOP);
668 bfa_iocpf_sm_reset_entry(struct bfa_iocpf_s *iocpf)
670 iocpf->fw_mismatch_notified = BFA_FALSE;
671 iocpf->auto_recover = bfa_auto_recover;
678 bfa_iocpf_sm_reset(struct bfa_iocpf_s *iocpf, enum iocpf_event event)
680 struct bfa_ioc_s *ioc = iocpf->ioc;
686 bfa_fsm_set_state(iocpf, bfa_iocpf_sm_fwcheck);
701 bfa_iocpf_sm_fwcheck_entry(struct bfa_iocpf_s *iocpf)
710 r32 = readl(iocpf->ioc->ioc_regs.ioc_init_sem_reg);
713 r32 = readl(iocpf->ioc->ioc_regs.ioc_init_sem_reg);
717 fwstate = bfa_ioc_get_cur_ioc_fwstate(iocpf->ioc);
719 writel(1, iocpf->ioc->ioc_regs.ioc_init_sem_reg);
723 bfa_ioc_fwver_get(iocpf->ioc, &fwhdr);
726 writel(1, iocpf->ioc->ioc_regs.ioc_init_sem_reg);
733 pgnum = PSS_SMEM_PGNUM(iocpf->ioc->ioc_regs.smem_pg0, loff);
734 writel(pgnum, iocpf->ioc->ioc_regs.host_page_num_fn);
737 bfa_mem_write(iocpf->ioc->ioc_regs.smem_page_start, loff, 0);
741 bfa_trc(iocpf->ioc, fwstate);
742 bfa_trc(iocpf->ioc, swab32(fwhdr.exec));
743 bfa_ioc_set_cur_ioc_fwstate(iocpf->ioc, BFI_IOC_UNINIT);
744 bfa_ioc_set_alt_ioc_fwstate(iocpf->ioc, BFI_IOC_UNINIT);
749 bfa_ioc_ownership_reset(iocpf->ioc);
754 writel(1, iocpf->ioc->ioc_regs.ioc_init_sem_reg);
757 bfa_ioc_hw_sem_get(iocpf->ioc);
764 bfa_iocpf_sm_fwcheck(struct bfa_iocpf_s *iocpf, enum iocpf_event event)
766 struct bfa_ioc_s *ioc = iocpf->ioc;
775 bfa_fsm_set_state(iocpf, bfa_iocpf_sm_hwinit);
783 bfa_fsm_set_state(iocpf, bfa_iocpf_sm_mismatch);
788 bfa_fsm_set_state(iocpf, bfa_iocpf_sm_fail);
794 bfa_fsm_set_state(iocpf, bfa_iocpf_sm_reset);
800 bfa_fsm_set_state(iocpf, bfa_iocpf_sm_reset);
812 bfa_iocpf_sm_mismatch_entry(struct bfa_iocpf_s *iocpf)
817 if (iocpf->fw_mismatch_notified == BFA_FALSE)
818 bfa_ioc_pf_fwmismatch(iocpf->ioc);
820 iocpf->fw_mismatch_notified = BFA_TRUE;
821 bfa_iocpf_timer_start(iocpf->ioc);
828 bfa_iocpf_sm_mismatch(struct bfa_iocpf_s *iocpf, enum iocpf_event event)
830 struct bfa_ioc_s *ioc = iocpf->ioc;
836 bfa_fsm_set_state(iocpf, bfa_iocpf_sm_fwcheck);
841 bfa_fsm_set_state(iocpf, bfa_iocpf_sm_reset);
847 bfa_fsm_set_state(iocpf, bfa_iocpf_sm_reset);
859 bfa_iocpf_sm_semwait_entry(struct bfa_iocpf_s *iocpf)
861 bfa_ioc_hw_sem_get(iocpf->ioc);
868 bfa_iocpf_sm_semwait(struct bfa_iocpf_s *iocpf, enum iocpf_event event)
870 struct bfa_ioc_s *ioc = iocpf->ioc;
878 bfa_fsm_set_state(iocpf, bfa_iocpf_sm_hwinit);
886 bfa_fsm_set_state(iocpf, bfa_iocpf_sm_fail);
892 bfa_fsm_set_state(iocpf, bfa_iocpf_sm_disabling_sync);
901 bfa_iocpf_sm_hwinit_entry(struct bfa_iocpf_s *iocpf)
903 iocpf->poll_time = 0;
904 bfa_ioc_hwinit(iocpf->ioc, BFA_FALSE);
912 bfa_iocpf_sm_hwinit(struct bfa_iocpf_s *iocpf, enum iocpf_event event)
914 struct bfa_ioc_s *ioc = iocpf->ioc;
920 bfa_fsm_set_state(iocpf, bfa_iocpf_sm_enabling);
926 bfa_fsm_set_state(iocpf, bfa_iocpf_sm_initfail_sync);
933 bfa_fsm_set_state(iocpf, bfa_iocpf_sm_disabled);
942 bfa_iocpf_sm_enabling_entry(struct bfa_iocpf_s *iocpf)
944 bfa_iocpf_timer_start(iocpf->ioc);
948 iocpf->ioc->cbfn->reset_cbfn(iocpf->ioc->bfa);
949 bfa_ioc_send_enable(iocpf->ioc);
957 bfa_iocpf_sm_enabling(struct bfa_iocpf_s *iocpf, enum iocpf_event event)
959 struct bfa_ioc_s *ioc = iocpf->ioc;
967 bfa_fsm_set_state(iocpf, bfa_iocpf_sm_ready);
978 bfa_fsm_set_state(iocpf, bfa_iocpf_sm_initfail_sync);
984 bfa_fsm_set_state(iocpf, bfa_iocpf_sm_disabling);
993 bfa_iocpf_sm_ready_entry(struct bfa_iocpf_s *iocpf)
995 bfa_fsm_send_event(iocpf->ioc, IOC_E_ENABLED);
999 bfa_iocpf_sm_ready(struct bfa_iocpf_s *iocpf, enum iocpf_event event)
1001 struct bfa_ioc_s *ioc = iocpf->ioc;
1007 bfa_fsm_set_state(iocpf, bfa_iocpf_sm_disabling);
1011 bfa_fsm_set_state(iocpf, bfa_iocpf_sm_initfail_sync);
1015 bfa_fsm_set_state(iocpf, bfa_iocpf_sm_fail_sync);
1024 bfa_iocpf_sm_disabling_entry(struct bfa_iocpf_s *iocpf)
1026 bfa_iocpf_timer_start(iocpf->ioc);
1027 bfa_ioc_send_disable(iocpf->ioc);
1034 bfa_iocpf_sm_disabling(struct bfa_iocpf_s *iocpf, enum iocpf_event event)
1036 struct bfa_ioc_s *ioc = iocpf->ioc;
1043 bfa_fsm_set_state(iocpf, bfa_iocpf_sm_disabling_sync);
1052 bfa_fsm_set_state(iocpf, bfa_iocpf_sm_disabling_sync);
1064 bfa_iocpf_sm_disabling_sync_entry(struct bfa_iocpf_s *iocpf)
1066 bfa_ioc_hw_sem_get(iocpf->ioc);
1073 bfa_iocpf_sm_disabling_sync(struct bfa_iocpf_s *iocpf, enum iocpf_event event)
1075 struct bfa_ioc_s *ioc = iocpf->ioc;
1083 bfa_fsm_set_state(iocpf, bfa_iocpf_sm_disabled);
1087 bfa_fsm_set_state(iocpf, bfa_iocpf_sm_fail);
1103 bfa_iocpf_sm_disabled_entry(struct bfa_iocpf_s *iocpf)
1105 bfa_ioc_mbox_flush(iocpf->ioc);
1106 bfa_fsm_send_event(iocpf->ioc, IOC_E_DISABLED);
1110 bfa_iocpf_sm_disabled(struct bfa_iocpf_s *iocpf, enum iocpf_event event)
1112 struct bfa_ioc_s *ioc = iocpf->ioc;
1118 bfa_fsm_set_state(iocpf, bfa_iocpf_sm_semwait);
1123 bfa_fsm_set_state(iocpf, bfa_iocpf_sm_reset);
1132 bfa_iocpf_sm_initfail_sync_entry(struct bfa_iocpf_s *iocpf)
1134 bfa_ioc_debug_save_ftrc(iocpf->ioc);
1135 bfa_ioc_hw_sem_get(iocpf->ioc);
1142 bfa_iocpf_sm_initfail_sync(struct bfa_iocpf_s *iocpf, enum iocpf_event event)
1144 struct bfa_ioc_s *ioc = iocpf->ioc;
1154 bfa_fsm_set_state(iocpf, bfa_iocpf_sm_initfail);
1158 bfa_fsm_set_state(iocpf, bfa_iocpf_sm_fail);
1164 bfa_fsm_set_state(iocpf, bfa_iocpf_sm_disabling_sync);
1170 bfa_fsm_set_state(iocpf, bfa_iocpf_sm_reset);
1182 bfa_iocpf_sm_initfail_entry(struct bfa_iocpf_s *iocpf)
1184 bfa_trc(iocpf->ioc, 0);
1191 bfa_iocpf_sm_initfail(struct bfa_iocpf_s *iocpf, enum iocpf_event event)
1193 struct bfa_ioc_s *ioc = iocpf->ioc;
1199 bfa_fsm_set_state(iocpf, bfa_iocpf_sm_disabled);
1204 bfa_fsm_set_state(iocpf, bfa_iocpf_sm_reset);
1213 bfa_iocpf_sm_fail_sync_entry(struct bfa_iocpf_s *iocpf)
1218 bfa_ioc_lpu_stop(iocpf->ioc);
1223 bfa_ioc_mbox_flush(iocpf->ioc);
1225 bfa_ioc_hw_sem_get(iocpf->ioc);
1229 bfa_iocpf_sm_fail_sync(struct bfa_iocpf_s *iocpf, enum iocpf_event event)
1231 struct bfa_ioc_s *ioc = iocpf->ioc;
1239 if (!iocpf->auto_recover) {
1243 bfa_fsm_set_state(iocpf, bfa_iocpf_sm_fail);
1246 bfa_fsm_set_state(iocpf, bfa_iocpf_sm_hwinit);
1249 bfa_fsm_set_state(iocpf, bfa_iocpf_sm_semwait);
1255 bfa_fsm_set_state(iocpf, bfa_iocpf_sm_fail);
1261 bfa_fsm_set_state(iocpf, bfa_iocpf_sm_disabling_sync);
1273 bfa_iocpf_sm_fail_entry(struct bfa_iocpf_s *iocpf)
1275 bfa_trc(iocpf->ioc, 0);
1282 bfa_iocpf_sm_fail(struct bfa_iocpf_s *iocpf, enum iocpf_event event)
1284 struct bfa_ioc_s *ioc = iocpf->ioc;
1290 bfa_fsm_set_state(iocpf, bfa_iocpf_sm_disabled);
1357 bfa_fsm_send_event(&ioc->iocpf, IOCPF_E_SEM_ERROR);
1361 bfa_fsm_send_event(&ioc->iocpf, IOCPF_E_SEMLOCKED);
1745 bfa_fsm_send_event(&ioc->iocpf, IOCPF_E_FWREADY);
2319 struct bfa_iocpf_s *iocpf = &ioc->iocpf;
2333 bfa_fsm_send_event(iocpf, IOCPF_E_FWRSP_ENABLE);
2337 bfa_fsm_send_event(iocpf, IOCPF_E_FWRSP_DISABLE);
2366 ioc->iocpf.ioc = ioc;
2647 bfa_fsm_cmp_state(&ioc->iocpf, bfa_iocpf_sm_fwcheck) ||
2648 bfa_fsm_cmp_state(&ioc->iocpf, bfa_iocpf_sm_mismatch);
2823 iocpf_st = bfa_sm_to_state(iocpf_sm_table, ioc->iocpf.fsm);
3144 bfa_fsm_send_event(&ioc->iocpf, IOCPF_E_TIMEOUT);
3163 bfa_fsm_send_event(&ioc->iocpf, IOCPF_E_FWREADY);
3167 if (ioc->iocpf.poll_time >= (3 * BFA_IOC_TOV))
3170 ioc->iocpf.poll_time += BFA_IOC_POLL_TOV;