Lines Matching refs:ioc

90 static void bfa_ioc_hw_sem_get(struct bfa_ioc_s *ioc);
91 static void bfa_ioc_hwinit(struct bfa_ioc_s *ioc, bfa_boolean_t force);
92 static void bfa_ioc_timeout(void *ioc);
93 static void bfa_ioc_poll_fwinit(struct bfa_ioc_s *ioc);
94 static void bfa_ioc_send_enable(struct bfa_ioc_s *ioc);
95 static void bfa_ioc_send_disable(struct bfa_ioc_s *ioc);
96 static void bfa_ioc_send_getattr(struct bfa_ioc_s *ioc);
97 static void bfa_ioc_hb_monitor(struct bfa_ioc_s *ioc);
98 static void bfa_ioc_mbox_poll(struct bfa_ioc_s *ioc);
99 static void bfa_ioc_mbox_flush(struct bfa_ioc_s *ioc);
100 static void bfa_ioc_recover(struct bfa_ioc_s *ioc);
101 static void bfa_ioc_event_notify(struct bfa_ioc_s *ioc ,
103 static void bfa_ioc_disable_comp(struct bfa_ioc_s *ioc);
104 static void bfa_ioc_lpu_stop(struct bfa_ioc_s *ioc);
105 static void bfa_ioc_fail_notify(struct bfa_ioc_s *ioc);
106 static void bfa_ioc_pf_fwmismatch(struct bfa_ioc_s *ioc);
111 struct bfa_ioc_s *ioc,
256 bfa_ioc_sm_uninit_entry(struct bfa_ioc_s *ioc) in bfa_ioc_sm_uninit_entry() argument
264 bfa_ioc_sm_uninit(struct bfa_ioc_s *ioc, enum ioc_event event) in bfa_ioc_sm_uninit() argument
266 bfa_trc(ioc, event); in bfa_ioc_sm_uninit()
270 bfa_fsm_set_state(ioc, bfa_ioc_sm_reset); in bfa_ioc_sm_uninit()
274 bfa_sm_fault(ioc, event); in bfa_ioc_sm_uninit()
281 bfa_ioc_sm_reset_entry(struct bfa_ioc_s *ioc) in bfa_ioc_sm_reset_entry() argument
283 bfa_fsm_set_state(&ioc->iocpf, bfa_iocpf_sm_reset); in bfa_ioc_sm_reset_entry()
290 bfa_ioc_sm_reset(struct bfa_ioc_s *ioc, enum ioc_event event) in bfa_ioc_sm_reset() argument
292 bfa_trc(ioc, event); in bfa_ioc_sm_reset()
296 bfa_fsm_set_state(ioc, bfa_ioc_sm_enabling); in bfa_ioc_sm_reset()
300 bfa_ioc_disable_comp(ioc); in bfa_ioc_sm_reset()
304 bfa_fsm_set_state(ioc, bfa_ioc_sm_uninit); in bfa_ioc_sm_reset()
308 bfa_sm_fault(ioc, event); in bfa_ioc_sm_reset()
314 bfa_ioc_sm_enabling_entry(struct bfa_ioc_s *ioc) in bfa_ioc_sm_enabling_entry() argument
316 bfa_fsm_send_event(&ioc->iocpf, IOCPF_E_ENABLE); in bfa_ioc_sm_enabling_entry()
324 bfa_ioc_sm_enabling(struct bfa_ioc_s *ioc, enum ioc_event event) in bfa_ioc_sm_enabling() argument
326 bfa_trc(ioc, event); in bfa_ioc_sm_enabling()
330 bfa_fsm_set_state(ioc, bfa_ioc_sm_getattr); in bfa_ioc_sm_enabling()
336 ioc->cbfn->enable_cbfn(ioc->bfa, BFA_STATUS_IOC_FAILURE); in bfa_ioc_sm_enabling()
337 bfa_fsm_set_state(ioc, bfa_ioc_sm_fail); in bfa_ioc_sm_enabling()
339 bfa_fsm_send_event(&ioc->iocpf, IOCPF_E_INITFAIL); in bfa_ioc_sm_enabling()
343 ioc->cbfn->enable_cbfn(ioc->bfa, BFA_STATUS_IOC_FAILURE); in bfa_ioc_sm_enabling()
344 bfa_fsm_set_state(ioc, bfa_ioc_sm_hwfail); in bfa_ioc_sm_enabling()
348 bfa_fsm_set_state(ioc, bfa_ioc_sm_disabling); in bfa_ioc_sm_enabling()
352 bfa_fsm_set_state(ioc, bfa_ioc_sm_uninit); in bfa_ioc_sm_enabling()
353 bfa_fsm_send_event(&ioc->iocpf, IOCPF_E_STOP); in bfa_ioc_sm_enabling()
360 bfa_sm_fault(ioc, event); in bfa_ioc_sm_enabling()
366 bfa_ioc_sm_getattr_entry(struct bfa_ioc_s *ioc) in bfa_ioc_sm_getattr_entry() argument
368 bfa_ioc_timer_start(ioc); in bfa_ioc_sm_getattr_entry()
369 bfa_ioc_send_getattr(ioc); in bfa_ioc_sm_getattr_entry()
376 bfa_ioc_sm_getattr(struct bfa_ioc_s *ioc, enum ioc_event event) in bfa_ioc_sm_getattr() argument
378 bfa_trc(ioc, event); in bfa_ioc_sm_getattr()
382 bfa_ioc_timer_stop(ioc); in bfa_ioc_sm_getattr()
383 bfa_fsm_set_state(ioc, bfa_ioc_sm_op); in bfa_ioc_sm_getattr()
388 bfa_ioc_timer_stop(ioc); in bfa_ioc_sm_getattr()
391 ioc->cbfn->enable_cbfn(ioc->bfa, BFA_STATUS_IOC_FAILURE); in bfa_ioc_sm_getattr()
392 bfa_fsm_set_state(ioc, bfa_ioc_sm_fail); in bfa_ioc_sm_getattr()
394 bfa_fsm_send_event(&ioc->iocpf, IOCPF_E_GETATTRFAIL); in bfa_ioc_sm_getattr()
398 bfa_ioc_timer_stop(ioc); in bfa_ioc_sm_getattr()
399 bfa_fsm_set_state(ioc, bfa_ioc_sm_disabling); in bfa_ioc_sm_getattr()
406 bfa_sm_fault(ioc, event); in bfa_ioc_sm_getattr()
411 bfa_ioc_sm_op_entry(struct bfa_ioc_s *ioc) in bfa_ioc_sm_op_entry() argument
413 struct bfad_s *bfad = (struct bfad_s *)ioc->bfa->bfad; in bfa_ioc_sm_op_entry()
415 ioc->cbfn->enable_cbfn(ioc->bfa, BFA_STATUS_OK); in bfa_ioc_sm_op_entry()
416 bfa_ioc_event_notify(ioc, BFA_IOC_E_ENABLED); in bfa_ioc_sm_op_entry()
417 bfa_ioc_hb_monitor(ioc); in bfa_ioc_sm_op_entry()
419 bfa_ioc_aen_post(ioc, BFA_IOC_AEN_ENABLE); in bfa_ioc_sm_op_entry()
423 bfa_ioc_sm_op(struct bfa_ioc_s *ioc, enum ioc_event event) in bfa_ioc_sm_op() argument
425 bfa_trc(ioc, event); in bfa_ioc_sm_op()
432 bfa_hb_timer_stop(ioc); in bfa_ioc_sm_op()
433 bfa_fsm_set_state(ioc, bfa_ioc_sm_disabling); in bfa_ioc_sm_op()
438 bfa_hb_timer_stop(ioc); in bfa_ioc_sm_op()
441 if (ioc->iocpf.auto_recover) in bfa_ioc_sm_op()
442 bfa_fsm_set_state(ioc, bfa_ioc_sm_fail_retry); in bfa_ioc_sm_op()
444 bfa_fsm_set_state(ioc, bfa_ioc_sm_fail); in bfa_ioc_sm_op()
446 bfa_ioc_fail_notify(ioc); in bfa_ioc_sm_op()
449 bfa_fsm_send_event(&ioc->iocpf, IOCPF_E_FAIL); in bfa_ioc_sm_op()
453 bfa_sm_fault(ioc, event); in bfa_ioc_sm_op()
459 bfa_ioc_sm_disabling_entry(struct bfa_ioc_s *ioc) in bfa_ioc_sm_disabling_entry() argument
461 struct bfad_s *bfad = (struct bfad_s *)ioc->bfa->bfad; in bfa_ioc_sm_disabling_entry()
462 bfa_fsm_send_event(&ioc->iocpf, IOCPF_E_DISABLE); in bfa_ioc_sm_disabling_entry()
464 bfa_ioc_aen_post(ioc, BFA_IOC_AEN_DISABLE); in bfa_ioc_sm_disabling_entry()
471 bfa_ioc_sm_disabling(struct bfa_ioc_s *ioc, enum ioc_event event) in bfa_ioc_sm_disabling() argument
473 bfa_trc(ioc, event); in bfa_ioc_sm_disabling()
477 bfa_fsm_set_state(ioc, bfa_ioc_sm_disabled); in bfa_ioc_sm_disabling()
486 bfa_fsm_send_event(&ioc->iocpf, IOCPF_E_FAIL); in bfa_ioc_sm_disabling()
490 bfa_fsm_set_state(ioc, bfa_ioc_sm_hwfail); in bfa_ioc_sm_disabling()
491 bfa_ioc_disable_comp(ioc); in bfa_ioc_sm_disabling()
495 bfa_sm_fault(ioc, event); in bfa_ioc_sm_disabling()
503 bfa_ioc_sm_disabled_entry(struct bfa_ioc_s *ioc) in bfa_ioc_sm_disabled_entry() argument
505 bfa_ioc_disable_comp(ioc); in bfa_ioc_sm_disabled_entry()
509 bfa_ioc_sm_disabled(struct bfa_ioc_s *ioc, enum ioc_event event) in bfa_ioc_sm_disabled() argument
511 bfa_trc(ioc, event); in bfa_ioc_sm_disabled()
515 bfa_fsm_set_state(ioc, bfa_ioc_sm_enabling); in bfa_ioc_sm_disabled()
519 ioc->cbfn->disable_cbfn(ioc->bfa); in bfa_ioc_sm_disabled()
523 bfa_fsm_set_state(ioc, bfa_ioc_sm_uninit); in bfa_ioc_sm_disabled()
524 bfa_fsm_send_event(&ioc->iocpf, IOCPF_E_STOP); in bfa_ioc_sm_disabled()
528 bfa_sm_fault(ioc, event); in bfa_ioc_sm_disabled()
534 bfa_ioc_sm_fail_retry_entry(struct bfa_ioc_s *ioc) in bfa_ioc_sm_fail_retry_entry() argument
536 bfa_trc(ioc, 0); in bfa_ioc_sm_fail_retry_entry()
543 bfa_ioc_sm_fail_retry(struct bfa_ioc_s *ioc, enum ioc_event event) in bfa_ioc_sm_fail_retry() argument
545 bfa_trc(ioc, event); in bfa_ioc_sm_fail_retry()
549 bfa_fsm_set_state(ioc, bfa_ioc_sm_getattr); in bfa_ioc_sm_fail_retry()
557 ioc->cbfn->enable_cbfn(ioc->bfa, BFA_STATUS_IOC_FAILURE); in bfa_ioc_sm_fail_retry()
558 bfa_fsm_set_state(ioc, bfa_ioc_sm_fail); in bfa_ioc_sm_fail_retry()
560 bfa_fsm_send_event(&ioc->iocpf, IOCPF_E_INITFAIL); in bfa_ioc_sm_fail_retry()
564 ioc->cbfn->enable_cbfn(ioc->bfa, BFA_STATUS_IOC_FAILURE); in bfa_ioc_sm_fail_retry()
565 bfa_fsm_set_state(ioc, bfa_ioc_sm_hwfail); in bfa_ioc_sm_fail_retry()
572 bfa_fsm_set_state(ioc, bfa_ioc_sm_disabling); in bfa_ioc_sm_fail_retry()
576 bfa_fsm_set_state(ioc, bfa_ioc_sm_uninit); in bfa_ioc_sm_fail_retry()
577 bfa_fsm_send_event(&ioc->iocpf, IOCPF_E_STOP); in bfa_ioc_sm_fail_retry()
581 bfa_sm_fault(ioc, event); in bfa_ioc_sm_fail_retry()
587 bfa_ioc_sm_fail_entry(struct bfa_ioc_s *ioc) in bfa_ioc_sm_fail_entry() argument
589 bfa_trc(ioc, 0); in bfa_ioc_sm_fail_entry()
596 bfa_ioc_sm_fail(struct bfa_ioc_s *ioc, enum ioc_event event) in bfa_ioc_sm_fail() argument
598 bfa_trc(ioc, event); in bfa_ioc_sm_fail()
603 ioc->cbfn->enable_cbfn(ioc->bfa, BFA_STATUS_IOC_FAILURE); in bfa_ioc_sm_fail()
607 bfa_fsm_set_state(ioc, bfa_ioc_sm_disabling); in bfa_ioc_sm_fail()
611 bfa_fsm_set_state(ioc, bfa_ioc_sm_uninit); in bfa_ioc_sm_fail()
612 bfa_fsm_send_event(&ioc->iocpf, IOCPF_E_STOP); in bfa_ioc_sm_fail()
622 bfa_sm_fault(ioc, event); in bfa_ioc_sm_fail()
627 bfa_ioc_sm_hwfail_entry(struct bfa_ioc_s *ioc) in bfa_ioc_sm_hwfail_entry() argument
629 bfa_trc(ioc, 0); in bfa_ioc_sm_hwfail_entry()
633 bfa_ioc_sm_hwfail(struct bfa_ioc_s *ioc, enum ioc_event event) in bfa_ioc_sm_hwfail() argument
635 bfa_trc(ioc, event); in bfa_ioc_sm_hwfail()
639 ioc->cbfn->enable_cbfn(ioc->bfa, BFA_STATUS_IOC_FAILURE); in bfa_ioc_sm_hwfail()
643 ioc->cbfn->disable_cbfn(ioc->bfa); in bfa_ioc_sm_hwfail()
647 bfa_fsm_set_state(ioc, bfa_ioc_sm_uninit); in bfa_ioc_sm_hwfail()
655 bfa_sm_fault(ioc, event); in bfa_ioc_sm_hwfail()
679 struct bfa_ioc_s *ioc = iocpf->ioc; in bfa_iocpf_sm_reset() local
681 bfa_trc(ioc, event); in bfa_iocpf_sm_reset()
692 bfa_sm_fault(ioc, event); in bfa_iocpf_sm_reset()
709 r32 = readl(iocpf->ioc->ioc_regs.ioc_init_sem_reg); in bfa_iocpf_sm_fwcheck_entry()
712 r32 = readl(iocpf->ioc->ioc_regs.ioc_init_sem_reg); in bfa_iocpf_sm_fwcheck_entry()
716 fwstate = bfa_ioc_get_cur_ioc_fwstate(iocpf->ioc); in bfa_iocpf_sm_fwcheck_entry()
718 writel(1, iocpf->ioc->ioc_regs.ioc_init_sem_reg); in bfa_iocpf_sm_fwcheck_entry()
722 bfa_ioc_fwver_get(iocpf->ioc, &fwhdr); in bfa_iocpf_sm_fwcheck_entry()
725 writel(1, iocpf->ioc->ioc_regs.ioc_init_sem_reg); in bfa_iocpf_sm_fwcheck_entry()
732 pgnum = PSS_SMEM_PGNUM(iocpf->ioc->ioc_regs.smem_pg0, loff); in bfa_iocpf_sm_fwcheck_entry()
733 writel(pgnum, iocpf->ioc->ioc_regs.host_page_num_fn); in bfa_iocpf_sm_fwcheck_entry()
736 bfa_mem_write(iocpf->ioc->ioc_regs.smem_page_start, loff, 0); in bfa_iocpf_sm_fwcheck_entry()
740 bfa_trc(iocpf->ioc, fwstate); in bfa_iocpf_sm_fwcheck_entry()
741 bfa_trc(iocpf->ioc, swab32(fwhdr.exec)); in bfa_iocpf_sm_fwcheck_entry()
742 bfa_ioc_set_cur_ioc_fwstate(iocpf->ioc, BFI_IOC_UNINIT); in bfa_iocpf_sm_fwcheck_entry()
743 bfa_ioc_set_alt_ioc_fwstate(iocpf->ioc, BFI_IOC_UNINIT); in bfa_iocpf_sm_fwcheck_entry()
748 bfa_ioc_ownership_reset(iocpf->ioc); in bfa_iocpf_sm_fwcheck_entry()
753 writel(1, iocpf->ioc->ioc_regs.ioc_init_sem_reg); in bfa_iocpf_sm_fwcheck_entry()
756 bfa_ioc_hw_sem_get(iocpf->ioc); in bfa_iocpf_sm_fwcheck_entry()
765 struct bfa_ioc_s *ioc = iocpf->ioc; in bfa_iocpf_sm_fwcheck() local
767 bfa_trc(ioc, event); in bfa_iocpf_sm_fwcheck()
771 if (bfa_ioc_firmware_lock(ioc)) { in bfa_iocpf_sm_fwcheck()
772 if (bfa_ioc_sync_start(ioc)) { in bfa_iocpf_sm_fwcheck()
773 bfa_ioc_sync_join(ioc); in bfa_iocpf_sm_fwcheck()
776 bfa_ioc_firmware_unlock(ioc); in bfa_iocpf_sm_fwcheck()
777 writel(1, ioc->ioc_regs.ioc_sem_reg); in bfa_iocpf_sm_fwcheck()
778 bfa_sem_timer_start(ioc); in bfa_iocpf_sm_fwcheck()
781 writel(1, ioc->ioc_regs.ioc_sem_reg); in bfa_iocpf_sm_fwcheck()
788 bfa_fsm_send_event(ioc, IOC_E_HWFAILED); in bfa_iocpf_sm_fwcheck()
792 bfa_sem_timer_stop(ioc); in bfa_iocpf_sm_fwcheck()
794 bfa_fsm_send_event(ioc, IOC_E_DISABLED); in bfa_iocpf_sm_fwcheck()
798 bfa_sem_timer_stop(ioc); in bfa_iocpf_sm_fwcheck()
803 bfa_sm_fault(ioc, event); in bfa_iocpf_sm_fwcheck()
817 bfa_ioc_pf_fwmismatch(iocpf->ioc); in bfa_iocpf_sm_mismatch_entry()
820 bfa_iocpf_timer_start(iocpf->ioc); in bfa_iocpf_sm_mismatch_entry()
829 struct bfa_ioc_s *ioc = iocpf->ioc; in bfa_iocpf_sm_mismatch() local
831 bfa_trc(ioc, event); in bfa_iocpf_sm_mismatch()
839 bfa_iocpf_timer_stop(ioc); in bfa_iocpf_sm_mismatch()
841 bfa_fsm_send_event(ioc, IOC_E_DISABLED); in bfa_iocpf_sm_mismatch()
845 bfa_iocpf_timer_stop(ioc); in bfa_iocpf_sm_mismatch()
850 bfa_sm_fault(ioc, event); in bfa_iocpf_sm_mismatch()
860 bfa_ioc_hw_sem_get(iocpf->ioc); in bfa_iocpf_sm_semwait_entry()
869 struct bfa_ioc_s *ioc = iocpf->ioc; in bfa_iocpf_sm_semwait() local
871 bfa_trc(ioc, event); in bfa_iocpf_sm_semwait()
875 if (bfa_ioc_sync_complete(ioc)) { in bfa_iocpf_sm_semwait()
876 bfa_ioc_sync_join(ioc); in bfa_iocpf_sm_semwait()
879 writel(1, ioc->ioc_regs.ioc_sem_reg); in bfa_iocpf_sm_semwait()
880 bfa_sem_timer_start(ioc); in bfa_iocpf_sm_semwait()
886 bfa_fsm_send_event(ioc, IOC_E_HWFAILED); in bfa_iocpf_sm_semwait()
890 bfa_sem_timer_stop(ioc); in bfa_iocpf_sm_semwait()
895 bfa_sm_fault(ioc, event); in bfa_iocpf_sm_semwait()
903 bfa_ioc_hwinit(iocpf->ioc, BFA_FALSE); in bfa_iocpf_sm_hwinit_entry()
913 struct bfa_ioc_s *ioc = iocpf->ioc; in bfa_iocpf_sm_hwinit() local
915 bfa_trc(ioc, event); in bfa_iocpf_sm_hwinit()
923 writel(1, ioc->ioc_regs.ioc_sem_reg); in bfa_iocpf_sm_hwinit()
924 bfa_fsm_send_event(ioc, IOC_E_PFFAILED); in bfa_iocpf_sm_hwinit()
929 bfa_iocpf_timer_stop(ioc); in bfa_iocpf_sm_hwinit()
930 bfa_ioc_sync_leave(ioc); in bfa_iocpf_sm_hwinit()
931 writel(1, ioc->ioc_regs.ioc_sem_reg); in bfa_iocpf_sm_hwinit()
936 bfa_sm_fault(ioc, event); in bfa_iocpf_sm_hwinit()
943 bfa_iocpf_timer_start(iocpf->ioc); in bfa_iocpf_sm_enabling_entry()
947 iocpf->ioc->cbfn->reset_cbfn(iocpf->ioc->bfa); in bfa_iocpf_sm_enabling_entry()
948 bfa_ioc_send_enable(iocpf->ioc); in bfa_iocpf_sm_enabling_entry()
958 struct bfa_ioc_s *ioc = iocpf->ioc; in bfa_iocpf_sm_enabling() local
960 bfa_trc(ioc, event); in bfa_iocpf_sm_enabling()
964 bfa_iocpf_timer_stop(ioc); in bfa_iocpf_sm_enabling()
965 writel(1, ioc->ioc_regs.ioc_sem_reg); in bfa_iocpf_sm_enabling()
970 bfa_iocpf_timer_stop(ioc); in bfa_iocpf_sm_enabling()
974 writel(1, ioc->ioc_regs.ioc_sem_reg); in bfa_iocpf_sm_enabling()
976 bfa_fsm_send_event(ioc, IOC_E_PFFAILED); in bfa_iocpf_sm_enabling()
981 bfa_iocpf_timer_stop(ioc); in bfa_iocpf_sm_enabling()
982 writel(1, ioc->ioc_regs.ioc_sem_reg); in bfa_iocpf_sm_enabling()
987 bfa_sm_fault(ioc, event); in bfa_iocpf_sm_enabling()
994 bfa_fsm_send_event(iocpf->ioc, IOC_E_ENABLED); in bfa_iocpf_sm_ready_entry()
1000 struct bfa_ioc_s *ioc = iocpf->ioc; in bfa_iocpf_sm_ready() local
1002 bfa_trc(ioc, event); in bfa_iocpf_sm_ready()
1018 bfa_sm_fault(ioc, event); in bfa_iocpf_sm_ready()
1025 bfa_iocpf_timer_start(iocpf->ioc); in bfa_iocpf_sm_disabling_entry()
1026 bfa_ioc_send_disable(iocpf->ioc); in bfa_iocpf_sm_disabling_entry()
1035 struct bfa_ioc_s *ioc = iocpf->ioc; in bfa_iocpf_sm_disabling() local
1037 bfa_trc(ioc, event); in bfa_iocpf_sm_disabling()
1041 bfa_iocpf_timer_stop(ioc); in bfa_iocpf_sm_disabling()
1046 bfa_iocpf_timer_stop(ioc); in bfa_iocpf_sm_disabling()
1050 bfa_ioc_set_cur_ioc_fwstate(ioc, BFI_IOC_FAIL); in bfa_iocpf_sm_disabling()
1058 bfa_sm_fault(ioc, event); in bfa_iocpf_sm_disabling()
1065 bfa_ioc_hw_sem_get(iocpf->ioc); in bfa_iocpf_sm_disabling_sync_entry()
1074 struct bfa_ioc_s *ioc = iocpf->ioc; in bfa_iocpf_sm_disabling_sync() local
1076 bfa_trc(ioc, event); in bfa_iocpf_sm_disabling_sync()
1080 bfa_ioc_sync_leave(ioc); in bfa_iocpf_sm_disabling_sync()
1081 writel(1, ioc->ioc_regs.ioc_sem_reg); in bfa_iocpf_sm_disabling_sync()
1087 bfa_fsm_send_event(ioc, IOC_E_HWFAILED); in bfa_iocpf_sm_disabling_sync()
1094 bfa_sm_fault(ioc, event); in bfa_iocpf_sm_disabling_sync()
1104 bfa_ioc_mbox_flush(iocpf->ioc); in bfa_iocpf_sm_disabled_entry()
1105 bfa_fsm_send_event(iocpf->ioc, IOC_E_DISABLED); in bfa_iocpf_sm_disabled_entry()
1111 struct bfa_ioc_s *ioc = iocpf->ioc; in bfa_iocpf_sm_disabled() local
1113 bfa_trc(ioc, event); in bfa_iocpf_sm_disabled()
1121 bfa_ioc_firmware_unlock(ioc); in bfa_iocpf_sm_disabled()
1126 bfa_sm_fault(ioc, event); in bfa_iocpf_sm_disabled()
1133 bfa_ioc_debug_save_ftrc(iocpf->ioc); in bfa_iocpf_sm_initfail_sync_entry()
1134 bfa_ioc_hw_sem_get(iocpf->ioc); in bfa_iocpf_sm_initfail_sync_entry()
1143 struct bfa_ioc_s *ioc = iocpf->ioc; in bfa_iocpf_sm_initfail_sync() local
1145 bfa_trc(ioc, event); in bfa_iocpf_sm_initfail_sync()
1149 bfa_ioc_notify_fail(ioc); in bfa_iocpf_sm_initfail_sync()
1150 bfa_ioc_sync_leave(ioc); in bfa_iocpf_sm_initfail_sync()
1151 bfa_ioc_set_cur_ioc_fwstate(ioc, BFI_IOC_FAIL); in bfa_iocpf_sm_initfail_sync()
1152 writel(1, ioc->ioc_regs.ioc_sem_reg); in bfa_iocpf_sm_initfail_sync()
1158 bfa_fsm_send_event(ioc, IOC_E_HWFAILED); in bfa_iocpf_sm_initfail_sync()
1162 bfa_sem_timer_stop(ioc); in bfa_iocpf_sm_initfail_sync()
1167 bfa_sem_timer_stop(ioc); in bfa_iocpf_sm_initfail_sync()
1168 bfa_ioc_firmware_unlock(ioc); in bfa_iocpf_sm_initfail_sync()
1176 bfa_sm_fault(ioc, event); in bfa_iocpf_sm_initfail_sync()
1183 bfa_trc(iocpf->ioc, 0); in bfa_iocpf_sm_initfail_entry()
1192 struct bfa_ioc_s *ioc = iocpf->ioc; in bfa_iocpf_sm_initfail() local
1194 bfa_trc(ioc, event); in bfa_iocpf_sm_initfail()
1202 bfa_ioc_firmware_unlock(ioc); in bfa_iocpf_sm_initfail()
1207 bfa_sm_fault(ioc, event); in bfa_iocpf_sm_initfail()
1217 bfa_ioc_lpu_stop(iocpf->ioc); in bfa_iocpf_sm_fail_sync_entry()
1222 bfa_ioc_mbox_flush(iocpf->ioc); in bfa_iocpf_sm_fail_sync_entry()
1224 bfa_ioc_hw_sem_get(iocpf->ioc); in bfa_iocpf_sm_fail_sync_entry()
1230 struct bfa_ioc_s *ioc = iocpf->ioc; in bfa_iocpf_sm_fail_sync() local
1232 bfa_trc(ioc, event); in bfa_iocpf_sm_fail_sync()
1236 bfa_ioc_sync_ack(ioc); in bfa_iocpf_sm_fail_sync()
1237 bfa_ioc_notify_fail(ioc); in bfa_iocpf_sm_fail_sync()
1239 bfa_ioc_sync_leave(ioc); in bfa_iocpf_sm_fail_sync()
1240 bfa_ioc_set_cur_ioc_fwstate(ioc, BFI_IOC_FAIL); in bfa_iocpf_sm_fail_sync()
1241 writel(1, ioc->ioc_regs.ioc_sem_reg); in bfa_iocpf_sm_fail_sync()
1244 if (bfa_ioc_sync_complete(ioc)) in bfa_iocpf_sm_fail_sync()
1247 writel(1, ioc->ioc_regs.ioc_sem_reg); in bfa_iocpf_sm_fail_sync()
1255 bfa_fsm_send_event(ioc, IOC_E_HWFAILED); in bfa_iocpf_sm_fail_sync()
1259 bfa_sem_timer_stop(ioc); in bfa_iocpf_sm_fail_sync()
1267 bfa_sm_fault(ioc, event); in bfa_iocpf_sm_fail_sync()
1274 bfa_trc(iocpf->ioc, 0); in bfa_iocpf_sm_fail_entry()
1283 struct bfa_ioc_s *ioc = iocpf->ioc; in bfa_iocpf_sm_fail() local
1285 bfa_trc(ioc, event); in bfa_iocpf_sm_fail()
1293 bfa_sm_fault(ioc, event); in bfa_iocpf_sm_fail()
1305 bfa_ioc_event_notify(struct bfa_ioc_s *ioc, enum bfa_ioc_event_e event) in bfa_ioc_event_notify() argument
1310 list_for_each(qe, &ioc->notify_q) { in bfa_ioc_event_notify()
1317 bfa_ioc_disable_comp(struct bfa_ioc_s *ioc) in bfa_ioc_disable_comp() argument
1319 ioc->cbfn->disable_cbfn(ioc->bfa); in bfa_ioc_disable_comp()
1320 bfa_ioc_event_notify(ioc, BFA_IOC_E_DISABLED); in bfa_ioc_disable_comp()
1345 bfa_ioc_hw_sem_get(struct bfa_ioc_s *ioc) in bfa_ioc_hw_sem_get() argument
1353 r32 = readl(ioc->ioc_regs.ioc_sem_reg); in bfa_ioc_hw_sem_get()
1356 bfa_fsm_send_event(&ioc->iocpf, IOCPF_E_SEM_ERROR); in bfa_ioc_hw_sem_get()
1360 bfa_fsm_send_event(&ioc->iocpf, IOCPF_E_SEMLOCKED); in bfa_ioc_hw_sem_get()
1364 bfa_sem_timer_start(ioc); in bfa_ioc_hw_sem_get()
1371 bfa_ioc_lmem_init(struct bfa_ioc_s *ioc) in bfa_ioc_lmem_init() argument
1377 pss_ctl = readl(ioc->ioc_regs.pss_ctl_reg); in bfa_ioc_lmem_init()
1385 writel(pss_ctl, ioc->ioc_regs.pss_ctl_reg); in bfa_ioc_lmem_init()
1392 pss_ctl = readl(ioc->ioc_regs.pss_ctl_reg); in bfa_ioc_lmem_init()
1401 bfa_trc(ioc, pss_ctl); in bfa_ioc_lmem_init()
1404 writel(pss_ctl, ioc->ioc_regs.pss_ctl_reg); in bfa_ioc_lmem_init()
1408 bfa_ioc_lpu_start(struct bfa_ioc_s *ioc) in bfa_ioc_lpu_start() argument
1415 pss_ctl = readl(ioc->ioc_regs.pss_ctl_reg); in bfa_ioc_lpu_start()
1418 writel(pss_ctl, ioc->ioc_regs.pss_ctl_reg); in bfa_ioc_lpu_start()
1422 bfa_ioc_lpu_stop(struct bfa_ioc_s *ioc) in bfa_ioc_lpu_stop() argument
1429 pss_ctl = readl(ioc->ioc_regs.pss_ctl_reg); in bfa_ioc_lpu_stop()
1432 writel(pss_ctl, ioc->ioc_regs.pss_ctl_reg); in bfa_ioc_lpu_stop()
1439 bfa_ioc_fwver_get(struct bfa_ioc_s *ioc, struct bfi_ioc_image_hdr_s *fwhdr) in bfa_ioc_fwver_get() argument
1446 pgnum = PSS_SMEM_PGNUM(ioc->ioc_regs.smem_pg0, loff); in bfa_ioc_fwver_get()
1447 writel(pgnum, ioc->ioc_regs.host_page_num_fn); in bfa_ioc_fwver_get()
1452 bfa_mem_read(ioc->ioc_regs.smem_page_start, loff); in bfa_ioc_fwver_get()
1461 bfa_ioc_fwver_cmp(struct bfa_ioc_s *ioc, in bfa_ioc_fwver_cmp() argument
1468 bfa_cb_image_get_chunk(bfa_ioc_asic_gen(ioc), 0); in bfa_ioc_fwver_cmp()
1484 smem_flash_cmp = bfa_ioc_flash_fwver_cmp(ioc, smem_fwhdr); in bfa_ioc_fwver_cmp()
1501 bfa_ioc_fwver_valid(struct bfa_ioc_s *ioc, u32 boot_env) in bfa_ioc_fwver_valid() argument
1505 bfa_ioc_fwver_get(ioc, &fwhdr); in bfa_ioc_fwver_valid()
1508 bfa_trc(ioc, fwhdr.bootenv); in bfa_ioc_fwver_valid()
1509 bfa_trc(ioc, boot_env); in bfa_ioc_fwver_valid()
1513 return bfa_ioc_fwver_cmp(ioc, &fwhdr); in bfa_ioc_fwver_valid()
1627 bfa_ioc_flash_img_get_chnk(struct bfa_ioc_s *ioc, u32 off, in bfa_ioc_flash_img_get_chnk() argument
1630 return bfa_flash_raw_read(ioc->pcidev.pci_bar_kva, in bfa_ioc_flash_img_get_chnk()
1636 bfa_ioc_flash_fwver_cmp(struct bfa_ioc_s *ioc, in bfa_ioc_flash_fwver_cmp() argument
1643 status = bfa_ioc_flash_img_get_chnk(ioc, 0, fwimg); in bfa_ioc_flash_fwver_cmp()
1659 bfa_ioc_fwsig_invalidate(struct bfa_ioc_s *ioc) in bfa_ioc_fwsig_invalidate() argument
1666 ioc_fwstate = bfa_ioc_get_cur_ioc_fwstate(ioc); in bfa_ioc_fwsig_invalidate()
1670 pgnum = PSS_SMEM_PGNUM(ioc->ioc_regs.smem_pg0, loff); in bfa_ioc_fwsig_invalidate()
1671 writel(pgnum, ioc->ioc_regs.host_page_num_fn); in bfa_ioc_fwsig_invalidate()
1672 bfa_mem_write(ioc->ioc_regs.smem_page_start, loff, BFA_IOC_FW_INV_SIGN); in bfa_ioc_fwsig_invalidate()
1681 bfa_ioc_msgflush(struct bfa_ioc_s *ioc) in bfa_ioc_msgflush() argument
1685 r32 = readl(ioc->ioc_regs.lpu_mbox_cmd); in bfa_ioc_msgflush()
1687 writel(1, ioc->ioc_regs.lpu_mbox_cmd); in bfa_ioc_msgflush()
1691 bfa_ioc_hwinit(struct bfa_ioc_s *ioc, bfa_boolean_t force) in bfa_ioc_hwinit() argument
1698 ioc_fwstate = bfa_ioc_get_cur_ioc_fwstate(ioc); in bfa_ioc_hwinit()
1703 bfa_trc(ioc, ioc_fwstate); in bfa_ioc_hwinit()
1712 BFA_FALSE : bfa_ioc_fwver_valid(ioc, boot_env); in bfa_ioc_hwinit()
1715 if (bfa_ioc_boot(ioc, boot_type, boot_env) == BFA_STATUS_OK) in bfa_ioc_hwinit()
1716 bfa_ioc_poll_fwinit(ioc); in bfa_ioc_hwinit()
1725 bfa_ioc_poll_fwinit(ioc); in bfa_ioc_hwinit()
1743 bfa_ioc_msgflush(ioc); in bfa_ioc_hwinit()
1744 bfa_fsm_send_event(&ioc->iocpf, IOCPF_E_FWREADY); in bfa_ioc_hwinit()
1751 if (bfa_ioc_boot(ioc, boot_type, boot_env) == BFA_STATUS_OK) in bfa_ioc_hwinit()
1752 bfa_ioc_poll_fwinit(ioc); in bfa_ioc_hwinit()
1758 struct bfa_ioc_s *ioc = (struct bfa_ioc_s *) ioc_arg; in bfa_ioc_timeout() local
1760 bfa_trc(ioc, 0); in bfa_ioc_timeout()
1761 bfa_fsm_send_event(ioc, IOC_E_TIMEOUT); in bfa_ioc_timeout()
1765 bfa_ioc_mbox_send(struct bfa_ioc_s *ioc, void *ioc_msg, int len) in bfa_ioc_mbox_send() argument
1770 bfa_trc(ioc, msgp[0]); in bfa_ioc_mbox_send()
1771 bfa_trc(ioc, len); in bfa_ioc_mbox_send()
1780 ioc->ioc_regs.hfn_mbox + i * sizeof(u32)); in bfa_ioc_mbox_send()
1783 writel(0, ioc->ioc_regs.hfn_mbox + i * sizeof(u32)); in bfa_ioc_mbox_send()
1788 writel(1, ioc->ioc_regs.hfn_mbox_cmd); in bfa_ioc_mbox_send()
1789 (void) readl(ioc->ioc_regs.hfn_mbox_cmd); in bfa_ioc_mbox_send()
1793 bfa_ioc_send_enable(struct bfa_ioc_s *ioc) in bfa_ioc_send_enable() argument
1798 bfa_ioc_portid(ioc)); in bfa_ioc_send_enable()
1799 enable_req.clscode = cpu_to_be16(ioc->clscode); in bfa_ioc_send_enable()
1802 bfa_ioc_mbox_send(ioc, &enable_req, sizeof(struct bfi_ioc_ctrl_req_s)); in bfa_ioc_send_enable()
1806 bfa_ioc_send_disable(struct bfa_ioc_s *ioc) in bfa_ioc_send_disable() argument
1811 bfa_ioc_portid(ioc)); in bfa_ioc_send_disable()
1812 disable_req.clscode = cpu_to_be16(ioc->clscode); in bfa_ioc_send_disable()
1815 bfa_ioc_mbox_send(ioc, &disable_req, sizeof(struct bfi_ioc_ctrl_req_s)); in bfa_ioc_send_disable()
1819 bfa_ioc_send_getattr(struct bfa_ioc_s *ioc) in bfa_ioc_send_getattr() argument
1824 bfa_ioc_portid(ioc)); in bfa_ioc_send_getattr()
1825 bfa_dma_be_addr_set(attr_req.attr_addr, ioc->attr_dma.pa); in bfa_ioc_send_getattr()
1826 bfa_ioc_mbox_send(ioc, &attr_req, sizeof(attr_req)); in bfa_ioc_send_getattr()
1832 struct bfa_ioc_s *ioc = cbarg; in bfa_ioc_hb_check() local
1835 hb_count = readl(ioc->ioc_regs.heartbeat); in bfa_ioc_hb_check()
1836 if (ioc->hb_count == hb_count) { in bfa_ioc_hb_check()
1837 bfa_ioc_recover(ioc); in bfa_ioc_hb_check()
1840 ioc->hb_count = hb_count; in bfa_ioc_hb_check()
1843 bfa_ioc_mbox_poll(ioc); in bfa_ioc_hb_check()
1844 bfa_hb_timer_start(ioc); in bfa_ioc_hb_check()
1848 bfa_ioc_hb_monitor(struct bfa_ioc_s *ioc) in bfa_ioc_hb_monitor() argument
1850 ioc->hb_count = readl(ioc->ioc_regs.heartbeat); in bfa_ioc_hb_monitor()
1851 bfa_hb_timer_start(ioc); in bfa_ioc_hb_monitor()
1858 bfa_ioc_download_fw(struct bfa_ioc_s *ioc, u32 boot_type, in bfa_ioc_download_fw() argument
1875 status = bfa_ioc_flash_img_get_chnk(ioc, in bfa_ioc_download_fw()
1882 fwimg_size = bfa_cb_image_get_size(bfa_ioc_asic_gen(ioc)); in bfa_ioc_download_fw()
1883 fwimg = bfa_cb_image_get_chunk(bfa_ioc_asic_gen(ioc), in bfa_ioc_download_fw()
1887 bfa_trc(ioc, fwimg_size); in bfa_ioc_download_fw()
1890 pgnum = PSS_SMEM_PGNUM(ioc->ioc_regs.smem_pg0, loff); in bfa_ioc_download_fw()
1891 writel(pgnum, ioc->ioc_regs.host_page_num_fn); in bfa_ioc_download_fw()
1900 status = bfa_ioc_flash_img_get_chnk(ioc, in bfa_ioc_download_fw()
1909 bfa_ioc_asic_gen(ioc), in bfa_ioc_download_fw()
1917 bfa_mem_write(ioc->ioc_regs.smem_page_start, loff, in bfa_ioc_download_fw()
1928 writel(pgnum, ioc->ioc_regs.host_page_num_fn); in bfa_ioc_download_fw()
1932 writel(PSS_SMEM_PGNUM(ioc->ioc_regs.smem_pg0, 0), in bfa_ioc_download_fw()
1933 ioc->ioc_regs.host_page_num_fn); in bfa_ioc_download_fw()
1942 asicmode = BFI_FWBOOT_DEVMODE(ioc->asic_gen, ioc->asic_mode, in bfa_ioc_download_fw()
1943 ioc->port0_mode, ioc->port1_mode); in bfa_ioc_download_fw()
1944 bfa_mem_write(ioc->ioc_regs.smem_page_start, BFI_FWBOOT_DEVMODE_OFF, in bfa_ioc_download_fw()
1946 bfa_mem_write(ioc->ioc_regs.smem_page_start, BFI_FWBOOT_TYPE_OFF, in bfa_ioc_download_fw()
1948 bfa_mem_write(ioc->ioc_regs.smem_page_start, BFI_FWBOOT_ENV_OFF, in bfa_ioc_download_fw()
1958 bfa_ioc_getattr_reply(struct bfa_ioc_s *ioc) in bfa_ioc_getattr_reply() argument
1960 struct bfi_ioc_attr_s *attr = ioc->attr; in bfa_ioc_getattr_reply()
1965 ioc->fcmode = (attr->port_mode == BFI_PORT_MODE_FC); in bfa_ioc_getattr_reply()
1968 bfa_fsm_send_event(ioc, IOC_E_FWRSP_GETATTR); in bfa_ioc_getattr_reply()
1975 bfa_ioc_mbox_attach(struct bfa_ioc_s *ioc) in bfa_ioc_mbox_attach() argument
1977 struct bfa_ioc_mbox_mod_s *mod = &ioc->mbox_mod; in bfa_ioc_mbox_attach()
1983 mod->mbhdlr[mc].cbarg = ioc->bfa; in bfa_ioc_mbox_attach()
1991 bfa_ioc_mbox_poll(struct bfa_ioc_s *ioc) in bfa_ioc_mbox_poll() argument
1993 struct bfa_ioc_mbox_mod_s *mod = &ioc->mbox_mod; in bfa_ioc_mbox_poll()
2006 stat = readl(ioc->ioc_regs.hfn_mbox_cmd); in bfa_ioc_mbox_poll()
2014 bfa_ioc_mbox_send(ioc, cmd->msg, sizeof(cmd->msg)); in bfa_ioc_mbox_poll()
2021 bfa_ioc_mbox_flush(struct bfa_ioc_s *ioc) in bfa_ioc_mbox_flush() argument
2023 struct bfa_ioc_mbox_mod_s *mod = &ioc->mbox_mod; in bfa_ioc_mbox_flush()
2039 bfa_ioc_smem_read(struct bfa_ioc_s *ioc, void *tbuf, u32 soff, u32 sz) in bfa_ioc_smem_read() argument
2046 pgnum = PSS_SMEM_PGNUM(ioc->ioc_regs.smem_pg0, soff); in bfa_ioc_smem_read()
2048 bfa_trc(ioc, pgnum); in bfa_ioc_smem_read()
2049 bfa_trc(ioc, loff); in bfa_ioc_smem_read()
2050 bfa_trc(ioc, sz); in bfa_ioc_smem_read()
2055 if (BFA_FALSE == bfa_ioc_sem_get(ioc->ioc_regs.ioc_init_sem_reg)) { in bfa_ioc_smem_read()
2056 bfa_trc(ioc, 0); in bfa_ioc_smem_read()
2060 writel(pgnum, ioc->ioc_regs.host_page_num_fn); in bfa_ioc_smem_read()
2063 bfa_trc(ioc, len); in bfa_ioc_smem_read()
2065 r32 = bfa_mem_read(ioc->ioc_regs.smem_page_start, loff); in bfa_ioc_smem_read()
2075 writel(pgnum, ioc->ioc_regs.host_page_num_fn); in bfa_ioc_smem_read()
2078 writel(PSS_SMEM_PGNUM(ioc->ioc_regs.smem_pg0, 0), in bfa_ioc_smem_read()
2079 ioc->ioc_regs.host_page_num_fn); in bfa_ioc_smem_read()
2083 readl(ioc->ioc_regs.ioc_init_sem_reg); in bfa_ioc_smem_read()
2084 writel(1, ioc->ioc_regs.ioc_init_sem_reg); in bfa_ioc_smem_read()
2086 bfa_trc(ioc, pgnum); in bfa_ioc_smem_read()
2098 bfa_ioc_smem_clr(struct bfa_ioc_s *ioc, u32 soff, u32 sz) in bfa_ioc_smem_clr() argument
2103 pgnum = PSS_SMEM_PGNUM(ioc->ioc_regs.smem_pg0, soff); in bfa_ioc_smem_clr()
2105 bfa_trc(ioc, pgnum); in bfa_ioc_smem_clr()
2106 bfa_trc(ioc, loff); in bfa_ioc_smem_clr()
2107 bfa_trc(ioc, sz); in bfa_ioc_smem_clr()
2112 if (BFA_FALSE == bfa_ioc_sem_get(ioc->ioc_regs.ioc_init_sem_reg)) { in bfa_ioc_smem_clr()
2113 bfa_trc(ioc, 0); in bfa_ioc_smem_clr()
2117 writel(pgnum, ioc->ioc_regs.host_page_num_fn); in bfa_ioc_smem_clr()
2120 bfa_trc(ioc, len); in bfa_ioc_smem_clr()
2122 bfa_mem_write(ioc->ioc_regs.smem_page_start, loff, 0); in bfa_ioc_smem_clr()
2131 writel(pgnum, ioc->ioc_regs.host_page_num_fn); in bfa_ioc_smem_clr()
2134 writel(PSS_SMEM_PGNUM(ioc->ioc_regs.smem_pg0, 0), in bfa_ioc_smem_clr()
2135 ioc->ioc_regs.host_page_num_fn); in bfa_ioc_smem_clr()
2140 readl(ioc->ioc_regs.ioc_init_sem_reg); in bfa_ioc_smem_clr()
2141 writel(1, ioc->ioc_regs.ioc_init_sem_reg); in bfa_ioc_smem_clr()
2142 bfa_trc(ioc, pgnum); in bfa_ioc_smem_clr()
2147 bfa_ioc_fail_notify(struct bfa_ioc_s *ioc) in bfa_ioc_fail_notify() argument
2149 struct bfad_s *bfad = (struct bfad_s *)ioc->bfa->bfad; in bfa_ioc_fail_notify()
2154 ioc->cbfn->hbfail_cbfn(ioc->bfa); in bfa_ioc_fail_notify()
2155 bfa_ioc_event_notify(ioc, BFA_IOC_E_FAILED); in bfa_ioc_fail_notify()
2157 bfa_ioc_debug_save_ftrc(ioc); in bfa_ioc_fail_notify()
2161 bfa_ioc_aen_post(ioc, BFA_IOC_AEN_HBFAIL); in bfa_ioc_fail_notify()
2166 bfa_ioc_pf_fwmismatch(struct bfa_ioc_s *ioc) in bfa_ioc_pf_fwmismatch() argument
2168 struct bfad_s *bfad = (struct bfad_s *)ioc->bfa->bfad; in bfa_ioc_pf_fwmismatch()
2172 ioc->cbfn->enable_cbfn(ioc->bfa, BFA_STATUS_IOC_FAILURE); in bfa_ioc_pf_fwmismatch()
2176 bfa_ioc_aen_post(ioc, BFA_IOC_AEN_FWMISMATCH); in bfa_ioc_pf_fwmismatch()
2180 bfa_ioc_pll_init(struct bfa_ioc_s *ioc) in bfa_ioc_pll_init() argument
2186 bfa_ioc_sem_get(ioc->ioc_regs.ioc_init_sem_reg); in bfa_ioc_pll_init()
2188 bfa_ioc_pll_init_asic(ioc); in bfa_ioc_pll_init()
2190 ioc->pllinit = BFA_TRUE; in bfa_ioc_pll_init()
2195 bfa_ioc_lmem_init(ioc); in bfa_ioc_pll_init()
2200 readl(ioc->ioc_regs.ioc_init_sem_reg); in bfa_ioc_pll_init()
2201 writel(1, ioc->ioc_regs.ioc_init_sem_reg); in bfa_ioc_pll_init()
2211 bfa_ioc_boot(struct bfa_ioc_s *ioc, u32 boot_type, u32 boot_env) in bfa_ioc_boot() argument
2215 bfa_ioc_stats(ioc, ioc_boots); in bfa_ioc_boot()
2217 if (bfa_ioc_pll_init(ioc) != BFA_STATUS_OK) in bfa_ioc_boot()
2224 bfa_cb_image_get_chunk(bfa_ioc_asic_gen(ioc), 0); in bfa_ioc_boot()
2230 if (bfa_ioc_flash_fwver_cmp(ioc, drv_fwhdr) == in bfa_ioc_boot()
2239 bfa_ioc_set_cur_ioc_fwstate(ioc, BFI_IOC_MEMTEST); in bfa_ioc_boot()
2240 bfa_ioc_set_alt_ioc_fwstate(ioc, BFI_IOC_MEMTEST); in bfa_ioc_boot()
2242 bfa_ioc_set_cur_ioc_fwstate(ioc, BFI_IOC_INITING); in bfa_ioc_boot()
2243 bfa_ioc_set_alt_ioc_fwstate(ioc, BFI_IOC_INITING); in bfa_ioc_boot()
2246 bfa_ioc_msgflush(ioc); in bfa_ioc_boot()
2247 status = bfa_ioc_download_fw(ioc, boot_type, boot_env); in bfa_ioc_boot()
2249 bfa_ioc_lpu_start(ioc); in bfa_ioc_boot()
2252 bfa_iocpf_timeout(ioc); in bfa_ioc_boot()
2269 bfa_ioc_is_operational(struct bfa_ioc_s *ioc) in bfa_ioc_is_operational() argument
2271 return bfa_fsm_cmp_state(ioc, bfa_ioc_sm_op); in bfa_ioc_is_operational()
2275 bfa_ioc_is_initialized(struct bfa_ioc_s *ioc) in bfa_ioc_is_initialized() argument
2277 u32 r32 = bfa_ioc_get_cur_ioc_fwstate(ioc); in bfa_ioc_is_initialized()
2285 bfa_ioc_msgget(struct bfa_ioc_s *ioc, void *mbmsg) in bfa_ioc_msgget() argument
2291 r32 = readl(ioc->ioc_regs.lpu_mbox_cmd); in bfa_ioc_msgget()
2300 r32 = readl(ioc->ioc_regs.lpu_mbox + in bfa_ioc_msgget()
2308 writel(1, ioc->ioc_regs.lpu_mbox_cmd); in bfa_ioc_msgget()
2309 readl(ioc->ioc_regs.lpu_mbox_cmd); in bfa_ioc_msgget()
2315 bfa_ioc_isr(struct bfa_ioc_s *ioc, struct bfi_mbmsg_s *m) in bfa_ioc_isr() argument
2318 struct bfa_iocpf_s *iocpf = &ioc->iocpf; in bfa_ioc_isr()
2322 bfa_ioc_stats(ioc, ioc_isrs); in bfa_ioc_isr()
2329 ioc->port_mode = ioc->port_mode_cfg = in bfa_ioc_isr()
2331 ioc->ad_cap_bm = msg->fw_event.cap_bm; in bfa_ioc_isr()
2340 bfa_ioc_getattr_reply(ioc); in bfa_ioc_isr()
2344 bfa_trc(ioc, msg->mh.msg_id); in bfa_ioc_isr()
2356 bfa_ioc_attach(struct bfa_ioc_s *ioc, void *bfa, struct bfa_ioc_cbfn_s *cbfn, in bfa_ioc_attach() argument
2359 ioc->bfa = bfa; in bfa_ioc_attach()
2360 ioc->cbfn = cbfn; in bfa_ioc_attach()
2361 ioc->timer_mod = timer_mod; in bfa_ioc_attach()
2362 ioc->fcmode = BFA_FALSE; in bfa_ioc_attach()
2363 ioc->pllinit = BFA_FALSE; in bfa_ioc_attach()
2364 ioc->dbg_fwsave_once = BFA_TRUE; in bfa_ioc_attach()
2365 ioc->iocpf.ioc = ioc; in bfa_ioc_attach()
2367 bfa_ioc_mbox_attach(ioc); in bfa_ioc_attach()
2368 INIT_LIST_HEAD(&ioc->notify_q); in bfa_ioc_attach()
2370 bfa_fsm_set_state(ioc, bfa_ioc_sm_uninit); in bfa_ioc_attach()
2371 bfa_fsm_send_event(ioc, IOC_E_RESET); in bfa_ioc_attach()
2378 bfa_ioc_detach(struct bfa_ioc_s *ioc) in bfa_ioc_detach() argument
2380 bfa_fsm_send_event(ioc, IOC_E_DETACH); in bfa_ioc_detach()
2381 INIT_LIST_HEAD(&ioc->notify_q); in bfa_ioc_detach()
2390 bfa_ioc_pci_init(struct bfa_ioc_s *ioc, struct bfa_pcidev_s *pcidev, in bfa_ioc_pci_init() argument
2393 ioc->clscode = clscode; in bfa_ioc_pci_init()
2394 ioc->pcidev = *pcidev; in bfa_ioc_pci_init()
2399 ioc->port0_mode = ioc->port1_mode = BFI_PORT_MODE_FC; in bfa_ioc_pci_init()
2400 ioc->asic_mode = BFI_ASIC_MODE_FC; in bfa_ioc_pci_init()
2405 ioc->asic_gen = BFI_ASIC_GEN_CB; in bfa_ioc_pci_init()
2406 ioc->fcmode = BFA_TRUE; in bfa_ioc_pci_init()
2407 ioc->port_mode = ioc->port_mode_cfg = BFA_MODE_HBA; in bfa_ioc_pci_init()
2408 ioc->ad_cap_bm = BFA_CM_HBA; in bfa_ioc_pci_init()
2412 ioc->asic_gen = BFI_ASIC_GEN_CT; in bfa_ioc_pci_init()
2413 ioc->port0_mode = ioc->port1_mode = BFI_PORT_MODE_ETH; in bfa_ioc_pci_init()
2414 ioc->asic_mode = BFI_ASIC_MODE_ETH; in bfa_ioc_pci_init()
2415 ioc->port_mode = ioc->port_mode_cfg = BFA_MODE_CNA; in bfa_ioc_pci_init()
2416 ioc->ad_cap_bm = BFA_CM_CNA; in bfa_ioc_pci_init()
2420 ioc->asic_gen = BFI_ASIC_GEN_CT; in bfa_ioc_pci_init()
2421 ioc->fcmode = BFA_TRUE; in bfa_ioc_pci_init()
2422 ioc->port_mode = ioc->port_mode_cfg = BFA_MODE_HBA; in bfa_ioc_pci_init()
2423 ioc->ad_cap_bm = BFA_CM_HBA; in bfa_ioc_pci_init()
2428 ioc->asic_gen = BFI_ASIC_GEN_CT2; in bfa_ioc_pci_init()
2431 ioc->asic_mode = BFI_ASIC_MODE_FC16; in bfa_ioc_pci_init()
2432 ioc->fcmode = BFA_TRUE; in bfa_ioc_pci_init()
2433 ioc->port_mode = ioc->port_mode_cfg = BFA_MODE_HBA; in bfa_ioc_pci_init()
2434 ioc->ad_cap_bm = BFA_CM_HBA; in bfa_ioc_pci_init()
2436 ioc->port0_mode = ioc->port1_mode = BFI_PORT_MODE_ETH; in bfa_ioc_pci_init()
2437 ioc->asic_mode = BFI_ASIC_MODE_ETH; in bfa_ioc_pci_init()
2439 ioc->port_mode = in bfa_ioc_pci_init()
2440 ioc->port_mode_cfg = BFA_MODE_CNA; in bfa_ioc_pci_init()
2441 ioc->ad_cap_bm = BFA_CM_CNA; in bfa_ioc_pci_init()
2443 ioc->port_mode = in bfa_ioc_pci_init()
2444 ioc->port_mode_cfg = BFA_MODE_NIC; in bfa_ioc_pci_init()
2445 ioc->ad_cap_bm = BFA_CM_NIC; in bfa_ioc_pci_init()
2457 if (ioc->asic_gen == BFI_ASIC_GEN_CB) in bfa_ioc_pci_init()
2458 bfa_ioc_set_cb_hwif(ioc); in bfa_ioc_pci_init()
2459 else if (ioc->asic_gen == BFI_ASIC_GEN_CT) in bfa_ioc_pci_init()
2460 bfa_ioc_set_ct_hwif(ioc); in bfa_ioc_pci_init()
2462 WARN_ON(ioc->asic_gen != BFI_ASIC_GEN_CT2); in bfa_ioc_pci_init()
2463 bfa_ioc_set_ct2_hwif(ioc); in bfa_ioc_pci_init()
2464 bfa_ioc_ct2_poweron(ioc); in bfa_ioc_pci_init()
2467 bfa_ioc_map_port(ioc); in bfa_ioc_pci_init()
2468 bfa_ioc_reg_init(ioc); in bfa_ioc_pci_init()
2478 bfa_ioc_mem_claim(struct bfa_ioc_s *ioc, u8 *dm_kva, u64 dm_pa) in bfa_ioc_mem_claim() argument
2483 ioc->attr_dma.kva = dm_kva; in bfa_ioc_mem_claim()
2484 ioc->attr_dma.pa = dm_pa; in bfa_ioc_mem_claim()
2485 ioc->attr = (struct bfi_ioc_attr_s *) dm_kva; in bfa_ioc_mem_claim()
2489 bfa_ioc_enable(struct bfa_ioc_s *ioc) in bfa_ioc_enable() argument
2491 bfa_ioc_stats(ioc, ioc_enables); in bfa_ioc_enable()
2492 ioc->dbg_fwsave_once = BFA_TRUE; in bfa_ioc_enable()
2494 bfa_fsm_send_event(ioc, IOC_E_ENABLE); in bfa_ioc_enable()
2498 bfa_ioc_disable(struct bfa_ioc_s *ioc) in bfa_ioc_disable() argument
2500 bfa_ioc_stats(ioc, ioc_disables); in bfa_ioc_disable()
2501 bfa_fsm_send_event(ioc, IOC_E_DISABLE); in bfa_ioc_disable()
2505 bfa_ioc_suspend(struct bfa_ioc_s *ioc) in bfa_ioc_suspend() argument
2507 ioc->dbg_fwsave_once = BFA_TRUE; in bfa_ioc_suspend()
2508 bfa_fsm_send_event(ioc, IOC_E_HWERROR); in bfa_ioc_suspend()
2516 bfa_ioc_debug_memclaim(struct bfa_ioc_s *ioc, void *dbg_fwsave) in bfa_ioc_debug_memclaim() argument
2518 ioc->dbg_fwsave = dbg_fwsave; in bfa_ioc_debug_memclaim()
2519 ioc->dbg_fwsave_len = BFA_DBG_FWTRC_LEN; in bfa_ioc_debug_memclaim()
2529 bfa_ioc_mbox_register(struct bfa_ioc_s *ioc, bfa_ioc_mbox_mcfunc_t *mcfuncs) in bfa_ioc_mbox_register() argument
2531 struct bfa_ioc_mbox_mod_s *mod = &ioc->mbox_mod; in bfa_ioc_mbox_register()
2542 bfa_ioc_mbox_regisr(struct bfa_ioc_s *ioc, enum bfi_mclass mc, in bfa_ioc_mbox_regisr() argument
2545 struct bfa_ioc_mbox_mod_s *mod = &ioc->mbox_mod; in bfa_ioc_mbox_regisr()
2559 bfa_ioc_mbox_queue(struct bfa_ioc_s *ioc, struct bfa_mbox_cmd_s *cmd) in bfa_ioc_mbox_queue() argument
2561 struct bfa_ioc_mbox_mod_s *mod = &ioc->mbox_mod; in bfa_ioc_mbox_queue()
2575 stat = readl(ioc->ioc_regs.hfn_mbox_cmd); in bfa_ioc_mbox_queue()
2584 bfa_ioc_mbox_send(ioc, cmd->msg, sizeof(cmd->msg)); in bfa_ioc_mbox_queue()
2591 bfa_ioc_mbox_isr(struct bfa_ioc_s *ioc) in bfa_ioc_mbox_isr() argument
2593 struct bfa_ioc_mbox_mod_s *mod = &ioc->mbox_mod; in bfa_ioc_mbox_isr()
2597 if (bfa_ioc_msgget(ioc, &m)) { in bfa_ioc_mbox_isr()
2603 bfa_ioc_isr(ioc, &m); in bfa_ioc_mbox_isr()
2613 bfa_ioc_lpu_read_stat(ioc); in bfa_ioc_mbox_isr()
2618 bfa_ioc_mbox_poll(ioc); in bfa_ioc_mbox_isr()
2622 bfa_ioc_error_isr(struct bfa_ioc_s *ioc) in bfa_ioc_error_isr() argument
2624 bfa_ioc_stats(ioc, ioc_hbfails); in bfa_ioc_error_isr()
2625 ioc->stats.hb_count = ioc->hb_count; in bfa_ioc_error_isr()
2626 bfa_fsm_send_event(ioc, IOC_E_HWERROR); in bfa_ioc_error_isr()
2633 bfa_ioc_is_disabled(struct bfa_ioc_s *ioc) in bfa_ioc_is_disabled() argument
2635 return bfa_fsm_cmp_state(ioc, bfa_ioc_sm_disabling) || in bfa_ioc_is_disabled()
2636 bfa_fsm_cmp_state(ioc, bfa_ioc_sm_disabled); in bfa_ioc_is_disabled()
2643 bfa_ioc_fw_mismatch(struct bfa_ioc_s *ioc) in bfa_ioc_fw_mismatch() argument
2645 return bfa_fsm_cmp_state(ioc, bfa_ioc_sm_reset) || in bfa_ioc_fw_mismatch()
2646 bfa_fsm_cmp_state(&ioc->iocpf, bfa_iocpf_sm_fwcheck) || in bfa_ioc_fw_mismatch()
2647 bfa_fsm_cmp_state(&ioc->iocpf, bfa_iocpf_sm_mismatch); in bfa_ioc_fw_mismatch()
2655 bfa_ioc_adapter_is_disabled(struct bfa_ioc_s *ioc) in bfa_ioc_adapter_is_disabled() argument
2659 if (!bfa_fsm_cmp_state(ioc, bfa_ioc_sm_disabled)) in bfa_ioc_adapter_is_disabled()
2662 ioc_state = bfa_ioc_get_cur_ioc_fwstate(ioc); in bfa_ioc_adapter_is_disabled()
2666 if (ioc->pcidev.device_id != BFA_PCI_DEVICE_ID_FC_8G1P) { in bfa_ioc_adapter_is_disabled()
2667 ioc_state = bfa_ioc_get_cur_ioc_fwstate(ioc); in bfa_ioc_adapter_is_disabled()
2679 bfa_ioc_reset_fwstate(struct bfa_ioc_s *ioc) in bfa_ioc_reset_fwstate() argument
2681 bfa_ioc_set_cur_ioc_fwstate(ioc, BFI_IOC_UNINIT); in bfa_ioc_reset_fwstate()
2682 bfa_ioc_set_alt_ioc_fwstate(ioc, BFI_IOC_UNINIT); in bfa_ioc_reset_fwstate()
2687 bfa_ioc_get_adapter_attr(struct bfa_ioc_s *ioc, in bfa_ioc_get_adapter_attr() argument
2692 ioc_attr = ioc->attr; in bfa_ioc_get_adapter_attr()
2694 bfa_ioc_get_adapter_serial_num(ioc, ad_attr->serial_num); in bfa_ioc_get_adapter_attr()
2695 bfa_ioc_get_adapter_fw_ver(ioc, ad_attr->fw_ver); in bfa_ioc_get_adapter_attr()
2696 bfa_ioc_get_adapter_optrom_ver(ioc, ad_attr->optrom_ver); in bfa_ioc_get_adapter_attr()
2697 bfa_ioc_get_adapter_manufacturer(ioc, ad_attr->manufacturer); in bfa_ioc_get_adapter_attr()
2701 ad_attr->nports = bfa_ioc_get_nports(ioc); in bfa_ioc_get_adapter_attr()
2702 ad_attr->max_speed = bfa_ioc_speed_sup(ioc); in bfa_ioc_get_adapter_attr()
2704 bfa_ioc_get_adapter_model(ioc, ad_attr->model); in bfa_ioc_get_adapter_attr()
2706 bfa_ioc_get_adapter_model(ioc, ad_attr->model_descr); in bfa_ioc_get_adapter_attr()
2716 ad_attr->pwwn = ioc->attr->pwwn; in bfa_ioc_get_adapter_attr()
2717 ad_attr->mac = bfa_ioc_get_mac(ioc); in bfa_ioc_get_adapter_attr()
2724 bfa_ioc_get_pci_chip_rev(ioc, ad_attr->hw_ver); in bfa_ioc_get_adapter_attr()
2726 ad_attr->cna_capable = bfa_ioc_is_cna(ioc); in bfa_ioc_get_adapter_attr()
2728 !bfa_ioc_is_cna(ioc) && !ad_attr->is_mezz; in bfa_ioc_get_adapter_attr()
2736 bfa_ioc_get_type(struct bfa_ioc_s *ioc) in bfa_ioc_get_type() argument
2738 if (ioc->clscode == BFI_PCIFN_CLASS_ETH) in bfa_ioc_get_type()
2741 WARN_ON(ioc->clscode != BFI_PCIFN_CLASS_FC); in bfa_ioc_get_type()
2743 return (ioc->attr->port_mode == BFI_PORT_MODE_FC) in bfa_ioc_get_type()
2748 bfa_ioc_get_adapter_serial_num(struct bfa_ioc_s *ioc, char *serial_num) in bfa_ioc_get_adapter_serial_num() argument
2752 (void *)ioc->attr->brcd_serialnum, in bfa_ioc_get_adapter_serial_num()
2757 bfa_ioc_get_adapter_fw_ver(struct bfa_ioc_s *ioc, char *fw_ver) in bfa_ioc_get_adapter_fw_ver() argument
2760 memcpy(fw_ver, ioc->attr->fw_version, BFA_VERSION_LEN); in bfa_ioc_get_adapter_fw_ver()
2764 bfa_ioc_get_pci_chip_rev(struct bfa_ioc_s *ioc, char *chip_rev) in bfa_ioc_get_pci_chip_rev() argument
2774 chip_rev[4] = ioc->attr->asic_rev; in bfa_ioc_get_pci_chip_rev()
2779 bfa_ioc_get_adapter_optrom_ver(struct bfa_ioc_s *ioc, char *optrom_ver) in bfa_ioc_get_adapter_optrom_ver() argument
2782 memcpy(optrom_ver, ioc->attr->optrom_version, in bfa_ioc_get_adapter_optrom_ver()
2787 bfa_ioc_get_adapter_manufacturer(struct bfa_ioc_s *ioc, char *manufacturer) in bfa_ioc_get_adapter_manufacturer() argument
2794 bfa_ioc_get_adapter_model(struct bfa_ioc_s *ioc, char *model) in bfa_ioc_get_adapter_model() argument
2797 u8 nports = bfa_ioc_get_nports(ioc); in bfa_ioc_get_adapter_model()
2802 ioc_attr = ioc->attr; in bfa_ioc_get_adapter_model()
2804 if (bfa_asic_id_ct2(ioc->pcidev.device_id) && in bfa_ioc_get_adapter_model()
2814 bfa_ioc_get_state(struct bfa_ioc_s *ioc) in bfa_ioc_get_state() argument
2817 enum bfa_ioc_state ioc_st = bfa_ioc_sm_to_state(ioc_sm_table, ioc->fsm); in bfa_ioc_get_state()
2822 iocpf_st = bfa_iocpf_sm_to_state(iocpf_sm_table, ioc->iocpf.fsm); in bfa_ioc_get_state()
2854 bfa_ioc_get_attr(struct bfa_ioc_s *ioc, struct bfa_ioc_attr_s *ioc_attr) in bfa_ioc_get_attr() argument
2858 ioc_attr->state = bfa_ioc_get_state(ioc); in bfa_ioc_get_attr()
2859 ioc_attr->port_id = bfa_ioc_portid(ioc); in bfa_ioc_get_attr()
2860 ioc_attr->port_mode = ioc->port_mode; in bfa_ioc_get_attr()
2861 ioc_attr->port_mode_cfg = ioc->port_mode_cfg; in bfa_ioc_get_attr()
2862 ioc_attr->cap_bm = ioc->ad_cap_bm; in bfa_ioc_get_attr()
2864 ioc_attr->ioc_type = bfa_ioc_get_type(ioc); in bfa_ioc_get_attr()
2866 bfa_ioc_get_adapter_attr(ioc, &ioc_attr->adapter_attr); in bfa_ioc_get_attr()
2868 ioc_attr->pci_attr.device_id = bfa_ioc_devid(ioc); in bfa_ioc_get_attr()
2869 ioc_attr->pci_attr.pcifn = bfa_ioc_pcifn(ioc); in bfa_ioc_get_attr()
2870 ioc_attr->def_fn = (bfa_ioc_pcifn(ioc) == bfa_ioc_portid(ioc)); in bfa_ioc_get_attr()
2871 bfa_ioc_get_pci_chip_rev(ioc, ioc_attr->pci_attr.chip_rev); in bfa_ioc_get_attr()
2875 bfa_ioc_get_mac(struct bfa_ioc_s *ioc) in bfa_ioc_get_mac() argument
2880 if (bfa_ioc_get_type(ioc) == BFA_IOC_TYPE_FCoE) in bfa_ioc_get_mac()
2881 return ioc->attr->fcoe_mac; in bfa_ioc_get_mac()
2883 return ioc->attr->mac; in bfa_ioc_get_mac()
2887 bfa_ioc_get_mfg_mac(struct bfa_ioc_s *ioc) in bfa_ioc_get_mfg_mac() argument
2891 m = ioc->attr->mfg_mac; in bfa_ioc_get_mfg_mac()
2892 if (bfa_mfg_is_old_wwn_mac_model(ioc->attr->card_type)) in bfa_ioc_get_mfg_mac()
2893 m.mac[MAC_ADDRLEN - 1] += bfa_ioc_pcifn(ioc); in bfa_ioc_get_mfg_mac()
2896 bfa_ioc_pcifn(ioc)); in bfa_ioc_get_mfg_mac()
2905 bfa_ioc_aen_post(struct bfa_ioc_s *ioc, enum bfa_ioc_aen_event event) in bfa_ioc_aen_post() argument
2907 struct bfad_s *bfad = (struct bfad_s *)ioc->bfa->bfad; in bfa_ioc_aen_post()
2915 ioc_type = bfa_ioc_get_type(ioc); in bfa_ioc_aen_post()
2918 aen_entry->aen_data.ioc.pwwn = ioc->attr->pwwn; in bfa_ioc_aen_post()
2921 aen_entry->aen_data.ioc.pwwn = ioc->attr->pwwn; in bfa_ioc_aen_post()
2922 aen_entry->aen_data.ioc.mac = bfa_ioc_get_mac(ioc); in bfa_ioc_aen_post()
2925 aen_entry->aen_data.ioc.mac = bfa_ioc_get_mac(ioc); in bfa_ioc_aen_post()
2933 aen_entry->aen_data.ioc.ioc_type = ioc_type; in bfa_ioc_aen_post()
2934 bfad_im_post_vendor_event(aen_entry, bfad, ++ioc->ioc_aen_seq, in bfa_ioc_aen_post()
2942 bfa_ioc_debug_fwsave(struct bfa_ioc_s *ioc, void *trcdata, int *trclen) in bfa_ioc_debug_fwsave() argument
2946 if (ioc->dbg_fwsave_len == 0) in bfa_ioc_debug_fwsave()
2950 if (tlen > ioc->dbg_fwsave_len) in bfa_ioc_debug_fwsave()
2951 tlen = ioc->dbg_fwsave_len; in bfa_ioc_debug_fwsave()
2953 memcpy(trcdata, ioc->dbg_fwsave, tlen); in bfa_ioc_debug_fwsave()
2963 bfa_ioc_debug_fwtrc(struct bfa_ioc_s *ioc, void *trcdata, int *trclen) in bfa_ioc_debug_fwtrc() argument
2965 u32 loff = BFA_DBG_FWTRC_OFF(bfa_ioc_portid(ioc)); in bfa_ioc_debug_fwtrc()
2969 bfa_trc(ioc, *trclen); in bfa_ioc_debug_fwtrc()
2975 status = bfa_ioc_smem_read(ioc, trcdata, loff, tlen); in bfa_ioc_debug_fwtrc()
2981 bfa_ioc_send_fwsync(struct bfa_ioc_s *ioc) in bfa_ioc_send_fwsync() argument
2987 bfa_ioc_portid(ioc)); in bfa_ioc_send_fwsync()
2988 req->clscode = cpu_to_be16(ioc->clscode); in bfa_ioc_send_fwsync()
2989 bfa_ioc_mbox_queue(ioc, &cmd); in bfa_ioc_send_fwsync()
2993 bfa_ioc_fwsync(struct bfa_ioc_s *ioc) in bfa_ioc_fwsync() argument
2997 bfa_ioc_send_fwsync(ioc); in bfa_ioc_fwsync()
3010 while (bfa_ioc_mbox_cmd_pending(ioc) && fwsync_iter > 0) in bfa_ioc_fwsync()
3018 bfa_ioc_debug_fwcore(struct bfa_ioc_s *ioc, void *buf, in bfa_ioc_debug_fwcore() argument
3024 u32 smem_len = BFA_IOC_FW_SMEM_SIZE(ioc); in bfa_ioc_debug_fwcore()
3039 bfa_ioc_fwsync(ioc); in bfa_ioc_debug_fwcore()
3044 status = bfa_ioc_smem_read(ioc, buf, loff, dlen); in bfa_ioc_debug_fwcore()
3065 bfa_ioc_fw_stats_get(struct bfa_ioc_s *ioc, void *stats) in bfa_ioc_fw_stats_get() argument
3068 BFI_IOC_FWSTATS_SZ * (bfa_ioc_portid(ioc)); in bfa_ioc_fw_stats_get()
3072 if (ioc->stats_busy) { in bfa_ioc_fw_stats_get()
3073 bfa_trc(ioc, ioc->stats_busy); in bfa_ioc_fw_stats_get()
3076 ioc->stats_busy = BFA_TRUE; in bfa_ioc_fw_stats_get()
3079 status = bfa_ioc_smem_read(ioc, stats, loff, tlen); in bfa_ioc_fw_stats_get()
3081 ioc->stats_busy = BFA_FALSE; in bfa_ioc_fw_stats_get()
3086 bfa_ioc_fw_stats_clear(struct bfa_ioc_s *ioc) in bfa_ioc_fw_stats_clear() argument
3089 BFI_IOC_FWSTATS_SZ * (bfa_ioc_portid(ioc)); in bfa_ioc_fw_stats_clear()
3093 if (ioc->stats_busy) { in bfa_ioc_fw_stats_clear()
3094 bfa_trc(ioc, ioc->stats_busy); in bfa_ioc_fw_stats_clear()
3097 ioc->stats_busy = BFA_TRUE; in bfa_ioc_fw_stats_clear()
3100 status = bfa_ioc_smem_clr(ioc, loff, tlen); in bfa_ioc_fw_stats_clear()
3102 ioc->stats_busy = BFA_FALSE; in bfa_ioc_fw_stats_clear()
3110 bfa_ioc_debug_save_ftrc(struct bfa_ioc_s *ioc) in bfa_ioc_debug_save_ftrc() argument
3114 if (ioc->dbg_fwsave_once) { in bfa_ioc_debug_save_ftrc()
3115 ioc->dbg_fwsave_once = BFA_FALSE; in bfa_ioc_debug_save_ftrc()
3116 if (ioc->dbg_fwsave_len) { in bfa_ioc_debug_save_ftrc()
3117 tlen = ioc->dbg_fwsave_len; in bfa_ioc_debug_save_ftrc()
3118 bfa_ioc_debug_fwtrc(ioc, ioc->dbg_fwsave, &tlen); in bfa_ioc_debug_save_ftrc()
3127 bfa_ioc_recover(struct bfa_ioc_s *ioc) in bfa_ioc_recover() argument
3129 bfa_ioc_stats(ioc, ioc_hbfails); in bfa_ioc_recover()
3130 ioc->stats.hb_count = ioc->hb_count; in bfa_ioc_recover()
3131 bfa_fsm_send_event(ioc, IOC_E_HBFAIL); in bfa_ioc_recover()
3140 struct bfa_ioc_s *ioc = (struct bfa_ioc_s *) ioc_arg; in bfa_iocpf_timeout() local
3142 bfa_trc(ioc, 0); in bfa_iocpf_timeout()
3143 bfa_fsm_send_event(&ioc->iocpf, IOCPF_E_TIMEOUT); in bfa_iocpf_timeout()
3149 struct bfa_ioc_s *ioc = (struct bfa_ioc_s *) ioc_arg; in bfa_iocpf_sem_timeout() local
3151 bfa_ioc_hw_sem_get(ioc); in bfa_iocpf_sem_timeout()
3155 bfa_ioc_poll_fwinit(struct bfa_ioc_s *ioc) in bfa_ioc_poll_fwinit() argument
3157 u32 fwstate = bfa_ioc_get_cur_ioc_fwstate(ioc); in bfa_ioc_poll_fwinit()
3159 bfa_trc(ioc, fwstate); in bfa_ioc_poll_fwinit()
3162 bfa_fsm_send_event(&ioc->iocpf, IOCPF_E_FWREADY); in bfa_ioc_poll_fwinit()
3166 if (ioc->iocpf.poll_time >= (3 * BFA_IOC_TOV)) in bfa_ioc_poll_fwinit()
3167 bfa_iocpf_timeout(ioc); in bfa_ioc_poll_fwinit()
3169 ioc->iocpf.poll_time += BFA_IOC_POLL_TOV; in bfa_ioc_poll_fwinit()
3170 bfa_iocpf_poll_timer_start(ioc); in bfa_ioc_poll_fwinit()
3177 struct bfa_ioc_s *ioc = (struct bfa_ioc_s *) ioc_arg; in bfa_iocpf_poll_timeout() local
3179 bfa_ioc_poll_fwinit(ioc); in bfa_iocpf_poll_timeout()
3285 bfa_trc(ablk->ioc, msg->mh.msg_id); in bfa_ablk_isr()
3300 ablk->ioc->port_mode_cfg = rsp->port_mode; in bfa_ablk_isr()
3332 bfa_trc(ablk->ioc, event); in bfa_ablk_notify()
3371 bfa_ablk_attach(struct bfa_ablk_s *ablk, struct bfa_ioc_s *ioc) in bfa_ablk_attach() argument
3373 ablk->ioc = ioc; in bfa_ablk_attach()
3375 bfa_ioc_mbox_regisr(ablk->ioc, BFI_MC_ABLK, bfa_ablk_isr, ablk); in bfa_ablk_attach()
3378 list_add_tail(&ablk->ioc_notify.qe, &ablk->ioc->notify_q); in bfa_ablk_attach()
3389 if (!bfa_ioc_is_operational(ablk->ioc)) { in bfa_ablk_query()
3390 bfa_trc(ablk->ioc, BFA_STATUS_IOC_FAILURE); in bfa_ablk_query()
3395 bfa_trc(ablk->ioc, BFA_STATUS_DEVBUSY); in bfa_ablk_query()
3406 bfa_ioc_portid(ablk->ioc)); in bfa_ablk_query()
3408 bfa_ioc_mbox_queue(ablk->ioc, &ablk->mb); in bfa_ablk_query()
3421 if (!bfa_ioc_is_operational(ablk->ioc)) { in bfa_ablk_pf_create()
3422 bfa_trc(ablk->ioc, BFA_STATUS_IOC_FAILURE); in bfa_ablk_pf_create()
3427 bfa_trc(ablk->ioc, BFA_STATUS_DEVBUSY); in bfa_ablk_pf_create()
3438 bfa_ioc_portid(ablk->ioc)); in bfa_ablk_pf_create()
3443 bfa_ioc_mbox_queue(ablk->ioc, &ablk->mb); in bfa_ablk_pf_create()
3454 if (!bfa_ioc_is_operational(ablk->ioc)) { in bfa_ablk_pf_delete()
3455 bfa_trc(ablk->ioc, BFA_STATUS_IOC_FAILURE); in bfa_ablk_pf_delete()
3460 bfa_trc(ablk->ioc, BFA_STATUS_DEVBUSY); in bfa_ablk_pf_delete()
3470 bfa_ioc_portid(ablk->ioc)); in bfa_ablk_pf_delete()
3472 bfa_ioc_mbox_queue(ablk->ioc, &ablk->mb); in bfa_ablk_pf_delete()
3483 if (!bfa_ioc_is_operational(ablk->ioc)) { in bfa_ablk_adapter_config()
3484 bfa_trc(ablk->ioc, BFA_STATUS_IOC_FAILURE); in bfa_ablk_adapter_config()
3489 bfa_trc(ablk->ioc, BFA_STATUS_DEVBUSY); in bfa_ablk_adapter_config()
3499 bfa_ioc_portid(ablk->ioc)); in bfa_ablk_adapter_config()
3503 bfa_ioc_mbox_queue(ablk->ioc, &ablk->mb); in bfa_ablk_adapter_config()
3514 if (!bfa_ioc_is_operational(ablk->ioc)) { in bfa_ablk_port_config()
3515 bfa_trc(ablk->ioc, BFA_STATUS_IOC_FAILURE); in bfa_ablk_port_config()
3520 bfa_trc(ablk->ioc, BFA_STATUS_DEVBUSY); in bfa_ablk_port_config()
3530 bfa_ioc_portid(ablk->ioc)); in bfa_ablk_port_config()
3535 bfa_ioc_mbox_queue(ablk->ioc, &ablk->mb); in bfa_ablk_port_config()
3546 if (!bfa_ioc_is_operational(ablk->ioc)) { in bfa_ablk_pf_update()
3547 bfa_trc(ablk->ioc, BFA_STATUS_IOC_FAILURE); in bfa_ablk_pf_update()
3552 bfa_trc(ablk->ioc, BFA_STATUS_DEVBUSY); in bfa_ablk_pf_update()
3562 bfa_ioc_portid(ablk->ioc)); in bfa_ablk_pf_update()
3566 bfa_ioc_mbox_queue(ablk->ioc, &ablk->mb); in bfa_ablk_pf_update()
3576 if (!bfa_ioc_is_operational(ablk->ioc)) { in bfa_ablk_optrom_en()
3577 bfa_trc(ablk->ioc, BFA_STATUS_IOC_FAILURE); in bfa_ablk_optrom_en()
3582 bfa_trc(ablk->ioc, BFA_STATUS_DEVBUSY); in bfa_ablk_optrom_en()
3592 bfa_ioc_portid(ablk->ioc)); in bfa_ablk_optrom_en()
3593 bfa_ioc_mbox_queue(ablk->ioc, &ablk->mb); in bfa_ablk_optrom_en()
3603 if (!bfa_ioc_is_operational(ablk->ioc)) { in bfa_ablk_optrom_dis()
3604 bfa_trc(ablk->ioc, BFA_STATUS_IOC_FAILURE); in bfa_ablk_optrom_dis()
3609 bfa_trc(ablk->ioc, BFA_STATUS_DEVBUSY); in bfa_ablk_optrom_dis()
3619 bfa_ioc_portid(ablk->ioc)); in bfa_ablk_optrom_dis()
3620 bfa_ioc_mbox_queue(ablk->ioc, &ablk->mb); in bfa_ablk_optrom_dis()
3706 struct bfad_s *bfad = (struct bfad_s *)sfp->ioc->bfa->bfad; in bfa_sfp_scn_aen_post()
3717 aen_entry->aen_data.port.ioc_type = bfa_ioc_get_type(sfp->ioc); in bfa_sfp_scn_aen_post()
3718 aen_entry->aen_data.port.pwwn = sfp->ioc->attr->pwwn; in bfa_sfp_scn_aen_post()
3719 aen_entry->aen_data.port.mac = bfa_ioc_get_mac(sfp->ioc); in bfa_sfp_scn_aen_post()
3744 bfad_im_post_vendor_event(aen_entry, bfad, ++sfp->ioc->ioc_aen_seq, in bfa_sfp_scn_aen_post()
3760 bfa_ioc_portid(sfp->ioc)); in bfa_sfp_getdata_send()
3763 bfa_ioc_mbox_queue(sfp->ioc, &sfp->mbcmd); in bfa_sfp_getdata_send()
4017 bfa_sfp_attach(struct bfa_sfp_s *sfp, struct bfa_ioc_s *ioc, void *dev, in bfa_sfp_attach() argument
4021 sfp->ioc = ioc; in bfa_sfp_attach()
4037 bfa_ioc_mbox_regisr(sfp->ioc, BFI_MC_SFP, bfa_sfp_intr, sfp); in bfa_sfp_attach()
4040 list_add_tail(&sfp->ioc_notify.qe, &sfp->ioc->notify_q); in bfa_sfp_attach()
4070 if (!bfa_ioc_is_operational(sfp->ioc)) { in bfa_sfp_show()
4100 if (!bfa_ioc_is_operational(sfp->ioc)) { in bfa_sfp_media()
4135 if (!bfa_ioc_is_operational(sfp->ioc)) in bfa_sfp_speed()
4139 if (bfa_mfg_is_mezz(sfp->ioc->attr->card_type)) in bfa_sfp_speed()
4188 bfa_flash_aen_audit_post(struct bfa_ioc_s *ioc, enum bfa_audit_aen_event event, in bfa_flash_aen_audit_post() argument
4191 struct bfad_s *bfad = (struct bfad_s *)ioc->bfa->bfad; in bfa_flash_aen_audit_post()
4198 aen_entry->aen_data.audit.pwwn = ioc->attr->pwwn; in bfa_flash_aen_audit_post()
4203 bfad_im_post_vendor_event(aen_entry, bfad, ++ioc->ioc_aen_seq, in bfa_flash_aen_audit_post()
4249 bfa_ioc_portid(flash->ioc)); in bfa_flash_query_send()
4252 bfa_ioc_mbox_queue(flash->ioc, &flash->mb); in bfa_flash_query_send()
4278 bfa_ioc_portid(flash->ioc)); in bfa_flash_write_send()
4281 bfa_ioc_mbox_queue(flash->ioc, &flash->mb); in bfa_flash_write_send()
4307 bfa_ioc_portid(flash->ioc)); in bfa_flash_read_send()
4309 bfa_ioc_mbox_queue(flash->ioc, &flash->mb); in bfa_flash_read_send()
4327 bfa_ioc_portid(flash->ioc)); in bfa_flash_erase_send()
4328 bfa_ioc_mbox_queue(flash->ioc, &flash->mb); in bfa_flash_erase_send()
4437 bfa_ioc_aen_post(flash->ioc, BFA_IOC_AEN_FWCFG_ERROR); in bfa_flash_intr()
4442 bfa_ioc_aen_post(flash->ioc, in bfa_flash_intr()
4476 bfa_flash_attach(struct bfa_flash_s *flash, struct bfa_ioc_s *ioc, void *dev, in bfa_flash_attach() argument
4479 flash->ioc = ioc; in bfa_flash_attach()
4485 bfa_ioc_mbox_regisr(flash->ioc, BFI_MC_FLASH, bfa_flash_intr, flash); in bfa_flash_attach()
4488 list_add_tail(&flash->ioc_notify.qe, &flash->ioc->notify_q); in bfa_flash_attach()
4535 if (!bfa_ioc_is_operational(flash->ioc)) in bfa_flash_get_attr()
4571 if (!bfa_ioc_is_operational(flash->ioc)) in bfa_flash_erase_part()
4586 bfa_flash_aen_audit_post(flash->ioc, BFA_AUDIT_AEN_FLASH_ERASE, in bfa_flash_erase_part()
4616 if (!bfa_ioc_is_operational(flash->ioc)) in bfa_flash_update_part()
4673 if (!bfa_ioc_is_operational(flash->ioc)) in bfa_flash_read_part()
4758 struct bfa_ioc_s *ioc = diag->ioc; in bfa_diag_memtest_done() local
4763 pgnum = PSS_SMEM_PGNUM(ioc->ioc_regs.smem_pg0, loff); in bfa_diag_memtest_done()
4764 writel(pgnum, ioc->ioc_regs.host_page_num_fn); in bfa_diag_memtest_done()
4770 bfa_mem_read(ioc->ioc_regs.smem_page_start, loff); in bfa_diag_memtest_done()
4775 bfa_ioc_reset_fwstate(ioc); in bfa_diag_memtest_done()
4834 bfa_ioc_portid(diag->ioc)); in diag_fwping_send()
4837 bfa_ioc_mbox_queue(diag->ioc, &diag->fwping.mbcmd); in diag_fwping_send()
4905 bfa_ioc_portid(diag->ioc)); in diag_tempsensor_send()
4907 bfa_ioc_mbox_queue(diag->ioc, &diag->tsensor.mbcmd); in diag_tempsensor_send()
4960 bfa_ioc_portid(diag->ioc)); in diag_ledtest_send()
4976 msg->portid = bfa_ioc_portid(diag->ioc); in diag_ledtest_send()
4981 bfa_ioc_mbox_queue(diag->ioc, &diag->ledtest.mbcmd); in diag_ledtest_send()
5003 bfa_ioc_portid(diag->ioc)); in diag_portbeacon_send()
5007 bfa_ioc_mbox_queue(diag->ioc, &diag->beacon.mbcmd); in diag_portbeacon_send()
5067 if (!bfa_ioc_adapter_is_disabled(diag->ioc)) in bfa_diag_memtest()
5082 bfa_ioc_boot(diag->ioc, BFI_FWBOOT_TYPE_MEMTEST, BFI_FWBOOT_ENV_OS); in bfa_diag_memtest()
5084 memtest_tov = (bfa_ioc_asic_gen(diag->ioc) == BFI_ASIC_GEN_CT2) ? in bfa_diag_memtest()
5086 bfa_timer_begin(diag->ioc->timer_mod, &diag->timer, in bfa_diag_memtest()
5112 if (!bfa_ioc_is_operational(diag->ioc)) in bfa_diag_fwping()
5115 if (bfa_asic_id_ct2(bfa_ioc_devid((diag->ioc))) && in bfa_diag_fwping()
5116 ((diag->ioc)->clscode == BFI_PCIFN_CLASS_ETH)) in bfa_diag_fwping()
5165 if (!bfa_ioc_is_operational(diag->ioc)) in bfa_diag_tsensor_query()
5194 if (!bfa_ioc_is_operational(diag->ioc)) in bfa_diag_ledtest()
5228 if (!bfa_ioc_is_operational(diag->ioc)) in bfa_diag_beacon_port()
5261 bfa_diag_attach(struct bfa_diag_s *diag, struct bfa_ioc_s *ioc, void *dev, in bfa_diag_attach() argument
5265 diag->ioc = ioc; in bfa_diag_attach()
5274 bfa_ioc_mbox_regisr(diag->ioc, BFI_MC_DIAG, bfa_diag_intr, diag); in bfa_diag_attach()
5277 list_add_tail(&diag->ioc_notify.qe, &diag->ioc->notify_q); in bfa_diag_attach()
5306 return (phy->ioc->attr->card_type == BFA_MFG_TYPE_LIGHTNING); in bfa_phy_present()
5345 bfa_ioc_portid(phy->ioc)); in bfa_phy_query_send()
5347 bfa_ioc_mbox_queue(phy->ioc, &phy->mb); in bfa_phy_query_send()
5375 bfa_ioc_portid(phy->ioc)); in bfa_phy_write_send()
5384 bfa_ioc_mbox_queue(phy->ioc, &phy->mb); in bfa_phy_write_send()
5409 bfa_ioc_portid(phy->ioc)); in bfa_phy_read_send()
5411 bfa_ioc_mbox_queue(phy->ioc, &phy->mb); in bfa_phy_read_send()
5428 bfa_ioc_portid(phy->ioc)); in bfa_phy_stats_send()
5430 bfa_ioc_mbox_queue(phy->ioc, &phy->mb); in bfa_phy_stats_send()
5458 bfa_phy_attach(struct bfa_phy_s *phy, struct bfa_ioc_s *ioc, void *dev, in bfa_phy_attach() argument
5461 phy->ioc = ioc; in bfa_phy_attach()
5467 bfa_ioc_mbox_regisr(phy->ioc, BFI_MC_PHY, bfa_phy_intr, phy); in bfa_phy_attach()
5470 list_add_tail(&phy->ioc_notify.qe, &phy->ioc->notify_q); in bfa_phy_attach()
5502 bfa_phy_busy(struct bfa_ioc_s *ioc) in bfa_phy_busy() argument
5506 rb = bfa_ioc_bar0(ioc); in bfa_phy_busy()
5530 if (!bfa_ioc_is_operational(phy->ioc)) in bfa_phy_get_attr()
5533 if (phy->op_busy || bfa_phy_busy(phy->ioc)) { in bfa_phy_get_attr()
5570 if (!bfa_ioc_is_operational(phy->ioc)) in bfa_phy_get_stats()
5573 if (phy->op_busy || bfa_phy_busy(phy->ioc)) { in bfa_phy_get_stats()
5614 if (!bfa_ioc_is_operational(phy->ioc)) in bfa_phy_update()
5621 if (phy->op_busy || bfa_phy_busy(phy->ioc)) { in bfa_phy_update()
5665 if (!bfa_ioc_is_operational(phy->ioc)) in bfa_phy_read()
5672 if (phy->op_busy || bfa_phy_busy(phy->ioc)) { in bfa_phy_read()
5888 bfa_ioc_suspend(&dconf->bfa->ioc); in bfa_dconf_sm_flash_read()
6064 dconf->instance = bfa->ioc.port_id; in bfa_dconf_attach()
6220 bfi_h2i_set(msg->mh, BFI_MC_FRU, msg_type, bfa_ioc_portid(fru->ioc)); in bfa_fru_write_send()
6224 bfa_ioc_mbox_queue(fru->ioc, &fru->mb); in bfa_fru_write_send()
6247 bfi_h2i_set(msg->mh, BFI_MC_FRU, msg_type, bfa_ioc_portid(fru->ioc)); in bfa_fru_read_send()
6249 bfa_ioc_mbox_queue(fru->ioc, &fru->mb); in bfa_fru_read_send()
6277 bfa_fru_attach(struct bfa_fru_s *fru, struct bfa_ioc_s *ioc, void *dev, in bfa_fru_attach() argument
6280 fru->ioc = ioc; in bfa_fru_attach()
6286 bfa_ioc_mbox_regisr(fru->ioc, BFI_MC_FRU, bfa_fru_intr, fru); in bfa_fru_attach()
6289 list_add_tail(&fru->ioc_notify.qe, &fru->ioc->notify_q); in bfa_fru_attach()
6340 if (fru->ioc->asic_gen != BFI_ASIC_GEN_CT2 && in bfa_fruvpd_update()
6341 fru->ioc->attr->card_type != BFA_MFG_TYPE_CHINOOK2) in bfa_fruvpd_update()
6344 if (fru->ioc->attr->card_type != BFA_MFG_TYPE_CHINOOK) in bfa_fruvpd_update()
6347 if (!bfa_ioc_is_operational(fru->ioc)) in bfa_fruvpd_update()
6390 if (fru->ioc->asic_gen != BFI_ASIC_GEN_CT2) in bfa_fruvpd_read()
6393 if (fru->ioc->attr->card_type != BFA_MFG_TYPE_CHINOOK && in bfa_fruvpd_read()
6394 fru->ioc->attr->card_type != BFA_MFG_TYPE_CHINOOK2) in bfa_fruvpd_read()
6397 if (!bfa_ioc_is_operational(fru->ioc)) in bfa_fruvpd_read()
6429 if (fru->ioc->asic_gen != BFI_ASIC_GEN_CT2) in bfa_fruvpd_get_max_size()
6432 if (!bfa_ioc_is_operational(fru->ioc)) in bfa_fruvpd_get_max_size()
6435 if (fru->ioc->attr->card_type == BFA_MFG_TYPE_CHINOOK || in bfa_fruvpd_get_max_size()
6436 fru->ioc->attr->card_type == BFA_MFG_TYPE_CHINOOK2) in bfa_fruvpd_get_max_size()
6463 if (fru->ioc->asic_gen != BFI_ASIC_GEN_CT2) in bfa_tfru_write()
6466 if (!bfa_ioc_is_operational(fru->ioc)) in bfa_tfru_write()
6508 if (fru->ioc->asic_gen != BFI_ASIC_GEN_CT2) in bfa_tfru_read()
6511 if (!bfa_ioc_is_operational(fru->ioc)) in bfa_tfru_read()