diff options
Diffstat (limited to 'drivers/scsi/bfa/rport.c')
-rw-r--r-- | drivers/scsi/bfa/rport.c | 92 |
1 files changed, 40 insertions, 52 deletions
diff --git a/drivers/scsi/bfa/rport.c b/drivers/scsi/bfa/rport.c index 9cf58bb138dc..7b096f2e3836 100644 --- a/drivers/scsi/bfa/rport.c +++ b/drivers/scsi/bfa/rport.c | |||
@@ -19,6 +19,7 @@ | |||
19 | * rport.c Remote port implementation. | 19 | * rport.c Remote port implementation. |
20 | */ | 20 | */ |
21 | 21 | ||
22 | #include <linux/slab.h> | ||
22 | #include <bfa.h> | 23 | #include <bfa.h> |
23 | #include <bfa_svc.h> | 24 | #include <bfa_svc.h> |
24 | #include "fcbuild.h" | 25 | #include "fcbuild.h" |
@@ -224,7 +225,7 @@ bfa_fcs_rport_sm_uninit(struct bfa_fcs_rport_s *rport, enum rport_event event) | |||
224 | break; | 225 | break; |
225 | 226 | ||
226 | default: | 227 | default: |
227 | bfa_assert(0); | 228 | bfa_sm_fault(rport->fcs, event); |
228 | } | 229 | } |
229 | } | 230 | } |
230 | 231 | ||
@@ -276,7 +277,7 @@ bfa_fcs_rport_sm_plogi_sending(struct bfa_fcs_rport_s *rport, | |||
276 | break; | 277 | break; |
277 | 278 | ||
278 | default: | 279 | default: |
279 | bfa_assert(0); | 280 | bfa_sm_fault(rport->fcs, event); |
280 | } | 281 | } |
281 | } | 282 | } |
282 | 283 | ||
@@ -332,7 +333,7 @@ bfa_fcs_rport_sm_plogiacc_sending(struct bfa_fcs_rport_s *rport, | |||
332 | break; | 333 | break; |
333 | 334 | ||
334 | default: | 335 | default: |
335 | bfa_assert(0); | 336 | bfa_sm_fault(rport->fcs, event); |
336 | } | 337 | } |
337 | } | 338 | } |
338 | 339 | ||
@@ -406,7 +407,7 @@ bfa_fcs_rport_sm_plogi_retry(struct bfa_fcs_rport_s *rport, | |||
406 | break; | 407 | break; |
407 | 408 | ||
408 | default: | 409 | default: |
409 | bfa_assert(0); | 410 | bfa_sm_fault(rport->fcs, event); |
410 | } | 411 | } |
411 | } | 412 | } |
412 | 413 | ||
@@ -481,7 +482,7 @@ bfa_fcs_rport_sm_plogi(struct bfa_fcs_rport_s *rport, enum rport_event event) | |||
481 | break; | 482 | break; |
482 | 483 | ||
483 | default: | 484 | default: |
484 | bfa_assert(0); | 485 | bfa_sm_fault(rport->fcs, event); |
485 | } | 486 | } |
486 | } | 487 | } |
487 | 488 | ||
@@ -534,7 +535,7 @@ bfa_fcs_rport_sm_hal_online(struct bfa_fcs_rport_s *rport, | |||
534 | break; | 535 | break; |
535 | 536 | ||
536 | default: | 537 | default: |
537 | bfa_assert(0); | 538 | bfa_sm_fault(rport->fcs, event); |
538 | } | 539 | } |
539 | } | 540 | } |
540 | 541 | ||
@@ -589,7 +590,7 @@ bfa_fcs_rport_sm_online(struct bfa_fcs_rport_s *rport, enum rport_event event) | |||
589 | break; | 590 | break; |
590 | 591 | ||
591 | default: | 592 | default: |
592 | bfa_assert(0); | 593 | bfa_sm_fault(rport->fcs, event); |
593 | } | 594 | } |
594 | } | 595 | } |
595 | 596 | ||
@@ -646,7 +647,7 @@ bfa_fcs_rport_sm_nsquery_sending(struct bfa_fcs_rport_s *rport, | |||
646 | break; | 647 | break; |
647 | 648 | ||
648 | default: | 649 | default: |
649 | bfa_assert(0); | 650 | bfa_sm_fault(rport->fcs, event); |
650 | } | 651 | } |
651 | } | 652 | } |
652 | 653 | ||
@@ -704,7 +705,7 @@ bfa_fcs_rport_sm_nsquery(struct bfa_fcs_rport_s *rport, enum rport_event event) | |||
704 | break; | 705 | break; |
705 | 706 | ||
706 | default: | 707 | default: |
707 | bfa_assert(0); | 708 | bfa_sm_fault(rport->fcs, event); |
708 | } | 709 | } |
709 | } | 710 | } |
710 | 711 | ||
@@ -754,7 +755,7 @@ bfa_fcs_rport_sm_adisc_sending(struct bfa_fcs_rport_s *rport, | |||
754 | break; | 755 | break; |
755 | 756 | ||
756 | default: | 757 | default: |
757 | bfa_assert(0); | 758 | bfa_sm_fault(rport->fcs, event); |
758 | } | 759 | } |
759 | } | 760 | } |
760 | 761 | ||
@@ -816,7 +817,7 @@ bfa_fcs_rport_sm_adisc(struct bfa_fcs_rport_s *rport, enum rport_event event) | |||
816 | break; | 817 | break; |
817 | 818 | ||
818 | default: | 819 | default: |
819 | bfa_assert(0); | 820 | bfa_sm_fault(rport->fcs, event); |
820 | } | 821 | } |
821 | } | 822 | } |
822 | 823 | ||
@@ -846,7 +847,7 @@ bfa_fcs_rport_sm_fc4_logorcv(struct bfa_fcs_rport_s *rport, | |||
846 | break; | 847 | break; |
847 | 848 | ||
848 | default: | 849 | default: |
849 | bfa_assert(0); | 850 | bfa_sm_fault(rport->fcs, event); |
850 | } | 851 | } |
851 | } | 852 | } |
852 | 853 | ||
@@ -869,7 +870,7 @@ bfa_fcs_rport_sm_fc4_logosend(struct bfa_fcs_rport_s *rport, | |||
869 | break; | 870 | break; |
870 | 871 | ||
871 | default: | 872 | default: |
872 | bfa_assert(0); | 873 | bfa_sm_fault(rport->fcs, event); |
873 | } | 874 | } |
874 | } | 875 | } |
875 | 876 | ||
@@ -905,7 +906,7 @@ bfa_fcs_rport_sm_fc4_offline(struct bfa_fcs_rport_s *rport, | |||
905 | break; | 906 | break; |
906 | 907 | ||
907 | default: | 908 | default: |
908 | bfa_assert(0); | 909 | bfa_sm_fault(rport->fcs, event); |
909 | } | 910 | } |
910 | } | 911 | } |
911 | 912 | ||
@@ -925,10 +926,17 @@ bfa_fcs_rport_sm_hcb_offline(struct bfa_fcs_rport_s *rport, | |||
925 | case RPSM_EVENT_HCB_OFFLINE: | 926 | case RPSM_EVENT_HCB_OFFLINE: |
926 | case RPSM_EVENT_ADDRESS_CHANGE: | 927 | case RPSM_EVENT_ADDRESS_CHANGE: |
927 | if (bfa_fcs_port_is_online(rport->port)) { | 928 | if (bfa_fcs_port_is_online(rport->port)) { |
928 | bfa_sm_set_state(rport, | 929 | if (bfa_fcs_fabric_is_switched(rport->port->fabric)) { |
929 | bfa_fcs_rport_sm_nsdisc_sending); | 930 | bfa_sm_set_state(rport, |
930 | rport->ns_retries = 0; | 931 | bfa_fcs_rport_sm_nsdisc_sending); |
931 | bfa_fcs_rport_send_gidpn(rport, NULL); | 932 | rport->ns_retries = 0; |
933 | bfa_fcs_rport_send_gidpn(rport, NULL); | ||
934 | } else { | ||
935 | bfa_sm_set_state(rport, | ||
936 | bfa_fcs_rport_sm_plogi_sending); | ||
937 | rport->plogi_retries = 0; | ||
938 | bfa_fcs_rport_send_plogi(rport, NULL); | ||
939 | } | ||
932 | } else { | 940 | } else { |
933 | rport->pid = 0; | 941 | rport->pid = 0; |
934 | bfa_sm_set_state(rport, bfa_fcs_rport_sm_offline); | 942 | bfa_sm_set_state(rport, bfa_fcs_rport_sm_offline); |
@@ -951,7 +959,7 @@ bfa_fcs_rport_sm_hcb_offline(struct bfa_fcs_rport_s *rport, | |||
951 | break; | 959 | break; |
952 | 960 | ||
953 | default: | 961 | default: |
954 | bfa_assert(0); | 962 | bfa_sm_fault(rport->fcs, event); |
955 | } | 963 | } |
956 | } | 964 | } |
957 | 965 | ||
@@ -1011,7 +1019,7 @@ bfa_fcs_rport_sm_hcb_logorcv(struct bfa_fcs_rport_s *rport, | |||
1011 | break; | 1019 | break; |
1012 | 1020 | ||
1013 | default: | 1021 | default: |
1014 | bfa_assert(0); | 1022 | bfa_sm_fault(rport->fcs, event); |
1015 | } | 1023 | } |
1016 | } | 1024 | } |
1017 | 1025 | ||
@@ -1038,7 +1046,7 @@ bfa_fcs_rport_sm_hcb_logosend(struct bfa_fcs_rport_s *rport, | |||
1038 | break; | 1046 | break; |
1039 | 1047 | ||
1040 | default: | 1048 | default: |
1041 | bfa_assert(0); | 1049 | bfa_sm_fault(rport->fcs, event); |
1042 | } | 1050 | } |
1043 | } | 1051 | } |
1044 | 1052 | ||
@@ -1073,7 +1081,7 @@ bfa_fcs_rport_sm_logo_sending(struct bfa_fcs_rport_s *rport, | |||
1073 | break; | 1081 | break; |
1074 | 1082 | ||
1075 | default: | 1083 | default: |
1076 | bfa_assert(0); | 1084 | bfa_sm_fault(rport->fcs, event); |
1077 | } | 1085 | } |
1078 | } | 1086 | } |
1079 | 1087 | ||
@@ -1132,7 +1140,7 @@ bfa_fcs_rport_sm_offline(struct bfa_fcs_rport_s *rport, enum rport_event event) | |||
1132 | break; | 1140 | break; |
1133 | 1141 | ||
1134 | default: | 1142 | default: |
1135 | bfa_assert(0); | 1143 | bfa_sm_fault(rport->fcs, event); |
1136 | } | 1144 | } |
1137 | } | 1145 | } |
1138 | 1146 | ||
@@ -1188,7 +1196,7 @@ bfa_fcs_rport_sm_nsdisc_sending(struct bfa_fcs_rport_s *rport, | |||
1188 | break; | 1196 | break; |
1189 | 1197 | ||
1190 | default: | 1198 | default: |
1191 | bfa_assert(0); | 1199 | bfa_sm_fault(rport->fcs, event); |
1192 | } | 1200 | } |
1193 | } | 1201 | } |
1194 | 1202 | ||
@@ -1249,7 +1257,7 @@ bfa_fcs_rport_sm_nsdisc_retry(struct bfa_fcs_rport_s *rport, | |||
1249 | break; | 1257 | break; |
1250 | 1258 | ||
1251 | default: | 1259 | default: |
1252 | bfa_assert(0); | 1260 | bfa_sm_fault(rport->fcs, event); |
1253 | } | 1261 | } |
1254 | } | 1262 | } |
1255 | 1263 | ||
@@ -1334,7 +1342,7 @@ bfa_fcs_rport_sm_nsdisc_sent(struct bfa_fcs_rport_s *rport, | |||
1334 | break; | 1342 | break; |
1335 | 1343 | ||
1336 | default: | 1344 | default: |
1337 | bfa_assert(0); | 1345 | bfa_sm_fault(rport->fcs, event); |
1338 | } | 1346 | } |
1339 | } | 1347 | } |
1340 | 1348 | ||
@@ -1366,7 +1374,7 @@ bfa_fcs_rport_send_plogi(void *rport_cbarg, struct bfa_fcxp_s *fcxp_alloced) | |||
1366 | len = fc_plogi_build(&fchs, bfa_fcxp_get_reqbuf(fcxp), rport->pid, | 1374 | len = fc_plogi_build(&fchs, bfa_fcxp_get_reqbuf(fcxp), rport->pid, |
1367 | bfa_fcs_port_get_fcid(port), 0, | 1375 | bfa_fcs_port_get_fcid(port), 0, |
1368 | port->port_cfg.pwwn, port->port_cfg.nwwn, | 1376 | port->port_cfg.pwwn, port->port_cfg.nwwn, |
1369 | bfa_pport_get_maxfrsize(port->fcs->bfa)); | 1377 | bfa_fcport_get_maxfrsize(port->fcs->bfa)); |
1370 | 1378 | ||
1371 | bfa_fcxp_send(fcxp, NULL, port->fabric->vf_id, port->lp_tag, BFA_FALSE, | 1379 | bfa_fcxp_send(fcxp, NULL, port->fabric->vf_id, port->lp_tag, BFA_FALSE, |
1372 | FC_CLASS_3, len, &fchs, bfa_fcs_rport_plogi_response, | 1380 | FC_CLASS_3, len, &fchs, bfa_fcs_rport_plogi_response, |
@@ -1478,7 +1486,7 @@ bfa_fcs_rport_send_plogiacc(void *rport_cbarg, struct bfa_fcxp_s *fcxp_alloced) | |||
1478 | len = fc_plogi_acc_build(&fchs, bfa_fcxp_get_reqbuf(fcxp), rport->pid, | 1486 | len = fc_plogi_acc_build(&fchs, bfa_fcxp_get_reqbuf(fcxp), rport->pid, |
1479 | bfa_fcs_port_get_fcid(port), rport->reply_oxid, | 1487 | bfa_fcs_port_get_fcid(port), rport->reply_oxid, |
1480 | port->port_cfg.pwwn, port->port_cfg.nwwn, | 1488 | port->port_cfg.pwwn, port->port_cfg.nwwn, |
1481 | bfa_pport_get_maxfrsize(port->fcs->bfa)); | 1489 | bfa_fcport_get_maxfrsize(port->fcs->bfa)); |
1482 | 1490 | ||
1483 | bfa_fcxp_send(fcxp, NULL, port->fabric->vf_id, port->lp_tag, BFA_FALSE, | 1491 | bfa_fcxp_send(fcxp, NULL, port->fabric->vf_id, port->lp_tag, BFA_FALSE, |
1484 | FC_CLASS_3, len, &fchs, NULL, NULL, FC_MAX_PDUSZ, 0); | 1492 | FC_CLASS_3, len, &fchs, NULL, NULL, FC_MAX_PDUSZ, 0); |
@@ -1813,7 +1821,7 @@ bfa_fcs_rport_process_rpsc(struct bfa_fcs_rport_s *rport, | |||
1813 | /* | 1821 | /* |
1814 | * get curent speed from pport attributes from BFA | 1822 | * get curent speed from pport attributes from BFA |
1815 | */ | 1823 | */ |
1816 | bfa_pport_get_attr(port->fcs->bfa, &pport_attr); | 1824 | bfa_fcport_get_attr(port->fcs->bfa, &pport_attr); |
1817 | 1825 | ||
1818 | speeds.port_op_speed = fc_bfa_speed_to_rpsc_operspeed(pport_attr.speed); | 1826 | speeds.port_op_speed = fc_bfa_speed_to_rpsc_operspeed(pport_attr.speed); |
1819 | 1827 | ||
@@ -2032,13 +2040,10 @@ bfa_fcs_rport_aen_post(struct bfa_fcs_rport_s *rport, | |||
2032 | 2040 | ||
2033 | switch (event) { | 2041 | switch (event) { |
2034 | case BFA_RPORT_AEN_ONLINE: | 2042 | case BFA_RPORT_AEN_ONLINE: |
2035 | bfa_log(logmod, BFA_AEN_RPORT_ONLINE, rpwwn_ptr, lpwwn_ptr); | ||
2036 | break; | ||
2037 | case BFA_RPORT_AEN_OFFLINE: | 2043 | case BFA_RPORT_AEN_OFFLINE: |
2038 | bfa_log(logmod, BFA_AEN_RPORT_OFFLINE, rpwwn_ptr, lpwwn_ptr); | ||
2039 | break; | ||
2040 | case BFA_RPORT_AEN_DISCONNECT: | 2044 | case BFA_RPORT_AEN_DISCONNECT: |
2041 | bfa_log(logmod, BFA_AEN_RPORT_DISCONNECT, rpwwn_ptr, lpwwn_ptr); | 2045 | bfa_log(logmod, BFA_LOG_CREATE_ID(BFA_AEN_CAT_RPORT, event), |
2046 | rpwwn_ptr, lpwwn_ptr); | ||
2042 | break; | 2047 | break; |
2043 | case BFA_RPORT_AEN_QOS_PRIO: | 2048 | case BFA_RPORT_AEN_QOS_PRIO: |
2044 | aen_data.rport.priv.qos = data->priv.qos; | 2049 | aen_data.rport.priv.qos = data->priv.qos; |
@@ -2164,7 +2169,7 @@ bfa_fcs_rport_update(struct bfa_fcs_rport_s *rport, struct fc_logi_s *plogi) | |||
2164 | bfa_trc(port->fcs, port->fabric->bb_credit); | 2169 | bfa_trc(port->fcs, port->fabric->bb_credit); |
2165 | 2170 | ||
2166 | port->fabric->bb_credit = bfa_os_ntohs(plogi->csp.bbcred); | 2171 | port->fabric->bb_credit = bfa_os_ntohs(plogi->csp.bbcred); |
2167 | bfa_pport_set_tx_bbcredit(port->fcs->bfa, | 2172 | bfa_fcport_set_tx_bbcredit(port->fcs->bfa, |
2168 | port->fabric->bb_credit); | 2173 | port->fabric->bb_credit); |
2169 | } | 2174 | } |
2170 | 2175 | ||
@@ -2575,23 +2580,6 @@ bfa_fcs_rport_send_ls_rjt(struct bfa_fcs_rport_s *rport, struct fchs_s *rx_fchs, | |||
2575 | } | 2580 | } |
2576 | 2581 | ||
2577 | /** | 2582 | /** |
2578 | * Module initialization | ||
2579 | */ | ||
2580 | void | ||
2581 | bfa_fcs_rport_modinit(struct bfa_fcs_s *fcs) | ||
2582 | { | ||
2583 | } | ||
2584 | |||
2585 | /** | ||
2586 | * Module cleanup | ||
2587 | */ | ||
2588 | void | ||
2589 | bfa_fcs_rport_modexit(struct bfa_fcs_s *fcs) | ||
2590 | { | ||
2591 | bfa_fcs_modexit_comp(fcs); | ||
2592 | } | ||
2593 | |||
2594 | /** | ||
2595 | * Return state of rport. | 2583 | * Return state of rport. |
2596 | */ | 2584 | */ |
2597 | int | 2585 | int |