diff options
Diffstat (limited to 'drivers/scsi/bfa/fdmi.c')
-rw-r--r-- | drivers/scsi/bfa/fdmi.c | 87 |
1 files changed, 47 insertions, 40 deletions
diff --git a/drivers/scsi/bfa/fdmi.c b/drivers/scsi/bfa/fdmi.c index b845eb272c78..8f17076d1a87 100644 --- a/drivers/scsi/bfa/fdmi.c +++ b/drivers/scsi/bfa/fdmi.c | |||
@@ -72,9 +72,9 @@ static u16 bfa_fcs_port_fdmi_build_rpa_pyld( | |||
72 | struct bfa_fcs_port_fdmi_s *fdmi, u8 *pyld); | 72 | struct bfa_fcs_port_fdmi_s *fdmi, u8 *pyld); |
73 | static u16 bfa_fcs_port_fdmi_build_portattr_block( | 73 | static u16 bfa_fcs_port_fdmi_build_portattr_block( |
74 | struct bfa_fcs_port_fdmi_s *fdmi, u8 *pyld); | 74 | struct bfa_fcs_port_fdmi_s *fdmi, u8 *pyld); |
75 | void bfa_fcs_fdmi_get_hbaattr(struct bfa_fcs_port_fdmi_s *fdmi, | 75 | static void bfa_fcs_fdmi_get_hbaattr(struct bfa_fcs_port_fdmi_s *fdmi, |
76 | struct bfa_fcs_fdmi_hba_attr_s *hba_attr); | 76 | struct bfa_fcs_fdmi_hba_attr_s *hba_attr); |
77 | void bfa_fcs_fdmi_get_portattr(struct bfa_fcs_port_fdmi_s *fdmi, | 77 | static void bfa_fcs_fdmi_get_portattr(struct bfa_fcs_port_fdmi_s *fdmi, |
78 | struct bfa_fcs_fdmi_port_attr_s *port_attr); | 78 | struct bfa_fcs_fdmi_port_attr_s *port_attr); |
79 | /** | 79 | /** |
80 | * fcs_fdmi_sm FCS FDMI state machine | 80 | * fcs_fdmi_sm FCS FDMI state machine |
@@ -116,6 +116,9 @@ static void bfa_fcs_port_fdmi_sm_rpa_retry(struct bfa_fcs_port_fdmi_s *fdmi, | |||
116 | enum port_fdmi_event event); | 116 | enum port_fdmi_event event); |
117 | static void bfa_fcs_port_fdmi_sm_online(struct bfa_fcs_port_fdmi_s *fdmi, | 117 | static void bfa_fcs_port_fdmi_sm_online(struct bfa_fcs_port_fdmi_s *fdmi, |
118 | enum port_fdmi_event event); | 118 | enum port_fdmi_event event); |
119 | static void bfa_fcs_port_fdmi_sm_disabled(struct bfa_fcs_port_fdmi_s *fdmi, | ||
120 | enum port_fdmi_event event); | ||
121 | |||
119 | /** | 122 | /** |
120 | * Start in offline state - awaiting MS to send start. | 123 | * Start in offline state - awaiting MS to send start. |
121 | */ | 124 | */ |
@@ -155,7 +158,7 @@ bfa_fcs_port_fdmi_sm_offline(struct bfa_fcs_port_fdmi_s *fdmi, | |||
155 | break; | 158 | break; |
156 | 159 | ||
157 | default: | 160 | default: |
158 | bfa_assert(0); | 161 | bfa_sm_fault(port->fcs, event); |
159 | } | 162 | } |
160 | } | 163 | } |
161 | 164 | ||
@@ -180,7 +183,7 @@ bfa_fcs_port_fdmi_sm_sending_rhba(struct bfa_fcs_port_fdmi_s *fdmi, | |||
180 | break; | 183 | break; |
181 | 184 | ||
182 | default: | 185 | default: |
183 | bfa_assert(0); | 186 | bfa_sm_fault(port->fcs, event); |
184 | } | 187 | } |
185 | } | 188 | } |
186 | 189 | ||
@@ -227,7 +230,7 @@ bfa_fcs_port_fdmi_sm_rhba(struct bfa_fcs_port_fdmi_s *fdmi, | |||
227 | break; | 230 | break; |
228 | 231 | ||
229 | default: | 232 | default: |
230 | bfa_assert(0); | 233 | bfa_sm_fault(port->fcs, event); |
231 | } | 234 | } |
232 | } | 235 | } |
233 | 236 | ||
@@ -255,7 +258,7 @@ bfa_fcs_port_fdmi_sm_rhba_retry(struct bfa_fcs_port_fdmi_s *fdmi, | |||
255 | break; | 258 | break; |
256 | 259 | ||
257 | default: | 260 | default: |
258 | bfa_assert(0); | 261 | bfa_sm_fault(port->fcs, event); |
259 | } | 262 | } |
260 | } | 263 | } |
261 | 264 | ||
@@ -283,7 +286,7 @@ bfa_fcs_port_fdmi_sm_sending_rprt(struct bfa_fcs_port_fdmi_s *fdmi, | |||
283 | break; | 286 | break; |
284 | 287 | ||
285 | default: | 288 | default: |
286 | bfa_assert(0); | 289 | bfa_sm_fault(port->fcs, event); |
287 | } | 290 | } |
288 | } | 291 | } |
289 | 292 | ||
@@ -328,7 +331,7 @@ bfa_fcs_port_fdmi_sm_rprt(struct bfa_fcs_port_fdmi_s *fdmi, | |||
328 | break; | 331 | break; |
329 | 332 | ||
330 | default: | 333 | default: |
331 | bfa_assert(0); | 334 | bfa_sm_fault(port->fcs, event); |
332 | } | 335 | } |
333 | } | 336 | } |
334 | 337 | ||
@@ -356,7 +359,7 @@ bfa_fcs_port_fdmi_sm_rprt_retry(struct bfa_fcs_port_fdmi_s *fdmi, | |||
356 | break; | 359 | break; |
357 | 360 | ||
358 | default: | 361 | default: |
359 | bfa_assert(0); | 362 | bfa_sm_fault(port->fcs, event); |
360 | } | 363 | } |
361 | } | 364 | } |
362 | 365 | ||
@@ -384,7 +387,7 @@ bfa_fcs_port_fdmi_sm_sending_rpa(struct bfa_fcs_port_fdmi_s *fdmi, | |||
384 | break; | 387 | break; |
385 | 388 | ||
386 | default: | 389 | default: |
387 | bfa_assert(0); | 390 | bfa_sm_fault(port->fcs, event); |
388 | } | 391 | } |
389 | } | 392 | } |
390 | 393 | ||
@@ -428,7 +431,7 @@ bfa_fcs_port_fdmi_sm_rpa(struct bfa_fcs_port_fdmi_s *fdmi, | |||
428 | break; | 431 | break; |
429 | 432 | ||
430 | default: | 433 | default: |
431 | bfa_assert(0); | 434 | bfa_sm_fault(port->fcs, event); |
432 | } | 435 | } |
433 | } | 436 | } |
434 | 437 | ||
@@ -456,7 +459,7 @@ bfa_fcs_port_fdmi_sm_rpa_retry(struct bfa_fcs_port_fdmi_s *fdmi, | |||
456 | break; | 459 | break; |
457 | 460 | ||
458 | default: | 461 | default: |
459 | bfa_assert(0); | 462 | bfa_sm_fault(port->fcs, event); |
460 | } | 463 | } |
461 | } | 464 | } |
462 | 465 | ||
@@ -475,10 +478,24 @@ bfa_fcs_port_fdmi_sm_online(struct bfa_fcs_port_fdmi_s *fdmi, | |||
475 | break; | 478 | break; |
476 | 479 | ||
477 | default: | 480 | default: |
478 | bfa_assert(0); | 481 | bfa_sm_fault(port->fcs, event); |
479 | } | 482 | } |
480 | } | 483 | } |
481 | 484 | ||
485 | /** | ||
486 | * FDMI is disabled state. | ||
487 | */ | ||
488 | static void | ||
489 | bfa_fcs_port_fdmi_sm_disabled(struct bfa_fcs_port_fdmi_s *fdmi, | ||
490 | enum port_fdmi_event event) | ||
491 | { | ||
492 | struct bfa_fcs_port_s *port = fdmi->ms->port; | ||
493 | |||
494 | bfa_trc(port->fcs, port->port_cfg.pwwn); | ||
495 | bfa_trc(port->fcs, event); | ||
496 | |||
497 | /* No op State. It can only be enabled at Driver Init. */ | ||
498 | } | ||
482 | 499 | ||
483 | /** | 500 | /** |
484 | * RHBA : Register HBA Attributes. | 501 | * RHBA : Register HBA Attributes. |
@@ -1091,42 +1108,29 @@ bfa_fcs_port_fdmi_timeout(void *arg) | |||
1091 | bfa_sm_send_event(fdmi, FDMISM_EVENT_TIMEOUT); | 1108 | bfa_sm_send_event(fdmi, FDMISM_EVENT_TIMEOUT); |
1092 | } | 1109 | } |
1093 | 1110 | ||
1094 | void | 1111 | static void |
1095 | bfa_fcs_fdmi_get_hbaattr(struct bfa_fcs_port_fdmi_s *fdmi, | 1112 | bfa_fcs_fdmi_get_hbaattr(struct bfa_fcs_port_fdmi_s *fdmi, |
1096 | struct bfa_fcs_fdmi_hba_attr_s *hba_attr) | 1113 | struct bfa_fcs_fdmi_hba_attr_s *hba_attr) |
1097 | { | 1114 | { |
1098 | struct bfa_fcs_port_s *port = fdmi->ms->port; | 1115 | struct bfa_fcs_port_s *port = fdmi->ms->port; |
1099 | struct bfa_fcs_driver_info_s *driver_info = &port->fcs->driver_info; | 1116 | struct bfa_fcs_driver_info_s *driver_info = &port->fcs->driver_info; |
1100 | struct bfa_adapter_attr_s adapter_attr; | ||
1101 | 1117 | ||
1102 | bfa_os_memset(hba_attr, 0, sizeof(struct bfa_fcs_fdmi_hba_attr_s)); | 1118 | bfa_os_memset(hba_attr, 0, sizeof(struct bfa_fcs_fdmi_hba_attr_s)); |
1103 | bfa_os_memset(&adapter_attr, 0, sizeof(struct bfa_adapter_attr_s)); | ||
1104 | |||
1105 | bfa_ioc_get_adapter_attr(&port->fcs->bfa->ioc, &adapter_attr); | ||
1106 | |||
1107 | strncpy(hba_attr->manufacturer, adapter_attr.manufacturer, | ||
1108 | sizeof(adapter_attr.manufacturer)); | ||
1109 | |||
1110 | strncpy(hba_attr->serial_num, adapter_attr.serial_num, | ||
1111 | sizeof(adapter_attr.serial_num)); | ||
1112 | |||
1113 | strncpy(hba_attr->model, adapter_attr.model, sizeof(hba_attr->model)); | ||
1114 | 1119 | ||
1115 | strncpy(hba_attr->model_desc, adapter_attr.model_descr, | 1120 | bfa_ioc_get_adapter_manufacturer(&port->fcs->bfa->ioc, |
1116 | sizeof(hba_attr->model_desc)); | 1121 | hba_attr->manufacturer); |
1117 | 1122 | bfa_ioc_get_adapter_serial_num(&port->fcs->bfa->ioc, | |
1118 | strncpy(hba_attr->hw_version, adapter_attr.hw_ver, | 1123 | hba_attr->serial_num); |
1119 | sizeof(hba_attr->hw_version)); | 1124 | bfa_ioc_get_adapter_model(&port->fcs->bfa->ioc, hba_attr->model); |
1125 | bfa_ioc_get_adapter_model(&port->fcs->bfa->ioc, hba_attr->model_desc); | ||
1126 | bfa_ioc_get_pci_chip_rev(&port->fcs->bfa->ioc, hba_attr->hw_version); | ||
1127 | bfa_ioc_get_adapter_optrom_ver(&port->fcs->bfa->ioc, | ||
1128 | hba_attr->option_rom_ver); | ||
1129 | bfa_ioc_get_adapter_fw_ver(&port->fcs->bfa->ioc, hba_attr->fw_version); | ||
1120 | 1130 | ||
1121 | strncpy(hba_attr->driver_version, (char *)driver_info->version, | 1131 | strncpy(hba_attr->driver_version, (char *)driver_info->version, |
1122 | sizeof(hba_attr->driver_version)); | 1132 | sizeof(hba_attr->driver_version)); |
1123 | 1133 | ||
1124 | strncpy(hba_attr->option_rom_ver, adapter_attr.optrom_ver, | ||
1125 | sizeof(hba_attr->option_rom_ver)); | ||
1126 | |||
1127 | strncpy(hba_attr->fw_version, adapter_attr.fw_ver, | ||
1128 | sizeof(hba_attr->fw_version)); | ||
1129 | |||
1130 | strncpy(hba_attr->os_name, driver_info->host_os_name, | 1134 | strncpy(hba_attr->os_name, driver_info->host_os_name, |
1131 | sizeof(hba_attr->os_name)); | 1135 | sizeof(hba_attr->os_name)); |
1132 | 1136 | ||
@@ -1145,7 +1149,7 @@ bfa_fcs_fdmi_get_hbaattr(struct bfa_fcs_port_fdmi_s *fdmi, | |||
1145 | 1149 | ||
1146 | } | 1150 | } |
1147 | 1151 | ||
1148 | void | 1152 | static void |
1149 | bfa_fcs_fdmi_get_portattr(struct bfa_fcs_port_fdmi_s *fdmi, | 1153 | bfa_fcs_fdmi_get_portattr(struct bfa_fcs_port_fdmi_s *fdmi, |
1150 | struct bfa_fcs_fdmi_port_attr_s *port_attr) | 1154 | struct bfa_fcs_fdmi_port_attr_s *port_attr) |
1151 | { | 1155 | { |
@@ -1158,7 +1162,7 @@ bfa_fcs_fdmi_get_portattr(struct bfa_fcs_port_fdmi_s *fdmi, | |||
1158 | /* | 1162 | /* |
1159 | * get pport attributes from hal | 1163 | * get pport attributes from hal |
1160 | */ | 1164 | */ |
1161 | bfa_pport_get_attr(port->fcs->bfa, &pport_attr); | 1165 | bfa_fcport_get_attr(port->fcs->bfa, &pport_attr); |
1162 | 1166 | ||
1163 | /* | 1167 | /* |
1164 | * get FC4 type Bitmask | 1168 | * get FC4 type Bitmask |
@@ -1201,7 +1205,10 @@ bfa_fcs_port_fdmi_init(struct bfa_fcs_port_ms_s *ms) | |||
1201 | struct bfa_fcs_port_fdmi_s *fdmi = &ms->fdmi; | 1205 | struct bfa_fcs_port_fdmi_s *fdmi = &ms->fdmi; |
1202 | 1206 | ||
1203 | fdmi->ms = ms; | 1207 | fdmi->ms = ms; |
1204 | bfa_sm_set_state(fdmi, bfa_fcs_port_fdmi_sm_offline); | 1208 | if (ms->port->fcs->fdmi_enabled) |
1209 | bfa_sm_set_state(fdmi, bfa_fcs_port_fdmi_sm_offline); | ||
1210 | else | ||
1211 | bfa_sm_set_state(fdmi, bfa_fcs_port_fdmi_sm_disabled); | ||
1205 | } | 1212 | } |
1206 | 1213 | ||
1207 | void | 1214 | void |