aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/bfa/rport.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/scsi/bfa/rport.c')
-rw-r--r--drivers/scsi/bfa/rport.c92
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 */
2580void
2581bfa_fcs_rport_modinit(struct bfa_fcs_s *fcs)
2582{
2583}
2584
2585/**
2586 * Module cleanup
2587 */
2588void
2589bfa_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 */
2597int 2585int