diff options
Diffstat (limited to 'drivers/scsi/bfa/vport.c')
-rw-r--r-- | drivers/scsi/bfa/vport.c | 86 |
1 files changed, 26 insertions, 60 deletions
diff --git a/drivers/scsi/bfa/vport.c b/drivers/scsi/bfa/vport.c index e90f1e38c32d..27cd619a227a 100644 --- a/drivers/scsi/bfa/vport.c +++ b/drivers/scsi/bfa/vport.c | |||
@@ -122,7 +122,7 @@ bfa_fcs_vport_sm_uninit(struct bfa_fcs_vport_s *vport, | |||
122 | break; | 122 | break; |
123 | 123 | ||
124 | default: | 124 | default: |
125 | bfa_assert(0); | 125 | bfa_sm_fault(__vport_fcs(vport), event); |
126 | } | 126 | } |
127 | } | 127 | } |
128 | 128 | ||
@@ -165,7 +165,7 @@ bfa_fcs_vport_sm_created(struct bfa_fcs_vport_s *vport, | |||
165 | break; | 165 | break; |
166 | 166 | ||
167 | default: | 167 | default: |
168 | bfa_assert(0); | 168 | bfa_sm_fault(__vport_fcs(vport), event); |
169 | } | 169 | } |
170 | } | 170 | } |
171 | 171 | ||
@@ -202,7 +202,7 @@ bfa_fcs_vport_sm_offline(struct bfa_fcs_vport_s *vport, | |||
202 | break; | 202 | break; |
203 | 203 | ||
204 | default: | 204 | default: |
205 | bfa_assert(0); | 205 | bfa_sm_fault(__vport_fcs(vport), event); |
206 | } | 206 | } |
207 | } | 207 | } |
208 | 208 | ||
@@ -249,7 +249,7 @@ bfa_fcs_vport_sm_fdisc(struct bfa_fcs_vport_s *vport, | |||
249 | break; | 249 | break; |
250 | 250 | ||
251 | default: | 251 | default: |
252 | bfa_assert(0); | 252 | bfa_sm_fault(__vport_fcs(vport), event); |
253 | } | 253 | } |
254 | } | 254 | } |
255 | 255 | ||
@@ -283,7 +283,7 @@ bfa_fcs_vport_sm_fdisc_retry(struct bfa_fcs_vport_s *vport, | |||
283 | break; | 283 | break; |
284 | 284 | ||
285 | default: | 285 | default: |
286 | bfa_assert(0); | 286 | bfa_sm_fault(__vport_fcs(vport), event); |
287 | } | 287 | } |
288 | } | 288 | } |
289 | 289 | ||
@@ -310,7 +310,7 @@ bfa_fcs_vport_sm_online(struct bfa_fcs_vport_s *vport, | |||
310 | break; | 310 | break; |
311 | 311 | ||
312 | default: | 312 | default: |
313 | bfa_assert(0); | 313 | bfa_sm_fault(__vport_fcs(vport), event); |
314 | } | 314 | } |
315 | } | 315 | } |
316 | 316 | ||
@@ -339,7 +339,7 @@ bfa_fcs_vport_sm_deleting(struct bfa_fcs_vport_s *vport, | |||
339 | break; | 339 | break; |
340 | 340 | ||
341 | default: | 341 | default: |
342 | bfa_assert(0); | 342 | bfa_sm_fault(__vport_fcs(vport), event); |
343 | } | 343 | } |
344 | } | 344 | } |
345 | 345 | ||
@@ -387,7 +387,7 @@ bfa_fcs_vport_sm_cleanup(struct bfa_fcs_vport_s *vport, | |||
387 | break; | 387 | break; |
388 | 388 | ||
389 | default: | 389 | default: |
390 | bfa_assert(0); | 390 | bfa_sm_fault(__vport_fcs(vport), event); |
391 | } | 391 | } |
392 | } | 392 | } |
393 | 393 | ||
@@ -419,7 +419,7 @@ bfa_fcs_vport_sm_logo(struct bfa_fcs_vport_s *vport, | |||
419 | break; | 419 | break; |
420 | 420 | ||
421 | default: | 421 | default: |
422 | bfa_assert(0); | 422 | bfa_sm_fault(__vport_fcs(vport), event); |
423 | } | 423 | } |
424 | } | 424 | } |
425 | 425 | ||
@@ -447,22 +447,8 @@ bfa_fcs_vport_aen_post(bfa_fcs_lport_t *port, enum bfa_lport_aen_event event) | |||
447 | 447 | ||
448 | bfa_assert(role <= BFA_PORT_ROLE_FCP_MAX); | 448 | bfa_assert(role <= BFA_PORT_ROLE_FCP_MAX); |
449 | 449 | ||
450 | switch (event) { | 450 | bfa_log(logmod, BFA_LOG_CREATE_ID(BFA_AEN_CAT_LPORT, event), lpwwn_ptr, |
451 | case BFA_LPORT_AEN_NPIV_DUP_WWN: | 451 | role_str[role/2]); |
452 | bfa_log(logmod, BFA_AEN_LPORT_NPIV_DUP_WWN, lpwwn_ptr, | ||
453 | role_str[role / 2]); | ||
454 | break; | ||
455 | case BFA_LPORT_AEN_NPIV_FABRIC_MAX: | ||
456 | bfa_log(logmod, BFA_AEN_LPORT_NPIV_FABRIC_MAX, lpwwn_ptr, | ||
457 | role_str[role / 2]); | ||
458 | break; | ||
459 | case BFA_LPORT_AEN_NPIV_UNKNOWN: | ||
460 | bfa_log(logmod, BFA_AEN_LPORT_NPIV_UNKNOWN, lpwwn_ptr, | ||
461 | role_str[role / 2]); | ||
462 | break; | ||
463 | default: | ||
464 | break; | ||
465 | } | ||
466 | 452 | ||
467 | aen_data.lport.vf_id = port->fabric->vf_id; | 453 | aen_data.lport.vf_id = port->fabric->vf_id; |
468 | aen_data.lport.roles = role; | 454 | aen_data.lport.roles = role; |
@@ -478,7 +464,7 @@ static void | |||
478 | bfa_fcs_vport_do_fdisc(struct bfa_fcs_vport_s *vport) | 464 | bfa_fcs_vport_do_fdisc(struct bfa_fcs_vport_s *vport) |
479 | { | 465 | { |
480 | bfa_lps_fdisc(vport->lps, vport, | 466 | bfa_lps_fdisc(vport->lps, vport, |
481 | bfa_pport_get_maxfrsize(__vport_bfa(vport)), | 467 | bfa_fcport_get_maxfrsize(__vport_bfa(vport)), |
482 | __vport_pwwn(vport), __vport_nwwn(vport)); | 468 | __vport_pwwn(vport), __vport_nwwn(vport)); |
483 | vport->vport_stats.fdisc_sent++; | 469 | vport->vport_stats.fdisc_sent++; |
484 | } | 470 | } |
@@ -617,38 +603,6 @@ bfa_fcs_vport_delete_comp(struct bfa_fcs_vport_s *vport) | |||
617 | } | 603 | } |
618 | 604 | ||
619 | /** | 605 | /** |
620 | * Module initialization | ||
621 | */ | ||
622 | void | ||
623 | bfa_fcs_vport_modinit(struct bfa_fcs_s *fcs) | ||
624 | { | ||
625 | } | ||
626 | |||
627 | /** | ||
628 | * Module cleanup | ||
629 | */ | ||
630 | void | ||
631 | bfa_fcs_vport_modexit(struct bfa_fcs_s *fcs) | ||
632 | { | ||
633 | bfa_fcs_modexit_comp(fcs); | ||
634 | } | ||
635 | |||
636 | u32 | ||
637 | bfa_fcs_vport_get_max(struct bfa_fcs_s *fcs) | ||
638 | { | ||
639 | struct bfa_ioc_attr_s ioc_attr; | ||
640 | |||
641 | bfa_get_attr(fcs->bfa, &ioc_attr); | ||
642 | |||
643 | if (ioc_attr.pci_attr.device_id == BFA_PCI_DEVICE_ID_CT) | ||
644 | return BFA_FCS_MAX_VPORTS_SUPP_CT; | ||
645 | else | ||
646 | return BFA_FCS_MAX_VPORTS_SUPP_CB; | ||
647 | } | ||
648 | |||
649 | |||
650 | |||
651 | /** | ||
652 | * fcs_vport_api Virtual port API | 606 | * fcs_vport_api Virtual port API |
653 | */ | 607 | */ |
654 | 608 | ||
@@ -684,7 +638,7 @@ bfa_fcs_vport_create(struct bfa_fcs_vport_s *vport, struct bfa_fcs_s *fcs, | |||
684 | return BFA_STATUS_VPORT_EXISTS; | 638 | return BFA_STATUS_VPORT_EXISTS; |
685 | 639 | ||
686 | if (bfa_fcs_fabric_vport_count(&fcs->fabric) == | 640 | if (bfa_fcs_fabric_vport_count(&fcs->fabric) == |
687 | bfa_fcs_vport_get_max(fcs)) | 641 | bfa_lps_get_max_vport(fcs->bfa)) |
688 | return BFA_STATUS_VPORT_MAX; | 642 | return BFA_STATUS_VPORT_MAX; |
689 | 643 | ||
690 | vport->lps = bfa_lps_alloc(fcs->bfa); | 644 | vport->lps = bfa_lps_alloc(fcs->bfa); |
@@ -694,7 +648,8 @@ bfa_fcs_vport_create(struct bfa_fcs_vport_s *vport, struct bfa_fcs_s *fcs, | |||
694 | vport->vport_drv = vport_drv; | 648 | vport->vport_drv = vport_drv; |
695 | bfa_sm_set_state(vport, bfa_fcs_vport_sm_uninit); | 649 | bfa_sm_set_state(vport, bfa_fcs_vport_sm_uninit); |
696 | 650 | ||
697 | bfa_fcs_lport_init(&vport->lport, fcs, vf_id, vport_cfg, vport); | 651 | bfa_fcs_lport_attach(&vport->lport, fcs, vf_id, vport); |
652 | bfa_fcs_lport_init(&vport->lport, vport_cfg); | ||
698 | 653 | ||
699 | bfa_sm_send_event(vport, BFA_FCS_VPORT_SM_CREATE); | 654 | bfa_sm_send_event(vport, BFA_FCS_VPORT_SM_CREATE); |
700 | 655 | ||
@@ -888,4 +843,15 @@ bfa_cb_lps_fdisclogo_comp(void *bfad, void *uarg) | |||
888 | bfa_sm_send_event(vport, BFA_FCS_VPORT_SM_RSP_OK); | 843 | bfa_sm_send_event(vport, BFA_FCS_VPORT_SM_RSP_OK); |
889 | } | 844 | } |
890 | 845 | ||
846 | /** | ||
847 | * Received clear virtual link | ||
848 | */ | ||
849 | void | ||
850 | bfa_cb_lps_cvl_event(void *bfad, void *uarg) | ||
851 | { | ||
852 | struct bfa_fcs_vport_s *vport = uarg; | ||
891 | 853 | ||
854 | /* Send an Offline followed by an ONLINE */ | ||
855 | bfa_sm_send_event(vport, BFA_FCS_VPORT_SM_OFFLINE); | ||
856 | bfa_sm_send_event(vport, BFA_FCS_VPORT_SM_ONLINE); | ||
857 | } | ||