Lines Matching refs:fabric

114 	struct bfa_fcs_fabric_s *fabric = &fcs->fabric;  in bfa_fcs_update_cfg()  local
115 struct bfa_lport_cfg_s *port_cfg = &fabric->bport.port_cfg; in bfa_fcs_update_cfg()
116 struct bfa_ioc_s *ioc = &fabric->fcs->bfa->ioc; in bfa_fcs_update_cfg()
168 bfa_fcs_fabric_psymb_init(&fcs->fabric); in bfa_fcs_driver_info_init()
169 bfa_fcs_fabric_nsymb_init(&fcs->fabric); in bfa_fcs_driver_info_init()
212 if (fabric->fab_type == BFA_FCS_FABRIC_SWITCHED) \
223 static void bfa_fcs_fabric_init(struct bfa_fcs_fabric_s *fabric);
224 static void bfa_fcs_fabric_login(struct bfa_fcs_fabric_s *fabric);
225 static void bfa_fcs_fabric_notify_online(struct bfa_fcs_fabric_s *fabric);
226 static void bfa_fcs_fabric_notify_offline(struct bfa_fcs_fabric_s *fabric);
228 static void bfa_fcs_fabric_delete(struct bfa_fcs_fabric_s *fabric);
230 static void bfa_fcs_fabric_stop(struct bfa_fcs_fabric_s *fabric);
232 static void bfa_fcs_fabric_process_uf(struct bfa_fcs_fabric_s *fabric,
234 static void bfa_fcs_fabric_process_flogi(struct bfa_fcs_fabric_s *fabric,
236 static void bfa_fcs_fabric_send_flogi_acc(struct bfa_fcs_fabric_s *fabric);
244 static void bfa_fcs_fabric_sm_uninit(struct bfa_fcs_fabric_s *fabric,
246 static void bfa_fcs_fabric_sm_created(struct bfa_fcs_fabric_s *fabric,
248 static void bfa_fcs_fabric_sm_linkdown(struct bfa_fcs_fabric_s *fabric,
250 static void bfa_fcs_fabric_sm_flogi(struct bfa_fcs_fabric_s *fabric,
252 static void bfa_fcs_fabric_sm_flogi_retry(struct bfa_fcs_fabric_s *fabric,
254 static void bfa_fcs_fabric_sm_auth(struct bfa_fcs_fabric_s *fabric,
256 static void bfa_fcs_fabric_sm_nofabric(struct bfa_fcs_fabric_s *fabric,
258 static void bfa_fcs_fabric_sm_evfp(struct bfa_fcs_fabric_s *fabric,
260 static void bfa_fcs_fabric_sm_evfp_done(struct bfa_fcs_fabric_s *fabric,
262 static void bfa_fcs_fabric_sm_isolated(struct bfa_fcs_fabric_s *fabric,
264 static void bfa_fcs_fabric_sm_deleting(struct bfa_fcs_fabric_s *fabric,
266 static void bfa_fcs_fabric_sm_stopping(struct bfa_fcs_fabric_s *fabric,
268 static void bfa_fcs_fabric_sm_cleanup(struct bfa_fcs_fabric_s *fabric,
274 bfa_fcs_fabric_sm_uninit(struct bfa_fcs_fabric_s *fabric, in bfa_fcs_fabric_sm_uninit() argument
277 bfa_trc(fabric->fcs, fabric->bport.port_cfg.pwwn); in bfa_fcs_fabric_sm_uninit()
278 bfa_trc(fabric->fcs, event); in bfa_fcs_fabric_sm_uninit()
282 bfa_sm_set_state(fabric, bfa_fcs_fabric_sm_created); in bfa_fcs_fabric_sm_uninit()
283 bfa_fcs_fabric_init(fabric); in bfa_fcs_fabric_sm_uninit()
284 bfa_fcs_lport_init(&fabric->bport, &fabric->bport.port_cfg); in bfa_fcs_fabric_sm_uninit()
292 bfa_sm_fault(fabric->fcs, event); in bfa_fcs_fabric_sm_uninit()
300 bfa_fcs_fabric_sm_created(struct bfa_fcs_fabric_s *fabric, in bfa_fcs_fabric_sm_created() argument
303 struct bfa_s *bfa = fabric->fcs->bfa; in bfa_fcs_fabric_sm_created()
305 bfa_trc(fabric->fcs, fabric->bport.port_cfg.pwwn); in bfa_fcs_fabric_sm_created()
306 bfa_trc(fabric->fcs, event); in bfa_fcs_fabric_sm_created()
310 if (!bfa_fcport_is_linkup(fabric->fcs->bfa)) { in bfa_fcs_fabric_sm_created()
311 bfa_sm_set_state(fabric, bfa_fcs_fabric_sm_linkdown); in bfa_fcs_fabric_sm_created()
316 fabric->fab_type = BFA_FCS_FABRIC_LOOP; in bfa_fcs_fabric_sm_created()
317 fabric->bport.pid = bfa_fcport_get_myalpa(bfa); in bfa_fcs_fabric_sm_created()
318 fabric->bport.pid = bfa_hton3b(fabric->bport.pid); in bfa_fcs_fabric_sm_created()
319 bfa_sm_set_state(fabric, in bfa_fcs_fabric_sm_created()
321 bfa_fcs_fabric_set_opertype(fabric); in bfa_fcs_fabric_sm_created()
322 bfa_fcs_lport_online(&fabric->bport); in bfa_fcs_fabric_sm_created()
324 bfa_sm_set_state(fabric, bfa_fcs_fabric_sm_flogi); in bfa_fcs_fabric_sm_created()
325 bfa_fcs_fabric_login(fabric); in bfa_fcs_fabric_sm_created()
334 bfa_sm_set_state(fabric, bfa_fcs_fabric_sm_deleting); in bfa_fcs_fabric_sm_created()
335 bfa_fcs_fabric_delete(fabric); in bfa_fcs_fabric_sm_created()
339 bfa_sm_fault(fabric->fcs, event); in bfa_fcs_fabric_sm_created()
348 bfa_fcs_fabric_sm_linkdown(struct bfa_fcs_fabric_s *fabric, in bfa_fcs_fabric_sm_linkdown() argument
351 struct bfa_s *bfa = fabric->fcs->bfa; in bfa_fcs_fabric_sm_linkdown()
353 bfa_trc(fabric->fcs, fabric->bport.port_cfg.pwwn); in bfa_fcs_fabric_sm_linkdown()
354 bfa_trc(fabric->fcs, event); in bfa_fcs_fabric_sm_linkdown()
359 bfa_sm_set_state(fabric, bfa_fcs_fabric_sm_flogi); in bfa_fcs_fabric_sm_linkdown()
360 bfa_fcs_fabric_login(fabric); in bfa_fcs_fabric_sm_linkdown()
363 fabric->fab_type = BFA_FCS_FABRIC_LOOP; in bfa_fcs_fabric_sm_linkdown()
364 fabric->bport.pid = bfa_fcport_get_myalpa(bfa); in bfa_fcs_fabric_sm_linkdown()
365 fabric->bport.pid = bfa_hton3b(fabric->bport.pid); in bfa_fcs_fabric_sm_linkdown()
366 bfa_sm_set_state(fabric, bfa_fcs_fabric_sm_online); in bfa_fcs_fabric_sm_linkdown()
367 bfa_fcs_fabric_set_opertype(fabric); in bfa_fcs_fabric_sm_linkdown()
368 bfa_fcs_lport_online(&fabric->bport); in bfa_fcs_fabric_sm_linkdown()
376 bfa_sm_set_state(fabric, bfa_fcs_fabric_sm_deleting); in bfa_fcs_fabric_sm_linkdown()
377 bfa_fcs_fabric_delete(fabric); in bfa_fcs_fabric_sm_linkdown()
381 bfa_sm_set_state(fabric, bfa_fcs_fabric_sm_cleanup); in bfa_fcs_fabric_sm_linkdown()
382 bfa_fcs_fabric_stop(fabric); in bfa_fcs_fabric_sm_linkdown()
386 bfa_sm_fault(fabric->fcs, event); in bfa_fcs_fabric_sm_linkdown()
394 bfa_fcs_fabric_sm_flogi(struct bfa_fcs_fabric_s *fabric, in bfa_fcs_fabric_sm_flogi() argument
397 bfa_trc(fabric->fcs, fabric->bport.port_cfg.pwwn); in bfa_fcs_fabric_sm_flogi()
398 bfa_trc(fabric->fcs, event); in bfa_fcs_fabric_sm_flogi()
403 bfa_fcport_set_tx_bbcredit(fabric->fcs->bfa, in bfa_fcs_fabric_sm_flogi()
404 fabric->bb_credit); in bfa_fcs_fabric_sm_flogi()
405 fabric->fab_type = BFA_FCS_FABRIC_SWITCHED; in bfa_fcs_fabric_sm_flogi()
407 if (fabric->auth_reqd && fabric->is_auth) { in bfa_fcs_fabric_sm_flogi()
408 bfa_sm_set_state(fabric, bfa_fcs_fabric_sm_auth); in bfa_fcs_fabric_sm_flogi()
409 bfa_trc(fabric->fcs, event); in bfa_fcs_fabric_sm_flogi()
411 bfa_sm_set_state(fabric, bfa_fcs_fabric_sm_online); in bfa_fcs_fabric_sm_flogi()
412 bfa_fcs_fabric_notify_online(fabric); in bfa_fcs_fabric_sm_flogi()
417 bfa_sm_set_state(fabric, bfa_fcs_fabric_sm_flogi_retry); in bfa_fcs_fabric_sm_flogi()
418 bfa_timer_start(fabric->fcs->bfa, &fabric->delay_timer, in bfa_fcs_fabric_sm_flogi()
419 bfa_fcs_fabric_delay, fabric, in bfa_fcs_fabric_sm_flogi()
424 bfa_sm_set_state(fabric, bfa_fcs_fabric_sm_loopback); in bfa_fcs_fabric_sm_flogi()
425 bfa_sm_send_event(fabric->lps, BFA_LPS_SM_OFFLINE); in bfa_fcs_fabric_sm_flogi()
426 bfa_fcs_fabric_set_opertype(fabric); in bfa_fcs_fabric_sm_flogi()
430 fabric->fab_type = BFA_FCS_FABRIC_N2N; in bfa_fcs_fabric_sm_flogi()
431 bfa_fcport_set_tx_bbcredit(fabric->fcs->bfa, in bfa_fcs_fabric_sm_flogi()
432 fabric->bb_credit); in bfa_fcs_fabric_sm_flogi()
433 bfa_fcs_fabric_notify_online(fabric); in bfa_fcs_fabric_sm_flogi()
434 bfa_sm_set_state(fabric, bfa_fcs_fabric_sm_nofabric); in bfa_fcs_fabric_sm_flogi()
438 bfa_sm_set_state(fabric, bfa_fcs_fabric_sm_linkdown); in bfa_fcs_fabric_sm_flogi()
439 bfa_sm_send_event(fabric->lps, BFA_LPS_SM_OFFLINE); in bfa_fcs_fabric_sm_flogi()
443 bfa_sm_set_state(fabric, bfa_fcs_fabric_sm_deleting); in bfa_fcs_fabric_sm_flogi()
444 bfa_sm_send_event(fabric->lps, BFA_LPS_SM_OFFLINE); in bfa_fcs_fabric_sm_flogi()
445 bfa_fcs_fabric_delete(fabric); in bfa_fcs_fabric_sm_flogi()
449 bfa_sm_fault(fabric->fcs, event); in bfa_fcs_fabric_sm_flogi()
455 bfa_fcs_fabric_sm_flogi_retry(struct bfa_fcs_fabric_s *fabric, in bfa_fcs_fabric_sm_flogi_retry() argument
458 bfa_trc(fabric->fcs, fabric->bport.port_cfg.pwwn); in bfa_fcs_fabric_sm_flogi_retry()
459 bfa_trc(fabric->fcs, event); in bfa_fcs_fabric_sm_flogi_retry()
463 bfa_sm_set_state(fabric, bfa_fcs_fabric_sm_flogi); in bfa_fcs_fabric_sm_flogi_retry()
464 bfa_fcs_fabric_login(fabric); in bfa_fcs_fabric_sm_flogi_retry()
468 bfa_sm_set_state(fabric, bfa_fcs_fabric_sm_linkdown); in bfa_fcs_fabric_sm_flogi_retry()
469 bfa_timer_stop(&fabric->delay_timer); in bfa_fcs_fabric_sm_flogi_retry()
473 bfa_sm_set_state(fabric, bfa_fcs_fabric_sm_deleting); in bfa_fcs_fabric_sm_flogi_retry()
474 bfa_timer_stop(&fabric->delay_timer); in bfa_fcs_fabric_sm_flogi_retry()
475 bfa_fcs_fabric_delete(fabric); in bfa_fcs_fabric_sm_flogi_retry()
479 bfa_sm_fault(fabric->fcs, event); in bfa_fcs_fabric_sm_flogi_retry()
487 bfa_fcs_fabric_sm_auth(struct bfa_fcs_fabric_s *fabric, in bfa_fcs_fabric_sm_auth() argument
490 bfa_trc(fabric->fcs, fabric->bport.port_cfg.pwwn); in bfa_fcs_fabric_sm_auth()
491 bfa_trc(fabric->fcs, event); in bfa_fcs_fabric_sm_auth()
495 bfa_sm_set_state(fabric, bfa_fcs_fabric_sm_auth_failed); in bfa_fcs_fabric_sm_auth()
496 bfa_sm_send_event(fabric->lps, BFA_LPS_SM_OFFLINE); in bfa_fcs_fabric_sm_auth()
500 bfa_sm_set_state(fabric, bfa_fcs_fabric_sm_online); in bfa_fcs_fabric_sm_auth()
501 bfa_fcs_fabric_notify_online(fabric); in bfa_fcs_fabric_sm_auth()
505 bfa_sm_set_state(fabric, bfa_fcs_fabric_sm_evfp); in bfa_fcs_fabric_sm_auth()
509 bfa_sm_set_state(fabric, bfa_fcs_fabric_sm_linkdown); in bfa_fcs_fabric_sm_auth()
510 bfa_sm_send_event(fabric->lps, BFA_LPS_SM_OFFLINE); in bfa_fcs_fabric_sm_auth()
514 bfa_sm_set_state(fabric, bfa_fcs_fabric_sm_deleting); in bfa_fcs_fabric_sm_auth()
515 bfa_fcs_fabric_delete(fabric); in bfa_fcs_fabric_sm_auth()
519 bfa_sm_fault(fabric->fcs, event); in bfa_fcs_fabric_sm_auth()
527 bfa_fcs_fabric_sm_auth_failed(struct bfa_fcs_fabric_s *fabric, in bfa_fcs_fabric_sm_auth_failed() argument
530 bfa_trc(fabric->fcs, fabric->bport.port_cfg.pwwn); in bfa_fcs_fabric_sm_auth_failed()
531 bfa_trc(fabric->fcs, event); in bfa_fcs_fabric_sm_auth_failed()
535 bfa_sm_set_state(fabric, bfa_fcs_fabric_sm_linkdown); in bfa_fcs_fabric_sm_auth_failed()
536 bfa_fcs_fabric_notify_offline(fabric); in bfa_fcs_fabric_sm_auth_failed()
540 bfa_sm_set_state(fabric, bfa_fcs_fabric_sm_deleting); in bfa_fcs_fabric_sm_auth_failed()
541 bfa_fcs_fabric_delete(fabric); in bfa_fcs_fabric_sm_auth_failed()
545 bfa_sm_fault(fabric->fcs, event); in bfa_fcs_fabric_sm_auth_failed()
553 bfa_fcs_fabric_sm_loopback(struct bfa_fcs_fabric_s *fabric, in bfa_fcs_fabric_sm_loopback() argument
556 bfa_trc(fabric->fcs, fabric->bport.port_cfg.pwwn); in bfa_fcs_fabric_sm_loopback()
557 bfa_trc(fabric->fcs, event); in bfa_fcs_fabric_sm_loopback()
561 bfa_sm_set_state(fabric, bfa_fcs_fabric_sm_linkdown); in bfa_fcs_fabric_sm_loopback()
562 bfa_fcs_fabric_notify_offline(fabric); in bfa_fcs_fabric_sm_loopback()
566 bfa_sm_set_state(fabric, bfa_fcs_fabric_sm_deleting); in bfa_fcs_fabric_sm_loopback()
567 bfa_fcs_fabric_delete(fabric); in bfa_fcs_fabric_sm_loopback()
571 bfa_sm_fault(fabric->fcs, event); in bfa_fcs_fabric_sm_loopback()
579 bfa_fcs_fabric_sm_nofabric(struct bfa_fcs_fabric_s *fabric, in bfa_fcs_fabric_sm_nofabric() argument
582 bfa_trc(fabric->fcs, fabric->bport.port_cfg.pwwn); in bfa_fcs_fabric_sm_nofabric()
583 bfa_trc(fabric->fcs, event); in bfa_fcs_fabric_sm_nofabric()
587 bfa_sm_set_state(fabric, bfa_fcs_fabric_sm_linkdown); in bfa_fcs_fabric_sm_nofabric()
588 bfa_sm_send_event(fabric->lps, BFA_LPS_SM_OFFLINE); in bfa_fcs_fabric_sm_nofabric()
589 bfa_fcs_fabric_notify_offline(fabric); in bfa_fcs_fabric_sm_nofabric()
593 bfa_sm_set_state(fabric, bfa_fcs_fabric_sm_deleting); in bfa_fcs_fabric_sm_nofabric()
594 bfa_fcs_fabric_delete(fabric); in bfa_fcs_fabric_sm_nofabric()
598 bfa_trc(fabric->fcs, fabric->bb_credit); in bfa_fcs_fabric_sm_nofabric()
599 bfa_fcport_set_tx_bbcredit(fabric->fcs->bfa, in bfa_fcs_fabric_sm_nofabric()
600 fabric->bb_credit); in bfa_fcs_fabric_sm_nofabric()
607 bfa_sm_fault(fabric->fcs, event); in bfa_fcs_fabric_sm_nofabric()
615 bfa_fcs_fabric_sm_online(struct bfa_fcs_fabric_s *fabric, in bfa_fcs_fabric_sm_online() argument
618 struct bfa_s *bfa = fabric->fcs->bfa; in bfa_fcs_fabric_sm_online()
620 bfa_trc(fabric->fcs, fabric->bport.port_cfg.pwwn); in bfa_fcs_fabric_sm_online()
621 bfa_trc(fabric->fcs, event); in bfa_fcs_fabric_sm_online()
625 bfa_sm_set_state(fabric, bfa_fcs_fabric_sm_linkdown); in bfa_fcs_fabric_sm_online()
627 bfa_fcs_lport_offline(&fabric->bport); in bfa_fcs_fabric_sm_online()
629 bfa_sm_send_event(fabric->lps, BFA_LPS_SM_OFFLINE); in bfa_fcs_fabric_sm_online()
630 bfa_fcs_fabric_notify_offline(fabric); in bfa_fcs_fabric_sm_online()
635 bfa_sm_set_state(fabric, bfa_fcs_fabric_sm_deleting); in bfa_fcs_fabric_sm_online()
636 bfa_fcs_fabric_delete(fabric); in bfa_fcs_fabric_sm_online()
640 bfa_sm_set_state(fabric, bfa_fcs_fabric_sm_stopping); in bfa_fcs_fabric_sm_online()
641 bfa_fcs_fabric_stop(fabric); in bfa_fcs_fabric_sm_online()
645 bfa_sm_set_state(fabric, bfa_fcs_fabric_sm_auth_failed); in bfa_fcs_fabric_sm_online()
646 bfa_sm_send_event(fabric->lps, BFA_LPS_SM_OFFLINE); in bfa_fcs_fabric_sm_online()
653 bfa_sm_fault(fabric->fcs, event); in bfa_fcs_fabric_sm_online()
661 bfa_fcs_fabric_sm_evfp(struct bfa_fcs_fabric_s *fabric, in bfa_fcs_fabric_sm_evfp() argument
664 bfa_trc(fabric->fcs, fabric->bport.port_cfg.pwwn); in bfa_fcs_fabric_sm_evfp()
665 bfa_trc(fabric->fcs, event); in bfa_fcs_fabric_sm_evfp()
669 bfa_sm_set_state(fabric, bfa_fcs_fabric_sm_evfp_done); in bfa_fcs_fabric_sm_evfp()
673 bfa_sm_set_state(fabric, bfa_fcs_fabric_sm_isolated); in bfa_fcs_fabric_sm_evfp()
677 bfa_sm_fault(fabric->fcs, event); in bfa_fcs_fabric_sm_evfp()
685 bfa_fcs_fabric_sm_evfp_done(struct bfa_fcs_fabric_s *fabric, in bfa_fcs_fabric_sm_evfp_done() argument
688 bfa_trc(fabric->fcs, fabric->bport.port_cfg.pwwn); in bfa_fcs_fabric_sm_evfp_done()
689 bfa_trc(fabric->fcs, event); in bfa_fcs_fabric_sm_evfp_done()
696 bfa_fcs_fabric_sm_isolated(struct bfa_fcs_fabric_s *fabric, in bfa_fcs_fabric_sm_isolated() argument
699 struct bfad_s *bfad = (struct bfad_s *)fabric->fcs->bfad; in bfa_fcs_fabric_sm_isolated()
702 bfa_trc(fabric->fcs, fabric->bport.port_cfg.pwwn); in bfa_fcs_fabric_sm_isolated()
703 bfa_trc(fabric->fcs, event); in bfa_fcs_fabric_sm_isolated()
704 wwn2str(pwwn_ptr, fabric->bport.port_cfg.pwwn); in bfa_fcs_fabric_sm_isolated()
709 pwwn_ptr, fabric->fcs->port_vfid, in bfa_fcs_fabric_sm_isolated()
710 fabric->event_arg.swp_vfid); in bfa_fcs_fabric_sm_isolated()
717 bfa_fcs_fabric_sm_deleting(struct bfa_fcs_fabric_s *fabric, in bfa_fcs_fabric_sm_deleting() argument
720 bfa_trc(fabric->fcs, fabric->bport.port_cfg.pwwn); in bfa_fcs_fabric_sm_deleting()
721 bfa_trc(fabric->fcs, event); in bfa_fcs_fabric_sm_deleting()
725 bfa_sm_set_state(fabric, bfa_fcs_fabric_sm_uninit); in bfa_fcs_fabric_sm_deleting()
726 bfa_wc_down(&fabric->fcs->wc); in bfa_fcs_fabric_sm_deleting()
733 bfa_fcs_fabric_notify_offline(fabric); in bfa_fcs_fabric_sm_deleting()
737 bfa_sm_fault(fabric->fcs, event); in bfa_fcs_fabric_sm_deleting()
745 bfa_fcs_fabric_sm_stopping(struct bfa_fcs_fabric_s *fabric, in bfa_fcs_fabric_sm_stopping() argument
748 struct bfa_s *bfa = fabric->fcs->bfa; in bfa_fcs_fabric_sm_stopping()
750 bfa_trc(fabric->fcs, fabric->bport.port_cfg.pwwn); in bfa_fcs_fabric_sm_stopping()
751 bfa_trc(fabric->fcs, event); in bfa_fcs_fabric_sm_stopping()
756 bfa_sm_set_state(fabric, bfa_fcs_fabric_sm_created); in bfa_fcs_fabric_sm_stopping()
758 bfa_sm_set_state(fabric, bfa_fcs_fabric_sm_cleanup); in bfa_fcs_fabric_sm_stopping()
759 bfa_sm_send_event(fabric->lps, BFA_LPS_SM_LOGOUT); in bfa_fcs_fabric_sm_stopping()
768 bfa_sm_set_state(fabric, bfa_fcs_fabric_sm_created); in bfa_fcs_fabric_sm_stopping()
770 bfa_sm_set_state(fabric, bfa_fcs_fabric_sm_cleanup); in bfa_fcs_fabric_sm_stopping()
774 bfa_sm_fault(fabric->fcs, event); in bfa_fcs_fabric_sm_stopping()
782 bfa_fcs_fabric_sm_cleanup(struct bfa_fcs_fabric_s *fabric, in bfa_fcs_fabric_sm_cleanup() argument
785 bfa_trc(fabric->fcs, fabric->bport.port_cfg.pwwn); in bfa_fcs_fabric_sm_cleanup()
786 bfa_trc(fabric->fcs, event); in bfa_fcs_fabric_sm_cleanup()
791 bfa_sm_set_state(fabric, bfa_fcs_fabric_sm_created); in bfa_fcs_fabric_sm_cleanup()
792 bfa_wc_down(&(fabric->fcs)->wc); in bfa_fcs_fabric_sm_cleanup()
803 bfa_sm_fault(fabric->fcs, event); in bfa_fcs_fabric_sm_cleanup()
812 bfa_fcs_fabric_init(struct bfa_fcs_fabric_s *fabric) in bfa_fcs_fabric_init() argument
814 struct bfa_lport_cfg_s *port_cfg = &fabric->bport.port_cfg; in bfa_fcs_fabric_init()
817 port_cfg->nwwn = fabric->fcs->bfa->ioc.attr->nwwn; in bfa_fcs_fabric_init()
818 port_cfg->pwwn = fabric->fcs->bfa->ioc.attr->pwwn; in bfa_fcs_fabric_init()
825 bfa_fcs_fabric_psymb_init(struct bfa_fcs_fabric_s *fabric) in bfa_fcs_fabric_psymb_init() argument
827 struct bfa_lport_cfg_s *port_cfg = &fabric->bport.port_cfg; in bfa_fcs_fabric_psymb_init()
829 struct bfa_fcs_driver_info_s *driver_info = &fabric->fcs->driver_info; in bfa_fcs_fabric_psymb_init()
831 bfa_ioc_get_adapter_model(&fabric->fcs->bfa->ioc, model); in bfa_fcs_fabric_psymb_init()
886 bfa_fcs_fabric_nsymb_init(struct bfa_fcs_fabric_s *fabric) in bfa_fcs_fabric_nsymb_init() argument
888 struct bfa_lport_cfg_s *port_cfg = &fabric->bport.port_cfg; in bfa_fcs_fabric_nsymb_init()
890 struct bfa_fcs_driver_info_s *driver_info = &fabric->fcs->driver_info; in bfa_fcs_fabric_nsymb_init()
892 bfa_ioc_get_adapter_model(&fabric->fcs->bfa->ioc, model); in bfa_fcs_fabric_nsymb_init()
926 struct bfa_fcs_fabric_s *fabric = uarg; in bfa_cb_lps_flogi_comp() local
928 bfa_trc(fabric->fcs, fabric->bport.port_cfg.pwwn); in bfa_cb_lps_flogi_comp()
929 bfa_trc(fabric->fcs, status); in bfa_cb_lps_flogi_comp()
933 fabric->stats.flogi_accepts++; in bfa_cb_lps_flogi_comp()
938 fabric->stats.flogi_acc_err++; in bfa_cb_lps_flogi_comp()
939 bfa_sm_send_event(fabric, BFA_FCS_FABRIC_SM_RETRY_OP); in bfa_cb_lps_flogi_comp()
944 switch (fabric->lps->ext_status) { in bfa_cb_lps_flogi_comp()
946 fabric->stats.flogi_acc_err++; in bfa_cb_lps_flogi_comp()
950 fabric->stats.flogi_unknown_rsp++; in bfa_cb_lps_flogi_comp()
956 bfa_sm_send_event(fabric, BFA_FCS_FABRIC_SM_RETRY_OP); in bfa_cb_lps_flogi_comp()
961 fabric->stats.flogi_rejects++; in bfa_cb_lps_flogi_comp()
962 bfa_sm_send_event(fabric, BFA_FCS_FABRIC_SM_RETRY_OP); in bfa_cb_lps_flogi_comp()
966 fabric->stats.flogi_rsp_err++; in bfa_cb_lps_flogi_comp()
967 bfa_sm_send_event(fabric, BFA_FCS_FABRIC_SM_RETRY_OP); in bfa_cb_lps_flogi_comp()
971 fabric->bb_credit = fabric->lps->pr_bbcred; in bfa_cb_lps_flogi_comp()
972 bfa_trc(fabric->fcs, fabric->bb_credit); in bfa_cb_lps_flogi_comp()
974 if (!(fabric->lps->brcd_switch)) in bfa_cb_lps_flogi_comp()
975 fabric->fabric_name = fabric->lps->pr_nwwn; in bfa_cb_lps_flogi_comp()
980 if (fabric->lps->fport) { in bfa_cb_lps_flogi_comp()
981 fabric->bport.pid = fabric->lps->lp_pid; in bfa_cb_lps_flogi_comp()
982 fabric->is_npiv = fabric->lps->npiv_en; in bfa_cb_lps_flogi_comp()
983 fabric->is_auth = fabric->lps->auth_req; in bfa_cb_lps_flogi_comp()
984 bfa_sm_send_event(fabric, BFA_FCS_FABRIC_SM_CONT_OP); in bfa_cb_lps_flogi_comp()
989 fabric->bport.port_topo.pn2n.rem_port_wwn = in bfa_cb_lps_flogi_comp()
990 fabric->lps->pr_pwwn; in bfa_cb_lps_flogi_comp()
991 fabric->fab_type = BFA_FCS_FABRIC_N2N; in bfa_cb_lps_flogi_comp()
992 bfa_sm_send_event(fabric, BFA_FCS_FABRIC_SM_NO_FABRIC); in bfa_cb_lps_flogi_comp()
995 bfa_trc(fabric->fcs, fabric->bport.pid); in bfa_cb_lps_flogi_comp()
996 bfa_trc(fabric->fcs, fabric->is_npiv); in bfa_cb_lps_flogi_comp()
997 bfa_trc(fabric->fcs, fabric->is_auth); in bfa_cb_lps_flogi_comp()
1003 bfa_fcs_fabric_login(struct bfa_fcs_fabric_s *fabric) in bfa_fcs_fabric_login() argument
1005 struct bfa_s *bfa = fabric->fcs->bfa; in bfa_fcs_fabric_login()
1006 struct bfa_lport_cfg_s *pcfg = &fabric->bport.port_cfg; in bfa_fcs_fabric_login()
1010 bfa_lps_flogi(fabric->lps, fabric, alpa, bfa_fcport_get_maxfrsize(bfa), in bfa_fcs_fabric_login()
1011 pcfg->pwwn, pcfg->nwwn, fabric->auth_reqd); in bfa_fcs_fabric_login()
1013 fabric->stats.flogi_sent++; in bfa_fcs_fabric_login()
1017 bfa_fcs_fabric_notify_online(struct bfa_fcs_fabric_s *fabric) in bfa_fcs_fabric_notify_online() argument
1022 bfa_trc(fabric->fcs, fabric->fabric_name); in bfa_fcs_fabric_notify_online()
1024 bfa_fcs_fabric_set_opertype(fabric); in bfa_fcs_fabric_notify_online()
1025 fabric->stats.fabric_onlines++; in bfa_fcs_fabric_notify_online()
1030 bfa_fcs_lport_online(&fabric->bport); in bfa_fcs_fabric_notify_online()
1032 list_for_each_safe(qe, qen, &fabric->vport_q) { in bfa_fcs_fabric_notify_online()
1039 bfa_fcs_fabric_notify_offline(struct bfa_fcs_fabric_s *fabric) in bfa_fcs_fabric_notify_offline() argument
1044 bfa_trc(fabric->fcs, fabric->fabric_name); in bfa_fcs_fabric_notify_offline()
1045 fabric->stats.fabric_offlines++; in bfa_fcs_fabric_notify_offline()
1050 list_for_each_safe(qe, qen, &fabric->vport_q) { in bfa_fcs_fabric_notify_offline()
1055 bfa_fcs_lport_offline(&fabric->bport); in bfa_fcs_fabric_notify_offline()
1057 fabric->fabric_name = 0; in bfa_fcs_fabric_notify_offline()
1058 fabric->fabric_ip_addr[0] = 0; in bfa_fcs_fabric_notify_offline()
1064 struct bfa_fcs_fabric_s *fabric = cbarg; in bfa_fcs_fabric_delay() local
1066 bfa_sm_send_event(fabric, BFA_FCS_FABRIC_SM_DELAYED); in bfa_fcs_fabric_delay()
1073 bfa_fcs_fabric_stop(struct bfa_fcs_fabric_s *fabric) in bfa_fcs_fabric_stop() argument
1078 bfa_wc_init(&fabric->stop_wc, bfa_fcs_fabric_stop_comp, fabric); in bfa_fcs_fabric_stop()
1080 list_for_each_safe(qe, qen, &fabric->vport_q) { in bfa_fcs_fabric_stop()
1082 bfa_wc_up(&fabric->stop_wc); in bfa_fcs_fabric_stop()
1086 bfa_wc_up(&fabric->stop_wc); in bfa_fcs_fabric_stop()
1087 bfa_fcs_lport_stop(&fabric->bport); in bfa_fcs_fabric_stop()
1088 bfa_wc_wait(&fabric->stop_wc); in bfa_fcs_fabric_stop()
1095 bfa_fcs_fabric_delete(struct bfa_fcs_fabric_s *fabric) in bfa_fcs_fabric_delete() argument
1100 list_for_each_safe(qe, qen, &fabric->vport_q) { in bfa_fcs_fabric_delete()
1105 bfa_fcs_lport_delete(&fabric->bport); in bfa_fcs_fabric_delete()
1106 bfa_wc_wait(&fabric->wc); in bfa_fcs_fabric_delete()
1112 struct bfa_fcs_fabric_s *fabric = cbarg; in bfa_fcs_fabric_delete_comp() local
1114 bfa_sm_send_event(fabric, BFA_FCS_FABRIC_SM_DELCOMP); in bfa_fcs_fabric_delete_comp()
1120 struct bfa_fcs_fabric_s *fabric = cbarg; in bfa_fcs_fabric_stop_comp() local
1122 bfa_sm_send_event(fabric, BFA_FCS_FABRIC_SM_STOPCOMP); in bfa_fcs_fabric_stop_comp()
1135 struct bfa_fcs_fabric_s *fabric; in bfa_fcs_fabric_attach() local
1137 fabric = &fcs->fabric; in bfa_fcs_fabric_attach()
1138 memset(fabric, 0, sizeof(struct bfa_fcs_fabric_s)); in bfa_fcs_fabric_attach()
1143 fabric->fcs = fcs; in bfa_fcs_fabric_attach()
1144 INIT_LIST_HEAD(&fabric->vport_q); in bfa_fcs_fabric_attach()
1145 INIT_LIST_HEAD(&fabric->vf_q); in bfa_fcs_fabric_attach()
1146 fabric->lps = bfa_lps_alloc(fcs->bfa); in bfa_fcs_fabric_attach()
1147 WARN_ON(!fabric->lps); in bfa_fcs_fabric_attach()
1153 bfa_wc_init(&fabric->wc, bfa_fcs_fabric_delete_comp, fabric); in bfa_fcs_fabric_attach()
1154 bfa_wc_up(&fabric->wc); /* For the base port */ in bfa_fcs_fabric_attach()
1156 bfa_sm_set_state(fabric, bfa_fcs_fabric_sm_uninit); in bfa_fcs_fabric_attach()
1157 bfa_fcs_lport_attach(&fabric->bport, fabric->fcs, FC_VF_ID_NULL, NULL); in bfa_fcs_fabric_attach()
1163 bfa_sm_send_event(&fcs->fabric, BFA_FCS_FABRIC_SM_CREATE); in bfa_fcs_fabric_modinit()
1173 struct bfa_fcs_fabric_s *fabric; in bfa_fcs_fabric_modexit() local
1180 fabric = &fcs->fabric; in bfa_fcs_fabric_modexit()
1181 bfa_lps_delete(fabric->lps); in bfa_fcs_fabric_modexit()
1182 bfa_sm_send_event(fabric, BFA_FCS_FABRIC_SM_DELETE); in bfa_fcs_fabric_modexit()
1191 struct bfa_fcs_fabric_s *fabric; in bfa_fcs_fabric_modstop() local
1194 fabric = &fcs->fabric; in bfa_fcs_fabric_modstop()
1195 bfa_sm_send_event(fabric, BFA_FCS_FABRIC_SM_STOP); in bfa_fcs_fabric_modstop()
1204 struct bfa_fcs_fabric_s *fabric; in bfa_fcs_fabric_modstart() local
1207 fabric = &fcs->fabric; in bfa_fcs_fabric_modstart()
1208 bfa_sm_send_event(fabric, BFA_FCS_FABRIC_SM_START); in bfa_fcs_fabric_modstart()
1216 bfa_fcs_fabric_link_up(struct bfa_fcs_fabric_s *fabric) in bfa_fcs_fabric_link_up() argument
1218 bfa_trc(fabric->fcs, fabric->bport.port_cfg.pwwn); in bfa_fcs_fabric_link_up()
1219 bfa_sm_send_event(fabric, BFA_FCS_FABRIC_SM_LINK_UP); in bfa_fcs_fabric_link_up()
1226 bfa_fcs_fabric_link_down(struct bfa_fcs_fabric_s *fabric) in bfa_fcs_fabric_link_down() argument
1228 bfa_trc(fabric->fcs, fabric->bport.port_cfg.pwwn); in bfa_fcs_fabric_link_down()
1229 bfa_sm_send_event(fabric, BFA_FCS_FABRIC_SM_LINK_DOWN); in bfa_fcs_fabric_link_down()
1244 bfa_fcs_fabric_addvport(struct bfa_fcs_fabric_s *fabric, in bfa_fcs_fabric_addvport() argument
1250 bfa_trc(fabric->fcs, fabric->vf_id); in bfa_fcs_fabric_addvport()
1252 list_add_tail(&vport->qe, &fabric->vport_q); in bfa_fcs_fabric_addvport()
1253 fabric->num_vports++; in bfa_fcs_fabric_addvport()
1254 bfa_wc_up(&fabric->wc); in bfa_fcs_fabric_addvport()
1263 bfa_fcs_fabric_delvport(struct bfa_fcs_fabric_s *fabric, in bfa_fcs_fabric_delvport() argument
1267 fabric->num_vports--; in bfa_fcs_fabric_delvport()
1268 bfa_wc_down(&fabric->wc); in bfa_fcs_fabric_delvport()
1276 bfa_fcs_fabric_vport_lookup(struct bfa_fcs_fabric_s *fabric, wwn_t pwwn) in bfa_fcs_fabric_vport_lookup() argument
1281 list_for_each(qe, &fabric->vport_q) { in bfa_fcs_fabric_vport_lookup()
1303 bfa_fcs_fabric_get_switch_oui(struct bfa_fcs_fabric_s *fabric) in bfa_fcs_fabric_get_switch_oui() argument
1309 fab_nwwn = fabric->lps->pr_nwwn; in bfa_fcs_fabric_get_switch_oui()
1320 bfa_fcs_fabric_uf_recv(struct bfa_fcs_fabric_s *fabric, struct fchs_s *fchs, in bfa_fcs_fabric_uf_recv() argument
1329 bfa_trc(fabric->fcs, len); in bfa_fcs_fabric_uf_recv()
1330 bfa_trc(fabric->fcs, pid); in bfa_fcs_fabric_uf_recv()
1339 (flogi->port_name == bfa_fcs_lport_get_pwwn(&fabric->bport))) { in bfa_fcs_fabric_uf_recv()
1340 bfa_sm_send_event(fabric, BFA_FCS_FABRIC_SM_LOOPBACK); in bfa_fcs_fabric_uf_recv()
1348 bfa_trc(fabric->fcs, pid); in bfa_fcs_fabric_uf_recv()
1349 bfa_fcs_fabric_process_uf(fabric, fchs, len); in bfa_fcs_fabric_uf_recv()
1353 if (fabric->bport.pid == pid) { in bfa_fcs_fabric_uf_recv()
1357 bfa_trc(fabric->fcs, els_cmd->els_code); in bfa_fcs_fabric_uf_recv()
1359 bfa_trc(fabric->fcs, els_cmd->els_code); in bfa_fcs_fabric_uf_recv()
1363 bfa_trc(fabric->fcs, *(u8 *) ((u8 *) fchs)); in bfa_fcs_fabric_uf_recv()
1364 bfa_fcs_lport_uf_recv(&fabric->bport, fchs, len); in bfa_fcs_fabric_uf_recv()
1371 list_for_each(qe, &fabric->vport_q) { in bfa_fcs_fabric_uf_recv()
1379 if (!bfa_fcs_fabric_is_switched(fabric)) in bfa_fcs_fabric_uf_recv()
1380 bfa_fcs_lport_uf_recv(&fabric->bport, fchs, len); in bfa_fcs_fabric_uf_recv()
1382 bfa_trc(fabric->fcs, fchs->type); in bfa_fcs_fabric_uf_recv()
1389 bfa_fcs_fabric_process_uf(struct bfa_fcs_fabric_s *fabric, struct fchs_s *fchs, in bfa_fcs_fabric_process_uf() argument
1394 bfa_trc(fabric->fcs, els_cmd->els_code); in bfa_fcs_fabric_process_uf()
1398 bfa_fcs_fabric_process_flogi(fabric, fchs, len); in bfa_fcs_fabric_process_uf()
1413 bfa_fcs_fabric_process_flogi(struct bfa_fcs_fabric_s *fabric, in bfa_fcs_fabric_process_flogi() argument
1417 struct bfa_fcs_lport_s *bport = &fabric->bport; in bfa_fcs_fabric_process_flogi()
1419 bfa_trc(fabric->fcs, fchs->s_id); in bfa_fcs_fabric_process_flogi()
1421 fabric->stats.flogi_rcvd++; in bfa_fcs_fabric_process_flogi()
1429 bfa_trc(fabric->fcs, flogi->port_name); in bfa_fcs_fabric_process_flogi()
1430 fabric->stats.flogi_rejected++; in bfa_fcs_fabric_process_flogi()
1434 fabric->bb_credit = be16_to_cpu(flogi->csp.bbcred); in bfa_fcs_fabric_process_flogi()
1441 bfa_fcs_fabric_send_flogi_acc(fabric); in bfa_fcs_fabric_process_flogi()
1442 bfa_sm_send_event(fabric, BFA_FCS_FABRIC_SM_NO_FABRIC); in bfa_fcs_fabric_process_flogi()
1446 bfa_fcs_fabric_send_flogi_acc(struct bfa_fcs_fabric_s *fabric) in bfa_fcs_fabric_send_flogi_acc() argument
1448 struct bfa_lport_cfg_s *pcfg = &fabric->bport.port_cfg; in bfa_fcs_fabric_send_flogi_acc()
1449 struct bfa_fcs_lport_n2n_s *n2n_port = &fabric->bport.port_topo.pn2n; in bfa_fcs_fabric_send_flogi_acc()
1450 struct bfa_s *bfa = fabric->fcs->bfa; in bfa_fcs_fabric_send_flogi_acc()
1455 fcxp = bfa_fcs_fcxp_alloc(fabric->fcs, BFA_FALSE); in bfa_fcs_fabric_send_flogi_acc()
1469 bfa_fcxp_send(fcxp, NULL, fabric->vf_id, fabric->lps->bfa_tag, in bfa_fcs_fabric_send_flogi_acc()
1471 reqlen, &fchs, bfa_fcs_fabric_flogiacc_comp, fabric, in bfa_fcs_fabric_send_flogi_acc()
1483 struct bfa_fcs_fabric_s *fabric = cbarg; in bfa_fcs_fabric_flogiacc_comp() local
1485 bfa_trc(fabric->fcs, status); in bfa_fcs_fabric_flogiacc_comp()
1496 struct bfad_s *bfad = (struct bfad_s *)port->fabric->fcs->bfad; in bfa_fcs_fabric_aen_post()
1519 bfa_fcs_fabric_set_fabric_name(struct bfa_fcs_fabric_s *fabric, in bfa_fcs_fabric_set_fabric_name() argument
1522 struct bfad_s *bfad = (struct bfad_s *)fabric->fcs->bfad; in bfa_fcs_fabric_set_fabric_name()
1526 bfa_trc(fabric->fcs, fabric_name); in bfa_fcs_fabric_set_fabric_name()
1528 if (fabric->fabric_name == 0) { in bfa_fcs_fabric_set_fabric_name()
1533 fabric->fabric_name = fabric_name; in bfa_fcs_fabric_set_fabric_name()
1535 fabric->fabric_name = fabric_name; in bfa_fcs_fabric_set_fabric_name()
1536 wwn2str(pwwn_ptr, bfa_fcs_lport_get_pwwn(&fabric->bport)); in bfa_fcs_fabric_set_fabric_name()
1538 bfa_fcs_lport_get_fabric_name(&fabric->bport)); in bfa_fcs_fabric_set_fabric_name()
1542 bfa_fcs_fabric_aen_post(&fabric->bport, in bfa_fcs_fabric_set_fabric_name()
1550 struct bfa_fcs_fabric_s *fabric = uarg; in bfa_cb_lps_flogo_comp() local
1551 bfa_sm_send_event(fabric, BFA_FCS_FABRIC_SM_LOGOCOMP); in bfa_cb_lps_flogo_comp()
1567 return &fcs->fabric; in bfa_fcs_vf_lookup()
1623 bfa_fcs_fabric_link_up(&fcs->fabric); in bfa_fcs_port_event_handler()
1627 bfa_fcs_fabric_link_down(&fcs->fabric); in bfa_fcs_port_event_handler()
1660 struct bfa_fcs_fabric_s *fabric; in bfa_fcs_uf_recv() local
1670 fabric = &fcs->fabric; in bfa_fcs_uf_recv()
1672 fabric = bfa_fcs_vf_lookup(fcs, (u16) vft->vf_id); in bfa_fcs_uf_recv()
1677 if (!fabric) { in bfa_fcs_uf_recv()
1693 fabric = &fcs->fabric; in bfa_fcs_uf_recv()
1704 bfa_fcs_fabric_uf_recv(fabric, fchs, len); in bfa_fcs_uf_recv()