diff options
| author | Maggie Zhang <xmzhang@brocade.com> | 2010-12-09 22:08:43 -0500 |
|---|---|---|
| committer | James Bottomley <James.Bottomley@suse.de> | 2010-12-21 13:32:43 -0500 |
| commit | f7f73812e95077c19a2801bbf4f483fcdab5232f (patch) | |
| tree | 1683aef984bf23a83dc5764503a0972f64ddf5a5 /drivers/scsi/bfa | |
| parent | df0f1933eb5454a5c481311837076056557467ad (diff) | |
[SCSI] bfa: clean up one line functions
Cleaned up one line functions.
Signed-off-by: Maggie Zhang <xmzhang@brocade.com>
Signed-off-by: Jing Huang <huangj@brocade.com>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
Diffstat (limited to 'drivers/scsi/bfa')
| -rw-r--r-- | drivers/scsi/bfa/bfa.h | 17 | ||||
| -rw-r--r-- | drivers/scsi/bfa/bfa_core.c | 173 | ||||
| -rw-r--r-- | drivers/scsi/bfa/bfa_fcpim.c | 2 | ||||
| -rw-r--r-- | drivers/scsi/bfa/bfa_fcs.c | 172 | ||||
| -rw-r--r-- | drivers/scsi/bfa/bfa_fcs.h | 87 | ||||
| -rw-r--r-- | drivers/scsi/bfa/bfa_fcs_fcpim.c | 18 | ||||
| -rw-r--r-- | drivers/scsi/bfa/bfa_fcs_lport.c | 65 | ||||
| -rw-r--r-- | drivers/scsi/bfa/bfa_fcs_rport.c | 97 | ||||
| -rw-r--r-- | drivers/scsi/bfa/bfa_ioc.c | 280 | ||||
| -rw-r--r-- | drivers/scsi/bfa/bfa_ioc.h | 19 | ||||
| -rw-r--r-- | drivers/scsi/bfa/bfa_ioc_cb.c | 2 | ||||
| -rw-r--r-- | drivers/scsi/bfa/bfa_ioc_ct.c | 12 | ||||
| -rw-r--r-- | drivers/scsi/bfa/bfa_plog.h | 1 | ||||
| -rw-r--r-- | drivers/scsi/bfa/bfa_port.c | 2 | ||||
| -rw-r--r-- | drivers/scsi/bfa/bfa_svc.c | 185 | ||||
| -rw-r--r-- | drivers/scsi/bfa/bfa_svc.h | 29 | ||||
| -rw-r--r-- | drivers/scsi/bfa/bfad.c | 22 | ||||
| -rw-r--r-- | drivers/scsi/bfa/bfad_debugfs.c | 4 | ||||
| -rw-r--r-- | drivers/scsi/bfa/bfad_im.c | 2 |
19 files changed, 259 insertions, 930 deletions
diff --git a/drivers/scsi/bfa/bfa.h b/drivers/scsi/bfa/bfa.h index 7ed13ce6d6a..6231e5aa55b 100644 --- a/drivers/scsi/bfa/bfa.h +++ b/drivers/scsi/bfa/bfa.h | |||
| @@ -296,7 +296,6 @@ void bfa_iocfc_attach(struct bfa_s *bfa, void *bfad, | |||
| 296 | struct bfa_iocfc_cfg_s *cfg, | 296 | struct bfa_iocfc_cfg_s *cfg, |
| 297 | struct bfa_meminfo_s *meminfo, | 297 | struct bfa_meminfo_s *meminfo, |
| 298 | struct bfa_pcidev_s *pcidev); | 298 | struct bfa_pcidev_s *pcidev); |
| 299 | void bfa_iocfc_detach(struct bfa_s *bfa); | ||
| 300 | void bfa_iocfc_init(struct bfa_s *bfa); | 299 | void bfa_iocfc_init(struct bfa_s *bfa); |
| 301 | void bfa_iocfc_start(struct bfa_s *bfa); | 300 | void bfa_iocfc_start(struct bfa_s *bfa); |
| 302 | void bfa_iocfc_stop(struct bfa_s *bfa); | 301 | void bfa_iocfc_stop(struct bfa_s *bfa); |
| @@ -385,13 +384,7 @@ void bfa_cfg_get_meminfo(struct bfa_iocfc_cfg_s *cfg, | |||
| 385 | void bfa_attach(struct bfa_s *bfa, void *bfad, struct bfa_iocfc_cfg_s *cfg, | 384 | void bfa_attach(struct bfa_s *bfa, void *bfad, struct bfa_iocfc_cfg_s *cfg, |
| 386 | struct bfa_meminfo_s *meminfo, | 385 | struct bfa_meminfo_s *meminfo, |
| 387 | struct bfa_pcidev_s *pcidev); | 386 | struct bfa_pcidev_s *pcidev); |
| 388 | void bfa_init_trc(struct bfa_s *bfa, struct bfa_trc_mod_s *trcmod); | ||
| 389 | void bfa_init_plog(struct bfa_s *bfa, struct bfa_plog_s *plog); | ||
| 390 | void bfa_detach(struct bfa_s *bfa); | 387 | void bfa_detach(struct bfa_s *bfa); |
| 391 | void bfa_init(struct bfa_s *bfa); | ||
| 392 | void bfa_start(struct bfa_s *bfa); | ||
| 393 | void bfa_stop(struct bfa_s *bfa); | ||
| 394 | void bfa_attach_fcs(struct bfa_s *bfa); | ||
| 395 | void bfa_cb_init(void *bfad, bfa_status_t status); | 388 | void bfa_cb_init(void *bfad, bfa_status_t status); |
| 396 | void bfa_cb_updateq(void *bfad, bfa_status_t status); | 389 | void bfa_cb_updateq(void *bfad, bfa_status_t status); |
| 397 | 390 | ||
| @@ -405,7 +398,6 @@ void bfa_comp_free(struct bfa_s *bfa, struct list_head *comp_q); | |||
| 405 | 398 | ||
| 406 | typedef void (*bfa_cb_ioc_t) (void *cbarg, enum bfa_status status); | 399 | typedef void (*bfa_cb_ioc_t) (void *cbarg, enum bfa_status status); |
| 407 | void bfa_iocfc_get_attr(struct bfa_s *bfa, struct bfa_iocfc_attr_s *attr); | 400 | void bfa_iocfc_get_attr(struct bfa_s *bfa, struct bfa_iocfc_attr_s *attr); |
| 408 | void bfa_get_attr(struct bfa_s *bfa, struct bfa_ioc_attr_s *ioc_attr); | ||
| 409 | 401 | ||
| 410 | 402 | ||
| 411 | bfa_status_t bfa_iocfc_israttr_set(struct bfa_s *bfa, | 403 | bfa_status_t bfa_iocfc_israttr_set(struct bfa_s *bfa, |
| @@ -413,16 +405,7 @@ bfa_status_t bfa_iocfc_israttr_set(struct bfa_s *bfa, | |||
| 413 | 405 | ||
| 414 | void bfa_iocfc_enable(struct bfa_s *bfa); | 406 | void bfa_iocfc_enable(struct bfa_s *bfa); |
| 415 | void bfa_iocfc_disable(struct bfa_s *bfa); | 407 | void bfa_iocfc_disable(struct bfa_s *bfa); |
| 416 | void bfa_timer_tick(struct bfa_s *bfa); | ||
| 417 | #define bfa_timer_start(_bfa, _timer, _timercb, _arg, _timeout) \ | 408 | #define bfa_timer_start(_bfa, _timer, _timercb, _arg, _timeout) \ |
| 418 | bfa_timer_begin(&(_bfa)->timer_mod, _timer, _timercb, _arg, _timeout) | 409 | bfa_timer_begin(&(_bfa)->timer_mod, _timer, _timercb, _arg, _timeout) |
| 419 | 410 | ||
| 420 | /* | ||
| 421 | * BFA debug API functions | ||
| 422 | */ | ||
| 423 | bfa_status_t bfa_debug_fwtrc(struct bfa_s *bfa, void *trcdata, int *trclen); | ||
| 424 | bfa_status_t bfa_debug_fwsave(struct bfa_s *bfa, void *trcdata, int *trclen); | ||
| 425 | bfa_status_t bfa_debug_fwcore(struct bfa_s *bfa, void *buf, | ||
| 426 | u32 *offset, int *buflen); | ||
| 427 | |||
| 428 | #endif /* __BFA_H__ */ | 411 | #endif /* __BFA_H__ */ |
diff --git a/drivers/scsi/bfa/bfa_core.c b/drivers/scsi/bfa/bfa_core.c index 90e0f81ae42..002907c694a 100644 --- a/drivers/scsi/bfa/bfa_core.c +++ b/drivers/scsi/bfa/bfa_core.c | |||
| @@ -67,18 +67,6 @@ static struct bfa_ioc_cbfn_s bfa_iocfc_cbfn; | |||
| 67 | * BFA Interrupt handling functions | 67 | * BFA Interrupt handling functions |
| 68 | */ | 68 | */ |
| 69 | static void | 69 | static void |
| 70 | bfa_msix_errint(struct bfa_s *bfa, u32 intr) | ||
| 71 | { | ||
| 72 | bfa_ioc_error_isr(&bfa->ioc); | ||
| 73 | } | ||
| 74 | |||
| 75 | static void | ||
| 76 | bfa_msix_lpu(struct bfa_s *bfa) | ||
| 77 | { | ||
| 78 | bfa_ioc_mbox_isr(&bfa->ioc); | ||
| 79 | } | ||
| 80 | |||
| 81 | static void | ||
| 82 | bfa_reqq_resume(struct bfa_s *bfa, int qid) | 70 | bfa_reqq_resume(struct bfa_s *bfa, int qid) |
| 83 | { | 71 | { |
| 84 | struct list_head *waitq, *qe, *qen; | 72 | struct list_head *waitq, *qe, *qen; |
| @@ -267,7 +255,7 @@ bfa_msix_lpu_err(struct bfa_s *bfa, int vec) | |||
| 267 | intr = readl(bfa->iocfc.bfa_regs.intr_status); | 255 | intr = readl(bfa->iocfc.bfa_regs.intr_status); |
| 268 | 256 | ||
| 269 | if (intr & (__HFN_INT_MBOX_LPU0 | __HFN_INT_MBOX_LPU1)) | 257 | if (intr & (__HFN_INT_MBOX_LPU0 | __HFN_INT_MBOX_LPU1)) |
| 270 | bfa_msix_lpu(bfa); | 258 | bfa_ioc_mbox_isr(&bfa->ioc); |
| 271 | 259 | ||
| 272 | intr &= (__HFN_INT_ERR_EMC | __HFN_INT_ERR_LPU0 | | 260 | intr &= (__HFN_INT_ERR_EMC | __HFN_INT_ERR_LPU0 | |
| 273 | __HFN_INT_ERR_LPU1 | __HFN_INT_ERR_PSS | __HFN_INT_LL_HALT); | 261 | __HFN_INT_ERR_LPU1 | __HFN_INT_ERR_PSS | __HFN_INT_LL_HALT); |
| @@ -298,7 +286,7 @@ bfa_msix_lpu_err(struct bfa_s *bfa, int vec) | |||
| 298 | } | 286 | } |
| 299 | 287 | ||
| 300 | writel(intr, bfa->iocfc.bfa_regs.intr_status); | 288 | writel(intr, bfa->iocfc.bfa_regs.intr_status); |
| 301 | bfa_msix_errint(bfa, intr); | 289 | bfa_ioc_error_isr(&bfa->ioc); |
| 302 | } | 290 | } |
| 303 | } | 291 | } |
| 304 | 292 | ||
| @@ -467,8 +455,8 @@ bfa_iocfc_mem_claim(struct bfa_s *bfa, struct bfa_iocfc_cfg_s *cfg, | |||
| 467 | * First allocate dma memory for IOC. | 455 | * First allocate dma memory for IOC. |
| 468 | */ | 456 | */ |
| 469 | bfa_ioc_mem_claim(&bfa->ioc, dm_kva, dm_pa); | 457 | bfa_ioc_mem_claim(&bfa->ioc, dm_kva, dm_pa); |
| 470 | dm_kva += bfa_ioc_meminfo(); | 458 | dm_kva += BFA_ROUNDUP(sizeof(struct bfi_ioc_attr_s), BFA_DMA_ALIGN_SZ); |
| 471 | dm_pa += bfa_ioc_meminfo(); | 459 | dm_pa += BFA_ROUNDUP(sizeof(struct bfi_ioc_attr_s), BFA_DMA_ALIGN_SZ); |
| 472 | 460 | ||
| 473 | /* | 461 | /* |
| 474 | * Claim DMA-able memory for the request/response queues and for shadow | 462 | * Claim DMA-able memory for the request/response queues and for shadow |
| @@ -531,7 +519,7 @@ bfa_iocfc_mem_claim(struct bfa_s *bfa, struct bfa_iocfc_cfg_s *cfg, | |||
| 531 | bfa_meminfo_dma_virt(meminfo) = dm_kva; | 519 | bfa_meminfo_dma_virt(meminfo) = dm_kva; |
| 532 | bfa_meminfo_dma_phys(meminfo) = dm_pa; | 520 | bfa_meminfo_dma_phys(meminfo) = dm_pa; |
| 533 | 521 | ||
| 534 | dbgsz = bfa_ioc_debug_trcsz(bfa_auto_recover); | 522 | dbgsz = (bfa_auto_recover) ? BFA_DBG_FWTRC_LEN : 0; |
| 535 | if (dbgsz > 0) { | 523 | if (dbgsz > 0) { |
| 536 | bfa_ioc_debug_memclaim(&bfa->ioc, bfa_meminfo_kva(meminfo)); | 524 | bfa_ioc_debug_memclaim(&bfa->ioc, bfa_meminfo_kva(meminfo)); |
| 537 | bfa_meminfo_kva(meminfo) += dbgsz; | 525 | bfa_meminfo_kva(meminfo) += dbgsz; |
| @@ -723,11 +711,11 @@ bfa_iocfc_meminfo(struct bfa_iocfc_cfg_s *cfg, u32 *km_len, | |||
| 723 | u32 *dm_len) | 711 | u32 *dm_len) |
| 724 | { | 712 | { |
| 725 | /* dma memory for IOC */ | 713 | /* dma memory for IOC */ |
| 726 | *dm_len += bfa_ioc_meminfo(); | 714 | *dm_len += BFA_ROUNDUP(sizeof(struct bfi_ioc_attr_s), BFA_DMA_ALIGN_SZ); |
| 727 | 715 | ||
| 728 | bfa_iocfc_fw_cfg_sz(cfg, dm_len); | 716 | bfa_iocfc_fw_cfg_sz(cfg, dm_len); |
| 729 | bfa_iocfc_cqs_sz(cfg, dm_len); | 717 | bfa_iocfc_cqs_sz(cfg, dm_len); |
| 730 | *km_len += bfa_ioc_debug_trcsz(bfa_auto_recover); | 718 | *km_len += (bfa_auto_recover) ? BFA_DBG_FWTRC_LEN : 0; |
| 731 | } | 719 | } |
| 732 | 720 | ||
| 733 | /* | 721 | /* |
| @@ -759,7 +747,7 @@ bfa_iocfc_attach(struct bfa_s *bfa, void *bfad, struct bfa_iocfc_cfg_s *cfg, | |||
| 759 | 747 | ||
| 760 | bfa_iocfc_init_mem(bfa, bfad, cfg, pcidev); | 748 | bfa_iocfc_init_mem(bfa, bfad, cfg, pcidev); |
| 761 | bfa_iocfc_mem_claim(bfa, cfg, meminfo); | 749 | bfa_iocfc_mem_claim(bfa, cfg, meminfo); |
| 762 | bfa_timer_init(&bfa->timer_mod); | 750 | INIT_LIST_HEAD(&bfa->timer_mod.timer_q); |
| 763 | 751 | ||
| 764 | INIT_LIST_HEAD(&bfa->comp_q); | 752 | INIT_LIST_HEAD(&bfa->comp_q); |
| 765 | for (i = 0; i < BFI_IOC_MAX_CQS; i++) | 753 | for (i = 0; i < BFI_IOC_MAX_CQS; i++) |
| @@ -770,15 +758,6 @@ bfa_iocfc_attach(struct bfa_s *bfa, void *bfad, struct bfa_iocfc_cfg_s *cfg, | |||
| 770 | * Query IOC memory requirement information. | 758 | * Query IOC memory requirement information. |
| 771 | */ | 759 | */ |
| 772 | void | 760 | void |
| 773 | bfa_iocfc_detach(struct bfa_s *bfa) | ||
| 774 | { | ||
| 775 | bfa_ioc_detach(&bfa->ioc); | ||
| 776 | } | ||
| 777 | |||
| 778 | /* | ||
| 779 | * Query IOC memory requirement information. | ||
| 780 | */ | ||
| 781 | void | ||
| 782 | bfa_iocfc_init(struct bfa_s *bfa) | 761 | bfa_iocfc_init(struct bfa_s *bfa) |
| 783 | { | 762 | { |
| 784 | bfa->iocfc.action = BFA_IOCFC_ACT_INIT; | 763 | bfa->iocfc.action = BFA_IOCFC_ACT_INIT; |
| @@ -1090,79 +1069,7 @@ bfa_detach(struct bfa_s *bfa) | |||
| 1090 | 1069 | ||
| 1091 | for (i = 0; hal_mods[i]; i++) | 1070 | for (i = 0; hal_mods[i]; i++) |
| 1092 | hal_mods[i]->detach(bfa); | 1071 | hal_mods[i]->detach(bfa); |
| 1093 | 1072 | bfa_ioc_detach(&bfa->ioc); | |
| 1094 | bfa_iocfc_detach(bfa); | ||
| 1095 | } | ||
| 1096 | |||
| 1097 | |||
| 1098 | void | ||
| 1099 | bfa_init_trc(struct bfa_s *bfa, struct bfa_trc_mod_s *trcmod) | ||
| 1100 | { | ||
| 1101 | bfa->trcmod = trcmod; | ||
| 1102 | } | ||
| 1103 | |||
| 1104 | void | ||
| 1105 | bfa_init_plog(struct bfa_s *bfa, struct bfa_plog_s *plog) | ||
| 1106 | { | ||
| 1107 | bfa->plog = plog; | ||
| 1108 | } | ||
| 1109 | |||
| 1110 | /* | ||
| 1111 | * Initialize IOC. | ||
| 1112 | * | ||
| 1113 | * This function will return immediately, when the IOC initialization is | ||
| 1114 | * completed, the bfa_cb_init() will be called. | ||
| 1115 | * | ||
| 1116 | * @param[in] bfa instance | ||
| 1117 | * | ||
| 1118 | * @return void | ||
| 1119 | * | ||
| 1120 | * Special Considerations: | ||
| 1121 | * | ||
| 1122 | * @note | ||
| 1123 | * When this function returns, the driver should register the interrupt service | ||
| 1124 | * routine(s) and enable the device interrupts. If this is not done, | ||
| 1125 | * bfa_cb_init() will never get called | ||
| 1126 | */ | ||
| 1127 | void | ||
| 1128 | bfa_init(struct bfa_s *bfa) | ||
| 1129 | { | ||
| 1130 | bfa_iocfc_init(bfa); | ||
| 1131 | } | ||
| 1132 | |||
| 1133 | /* | ||
| 1134 | * Use this function initiate the IOC configuration setup. This function | ||
| 1135 | * will return immediately. | ||
| 1136 | * | ||
| 1137 | * @param[in] bfa instance | ||
| 1138 | * | ||
| 1139 | * @return None | ||
| 1140 | */ | ||
| 1141 | void | ||
| 1142 | bfa_start(struct bfa_s *bfa) | ||
| 1143 | { | ||
| 1144 | bfa_iocfc_start(bfa); | ||
| 1145 | } | ||
| 1146 | |||
| 1147 | /* | ||
| 1148 | * Use this function quiese the IOC. This function will return immediately, | ||
| 1149 | * when the IOC is actually stopped, the bfad->comp will be set. | ||
| 1150 | * | ||
| 1151 | * @param[in]bfa - pointer to bfa_t. | ||
| 1152 | * | ||
| 1153 | * @return None | ||
| 1154 | * | ||
| 1155 | * Special Considerations: | ||
| 1156 | * bfad->comp can be set before or after bfa_stop() returns. | ||
| 1157 | * | ||
| 1158 | * @note | ||
| 1159 | * In case of any failure, we could handle it automatically by doing a | ||
| 1160 | * reset and then succeed the bfa_stop() call. | ||
| 1161 | */ | ||
| 1162 | void | ||
| 1163 | bfa_stop(struct bfa_s *bfa) | ||
| 1164 | { | ||
| 1165 | bfa_iocfc_stop(bfa); | ||
| 1166 | } | 1073 | } |
| 1167 | 1074 | ||
| 1168 | void | 1075 | void |
| @@ -1198,20 +1105,6 @@ bfa_comp_free(struct bfa_s *bfa, struct list_head *comp_q) | |||
| 1198 | } | 1105 | } |
| 1199 | } | 1106 | } |
| 1200 | 1107 | ||
| 1201 | void | ||
| 1202 | bfa_attach_fcs(struct bfa_s *bfa) | ||
| 1203 | { | ||
| 1204 | bfa->fcs = BFA_TRUE; | ||
| 1205 | } | ||
| 1206 | |||
| 1207 | /* | ||
| 1208 | * Periodic timer heart beat from driver | ||
| 1209 | */ | ||
| 1210 | void | ||
| 1211 | bfa_timer_tick(struct bfa_s *bfa) | ||
| 1212 | { | ||
| 1213 | bfa_timer_beat(&bfa->timer_mod); | ||
| 1214 | } | ||
| 1215 | 1108 | ||
| 1216 | /* | 1109 | /* |
| 1217 | * Return the list of PCI vendor/device id lists supported by this | 1110 | * Return the list of PCI vendor/device id lists supported by this |
| @@ -1282,51 +1175,3 @@ bfa_cfg_get_min(struct bfa_iocfc_cfg_s *cfg) | |||
| 1282 | cfg->drvcfg.num_rspq_elems = BFA_RSPQ_NELEMS_MIN; | 1175 | cfg->drvcfg.num_rspq_elems = BFA_RSPQ_NELEMS_MIN; |
| 1283 | cfg->drvcfg.min_cfg = BFA_TRUE; | 1176 | cfg->drvcfg.min_cfg = BFA_TRUE; |
| 1284 | } | 1177 | } |
| 1285 | |||
| 1286 | void | ||
| 1287 | bfa_get_attr(struct bfa_s *bfa, struct bfa_ioc_attr_s *ioc_attr) | ||
| 1288 | { | ||
| 1289 | bfa_ioc_get_attr(&bfa->ioc, ioc_attr); | ||
| 1290 | } | ||
| 1291 | |||
| 1292 | /* | ||
| 1293 | * Retrieve firmware trace information on IOC failure. | ||
| 1294 | */ | ||
| 1295 | bfa_status_t | ||
| 1296 | bfa_debug_fwsave(struct bfa_s *bfa, void *trcdata, int *trclen) | ||
| 1297 | { | ||
| 1298 | return bfa_ioc_debug_fwsave(&bfa->ioc, trcdata, trclen); | ||
| 1299 | } | ||
| 1300 | |||
| 1301 | /* | ||
| 1302 | * Fetch firmware trace data. | ||
| 1303 | * | ||
| 1304 | * @param[in] bfa BFA instance | ||
| 1305 | * @param[out] trcdata Firmware trace buffer | ||
| 1306 | * @param[in,out] trclen Firmware trace buffer len | ||
| 1307 | * | ||
| 1308 | * @retval BFA_STATUS_OK Firmware trace is fetched. | ||
| 1309 | * @retval BFA_STATUS_INPROGRESS Firmware trace fetch is in progress. | ||
| 1310 | */ | ||
| 1311 | bfa_status_t | ||
| 1312 | bfa_debug_fwtrc(struct bfa_s *bfa, void *trcdata, int *trclen) | ||
| 1313 | { | ||
| 1314 | return bfa_ioc_debug_fwtrc(&bfa->ioc, trcdata, trclen); | ||
| 1315 | } | ||
| 1316 | |||
| 1317 | /* | ||
| 1318 | * Dump firmware memory. | ||
| 1319 | * | ||
| 1320 | * @param[in] bfa BFA instance | ||
| 1321 | * @param[out] buf buffer for dump | ||
| 1322 | * @param[in,out] offset smem offset to start read | ||
| 1323 | * @param[in,out] buflen length of buffer | ||
| 1324 | * | ||
| 1325 | * @retval BFA_STATUS_OK Firmware memory is dumped. | ||
| 1326 | * @retval BFA_STATUS_INPROGRESS Firmware memory dump is in progress. | ||
| 1327 | */ | ||
| 1328 | bfa_status_t | ||
| 1329 | bfa_debug_fwcore(struct bfa_s *bfa, void *buf, u32 *offset, int *buflen) | ||
| 1330 | { | ||
| 1331 | return bfa_ioc_debug_fwcore(&bfa->ioc, buf, offset, buflen); | ||
| 1332 | } | ||
diff --git a/drivers/scsi/bfa/bfa_fcpim.c b/drivers/scsi/bfa/bfa_fcpim.c index 0e7f3807dba..d6aea5d4425 100644 --- a/drivers/scsi/bfa/bfa_fcpim.c +++ b/drivers/scsi/bfa/bfa_fcpim.c | |||
| @@ -2567,7 +2567,7 @@ bfa_ioim_notify_cleanup(struct bfa_ioim_s *ioim) | |||
| 2567 | } | 2567 | } |
| 2568 | bfa_itnim_iodone(ioim->itnim); | 2568 | bfa_itnim_iodone(ioim->itnim); |
| 2569 | } else | 2569 | } else |
| 2570 | bfa_tskim_iodone(ioim->iosp->tskim); | 2570 | bfa_wc_down(&ioim->iosp->tskim->wc); |
| 2571 | } | 2571 | } |
| 2572 | 2572 | ||
| 2573 | static bfa_boolean_t | 2573 | static bfa_boolean_t |
diff --git a/drivers/scsi/bfa/bfa_fcs.c b/drivers/scsi/bfa/bfa_fcs.c index 5b561bde226..141215c5163 100644 --- a/drivers/scsi/bfa/bfa_fcs.c +++ b/drivers/scsi/bfa/bfa_fcs.c | |||
| @@ -76,7 +76,7 @@ bfa_fcs_attach(struct bfa_fcs_s *fcs, struct bfa_s *bfa, struct bfad_s *bfad, | |||
| 76 | fcs->bfad = bfad; | 76 | fcs->bfad = bfad; |
| 77 | fcs->min_cfg = min_cfg; | 77 | fcs->min_cfg = min_cfg; |
| 78 | 78 | ||
| 79 | bfa_attach_fcs(bfa); | 79 | bfa->fcs = BFA_TRUE; |
| 80 | fcbuild_init(); | 80 | fcbuild_init(); |
| 81 | 81 | ||
| 82 | for (i = 0; i < sizeof(fcs_modules) / sizeof(fcs_modules[0]); i++) { | 82 | for (i = 0; i < sizeof(fcs_modules) / sizeof(fcs_modules[0]); i++) { |
| @@ -110,14 +110,6 @@ bfa_fcs_init(struct bfa_fcs_s *fcs) | |||
| 110 | } | 110 | } |
| 111 | } | 111 | } |
| 112 | 112 | ||
| 113 | /* | ||
| 114 | * Start FCS operations. | ||
| 115 | */ | ||
| 116 | void | ||
| 117 | bfa_fcs_start(struct bfa_fcs_s *fcs) | ||
| 118 | { | ||
| 119 | bfa_fcs_fabric_modstart(fcs); | ||
| 120 | } | ||
| 121 | 113 | ||
| 122 | /* | 114 | /* |
| 123 | * brief | 115 | * brief |
| @@ -140,22 +132,6 @@ bfa_fcs_driver_info_init(struct bfa_fcs_s *fcs, | |||
| 140 | 132 | ||
| 141 | /* | 133 | /* |
| 142 | * brief | 134 | * brief |
| 143 | * FCS FDMI Driver Parameter Initialization | ||
| 144 | * | ||
| 145 | * param[in] fcs FCS instance | ||
| 146 | * param[in] fdmi_enable TRUE/FALSE | ||
| 147 | * | ||
| 148 | * return None | ||
| 149 | */ | ||
| 150 | void | ||
| 151 | bfa_fcs_set_fdmi_param(struct bfa_fcs_s *fcs, bfa_boolean_t fdmi_enable) | ||
| 152 | { | ||
| 153 | |||
| 154 | fcs->fdmi_enabled = fdmi_enable; | ||
| 155 | |||
| 156 | } | ||
| 157 | /* | ||
| 158 | * brief | ||
| 159 | * FCS instance cleanup and exit. | 135 | * FCS instance cleanup and exit. |
| 160 | * | 136 | * |
| 161 | * param[in] fcs FCS instance | 137 | * param[in] fcs FCS instance |
| @@ -184,18 +160,6 @@ bfa_fcs_exit(struct bfa_fcs_s *fcs) | |||
| 184 | } | 160 | } |
| 185 | 161 | ||
| 186 | 162 | ||
| 187 | void | ||
| 188 | bfa_fcs_trc_init(struct bfa_fcs_s *fcs, struct bfa_trc_mod_s *trcmod) | ||
| 189 | { | ||
| 190 | fcs->trcmod = trcmod; | ||
| 191 | } | ||
| 192 | |||
| 193 | void | ||
| 194 | bfa_fcs_modexit_comp(struct bfa_fcs_s *fcs) | ||
| 195 | { | ||
| 196 | bfa_wc_down(&fcs->wc); | ||
| 197 | } | ||
| 198 | |||
| 199 | /* | 163 | /* |
| 200 | * Fabric module implementation. | 164 | * Fabric module implementation. |
| 201 | */ | 165 | */ |
| @@ -232,31 +196,6 @@ static void bfa_fcs_fabric_flogiacc_comp(void *fcsarg, | |||
| 232 | u32 rsp_len, | 196 | u32 rsp_len, |
| 233 | u32 resid_len, | 197 | u32 resid_len, |
| 234 | struct fchs_s *rspfchs); | 198 | struct fchs_s *rspfchs); |
| 235 | /* | ||
| 236 | * fcs_fabric_sm fabric state machine functions | ||
| 237 | */ | ||
| 238 | |||
| 239 | /* | ||
| 240 | * Fabric state machine events | ||
| 241 | */ | ||
| 242 | enum bfa_fcs_fabric_event { | ||
| 243 | BFA_FCS_FABRIC_SM_CREATE = 1, /* create from driver */ | ||
| 244 | BFA_FCS_FABRIC_SM_DELETE = 2, /* delete from driver */ | ||
| 245 | BFA_FCS_FABRIC_SM_LINK_DOWN = 3, /* link down from port */ | ||
| 246 | BFA_FCS_FABRIC_SM_LINK_UP = 4, /* link up from port */ | ||
| 247 | BFA_FCS_FABRIC_SM_CONT_OP = 5, /* flogi/auth continue op */ | ||
| 248 | BFA_FCS_FABRIC_SM_RETRY_OP = 6, /* flogi/auth retry op */ | ||
| 249 | BFA_FCS_FABRIC_SM_NO_FABRIC = 7, /* from flogi/auth */ | ||
| 250 | BFA_FCS_FABRIC_SM_PERF_EVFP = 8, /* from flogi/auth */ | ||
| 251 | BFA_FCS_FABRIC_SM_ISOLATE = 9, /* from EVFP processing */ | ||
| 252 | BFA_FCS_FABRIC_SM_NO_TAGGING = 10, /* no VFT tagging from EVFP */ | ||
| 253 | BFA_FCS_FABRIC_SM_DELAYED = 11, /* timeout delay event */ | ||
| 254 | BFA_FCS_FABRIC_SM_AUTH_FAILED = 12, /* auth failed */ | ||
| 255 | BFA_FCS_FABRIC_SM_AUTH_SUCCESS = 13, /* auth successful */ | ||
| 256 | BFA_FCS_FABRIC_SM_DELCOMP = 14, /* all vports deleted event */ | ||
| 257 | BFA_FCS_FABRIC_SM_LOOPBACK = 15, /* Received our own FLOGI */ | ||
| 258 | BFA_FCS_FABRIC_SM_START = 16, /* from driver */ | ||
| 259 | }; | ||
| 260 | 199 | ||
| 261 | static void bfa_fcs_fabric_sm_uninit(struct bfa_fcs_fabric_s *fabric, | 200 | static void bfa_fcs_fabric_sm_uninit(struct bfa_fcs_fabric_s *fabric, |
| 262 | enum bfa_fcs_fabric_event event); | 201 | enum bfa_fcs_fabric_event event); |
| @@ -270,14 +209,8 @@ static void bfa_fcs_fabric_sm_flogi_retry(struct bfa_fcs_fabric_s *fabric, | |||
| 270 | enum bfa_fcs_fabric_event event); | 209 | enum bfa_fcs_fabric_event event); |
| 271 | static void bfa_fcs_fabric_sm_auth(struct bfa_fcs_fabric_s *fabric, | 210 | static void bfa_fcs_fabric_sm_auth(struct bfa_fcs_fabric_s *fabric, |
| 272 | enum bfa_fcs_fabric_event event); | 211 | enum bfa_fcs_fabric_event event); |
| 273 | static void bfa_fcs_fabric_sm_auth_failed(struct bfa_fcs_fabric_s *fabric, | ||
| 274 | enum bfa_fcs_fabric_event event); | ||
| 275 | static void bfa_fcs_fabric_sm_loopback(struct bfa_fcs_fabric_s *fabric, | ||
| 276 | enum bfa_fcs_fabric_event event); | ||
| 277 | static void bfa_fcs_fabric_sm_nofabric(struct bfa_fcs_fabric_s *fabric, | 212 | static void bfa_fcs_fabric_sm_nofabric(struct bfa_fcs_fabric_s *fabric, |
| 278 | enum bfa_fcs_fabric_event event); | 213 | enum bfa_fcs_fabric_event event); |
| 279 | static void bfa_fcs_fabric_sm_online(struct bfa_fcs_fabric_s *fabric, | ||
| 280 | enum bfa_fcs_fabric_event event); | ||
| 281 | static void bfa_fcs_fabric_sm_evfp(struct bfa_fcs_fabric_s *fabric, | 214 | static void bfa_fcs_fabric_sm_evfp(struct bfa_fcs_fabric_s *fabric, |
| 282 | enum bfa_fcs_fabric_event event); | 215 | enum bfa_fcs_fabric_event event); |
| 283 | static void bfa_fcs_fabric_sm_evfp_done(struct bfa_fcs_fabric_s *fabric, | 216 | static void bfa_fcs_fabric_sm_evfp_done(struct bfa_fcs_fabric_s *fabric, |
| @@ -337,7 +270,7 @@ bfa_fcs_fabric_sm_created(struct bfa_fcs_fabric_s *fabric, | |||
| 337 | 270 | ||
| 338 | case BFA_FCS_FABRIC_SM_DELETE: | 271 | case BFA_FCS_FABRIC_SM_DELETE: |
| 339 | bfa_sm_set_state(fabric, bfa_fcs_fabric_sm_uninit); | 272 | bfa_sm_set_state(fabric, bfa_fcs_fabric_sm_uninit); |
| 340 | bfa_fcs_modexit_comp(fabric->fcs); | 273 | bfa_wc_down(&fabric->fcs->wc); |
| 341 | break; | 274 | break; |
| 342 | 275 | ||
| 343 | default: | 276 | default: |
| @@ -410,7 +343,7 @@ bfa_fcs_fabric_sm_flogi(struct bfa_fcs_fabric_s *fabric, | |||
| 410 | 343 | ||
| 411 | case BFA_FCS_FABRIC_SM_LOOPBACK: | 344 | case BFA_FCS_FABRIC_SM_LOOPBACK: |
| 412 | bfa_sm_set_state(fabric, bfa_fcs_fabric_sm_loopback); | 345 | bfa_sm_set_state(fabric, bfa_fcs_fabric_sm_loopback); |
| 413 | bfa_lps_discard(fabric->lps); | 346 | bfa_sm_send_event(fabric->lps, BFA_LPS_SM_OFFLINE); |
| 414 | bfa_fcs_fabric_set_opertype(fabric); | 347 | bfa_fcs_fabric_set_opertype(fabric); |
| 415 | break; | 348 | break; |
| 416 | 349 | ||
| @@ -424,12 +357,12 @@ bfa_fcs_fabric_sm_flogi(struct bfa_fcs_fabric_s *fabric, | |||
| 424 | 357 | ||
| 425 | case BFA_FCS_FABRIC_SM_LINK_DOWN: | 358 | case BFA_FCS_FABRIC_SM_LINK_DOWN: |
| 426 | bfa_sm_set_state(fabric, bfa_fcs_fabric_sm_linkdown); | 359 | bfa_sm_set_state(fabric, bfa_fcs_fabric_sm_linkdown); |
| 427 | bfa_lps_discard(fabric->lps); | 360 | bfa_sm_send_event(fabric->lps, BFA_LPS_SM_OFFLINE); |
| 428 | break; | 361 | break; |
| 429 | 362 | ||
| 430 | case BFA_FCS_FABRIC_SM_DELETE: | 363 | case BFA_FCS_FABRIC_SM_DELETE: |
| 431 | bfa_sm_set_state(fabric, bfa_fcs_fabric_sm_deleting); | 364 | bfa_sm_set_state(fabric, bfa_fcs_fabric_sm_deleting); |
| 432 | bfa_lps_discard(fabric->lps); | 365 | bfa_sm_send_event(fabric->lps, BFA_LPS_SM_OFFLINE); |
| 433 | bfa_fcs_fabric_delete(fabric); | 366 | bfa_fcs_fabric_delete(fabric); |
| 434 | break; | 367 | break; |
| 435 | 368 | ||
| @@ -481,7 +414,7 @@ bfa_fcs_fabric_sm_auth(struct bfa_fcs_fabric_s *fabric, | |||
| 481 | switch (event) { | 414 | switch (event) { |
| 482 | case BFA_FCS_FABRIC_SM_AUTH_FAILED: | 415 | case BFA_FCS_FABRIC_SM_AUTH_FAILED: |
| 483 | bfa_sm_set_state(fabric, bfa_fcs_fabric_sm_auth_failed); | 416 | bfa_sm_set_state(fabric, bfa_fcs_fabric_sm_auth_failed); |
| 484 | bfa_lps_discard(fabric->lps); | 417 | bfa_sm_send_event(fabric->lps, BFA_LPS_SM_OFFLINE); |
| 485 | break; | 418 | break; |
| 486 | 419 | ||
| 487 | case BFA_FCS_FABRIC_SM_AUTH_SUCCESS: | 420 | case BFA_FCS_FABRIC_SM_AUTH_SUCCESS: |
| @@ -495,7 +428,7 @@ bfa_fcs_fabric_sm_auth(struct bfa_fcs_fabric_s *fabric, | |||
| 495 | 428 | ||
| 496 | case BFA_FCS_FABRIC_SM_LINK_DOWN: | 429 | case BFA_FCS_FABRIC_SM_LINK_DOWN: |
| 497 | bfa_sm_set_state(fabric, bfa_fcs_fabric_sm_linkdown); | 430 | bfa_sm_set_state(fabric, bfa_fcs_fabric_sm_linkdown); |
| 498 | bfa_lps_discard(fabric->lps); | 431 | bfa_sm_send_event(fabric->lps, BFA_LPS_SM_OFFLINE); |
| 499 | break; | 432 | break; |
| 500 | 433 | ||
| 501 | case BFA_FCS_FABRIC_SM_DELETE: | 434 | case BFA_FCS_FABRIC_SM_DELETE: |
| @@ -511,7 +444,7 @@ bfa_fcs_fabric_sm_auth(struct bfa_fcs_fabric_s *fabric, | |||
| 511 | /* | 444 | /* |
| 512 | * Authentication failed | 445 | * Authentication failed |
| 513 | */ | 446 | */ |
| 514 | static void | 447 | void |
| 515 | bfa_fcs_fabric_sm_auth_failed(struct bfa_fcs_fabric_s *fabric, | 448 | bfa_fcs_fabric_sm_auth_failed(struct bfa_fcs_fabric_s *fabric, |
| 516 | enum bfa_fcs_fabric_event event) | 449 | enum bfa_fcs_fabric_event event) |
| 517 | { | 450 | { |
| @@ -537,7 +470,7 @@ bfa_fcs_fabric_sm_auth_failed(struct bfa_fcs_fabric_s *fabric, | |||
| 537 | /* | 470 | /* |
| 538 | * Port is in loopback mode. | 471 | * Port is in loopback mode. |
| 539 | */ | 472 | */ |
| 540 | static void | 473 | void |
| 541 | bfa_fcs_fabric_sm_loopback(struct bfa_fcs_fabric_s *fabric, | 474 | bfa_fcs_fabric_sm_loopback(struct bfa_fcs_fabric_s *fabric, |
| 542 | enum bfa_fcs_fabric_event event) | 475 | enum bfa_fcs_fabric_event event) |
| 543 | { | 476 | { |
| @@ -573,7 +506,7 @@ bfa_fcs_fabric_sm_nofabric(struct bfa_fcs_fabric_s *fabric, | |||
| 573 | switch (event) { | 506 | switch (event) { |
| 574 | case BFA_FCS_FABRIC_SM_LINK_DOWN: | 507 | case BFA_FCS_FABRIC_SM_LINK_DOWN: |
| 575 | bfa_sm_set_state(fabric, bfa_fcs_fabric_sm_linkdown); | 508 | bfa_sm_set_state(fabric, bfa_fcs_fabric_sm_linkdown); |
| 576 | bfa_lps_discard(fabric->lps); | 509 | bfa_sm_send_event(fabric->lps, BFA_LPS_SM_OFFLINE); |
| 577 | bfa_fcs_fabric_notify_offline(fabric); | 510 | bfa_fcs_fabric_notify_offline(fabric); |
| 578 | break; | 511 | break; |
| 579 | 512 | ||
| @@ -596,7 +529,7 @@ bfa_fcs_fabric_sm_nofabric(struct bfa_fcs_fabric_s *fabric, | |||
| 596 | /* | 529 | /* |
| 597 | * Fabric is online - normal operating state. | 530 | * Fabric is online - normal operating state. |
| 598 | */ | 531 | */ |
| 599 | static void | 532 | void |
| 600 | bfa_fcs_fabric_sm_online(struct bfa_fcs_fabric_s *fabric, | 533 | bfa_fcs_fabric_sm_online(struct bfa_fcs_fabric_s *fabric, |
| 601 | enum bfa_fcs_fabric_event event) | 534 | enum bfa_fcs_fabric_event event) |
| 602 | { | 535 | { |
| @@ -606,7 +539,7 @@ bfa_fcs_fabric_sm_online(struct bfa_fcs_fabric_s *fabric, | |||
| 606 | switch (event) { | 539 | switch (event) { |
| 607 | case BFA_FCS_FABRIC_SM_LINK_DOWN: | 540 | case BFA_FCS_FABRIC_SM_LINK_DOWN: |
| 608 | bfa_sm_set_state(fabric, bfa_fcs_fabric_sm_linkdown); | 541 | bfa_sm_set_state(fabric, bfa_fcs_fabric_sm_linkdown); |
| 609 | bfa_lps_discard(fabric->lps); | 542 | bfa_sm_send_event(fabric->lps, BFA_LPS_SM_OFFLINE); |
| 610 | bfa_fcs_fabric_notify_offline(fabric); | 543 | bfa_fcs_fabric_notify_offline(fabric); |
| 611 | break; | 544 | break; |
| 612 | 545 | ||
| @@ -617,7 +550,7 @@ bfa_fcs_fabric_sm_online(struct bfa_fcs_fabric_s *fabric, | |||
| 617 | 550 | ||
| 618 | case BFA_FCS_FABRIC_SM_AUTH_FAILED: | 551 | case BFA_FCS_FABRIC_SM_AUTH_FAILED: |
| 619 | bfa_sm_set_state(fabric, bfa_fcs_fabric_sm_auth_failed); | 552 | bfa_sm_set_state(fabric, bfa_fcs_fabric_sm_auth_failed); |
| 620 | bfa_lps_discard(fabric->lps); | 553 | bfa_sm_send_event(fabric->lps, BFA_LPS_SM_OFFLINE); |
| 621 | break; | 554 | break; |
| 622 | 555 | ||
| 623 | case BFA_FCS_FABRIC_SM_AUTH_SUCCESS: | 556 | case BFA_FCS_FABRIC_SM_AUTH_SUCCESS: |
| @@ -697,7 +630,7 @@ bfa_fcs_fabric_sm_deleting(struct bfa_fcs_fabric_s *fabric, | |||
| 697 | switch (event) { | 630 | switch (event) { |
| 698 | case BFA_FCS_FABRIC_SM_DELCOMP: | 631 | case BFA_FCS_FABRIC_SM_DELCOMP: |
| 699 | bfa_sm_set_state(fabric, bfa_fcs_fabric_sm_uninit); | 632 | bfa_sm_set_state(fabric, bfa_fcs_fabric_sm_uninit); |
| 700 | bfa_fcs_modexit_comp(fabric->fcs); | 633 | bfa_wc_down(&fabric->fcs->wc); |
| 701 | break; | 634 | break; |
| 702 | 635 | ||
| 703 | case BFA_FCS_FABRIC_SM_LINK_UP: | 636 | case BFA_FCS_FABRIC_SM_LINK_UP: |
| @@ -724,8 +657,8 @@ bfa_fcs_fabric_init(struct bfa_fcs_fabric_s *fabric) | |||
| 724 | struct bfa_lport_cfg_s *port_cfg = &fabric->bport.port_cfg; | 657 | struct bfa_lport_cfg_s *port_cfg = &fabric->bport.port_cfg; |
| 725 | 658 | ||
| 726 | port_cfg->roles = BFA_LPORT_ROLE_FCP_IM; | 659 | port_cfg->roles = BFA_LPORT_ROLE_FCP_IM; |
| 727 | port_cfg->nwwn = bfa_ioc_get_nwwn(&fabric->fcs->bfa->ioc); | 660 | port_cfg->nwwn = fabric->fcs->bfa->ioc.attr->nwwn; |
| 728 | port_cfg->pwwn = bfa_ioc_get_pwwn(&fabric->fcs->bfa->ioc); | 661 | port_cfg->pwwn = fabric->fcs->bfa->ioc.attr->pwwn; |
| 729 | } | 662 | } |
| 730 | 663 | ||
| 731 | /* | 664 | /* |
| @@ -813,7 +746,7 @@ bfa_cb_lps_flogi_comp(void *bfad, void *uarg, bfa_status_t status) | |||
| 813 | return; | 746 | return; |
| 814 | 747 | ||
| 815 | case BFA_STATUS_EPROTOCOL: | 748 | case BFA_STATUS_EPROTOCOL: |
| 816 | switch (bfa_lps_get_extstatus(fabric->lps)) { | 749 | switch (fabric->lps->ext_status) { |
| 817 | case BFA_EPROTO_BAD_ACCEPT: | 750 | case BFA_EPROTO_BAD_ACCEPT: |
| 818 | fabric->stats.flogi_acc_err++; | 751 | fabric->stats.flogi_acc_err++; |
| 819 | break; | 752 | break; |
| @@ -840,26 +773,26 @@ bfa_cb_lps_flogi_comp(void *bfad, void *uarg, bfa_status_t status) | |||
| 840 | return; | 773 | return; |
| 841 | } | 774 | } |
| 842 | 775 | ||
| 843 | fabric->bb_credit = bfa_lps_get_peer_bbcredit(fabric->lps); | 776 | fabric->bb_credit = fabric->lps->pr_bbcred; |
| 844 | bfa_trc(fabric->fcs, fabric->bb_credit); | 777 | bfa_trc(fabric->fcs, fabric->bb_credit); |
| 845 | 778 | ||
| 846 | if (!bfa_lps_is_brcd_fabric(fabric->lps)) | 779 | if (!(fabric->lps->brcd_switch)) |
| 847 | fabric->fabric_name = bfa_lps_get_peer_nwwn(fabric->lps); | 780 | fabric->fabric_name = fabric->lps->pr_nwwn; |
| 848 | 781 | ||
| 849 | /* | 782 | /* |
| 850 | * Check port type. It should be 1 = F-port. | 783 | * Check port type. It should be 1 = F-port. |
| 851 | */ | 784 | */ |
| 852 | if (bfa_lps_is_fport(fabric->lps)) { | 785 | if (fabric->lps->fport) { |
| 853 | fabric->bport.pid = bfa_lps_get_pid(fabric->lps); | 786 | fabric->bport.pid = fabric->lps->lp_pid; |
| 854 | fabric->is_npiv = bfa_lps_is_npiv_en(fabric->lps); | 787 | fabric->is_npiv = fabric->lps->npiv_en; |
| 855 | fabric->is_auth = bfa_lps_is_authreq(fabric->lps); | 788 | fabric->is_auth = fabric->lps->auth_req; |
| 856 | bfa_sm_send_event(fabric, BFA_FCS_FABRIC_SM_CONT_OP); | 789 | bfa_sm_send_event(fabric, BFA_FCS_FABRIC_SM_CONT_OP); |
| 857 | } else { | 790 | } else { |
| 858 | /* | 791 | /* |
| 859 | * Nport-2-Nport direct attached | 792 | * Nport-2-Nport direct attached |
| 860 | */ | 793 | */ |
| 861 | fabric->bport.port_topo.pn2n.rem_port_wwn = | 794 | fabric->bport.port_topo.pn2n.rem_port_wwn = |
| 862 | bfa_lps_get_peer_pwwn(fabric->lps); | 795 | fabric->lps->pr_pwwn; |
| 863 | bfa_sm_send_event(fabric, BFA_FCS_FABRIC_SM_NO_FABRIC); | 796 | bfa_sm_send_event(fabric, BFA_FCS_FABRIC_SM_NO_FABRIC); |
| 864 | } | 797 | } |
| 865 | 798 | ||
| @@ -1038,23 +971,6 @@ bfa_fcs_fabric_modstart(struct bfa_fcs_s *fcs) | |||
| 1038 | bfa_sm_send_event(fabric, BFA_FCS_FABRIC_SM_START); | 971 | bfa_sm_send_event(fabric, BFA_FCS_FABRIC_SM_START); |
| 1039 | } | 972 | } |
| 1040 | 973 | ||
| 1041 | bfa_boolean_t | ||
| 1042 | bfa_fcs_fabric_is_loopback(struct bfa_fcs_fabric_s *fabric) | ||
| 1043 | { | ||
| 1044 | return bfa_sm_cmp_state(fabric, bfa_fcs_fabric_sm_loopback); | ||
| 1045 | } | ||
| 1046 | |||
| 1047 | bfa_boolean_t | ||
| 1048 | bfa_fcs_fabric_is_auth_failed(struct bfa_fcs_fabric_s *fabric) | ||
| 1049 | { | ||
| 1050 | return bfa_sm_cmp_state(fabric, bfa_fcs_fabric_sm_auth_failed); | ||
| 1051 | } | ||
| 1052 | |||
| 1053 | enum bfa_port_type | ||
| 1054 | bfa_fcs_fabric_port_type(struct bfa_fcs_fabric_s *fabric) | ||
| 1055 | { | ||
| 1056 | return fabric->oper_type; | ||
| 1057 | } | ||
| 1058 | 974 | ||
| 1059 | /* | 975 | /* |
| 1060 | * Link up notification from BFA physical port module. | 976 | * Link up notification from BFA physical port module. |
| @@ -1115,28 +1031,6 @@ bfa_fcs_fabric_delvport(struct bfa_fcs_fabric_s *fabric, | |||
| 1115 | bfa_wc_down(&fabric->wc); | 1031 | bfa_wc_down(&fabric->wc); |
| 1116 | } | 1032 | } |
| 1117 | 1033 | ||
| 1118 | /* | ||
| 1119 | * Base port is deleted. | ||
| 1120 | */ | ||
| 1121 | void | ||
| 1122 | bfa_fcs_fabric_port_delete_comp(struct bfa_fcs_fabric_s *fabric) | ||
| 1123 | { | ||
| 1124 | bfa_wc_down(&fabric->wc); | ||
| 1125 | } | ||
| 1126 | |||
| 1127 | |||
| 1128 | /* | ||
| 1129 | * Check if fabric is online. | ||
| 1130 | * | ||
| 1131 | * param[in] fabric - Fabric instance. This can be a base fabric or vf. | ||
| 1132 | * | ||
| 1133 | * @return TRUE/FALSE | ||
| 1134 | */ | ||
| 1135 | int | ||
| 1136 | bfa_fcs_fabric_is_online(struct bfa_fcs_fabric_s *fabric) | ||
| 1137 | { | ||
| 1138 | return bfa_sm_cmp_state(fabric, bfa_fcs_fabric_sm_online); | ||
| 1139 | } | ||
| 1140 | 1034 | ||
| 1141 | /* | 1035 | /* |
| 1142 | * Lookup for a vport withing a fabric given its pwwn | 1036 | * Lookup for a vport withing a fabric given its pwwn |
| @@ -1156,18 +1050,6 @@ bfa_fcs_fabric_vport_lookup(struct bfa_fcs_fabric_s *fabric, wwn_t pwwn) | |||
| 1156 | return NULL; | 1050 | return NULL; |
| 1157 | } | 1051 | } |
| 1158 | 1052 | ||
| 1159 | /* | ||
| 1160 | * In a given fabric, return the number of lports. | ||
| 1161 | * | ||
| 1162 | * param[in] fabric - Fabric instance. This can be a base fabric or vf. | ||
| 1163 | * | ||
| 1164 | * @return : 1 or more. | ||
| 1165 | */ | ||
| 1166 | u16 | ||
| 1167 | bfa_fcs_fabric_vport_count(struct bfa_fcs_fabric_s *fabric) | ||
| 1168 | { | ||
| 1169 | return fabric->num_vports; | ||
| 1170 | } | ||
| 1171 | 1053 | ||
| 1172 | /* | 1054 | /* |
| 1173 | * Get OUI of the attached switch. | 1055 | * Get OUI of the attached switch. |
| @@ -1187,7 +1069,7 @@ bfa_fcs_fabric_get_switch_oui(struct bfa_fcs_fabric_s *fabric) | |||
| 1187 | u8 *tmp; | 1069 | u8 *tmp; |
| 1188 | u16 oui; | 1070 | u16 oui; |
| 1189 | 1071 | ||
| 1190 | fab_nwwn = bfa_lps_get_peer_nwwn(fabric->lps); | 1072 | fab_nwwn = fabric->lps->pr_nwwn; |
| 1191 | 1073 | ||
| 1192 | tmp = (u8 *)&fab_nwwn; | 1074 | tmp = (u8 *)&fab_nwwn; |
| 1193 | oui = (tmp[3] << 8) | tmp[4]; | 1075 | oui = (tmp[3] << 8) | tmp[4]; |
| @@ -1344,7 +1226,7 @@ bfa_fcs_fabric_send_flogi_acc(struct bfa_fcs_fabric_s *fabric) | |||
| 1344 | bfa_fcport_get_maxfrsize(bfa), | 1226 | bfa_fcport_get_maxfrsize(bfa), |
| 1345 | bfa_fcport_get_rx_bbcredit(bfa)); | 1227 | bfa_fcport_get_rx_bbcredit(bfa)); |
| 1346 | 1228 | ||
| 1347 | bfa_fcxp_send(fcxp, NULL, fabric->vf_id, bfa_lps_get_tag(fabric->lps), | 1229 | bfa_fcxp_send(fcxp, NULL, fabric->vf_id, fabric->lps->lp_tag, |
| 1348 | BFA_FALSE, FC_CLASS_3, | 1230 | BFA_FALSE, FC_CLASS_3, |
| 1349 | reqlen, &fchs, bfa_fcs_fabric_flogiacc_comp, fabric, | 1231 | reqlen, &fchs, bfa_fcs_fabric_flogiacc_comp, fabric, |
| 1350 | FC_MAX_PDUSZ, 0); | 1232 | FC_MAX_PDUSZ, 0); |
diff --git a/drivers/scsi/bfa/bfa_fcs.h b/drivers/scsi/bfa/bfa_fcs.h index fcb54e5ef33..e7977ee3299 100644 --- a/drivers/scsi/bfa/bfa_fcs.h +++ b/drivers/scsi/bfa/bfa_fcs.h | |||
| @@ -27,6 +27,21 @@ | |||
| 27 | #define BFA_FCS_OS_STR_LEN 64 | 27 | #define BFA_FCS_OS_STR_LEN 64 |
| 28 | 28 | ||
| 29 | /* | 29 | /* |
| 30 | * lps_pvt BFA LPS private functions | ||
| 31 | */ | ||
| 32 | |||
| 33 | enum bfa_lps_event { | ||
| 34 | BFA_LPS_SM_LOGIN = 1, /* login request from user */ | ||
| 35 | BFA_LPS_SM_LOGOUT = 2, /* logout request from user */ | ||
| 36 | BFA_LPS_SM_FWRSP = 3, /* f/w response to login/logout */ | ||
| 37 | BFA_LPS_SM_RESUME = 4, /* space present in reqq queue */ | ||
| 38 | BFA_LPS_SM_DELETE = 5, /* lps delete from user */ | ||
| 39 | BFA_LPS_SM_OFFLINE = 6, /* Link is offline */ | ||
| 40 | BFA_LPS_SM_RX_CVL = 7, /* Rx clear virtual link */ | ||
| 41 | }; | ||
| 42 | |||
| 43 | |||
| 44 | /* | ||
| 30 | * !!! Only append to the enums defined here to avoid any versioning | 45 | * !!! Only append to the enums defined here to avoid any versioning |
| 31 | * !!! needed between trace utility and driver version | 46 | * !!! needed between trace utility and driver version |
| 32 | */ | 47 | */ |
| @@ -41,7 +56,6 @@ enum { | |||
| 41 | struct bfa_fcs_s; | 56 | struct bfa_fcs_s; |
| 42 | 57 | ||
| 43 | #define __fcs_min_cfg(__fcs) ((__fcs)->min_cfg) | 58 | #define __fcs_min_cfg(__fcs) ((__fcs)->min_cfg) |
| 44 | void bfa_fcs_modexit_comp(struct bfa_fcs_s *fcs); | ||
| 45 | 59 | ||
| 46 | #define BFA_FCS_BRCD_SWITCH_OUI 0x051e | 60 | #define BFA_FCS_BRCD_SWITCH_OUI 0x051e |
| 47 | #define N2N_LOCAL_PID 0x010000 | 61 | #define N2N_LOCAL_PID 0x010000 |
| @@ -444,9 +458,6 @@ void bfa_fcs_rport_scn(struct bfa_fcs_rport_s *rport); | |||
| 444 | 458 | ||
| 445 | struct bfa_fcs_rport_s *bfa_fcs_rport_create(struct bfa_fcs_lport_s *port, | 459 | struct bfa_fcs_rport_s *bfa_fcs_rport_create(struct bfa_fcs_lport_s *port, |
| 446 | u32 pid); | 460 | u32 pid); |
| 447 | void bfa_fcs_rport_delete(struct bfa_fcs_rport_s *rport); | ||
| 448 | void bfa_fcs_rport_online(struct bfa_fcs_rport_s *rport); | ||
| 449 | void bfa_fcs_rport_offline(struct bfa_fcs_rport_s *rport); | ||
| 450 | void bfa_fcs_rport_start(struct bfa_fcs_lport_s *port, struct fchs_s *rx_fchs, | 461 | void bfa_fcs_rport_start(struct bfa_fcs_lport_s *port, struct fchs_s *rx_fchs, |
| 451 | struct fc_logi_s *plogi_rsp); | 462 | struct fc_logi_s *plogi_rsp); |
| 452 | void bfa_fcs_rport_plogi_create(struct bfa_fcs_lport_s *port, | 463 | void bfa_fcs_rport_plogi_create(struct bfa_fcs_lport_s *port, |
| @@ -454,10 +465,8 @@ void bfa_fcs_rport_plogi_create(struct bfa_fcs_lport_s *port, | |||
| 454 | struct fc_logi_s *plogi); | 465 | struct fc_logi_s *plogi); |
| 455 | void bfa_fcs_rport_plogi(struct bfa_fcs_rport_s *rport, struct fchs_s *fchs, | 466 | void bfa_fcs_rport_plogi(struct bfa_fcs_rport_s *rport, struct fchs_s *fchs, |
| 456 | struct fc_logi_s *plogi); | 467 | struct fc_logi_s *plogi); |
| 457 | void bfa_fcs_rport_logo_imp(struct bfa_fcs_rport_s *rport); | ||
| 458 | void bfa_fcs_rport_prlo(struct bfa_fcs_rport_s *rport, __be16 ox_id); | 468 | void bfa_fcs_rport_prlo(struct bfa_fcs_rport_s *rport, __be16 ox_id); |
| 459 | 469 | ||
| 460 | void bfa_fcs_rport_itnim_ack(struct bfa_fcs_rport_s *rport); | ||
| 461 | void bfa_fcs_rport_itntm_ack(struct bfa_fcs_rport_s *rport); | 470 | void bfa_fcs_rport_itntm_ack(struct bfa_fcs_rport_s *rport); |
| 462 | void bfa_fcs_rport_fcptm_offline_done(struct bfa_fcs_rport_s *rport); | 471 | void bfa_fcs_rport_fcptm_offline_done(struct bfa_fcs_rport_s *rport); |
| 463 | int bfa_fcs_rport_get_state(struct bfa_fcs_rport_s *rport); | 472 | int bfa_fcs_rport_get_state(struct bfa_fcs_rport_s *rport); |
| @@ -648,6 +657,57 @@ struct bfa_fcs_s { | |||
| 648 | }; | 657 | }; |
| 649 | 658 | ||
| 650 | /* | 659 | /* |
| 660 | * fcs_fabric_sm fabric state machine functions | ||
| 661 | */ | ||
| 662 | |||
| 663 | /* | ||
| 664 | * Fabric state machine events | ||
| 665 | */ | ||
| 666 | enum bfa_fcs_fabric_event { | ||
| 667 | BFA_FCS_FABRIC_SM_CREATE = 1, /* create from driver */ | ||
| 668 | BFA_FCS_FABRIC_SM_DELETE = 2, /* delete from driver */ | ||
| 669 | BFA_FCS_FABRIC_SM_LINK_DOWN = 3, /* link down from port */ | ||
| 670 | BFA_FCS_FABRIC_SM_LINK_UP = 4, /* link up from port */ | ||
| 671 | BFA_FCS_FABRIC_SM_CONT_OP = 5, /* flogi/auth continue op */ | ||
| 672 | BFA_FCS_FABRIC_SM_RETRY_OP = 6, /* flogi/auth retry op */ | ||
| 673 | BFA_FCS_FABRIC_SM_NO_FABRIC = 7, /* from flogi/auth */ | ||
| 674 | BFA_FCS_FABRIC_SM_PERF_EVFP = 8, /* from flogi/auth */ | ||
| 675 | BFA_FCS_FABRIC_SM_ISOLATE = 9, /* from EVFP processing */ | ||
| 676 | BFA_FCS_FABRIC_SM_NO_TAGGING = 10, /* no VFT tagging from EVFP */ | ||
| 677 | BFA_FCS_FABRIC_SM_DELAYED = 11, /* timeout delay event */ | ||
| 678 | BFA_FCS_FABRIC_SM_AUTH_FAILED = 12, /* auth failed */ | ||
| 679 | BFA_FCS_FABRIC_SM_AUTH_SUCCESS = 13, /* auth successful */ | ||
| 680 | BFA_FCS_FABRIC_SM_DELCOMP = 14, /* all vports deleted event */ | ||
| 681 | BFA_FCS_FABRIC_SM_LOOPBACK = 15, /* Received our own FLOGI */ | ||
| 682 | BFA_FCS_FABRIC_SM_START = 16, /* from driver */ | ||
| 683 | }; | ||
| 684 | |||
| 685 | /* | ||
| 686 | * fcs_rport_sm FCS rport state machine events | ||
| 687 | */ | ||
| 688 | |||
| 689 | enum rport_event { | ||
| 690 | RPSM_EVENT_PLOGI_SEND = 1, /* new rport; start with PLOGI */ | ||
| 691 | RPSM_EVENT_PLOGI_RCVD = 2, /* Inbound PLOGI from remote port */ | ||
| 692 | RPSM_EVENT_PLOGI_COMP = 3, /* PLOGI completed to rport */ | ||
| 693 | RPSM_EVENT_LOGO_RCVD = 4, /* LOGO from remote device */ | ||
| 694 | RPSM_EVENT_LOGO_IMP = 5, /* implicit logo for SLER */ | ||
| 695 | RPSM_EVENT_FCXP_SENT = 6, /* Frame from has been sent */ | ||
| 696 | RPSM_EVENT_DELETE = 7, /* RPORT delete request */ | ||
| 697 | RPSM_EVENT_SCN = 8, /* state change notification */ | ||
| 698 | RPSM_EVENT_ACCEPTED = 9, /* Good response from remote device */ | ||
| 699 | RPSM_EVENT_FAILED = 10, /* Request to rport failed. */ | ||
| 700 | RPSM_EVENT_TIMEOUT = 11, /* Rport SM timeout event */ | ||
| 701 | RPSM_EVENT_HCB_ONLINE = 12, /* BFA rport online callback */ | ||
| 702 | RPSM_EVENT_HCB_OFFLINE = 13, /* BFA rport offline callback */ | ||
| 703 | RPSM_EVENT_FC4_OFFLINE = 14, /* FC-4 offline complete */ | ||
| 704 | RPSM_EVENT_ADDRESS_CHANGE = 15, /* Rport's PID has changed */ | ||
| 705 | RPSM_EVENT_ADDRESS_DISC = 16, /* Need to Discover rport's PID */ | ||
| 706 | RPSM_EVENT_PRLO_RCVD = 17, /* PRLO from remote device */ | ||
| 707 | RPSM_EVENT_PLOGI_RETRY = 18, /* Retry PLOGI continously */ | ||
| 708 | }; | ||
| 709 | |||
| 710 | /* | ||
| 651 | * bfa fcs API functions | 711 | * bfa fcs API functions |
| 652 | */ | 712 | */ |
| 653 | void bfa_fcs_attach(struct bfa_fcs_s *fcs, struct bfa_s *bfa, | 713 | void bfa_fcs_attach(struct bfa_fcs_s *fcs, struct bfa_s *bfa, |
| @@ -656,16 +716,12 @@ void bfa_fcs_attach(struct bfa_fcs_s *fcs, struct bfa_s *bfa, | |||
| 656 | void bfa_fcs_init(struct bfa_fcs_s *fcs); | 716 | void bfa_fcs_init(struct bfa_fcs_s *fcs); |
| 657 | void bfa_fcs_driver_info_init(struct bfa_fcs_s *fcs, | 717 | void bfa_fcs_driver_info_init(struct bfa_fcs_s *fcs, |
| 658 | struct bfa_fcs_driver_info_s *driver_info); | 718 | struct bfa_fcs_driver_info_s *driver_info); |
| 659 | void bfa_fcs_set_fdmi_param(struct bfa_fcs_s *fcs, bfa_boolean_t fdmi_enable); | ||
| 660 | void bfa_fcs_exit(struct bfa_fcs_s *fcs); | 719 | void bfa_fcs_exit(struct bfa_fcs_s *fcs); |
| 661 | void bfa_fcs_trc_init(struct bfa_fcs_s *fcs, struct bfa_trc_mod_s *trcmod); | ||
| 662 | void bfa_fcs_start(struct bfa_fcs_s *fcs); | ||
| 663 | 720 | ||
| 664 | /* | 721 | /* |
| 665 | * bfa fcs vf public functions | 722 | * bfa fcs vf public functions |
| 666 | */ | 723 | */ |
| 667 | bfa_fcs_vf_t *bfa_fcs_vf_lookup(struct bfa_fcs_s *fcs, u16 vf_id); | 724 | bfa_fcs_vf_t *bfa_fcs_vf_lookup(struct bfa_fcs_s *fcs, u16 vf_id); |
| 668 | u16 bfa_fcs_fabric_vport_count(struct bfa_fcs_fabric_s *fabric); | ||
| 669 | 725 | ||
| 670 | /* | 726 | /* |
| 671 | * fabric protected interface functions | 727 | * fabric protected interface functions |
| @@ -679,22 +735,23 @@ void bfa_fcs_fabric_addvport(struct bfa_fcs_fabric_s *fabric, | |||
| 679 | struct bfa_fcs_vport_s *vport); | 735 | struct bfa_fcs_vport_s *vport); |
| 680 | void bfa_fcs_fabric_delvport(struct bfa_fcs_fabric_s *fabric, | 736 | void bfa_fcs_fabric_delvport(struct bfa_fcs_fabric_s *fabric, |
| 681 | struct bfa_fcs_vport_s *vport); | 737 | struct bfa_fcs_vport_s *vport); |
| 682 | int bfa_fcs_fabric_is_online(struct bfa_fcs_fabric_s *fabric); | ||
| 683 | struct bfa_fcs_vport_s *bfa_fcs_fabric_vport_lookup( | 738 | struct bfa_fcs_vport_s *bfa_fcs_fabric_vport_lookup( |
| 684 | struct bfa_fcs_fabric_s *fabric, wwn_t pwwn); | 739 | struct bfa_fcs_fabric_s *fabric, wwn_t pwwn); |
| 685 | void bfa_fcs_fabric_modstart(struct bfa_fcs_s *fcs); | 740 | void bfa_fcs_fabric_modstart(struct bfa_fcs_s *fcs); |
| 686 | void bfa_fcs_fabric_uf_recv(struct bfa_fcs_fabric_s *fabric, | 741 | void bfa_fcs_fabric_uf_recv(struct bfa_fcs_fabric_s *fabric, |
| 687 | struct fchs_s *fchs, u16 len); | 742 | struct fchs_s *fchs, u16 len); |
| 688 | bfa_boolean_t bfa_fcs_fabric_is_loopback(struct bfa_fcs_fabric_s *fabric); | ||
| 689 | bfa_boolean_t bfa_fcs_fabric_is_auth_failed(struct bfa_fcs_fabric_s *fabric); | ||
| 690 | enum bfa_port_type bfa_fcs_fabric_port_type(struct bfa_fcs_fabric_s *fabric); | ||
| 691 | void bfa_fcs_fabric_psymb_init(struct bfa_fcs_fabric_s *fabric); | 743 | void bfa_fcs_fabric_psymb_init(struct bfa_fcs_fabric_s *fabric); |
| 692 | void bfa_fcs_fabric_port_delete_comp(struct bfa_fcs_fabric_s *fabric); | ||
| 693 | void bfa_fcs_fabric_set_fabric_name(struct bfa_fcs_fabric_s *fabric, | 744 | void bfa_fcs_fabric_set_fabric_name(struct bfa_fcs_fabric_s *fabric, |
| 694 | wwn_t fabric_name); | 745 | wwn_t fabric_name); |
| 695 | u16 bfa_fcs_fabric_get_switch_oui(struct bfa_fcs_fabric_s *fabric); | 746 | u16 bfa_fcs_fabric_get_switch_oui(struct bfa_fcs_fabric_s *fabric); |
| 696 | void bfa_fcs_uf_attach(struct bfa_fcs_s *fcs); | 747 | void bfa_fcs_uf_attach(struct bfa_fcs_s *fcs); |
| 697 | void bfa_fcs_port_attach(struct bfa_fcs_s *fcs); | 748 | void bfa_fcs_port_attach(struct bfa_fcs_s *fcs); |
| 749 | void bfa_fcs_fabric_sm_online(struct bfa_fcs_fabric_s *fabric, | ||
| 750 | enum bfa_fcs_fabric_event event); | ||
| 751 | void bfa_fcs_fabric_sm_loopback(struct bfa_fcs_fabric_s *fabric, | ||
| 752 | enum bfa_fcs_fabric_event event); | ||
| 753 | void bfa_fcs_fabric_sm_auth_failed(struct bfa_fcs_fabric_s *fabric, | ||
| 754 | enum bfa_fcs_fabric_event event); | ||
| 698 | 755 | ||
| 699 | /* | 756 | /* |
| 700 | * BFA FCS callback interfaces | 757 | * BFA FCS callback interfaces |
diff --git a/drivers/scsi/bfa/bfa_fcs_fcpim.c b/drivers/scsi/bfa/bfa_fcs_fcpim.c index 413b58eef93..82ac2798c54 100644 --- a/drivers/scsi/bfa/bfa_fcs_fcpim.c +++ b/drivers/scsi/bfa/bfa_fcs_fcpim.c | |||
| @@ -103,7 +103,7 @@ bfa_fcs_itnim_sm_offline(struct bfa_fcs_itnim_s *itnim, | |||
| 103 | break; | 103 | break; |
| 104 | 104 | ||
| 105 | case BFA_FCS_ITNIM_SM_OFFLINE: | 105 | case BFA_FCS_ITNIM_SM_OFFLINE: |
| 106 | bfa_fcs_rport_itnim_ack(itnim->rport); | 106 | bfa_sm_send_event(itnim->rport, RPSM_EVENT_FC4_OFFLINE); |
| 107 | break; | 107 | break; |
| 108 | 108 | ||
| 109 | case BFA_FCS_ITNIM_SM_INITIATOR: | 109 | case BFA_FCS_ITNIM_SM_INITIATOR: |
| @@ -140,7 +140,7 @@ bfa_fcs_itnim_sm_prli_send(struct bfa_fcs_itnim_s *itnim, | |||
| 140 | case BFA_FCS_ITNIM_SM_OFFLINE: | 140 | case BFA_FCS_ITNIM_SM_OFFLINE: |
| 141 | bfa_sm_set_state(itnim, bfa_fcs_itnim_sm_offline); | 141 | bfa_sm_set_state(itnim, bfa_fcs_itnim_sm_offline); |
| 142 | bfa_fcxp_walloc_cancel(itnim->fcs->bfa, &itnim->fcxp_wqe); | 142 | bfa_fcxp_walloc_cancel(itnim->fcs->bfa, &itnim->fcxp_wqe); |
| 143 | bfa_fcs_rport_itnim_ack(itnim->rport); | 143 | bfa_sm_send_event(itnim->rport, RPSM_EVENT_FC4_OFFLINE); |
| 144 | break; | 144 | break; |
| 145 | 145 | ||
| 146 | case BFA_FCS_ITNIM_SM_DELETE: | 146 | case BFA_FCS_ITNIM_SM_DELETE: |
| @@ -181,7 +181,7 @@ bfa_fcs_itnim_sm_prli(struct bfa_fcs_itnim_s *itnim, | |||
| 181 | case BFA_FCS_ITNIM_SM_OFFLINE: | 181 | case BFA_FCS_ITNIM_SM_OFFLINE: |
| 182 | bfa_sm_set_state(itnim, bfa_fcs_itnim_sm_offline); | 182 | bfa_sm_set_state(itnim, bfa_fcs_itnim_sm_offline); |
| 183 | bfa_fcxp_discard(itnim->fcxp); | 183 | bfa_fcxp_discard(itnim->fcxp); |
| 184 | bfa_fcs_rport_itnim_ack(itnim->rport); | 184 | bfa_sm_send_event(itnim->rport, RPSM_EVENT_FC4_OFFLINE); |
| 185 | break; | 185 | break; |
| 186 | 186 | ||
| 187 | case BFA_FCS_ITNIM_SM_INITIATOR: | 187 | case BFA_FCS_ITNIM_SM_INITIATOR: |
| @@ -217,7 +217,7 @@ bfa_fcs_itnim_sm_prli_retry(struct bfa_fcs_itnim_s *itnim, | |||
| 217 | } else { | 217 | } else { |
| 218 | /* invoke target offline */ | 218 | /* invoke target offline */ |
| 219 | bfa_sm_set_state(itnim, bfa_fcs_itnim_sm_offline); | 219 | bfa_sm_set_state(itnim, bfa_fcs_itnim_sm_offline); |
| 220 | bfa_fcs_rport_logo_imp(itnim->rport); | 220 | bfa_sm_send_event(itnim->rport, RPSM_EVENT_LOGO_IMP); |
| 221 | } | 221 | } |
| 222 | break; | 222 | break; |
| 223 | 223 | ||
| @@ -225,7 +225,7 @@ bfa_fcs_itnim_sm_prli_retry(struct bfa_fcs_itnim_s *itnim, | |||
| 225 | case BFA_FCS_ITNIM_SM_OFFLINE: | 225 | case BFA_FCS_ITNIM_SM_OFFLINE: |
| 226 | bfa_sm_set_state(itnim, bfa_fcs_itnim_sm_offline); | 226 | bfa_sm_set_state(itnim, bfa_fcs_itnim_sm_offline); |
| 227 | bfa_timer_stop(&itnim->timer); | 227 | bfa_timer_stop(&itnim->timer); |
| 228 | bfa_fcs_rport_itnim_ack(itnim->rport); | 228 | bfa_sm_send_event(itnim->rport, RPSM_EVENT_FC4_OFFLINE); |
| 229 | break; | 229 | break; |
| 230 | 230 | ||
| 231 | case BFA_FCS_ITNIM_SM_INITIATOR: | 231 | case BFA_FCS_ITNIM_SM_INITIATOR: |
| @@ -269,7 +269,7 @@ bfa_fcs_itnim_sm_hcb_online(struct bfa_fcs_itnim_s *itnim, | |||
| 269 | case BFA_FCS_ITNIM_SM_OFFLINE: | 269 | case BFA_FCS_ITNIM_SM_OFFLINE: |
| 270 | bfa_sm_set_state(itnim, bfa_fcs_itnim_sm_offline); | 270 | bfa_sm_set_state(itnim, bfa_fcs_itnim_sm_offline); |
| 271 | bfa_itnim_offline(itnim->bfa_itnim); | 271 | bfa_itnim_offline(itnim->bfa_itnim); |
| 272 | bfa_fcs_rport_itnim_ack(itnim->rport); | 272 | bfa_sm_send_event(itnim->rport, RPSM_EVENT_FC4_OFFLINE); |
| 273 | break; | 273 | break; |
| 274 | 274 | ||
| 275 | case BFA_FCS_ITNIM_SM_DELETE: | 275 | case BFA_FCS_ITNIM_SM_DELETE: |
| @@ -330,7 +330,7 @@ bfa_fcs_itnim_sm_hcb_offline(struct bfa_fcs_itnim_s *itnim, | |||
| 330 | switch (event) { | 330 | switch (event) { |
| 331 | case BFA_FCS_ITNIM_SM_HCB_OFFLINE: | 331 | case BFA_FCS_ITNIM_SM_HCB_OFFLINE: |
| 332 | bfa_sm_set_state(itnim, bfa_fcs_itnim_sm_offline); | 332 | bfa_sm_set_state(itnim, bfa_fcs_itnim_sm_offline); |
| 333 | bfa_fcs_rport_itnim_ack(itnim->rport); | 333 | bfa_sm_send_event(itnim->rport, RPSM_EVENT_FC4_OFFLINE); |
| 334 | break; | 334 | break; |
| 335 | 335 | ||
| 336 | case BFA_FCS_ITNIM_SM_DELETE: | 336 | case BFA_FCS_ITNIM_SM_DELETE: |
| @@ -358,7 +358,7 @@ bfa_fcs_itnim_sm_initiator(struct bfa_fcs_itnim_s *itnim, | |||
| 358 | switch (event) { | 358 | switch (event) { |
| 359 | case BFA_FCS_ITNIM_SM_OFFLINE: | 359 | case BFA_FCS_ITNIM_SM_OFFLINE: |
| 360 | bfa_sm_set_state(itnim, bfa_fcs_itnim_sm_offline); | 360 | bfa_sm_set_state(itnim, bfa_fcs_itnim_sm_offline); |
| 361 | bfa_fcs_rport_itnim_ack(itnim->rport); | 361 | bfa_sm_send_event(itnim->rport, RPSM_EVENT_FC4_OFFLINE); |
| 362 | break; | 362 | break; |
| 363 | 363 | ||
| 364 | case BFA_FCS_ITNIM_SM_RSP_ERROR: | 364 | case BFA_FCS_ITNIM_SM_RSP_ERROR: |
| @@ -688,7 +688,7 @@ bfa_cb_itnim_sler(void *cb_arg) | |||
| 688 | 688 | ||
| 689 | itnim->stats.sler++; | 689 | itnim->stats.sler++; |
| 690 | bfa_trc(itnim->fcs, itnim->rport->pwwn); | 690 | bfa_trc(itnim->fcs, itnim->rport->pwwn); |
| 691 | bfa_fcs_rport_logo_imp(itnim->rport); | 691 | bfa_sm_send_event(itnim->rport, RPSM_EVENT_LOGO_IMP); |
| 692 | } | 692 | } |
| 693 | 693 | ||
| 694 | struct bfa_fcs_itnim_s * | 694 | struct bfa_fcs_itnim_s * |
diff --git a/drivers/scsi/bfa/bfa_fcs_lport.c b/drivers/scsi/bfa/bfa_fcs_lport.c index bd0c093fca6..6e9151fecb7 100644 --- a/drivers/scsi/bfa/bfa_fcs_lport.c +++ b/drivers/scsi/bfa/bfa_fcs_lport.c | |||
| @@ -159,7 +159,7 @@ bfa_fcs_lport_sm_online( | |||
| 159 | bfa_sm_set_state(port, bfa_fcs_lport_sm_deleting); | 159 | bfa_sm_set_state(port, bfa_fcs_lport_sm_deleting); |
| 160 | list_for_each_safe(qe, qen, &port->rport_q) { | 160 | list_for_each_safe(qe, qen, &port->rport_q) { |
| 161 | rport = (struct bfa_fcs_rport_s *) qe; | 161 | rport = (struct bfa_fcs_rport_s *) qe; |
| 162 | bfa_fcs_rport_delete(rport); | 162 | bfa_sm_send_event(rport, RPSM_EVENT_DELETE); |
| 163 | } | 163 | } |
| 164 | } | 164 | } |
| 165 | break; | 165 | break; |
| @@ -197,7 +197,7 @@ bfa_fcs_lport_sm_offline( | |||
| 197 | bfa_sm_set_state(port, bfa_fcs_lport_sm_deleting); | 197 | bfa_sm_set_state(port, bfa_fcs_lport_sm_deleting); |
| 198 | list_for_each_safe(qe, qen, &port->rport_q) { | 198 | list_for_each_safe(qe, qen, &port->rport_q) { |
| 199 | rport = (struct bfa_fcs_rport_s *) qe; | 199 | rport = (struct bfa_fcs_rport_s *) qe; |
| 200 | bfa_fcs_rport_delete(rport); | 200 | bfa_sm_send_event(rport, RPSM_EVENT_DELETE); |
| 201 | } | 201 | } |
| 202 | } | 202 | } |
| 203 | break; | 203 | break; |
| @@ -350,7 +350,7 @@ bfa_fcs_lport_plogi(struct bfa_fcs_lport_s *port, | |||
| 350 | * disappeared. Send implicit LOGO to old device. | 350 | * disappeared. Send implicit LOGO to old device. |
| 351 | */ | 351 | */ |
| 352 | bfa_assert(rport->pwwn != plogi->port_name); | 352 | bfa_assert(rport->pwwn != plogi->port_name); |
| 353 | bfa_fcs_rport_logo_imp(rport); | 353 | bfa_sm_send_event(rport, RPSM_EVENT_LOGO_IMP); |
| 354 | 354 | ||
| 355 | /* | 355 | /* |
| 356 | * Inbound PLOGI from a new device (with old PID). | 356 | * Inbound PLOGI from a new device (with old PID). |
| @@ -511,7 +511,8 @@ bfa_fcs_lport_offline_actions(struct bfa_fcs_lport_s *port) | |||
| 511 | __port_action[port->fabric->fab_type].offline(port); | 511 | __port_action[port->fabric->fab_type].offline(port); |
| 512 | 512 | ||
| 513 | wwn2str(lpwwn_buf, bfa_fcs_lport_get_pwwn(port)); | 513 | wwn2str(lpwwn_buf, bfa_fcs_lport_get_pwwn(port)); |
| 514 | if (bfa_fcs_fabric_is_online(port->fabric) == BFA_TRUE) | 514 | if (bfa_sm_cmp_state(port->fabric, |
| 515 | bfa_fcs_fabric_sm_online) == BFA_TRUE) | ||
| 515 | BFA_LOG(KERN_ERR, bfad, bfa_log_level, | 516 | BFA_LOG(KERN_ERR, bfad, bfa_log_level, |
| 516 | "Logical port lost fabric connectivity: WWN = %s Role = %s\n", | 517 | "Logical port lost fabric connectivity: WWN = %s Role = %s\n", |
| 517 | lpwwn_buf, "Initiator"); | 518 | lpwwn_buf, "Initiator"); |
| @@ -522,7 +523,7 @@ bfa_fcs_lport_offline_actions(struct bfa_fcs_lport_s *port) | |||
| 522 | 523 | ||
| 523 | list_for_each_safe(qe, qen, &port->rport_q) { | 524 | list_for_each_safe(qe, qen, &port->rport_q) { |
| 524 | rport = (struct bfa_fcs_rport_s *) qe; | 525 | rport = (struct bfa_fcs_rport_s *) qe; |
| 525 | bfa_fcs_rport_offline(rport); | 526 | bfa_sm_send_event(rport, RPSM_EVENT_LOGO_IMP); |
| 526 | } | 527 | } |
| 527 | } | 528 | } |
| 528 | 529 | ||
| @@ -584,7 +585,7 @@ bfa_fcs_lport_deleted(struct bfa_fcs_lport_s *port) | |||
| 584 | port->vport ? port->vport->vport_drv : NULL); | 585 | port->vport ? port->vport->vport_drv : NULL); |
| 585 | bfa_fcs_vport_delete_comp(port->vport); | 586 | bfa_fcs_vport_delete_comp(port->vport); |
| 586 | } else { | 587 | } else { |
| 587 | bfa_fcs_fabric_port_delete_comp(port->fabric); | 588 | bfa_wc_down(&port->fabric->wc); |
| 588 | } | 589 | } |
| 589 | } | 590 | } |
| 590 | 591 | ||
| @@ -828,8 +829,8 @@ bfa_fcs_lport_attach(struct bfa_fcs_lport_s *lport, struct bfa_fcs_s *fcs, | |||
| 828 | lport->fcs = fcs; | 829 | lport->fcs = fcs; |
| 829 | lport->fabric = bfa_fcs_vf_lookup(fcs, vf_id); | 830 | lport->fabric = bfa_fcs_vf_lookup(fcs, vf_id); |
| 830 | lport->vport = vport; | 831 | lport->vport = vport; |
| 831 | lport->lp_tag = (vport) ? bfa_lps_get_tag(vport->lps) : | 832 | lport->lp_tag = (vport) ? vport->lps->lp_tag : |
| 832 | bfa_lps_get_tag(lport->fabric->lps); | 833 | lport->fabric->lps->lp_tag; |
| 833 | 834 | ||
| 834 | INIT_LIST_HEAD(&lport->rport_q); | 835 | INIT_LIST_HEAD(&lport->rport_q); |
| 835 | lport->num_rports = 0; | 836 | lport->num_rports = 0; |
| @@ -881,10 +882,11 @@ bfa_fcs_lport_get_attr( | |||
| 881 | port_attr->port_cfg = port->port_cfg; | 882 | port_attr->port_cfg = port->port_cfg; |
| 882 | 883 | ||
| 883 | if (port->fabric) { | 884 | if (port->fabric) { |
| 884 | port_attr->port_type = bfa_fcs_fabric_port_type(port->fabric); | 885 | port_attr->port_type = port->fabric->oper_type; |
| 885 | port_attr->loopback = bfa_fcs_fabric_is_loopback(port->fabric); | 886 | port_attr->loopback = bfa_sm_cmp_state(port->fabric, bfa_fcs_fabric_sm_loopback); |
| 886 | port_attr->authfail = | 887 | port_attr->authfail = |
| 887 | bfa_fcs_fabric_is_auth_failed(port->fabric); | 888 | bfa_sm_cmp_state(port->fabric, |
| 889 | bfa_fcs_fabric_sm_auth_failed); | ||
| 888 | port_attr->fabric_name = bfa_fcs_lport_get_fabric_name(port); | 890 | port_attr->fabric_name = bfa_fcs_lport_get_fabric_name(port); |
| 889 | memcpy(port_attr->fabric_ip_addr, | 891 | memcpy(port_attr->fabric_ip_addr, |
| 890 | bfa_fcs_lport_get_fabric_ipaddr(port), | 892 | bfa_fcs_lport_get_fabric_ipaddr(port), |
| @@ -893,10 +895,10 @@ bfa_fcs_lport_get_attr( | |||
| 893 | if (port->vport != NULL) { | 895 | if (port->vport != NULL) { |
| 894 | port_attr->port_type = BFA_PORT_TYPE_VPORT; | 896 | port_attr->port_type = BFA_PORT_TYPE_VPORT; |
| 895 | port_attr->fpma_mac = | 897 | port_attr->fpma_mac = |
| 896 | bfa_lps_get_lp_mac(port->vport->lps); | 898 | port->vport->lps->lp_mac; |
| 897 | } else { | 899 | } else { |
| 898 | port_attr->fpma_mac = | 900 | port_attr->fpma_mac = |
| 899 | bfa_lps_get_lp_mac(port->fabric->lps); | 901 | port->fabric->lps->lp_mac; |
| 900 | } | 902 | } |
| 901 | } else { | 903 | } else { |
| 902 | port_attr->port_type = BFA_PORT_TYPE_UNKNOWN; | 904 | port_attr->port_type = BFA_PORT_TYPE_UNKNOWN; |
| @@ -985,7 +987,7 @@ bfa_fcs_lport_n2n_online(struct bfa_fcs_lport_s *port) | |||
| 985 | bfa_trc(port->fcs, rport->pid); | 987 | bfa_trc(port->fcs, rport->pid); |
| 986 | bfa_trc(port->fcs, rport->pwwn); | 988 | bfa_trc(port->fcs, rport->pwwn); |
| 987 | rport->pid = N2N_REMOTE_PID; | 989 | rport->pid = N2N_REMOTE_PID; |
| 988 | bfa_fcs_rport_online(rport); | 990 | bfa_sm_send_event(rport, RPSM_EVENT_PLOGI_SEND); |
| 989 | return; | 991 | return; |
| 990 | } | 992 | } |
| 991 | 993 | ||
| @@ -998,7 +1000,7 @@ bfa_fcs_lport_n2n_online(struct bfa_fcs_lport_s *port) | |||
| 998 | bfa_assert(rport != NULL); | 1000 | bfa_assert(rport != NULL); |
| 999 | if (rport) { | 1001 | if (rport) { |
| 1000 | bfa_trc(port->fcs, rport->pwwn); | 1002 | bfa_trc(port->fcs, rport->pwwn); |
| 1001 | bfa_fcs_rport_delete(rport); | 1003 | bfa_sm_send_event(rport, RPSM_EVENT_DELETE); |
| 1002 | } | 1004 | } |
| 1003 | } | 1005 | } |
| 1004 | bfa_fcs_rport_create(port, N2N_REMOTE_PID); | 1006 | bfa_fcs_rport_create(port, N2N_REMOTE_PID); |
| @@ -2540,7 +2542,7 @@ bfa_fcs_lport_ms_send_gmal(void *ms_cbarg, struct bfa_fcxp_s *fcxp_alloced) | |||
| 2540 | 2542 | ||
| 2541 | len = fc_gmal_req_build(&fchs, bfa_fcxp_get_reqbuf(fcxp), | 2543 | len = fc_gmal_req_build(&fchs, bfa_fcxp_get_reqbuf(fcxp), |
| 2542 | bfa_fcs_lport_get_fcid(port), | 2544 | bfa_fcs_lport_get_fcid(port), |
| 2543 | bfa_lps_get_peer_nwwn(port->fabric->lps)); | 2545 | port->fabric->lps->pr_nwwn); |
| 2544 | 2546 | ||
| 2545 | bfa_fcxp_send(fcxp, NULL, port->fabric->vf_id, port->lp_tag, BFA_FALSE, | 2547 | bfa_fcxp_send(fcxp, NULL, port->fabric->vf_id, port->lp_tag, BFA_FALSE, |
| 2546 | FC_CLASS_3, len, &fchs, | 2548 | FC_CLASS_3, len, &fchs, |
| @@ -2740,7 +2742,7 @@ bfa_fcs_lport_ms_send_gfn(void *ms_cbarg, struct bfa_fcxp_s *fcxp_alloced) | |||
| 2740 | 2742 | ||
| 2741 | len = fc_gfn_req_build(&fchs, bfa_fcxp_get_reqbuf(fcxp), | 2743 | len = fc_gfn_req_build(&fchs, bfa_fcxp_get_reqbuf(fcxp), |
| 2742 | bfa_fcs_lport_get_fcid(port), | 2744 | bfa_fcs_lport_get_fcid(port), |
| 2743 | bfa_lps_get_peer_nwwn(port->fabric->lps)); | 2745 | port->fabric->lps->pr_nwwn); |
| 2744 | 2746 | ||
| 2745 | bfa_fcxp_send(fcxp, NULL, port->fabric->vf_id, port->lp_tag, BFA_FALSE, | 2747 | bfa_fcxp_send(fcxp, NULL, port->fabric->vf_id, port->lp_tag, BFA_FALSE, |
| 2746 | FC_CLASS_3, len, &fchs, | 2748 | FC_CLASS_3, len, &fchs, |
| @@ -4332,8 +4334,8 @@ bfa_fcs_lport_scn_send_scr(void *scn_cbarg, struct bfa_fcxp_s *fcxp_alloced) | |||
| 4332 | /* Handle VU registrations for Base port only */ | 4334 | /* Handle VU registrations for Base port only */ |
| 4333 | if ((!port->vport) && bfa_ioc_get_fcmode(&port->fcs->bfa->ioc)) { | 4335 | if ((!port->vport) && bfa_ioc_get_fcmode(&port->fcs->bfa->ioc)) { |
| 4334 | len = fc_scr_build(&fchs, bfa_fcxp_get_reqbuf(fcxp), | 4336 | len = fc_scr_build(&fchs, bfa_fcxp_get_reqbuf(fcxp), |
| 4335 | bfa_lps_is_brcd_fabric(port->fabric->lps), | 4337 | port->fabric->lps->brcd_switch, |
| 4336 | port->pid, 0); | 4338 | port->pid, 0); |
| 4337 | } else { | 4339 | } else { |
| 4338 | len = fc_scr_build(&fchs, bfa_fcxp_get_reqbuf(fcxp), | 4340 | len = fc_scr_build(&fchs, bfa_fcxp_get_reqbuf(fcxp), |
| 4339 | BFA_FALSE, | 4341 | BFA_FALSE, |
| @@ -4833,7 +4835,7 @@ bfa_fcs_lport_get_info(struct bfa_fcs_lport_s *port, | |||
| 4833 | port_info->max_vports_supp = | 4835 | port_info->max_vports_supp = |
| 4834 | bfa_lps_get_max_vport(port->fcs->bfa); | 4836 | bfa_lps_get_max_vport(port->fcs->bfa); |
| 4835 | port_info->num_vports_inuse = | 4837 | port_info->num_vports_inuse = |
| 4836 | bfa_fcs_fabric_vport_count(port->fabric); | 4838 | port->fabric->num_vports; |
| 4837 | port_info->max_rports_supp = BFA_FCS_MAX_RPORTS_SUPP; | 4839 | port_info->max_rports_supp = BFA_FCS_MAX_RPORTS_SUPP; |
| 4838 | port_info->num_rports_inuse = port->num_rports; | 4840 | port_info->num_rports_inuse = port->num_rports; |
| 4839 | } else { | 4841 | } else { |
| @@ -4977,7 +4979,8 @@ bfa_fcs_vport_sm_created(struct bfa_fcs_vport_s *vport, | |||
| 4977 | 4979 | ||
| 4978 | switch (event) { | 4980 | switch (event) { |
| 4979 | case BFA_FCS_VPORT_SM_START: | 4981 | case BFA_FCS_VPORT_SM_START: |
| 4980 | if (bfa_fcs_fabric_is_online(__vport_fabric(vport)) | 4982 | if (bfa_sm_cmp_state(__vport_fabric(vport), |
| 4983 | bfa_fcs_fabric_sm_online) | ||
| 4981 | && bfa_fcs_fabric_npiv_capable(__vport_fabric(vport))) { | 4984 | && bfa_fcs_fabric_npiv_capable(__vport_fabric(vport))) { |
| 4982 | bfa_sm_set_state(vport, bfa_fcs_vport_sm_fdisc); | 4985 | bfa_sm_set_state(vport, bfa_fcs_vport_sm_fdisc); |
| 4983 | bfa_fcs_vport_do_fdisc(vport); | 4986 | bfa_fcs_vport_do_fdisc(vport); |
| @@ -5060,13 +5063,13 @@ bfa_fcs_vport_sm_fdisc(struct bfa_fcs_vport_s *vport, | |||
| 5060 | switch (event) { | 5063 | switch (event) { |
| 5061 | case BFA_FCS_VPORT_SM_DELETE: | 5064 | case BFA_FCS_VPORT_SM_DELETE: |
| 5062 | bfa_sm_set_state(vport, bfa_fcs_vport_sm_cleanup); | 5065 | bfa_sm_set_state(vport, bfa_fcs_vport_sm_cleanup); |
| 5063 | bfa_lps_discard(vport->lps); | 5066 | bfa_sm_send_event(vport->lps, BFA_LPS_SM_OFFLINE); |
| 5064 | bfa_fcs_lport_delete(&vport->lport); | 5067 | bfa_fcs_lport_delete(&vport->lport); |
| 5065 | break; | 5068 | break; |
| 5066 | 5069 | ||
| 5067 | case BFA_FCS_VPORT_SM_OFFLINE: | 5070 | case BFA_FCS_VPORT_SM_OFFLINE: |
| 5068 | bfa_sm_set_state(vport, bfa_fcs_vport_sm_offline); | 5071 | bfa_sm_set_state(vport, bfa_fcs_vport_sm_offline); |
| 5069 | bfa_lps_discard(vport->lps); | 5072 | bfa_sm_send_event(vport->lps, BFA_LPS_SM_OFFLINE); |
| 5070 | break; | 5073 | break; |
| 5071 | 5074 | ||
| 5072 | case BFA_FCS_VPORT_SM_RSP_OK: | 5075 | case BFA_FCS_VPORT_SM_RSP_OK: |
| @@ -5146,7 +5149,7 @@ bfa_fcs_vport_sm_online(struct bfa_fcs_vport_s *vport, | |||
| 5146 | 5149 | ||
| 5147 | case BFA_FCS_VPORT_SM_OFFLINE: | 5150 | case BFA_FCS_VPORT_SM_OFFLINE: |
| 5148 | bfa_sm_set_state(vport, bfa_fcs_vport_sm_offline); | 5151 | bfa_sm_set_state(vport, bfa_fcs_vport_sm_offline); |
| 5149 | bfa_lps_discard(vport->lps); | 5152 | bfa_sm_send_event(vport->lps, BFA_LPS_SM_OFFLINE); |
| 5150 | bfa_fcs_lport_offline(&vport->lport); | 5153 | bfa_fcs_lport_offline(&vport->lport); |
| 5151 | break; | 5154 | break; |
| 5152 | 5155 | ||
| @@ -5246,7 +5249,7 @@ bfa_fcs_vport_sm_logo(struct bfa_fcs_vport_s *vport, | |||
| 5246 | 5249 | ||
| 5247 | switch (event) { | 5250 | switch (event) { |
| 5248 | case BFA_FCS_VPORT_SM_OFFLINE: | 5251 | case BFA_FCS_VPORT_SM_OFFLINE: |
| 5249 | bfa_lps_discard(vport->lps); | 5252 | bfa_sm_send_event(vport->lps, BFA_LPS_SM_OFFLINE); |
| 5250 | /* | 5253 | /* |
| 5251 | * !!! fall through !!! | 5254 | * !!! fall through !!! |
| 5252 | */ | 5255 | */ |
| @@ -5285,14 +5288,14 @@ bfa_fcs_vport_do_fdisc(struct bfa_fcs_vport_s *vport) | |||
| 5285 | static void | 5288 | static void |
| 5286 | bfa_fcs_vport_fdisc_rejected(struct bfa_fcs_vport_s *vport) | 5289 | bfa_fcs_vport_fdisc_rejected(struct bfa_fcs_vport_s *vport) |
| 5287 | { | 5290 | { |
| 5288 | u8 lsrjt_rsn = bfa_lps_get_lsrjt_rsn(vport->lps); | 5291 | u8 lsrjt_rsn = vport->lps->lsrjt_rsn; |
| 5289 | u8 lsrjt_expl = bfa_lps_get_lsrjt_expl(vport->lps); | 5292 | u8 lsrjt_expl = vport->lps->lsrjt_expl; |
| 5290 | 5293 | ||
| 5291 | bfa_trc(__vport_fcs(vport), lsrjt_rsn); | 5294 | bfa_trc(__vport_fcs(vport), lsrjt_rsn); |
| 5292 | bfa_trc(__vport_fcs(vport), lsrjt_expl); | 5295 | bfa_trc(__vport_fcs(vport), lsrjt_expl); |
| 5293 | 5296 | ||
| 5294 | /* For certain reason codes, we don't want to retry. */ | 5297 | /* For certain reason codes, we don't want to retry. */ |
| 5295 | switch (bfa_lps_get_lsrjt_expl(vport->lps)) { | 5298 | switch (vport->lps->lsrjt_expl) { |
| 5296 | case FC_LS_RJT_EXP_INV_PORT_NAME: /* by brocade */ | 5299 | case FC_LS_RJT_EXP_INV_PORT_NAME: /* by brocade */ |
| 5297 | case FC_LS_RJT_EXP_INVALID_NPORT_ID: /* by Cisco */ | 5300 | case FC_LS_RJT_EXP_INVALID_NPORT_ID: /* by Cisco */ |
| 5298 | if (vport->fdisc_retries < BFA_FCS_VPORT_MAX_RETRIES) | 5301 | if (vport->fdisc_retries < BFA_FCS_VPORT_MAX_RETRIES) |
| @@ -5456,7 +5459,7 @@ bfa_fcs_vport_create(struct bfa_fcs_vport_s *vport, struct bfa_fcs_s *fcs, | |||
| 5456 | if (bfa_fcs_vport_lookup(fcs, vf_id, vport_cfg->pwwn) != NULL) | 5459 | if (bfa_fcs_vport_lookup(fcs, vf_id, vport_cfg->pwwn) != NULL) |
| 5457 | return BFA_STATUS_VPORT_EXISTS; | 5460 | return BFA_STATUS_VPORT_EXISTS; |
| 5458 | 5461 | ||
| 5459 | if (bfa_fcs_fabric_vport_count(&fcs->fabric) == | 5462 | if (fcs->fabric.num_vports == |
| 5460 | bfa_lps_get_max_vport(fcs->bfa)) | 5463 | bfa_lps_get_max_vport(fcs->bfa)) |
| 5461 | return BFA_STATUS_VPORT_MAX; | 5464 | return BFA_STATUS_VPORT_MAX; |
| 5462 | 5465 | ||
| @@ -5637,7 +5640,7 @@ bfa_cb_lps_fdisc_comp(void *bfad, void *uarg, bfa_status_t status) | |||
| 5637 | /* | 5640 | /* |
| 5638 | * Initialiaze the V-Port fields | 5641 | * Initialiaze the V-Port fields |
| 5639 | */ | 5642 | */ |
| 5640 | __vport_fcid(vport) = bfa_lps_get_pid(vport->lps); | 5643 | __vport_fcid(vport) = vport->lps->lp_pid; |
| 5641 | vport->vport_stats.fdisc_accepts++; | 5644 | vport->vport_stats.fdisc_accepts++; |
| 5642 | bfa_sm_send_event(vport, BFA_FCS_VPORT_SM_RSP_OK); | 5645 | bfa_sm_send_event(vport, BFA_FCS_VPORT_SM_RSP_OK); |
| 5643 | break; | 5646 | break; |
| @@ -5650,7 +5653,7 @@ bfa_cb_lps_fdisc_comp(void *bfad, void *uarg, bfa_status_t status) | |||
| 5650 | break; | 5653 | break; |
| 5651 | 5654 | ||
| 5652 | case BFA_STATUS_EPROTOCOL: | 5655 | case BFA_STATUS_EPROTOCOL: |
| 5653 | switch (bfa_lps_get_extstatus(vport->lps)) { | 5656 | switch (vport->lps->ext_status) { |
| 5654 | case BFA_EPROTO_BAD_ACCEPT: | 5657 | case BFA_EPROTO_BAD_ACCEPT: |
| 5655 | vport->vport_stats.fdisc_acc_bad++; | 5658 | vport->vport_stats.fdisc_acc_bad++; |
| 5656 | break; | 5659 | break; |
diff --git a/drivers/scsi/bfa/bfa_fcs_rport.c b/drivers/scsi/bfa/bfa_fcs_rport.c index 7928bc8c1ed..2089d686fa5 100644 --- a/drivers/scsi/bfa/bfa_fcs_rport.c +++ b/drivers/scsi/bfa/bfa_fcs_rport.c | |||
| @@ -75,30 +75,6 @@ static void bfa_fcs_rport_send_ls_rjt(struct bfa_fcs_rport_s *rport, | |||
| 75 | static void bfa_fcs_rport_process_adisc(struct bfa_fcs_rport_s *rport, | 75 | static void bfa_fcs_rport_process_adisc(struct bfa_fcs_rport_s *rport, |
| 76 | struct fchs_s *rx_fchs, u16 len); | 76 | struct fchs_s *rx_fchs, u16 len); |
| 77 | static void bfa_fcs_rport_send_prlo_acc(struct bfa_fcs_rport_s *rport); | 77 | static void bfa_fcs_rport_send_prlo_acc(struct bfa_fcs_rport_s *rport); |
| 78 | /* | ||
| 79 | * fcs_rport_sm FCS rport state machine events | ||
| 80 | */ | ||
| 81 | |||
| 82 | enum rport_event { | ||
| 83 | RPSM_EVENT_PLOGI_SEND = 1, /* new rport; start with PLOGI */ | ||
| 84 | RPSM_EVENT_PLOGI_RCVD = 2, /* Inbound PLOGI from remote port */ | ||
| 85 | RPSM_EVENT_PLOGI_COMP = 3, /* PLOGI completed to rport */ | ||
| 86 | RPSM_EVENT_LOGO_RCVD = 4, /* LOGO from remote device */ | ||
| 87 | RPSM_EVENT_LOGO_IMP = 5, /* implicit logo for SLER */ | ||
| 88 | RPSM_EVENT_FCXP_SENT = 6, /* Frame from has been sent */ | ||
| 89 | RPSM_EVENT_DELETE = 7, /* RPORT delete request */ | ||
| 90 | RPSM_EVENT_SCN = 8, /* state change notification */ | ||
| 91 | RPSM_EVENT_ACCEPTED = 9, /* Good response from remote device */ | ||
| 92 | RPSM_EVENT_FAILED = 10, /* Request to rport failed. */ | ||
| 93 | RPSM_EVENT_TIMEOUT = 11, /* Rport SM timeout event */ | ||
| 94 | RPSM_EVENT_HCB_ONLINE = 12, /* BFA rport online callback */ | ||
| 95 | RPSM_EVENT_HCB_OFFLINE = 13, /* BFA rport offline callback */ | ||
| 96 | RPSM_EVENT_FC4_OFFLINE = 14, /* FC-4 offline complete */ | ||
| 97 | RPSM_EVENT_ADDRESS_CHANGE = 15, /* Rport's PID has changed */ | ||
| 98 | RPSM_EVENT_ADDRESS_DISC = 16, /* Need to Discover rport's PID */ | ||
| 99 | RPSM_EVENT_PRLO_RCVD = 17, /* PRLO from remote device */ | ||
| 100 | RPSM_EVENT_PLOGI_RETRY = 18, /* Retry PLOGI continously */ | ||
| 101 | }; | ||
| 102 | 78 | ||
| 103 | static void bfa_fcs_rport_sm_uninit(struct bfa_fcs_rport_s *rport, | 79 | static void bfa_fcs_rport_sm_uninit(struct bfa_fcs_rport_s *rport, |
| 104 | enum rport_event event); | 80 | enum rport_event event); |
| @@ -498,24 +474,24 @@ bfa_fcs_rport_sm_hal_online(struct bfa_fcs_rport_s *rport, | |||
| 498 | 474 | ||
| 499 | case RPSM_EVENT_LOGO_RCVD: | 475 | case RPSM_EVENT_LOGO_RCVD: |
| 500 | bfa_sm_set_state(rport, bfa_fcs_rport_sm_hcb_logorcv); | 476 | bfa_sm_set_state(rport, bfa_fcs_rport_sm_hcb_logorcv); |
| 501 | bfa_rport_offline(rport->bfa_rport); | 477 | bfa_sm_send_event(rport->bfa_rport, BFA_RPORT_SM_OFFLINE); |
| 502 | break; | 478 | break; |
| 503 | 479 | ||
| 504 | case RPSM_EVENT_LOGO_IMP: | 480 | case RPSM_EVENT_LOGO_IMP: |
| 505 | case RPSM_EVENT_ADDRESS_CHANGE: | 481 | case RPSM_EVENT_ADDRESS_CHANGE: |
| 506 | bfa_sm_set_state(rport, bfa_fcs_rport_sm_hcb_offline); | 482 | bfa_sm_set_state(rport, bfa_fcs_rport_sm_hcb_offline); |
| 507 | bfa_rport_offline(rport->bfa_rport); | 483 | bfa_sm_send_event(rport->bfa_rport, BFA_RPORT_SM_OFFLINE); |
| 508 | break; | 484 | break; |
| 509 | 485 | ||
| 510 | case RPSM_EVENT_PLOGI_RCVD: | 486 | case RPSM_EVENT_PLOGI_RCVD: |
| 511 | bfa_sm_set_state(rport, bfa_fcs_rport_sm_plogiacc_sending); | 487 | bfa_sm_set_state(rport, bfa_fcs_rport_sm_plogiacc_sending); |
| 512 | bfa_rport_offline(rport->bfa_rport); | 488 | bfa_sm_send_event(rport->bfa_rport, BFA_RPORT_SM_OFFLINE); |
| 513 | bfa_fcs_rport_send_plogiacc(rport, NULL); | 489 | bfa_fcs_rport_send_plogiacc(rport, NULL); |
| 514 | break; | 490 | break; |
| 515 | 491 | ||
| 516 | case RPSM_EVENT_DELETE: | 492 | case RPSM_EVENT_DELETE: |
| 517 | bfa_sm_set_state(rport, bfa_fcs_rport_sm_hcb_logosend); | 493 | bfa_sm_set_state(rport, bfa_fcs_rport_sm_hcb_logosend); |
| 518 | bfa_rport_offline(rport->bfa_rport); | 494 | bfa_sm_send_event(rport->bfa_rport, BFA_RPORT_SM_OFFLINE); |
| 519 | break; | 495 | break; |
| 520 | 496 | ||
| 521 | case RPSM_EVENT_SCN: | 497 | case RPSM_EVENT_SCN: |
| @@ -824,7 +800,7 @@ bfa_fcs_rport_sm_fc4_logorcv(struct bfa_fcs_rport_s *rport, | |||
| 824 | switch (event) { | 800 | switch (event) { |
| 825 | case RPSM_EVENT_FC4_OFFLINE: | 801 | case RPSM_EVENT_FC4_OFFLINE: |
| 826 | bfa_sm_set_state(rport, bfa_fcs_rport_sm_hcb_logorcv); | 802 | bfa_sm_set_state(rport, bfa_fcs_rport_sm_hcb_logorcv); |
| 827 | bfa_rport_offline(rport->bfa_rport); | 803 | bfa_sm_send_event(rport->bfa_rport, BFA_RPORT_SM_OFFLINE); |
| 828 | break; | 804 | break; |
| 829 | 805 | ||
| 830 | case RPSM_EVENT_DELETE: | 806 | case RPSM_EVENT_DELETE: |
| @@ -856,7 +832,7 @@ bfa_fcs_rport_sm_fc4_logosend(struct bfa_fcs_rport_s *rport, | |||
| 856 | switch (event) { | 832 | switch (event) { |
| 857 | case RPSM_EVENT_FC4_OFFLINE: | 833 | case RPSM_EVENT_FC4_OFFLINE: |
| 858 | bfa_sm_set_state(rport, bfa_fcs_rport_sm_hcb_logosend); | 834 | bfa_sm_set_state(rport, bfa_fcs_rport_sm_hcb_logosend); |
| 859 | bfa_rport_offline(rport->bfa_rport); | 835 | bfa_sm_send_event(rport->bfa_rport, BFA_RPORT_SM_OFFLINE); |
| 860 | break; | 836 | break; |
| 861 | 837 | ||
| 862 | default: | 838 | default: |
| @@ -878,7 +854,7 @@ bfa_fcs_rport_sm_fc4_offline(struct bfa_fcs_rport_s *rport, | |||
| 878 | switch (event) { | 854 | switch (event) { |
| 879 | case RPSM_EVENT_FC4_OFFLINE: | 855 | case RPSM_EVENT_FC4_OFFLINE: |
| 880 | bfa_sm_set_state(rport, bfa_fcs_rport_sm_hcb_offline); | 856 | bfa_sm_set_state(rport, bfa_fcs_rport_sm_hcb_offline); |
| 881 | bfa_rport_offline(rport->bfa_rport); | 857 | bfa_sm_send_event(rport->bfa_rport, BFA_RPORT_SM_OFFLINE); |
| 882 | break; | 858 | break; |
| 883 | 859 | ||
| 884 | case RPSM_EVENT_SCN: | 860 | case RPSM_EVENT_SCN: |
| @@ -1459,7 +1435,7 @@ bfa_fcs_rport_plogi_response(void *fcsarg, struct bfa_fcxp_s *fcxp, void *cbarg, | |||
| 1459 | twin->stats.plogi_rcvd += rport->stats.plogi_rcvd; | 1435 | twin->stats.plogi_rcvd += rport->stats.plogi_rcvd; |
| 1460 | twin->stats.plogi_accs++; | 1436 | twin->stats.plogi_accs++; |
| 1461 | 1437 | ||
| 1462 | bfa_fcs_rport_delete(rport); | 1438 | bfa_sm_send_event(rport, RPSM_EVENT_DELETE); |
| 1463 | 1439 | ||
| 1464 | bfa_fcs_rport_update(twin, plogi_rsp); | 1440 | bfa_fcs_rport_update(twin, plogi_rsp); |
| 1465 | twin->pid = rsp_fchs->s_id; | 1441 | twin->pid = rsp_fchs->s_id; |
| @@ -1998,7 +1974,7 @@ bfa_fcs_rport_alloc(struct bfa_fcs_lport_s *port, wwn_t pwwn, u32 rpid) | |||
| 1998 | rport->itnim = bfa_fcs_itnim_create(rport); | 1974 | rport->itnim = bfa_fcs_itnim_create(rport); |
| 1999 | if (!rport->itnim) { | 1975 | if (!rport->itnim) { |
| 2000 | bfa_trc(fcs, rpid); | 1976 | bfa_trc(fcs, rpid); |
| 2001 | bfa_rport_delete(rport->bfa_rport); | 1977 | bfa_sm_send_event(rport->bfa_rport, BFA_RPORT_SM_DELETE); |
| 2002 | kfree(rport_drv); | 1978 | kfree(rport_drv); |
| 2003 | return NULL; | 1979 | return NULL; |
| 2004 | } | 1980 | } |
| @@ -2032,7 +2008,7 @@ bfa_fcs_rport_free(struct bfa_fcs_rport_s *rport) | |||
| 2032 | bfa_fcs_rpf_rport_offline(rport); | 2008 | bfa_fcs_rpf_rport_offline(rport); |
| 2033 | } | 2009 | } |
| 2034 | 2010 | ||
| 2035 | bfa_rport_delete(rport->bfa_rport); | 2011 | bfa_sm_send_event(rport->bfa_rport, BFA_RPORT_SM_DELETE); |
| 2036 | bfa_fcs_lport_del_rport(port, rport); | 2012 | bfa_fcs_lport_del_rport(port, rport); |
| 2037 | kfree(rport->rp_drv); | 2013 | kfree(rport->rp_drv); |
| 2038 | } | 2014 | } |
| @@ -2307,40 +2283,8 @@ bfa_fcs_rport_plogi(struct bfa_fcs_rport_s *rport, struct fchs_s *rx_fchs, | |||
| 2307 | bfa_sm_send_event(rport, RPSM_EVENT_PLOGI_RCVD); | 2283 | bfa_sm_send_event(rport, RPSM_EVENT_PLOGI_RCVD); |
| 2308 | } | 2284 | } |
| 2309 | 2285 | ||
| 2310 | /* | ||
| 2311 | * Called by bport/vport to delete a remote port instance. | ||
| 2312 | * | ||
| 2313 | * Rport delete is called under the following conditions: | ||
| 2314 | * - vport is deleted | ||
| 2315 | * - vf is deleted | ||
| 2316 | * - explicit request from OS to delete rport | ||
| 2317 | */ | ||
| 2318 | void | ||
| 2319 | bfa_fcs_rport_delete(struct bfa_fcs_rport_s *rport) | ||
| 2320 | { | ||
| 2321 | bfa_sm_send_event(rport, RPSM_EVENT_DELETE); | ||
| 2322 | } | ||
| 2323 | 2286 | ||
| 2324 | /* | 2287 | /* |
| 2325 | * Called by bport/vport to when a target goes offline. | ||
| 2326 | * | ||
| 2327 | */ | ||
| 2328 | void | ||
| 2329 | bfa_fcs_rport_offline(struct bfa_fcs_rport_s *rport) | ||
| 2330 | { | ||
| 2331 | bfa_sm_send_event(rport, RPSM_EVENT_LOGO_IMP); | ||
| 2332 | } | ||
| 2333 | |||
| 2334 | /* | ||
| 2335 | * Called by bport in n2n when a target (attached port) becomes online. | ||
| 2336 | * | ||
| 2337 | */ | ||
| 2338 | void | ||
| 2339 | bfa_fcs_rport_online(struct bfa_fcs_rport_s *rport) | ||
| 2340 | { | ||
| 2341 | bfa_sm_send_event(rport, RPSM_EVENT_PLOGI_SEND); | ||
| 2342 | } | ||
| 2343 | /* | ||
| 2344 | * Called by bport/vport to notify SCN for the remote port | 2288 | * Called by bport/vport to notify SCN for the remote port |
| 2345 | */ | 2289 | */ |
| 2346 | void | 2290 | void |
| @@ -2350,15 +2294,6 @@ bfa_fcs_rport_scn(struct bfa_fcs_rport_s *rport) | |||
| 2350 | bfa_sm_send_event(rport, RPSM_EVENT_SCN); | 2294 | bfa_sm_send_event(rport, RPSM_EVENT_SCN); |
| 2351 | } | 2295 | } |
| 2352 | 2296 | ||
| 2353 | /* | ||
| 2354 | * Called by fcpim to notify that the ITN cleanup is done. | ||
| 2355 | */ | ||
| 2356 | void | ||
| 2357 | bfa_fcs_rport_itnim_ack(struct bfa_fcs_rport_s *rport) | ||
| 2358 | { | ||
| 2359 | bfa_sm_send_event(rport, RPSM_EVENT_FC4_OFFLINE); | ||
| 2360 | } | ||
| 2361 | |||
| 2362 | 2297 | ||
| 2363 | /* | 2298 | /* |
| 2364 | * brief | 2299 | * brief |
| @@ -2457,15 +2392,6 @@ bfa_cb_rport_qos_scn_prio(void *cbarg, | |||
| 2457 | * Called to process any unsolicted frames from this remote port | 2392 | * Called to process any unsolicted frames from this remote port |
| 2458 | */ | 2393 | */ |
| 2459 | void | 2394 | void |
| 2460 | bfa_fcs_rport_logo_imp(struct bfa_fcs_rport_s *rport) | ||
| 2461 | { | ||
| 2462 | bfa_sm_send_event(rport, RPSM_EVENT_LOGO_IMP); | ||
| 2463 | } | ||
| 2464 | |||
| 2465 | /* | ||
| 2466 | * Called to process any unsolicted frames from this remote port | ||
| 2467 | */ | ||
| 2468 | void | ||
| 2469 | bfa_fcs_rport_uf_recv(struct bfa_fcs_rport_s *rport, | 2395 | bfa_fcs_rport_uf_recv(struct bfa_fcs_rport_s *rport, |
| 2470 | struct fchs_s *fchs, u16 len) | 2396 | struct fchs_s *fchs, u16 len) |
| 2471 | { | 2397 | { |
| @@ -2578,6 +2504,7 @@ bfa_fcs_rport_get_state(struct bfa_fcs_rport_s *rport) | |||
| 2578 | return bfa_sm_to_state(rport_sm_table, rport->sm); | 2504 | return bfa_sm_to_state(rport_sm_table, rport->sm); |
| 2579 | } | 2505 | } |
| 2580 | 2506 | ||
| 2507 | |||
| 2581 | /* | 2508 | /* |
| 2582 | * brief | 2509 | * brief |
| 2583 | * Called by the Driver to set rport delete/ageout timeout | 2510 | * Called by the Driver to set rport delete/ageout timeout |
| @@ -2703,7 +2630,7 @@ bfa_fcs_rpf_sm_uninit(struct bfa_fcs_rpf_s *rpf, enum rpf_event event) | |||
| 2703 | case RPFSM_EVENT_RPORT_ONLINE: | 2630 | case RPFSM_EVENT_RPORT_ONLINE: |
| 2704 | /* Send RPSC2 to a Brocade fabric only. */ | 2631 | /* Send RPSC2 to a Brocade fabric only. */ |
| 2705 | if ((!BFA_FCS_PID_IS_WKA(rport->pid)) && | 2632 | if ((!BFA_FCS_PID_IS_WKA(rport->pid)) && |
| 2706 | ((bfa_lps_is_brcd_fabric(rport->port->fabric->lps)) || | 2633 | ((rport->port->fabric->lps->brcd_switch) || |
| 2707 | (bfa_fcs_fabric_get_switch_oui(fabric) == | 2634 | (bfa_fcs_fabric_get_switch_oui(fabric) == |
| 2708 | BFA_FCS_BRCD_SWITCH_OUI))) { | 2635 | BFA_FCS_BRCD_SWITCH_OUI))) { |
| 2709 | bfa_sm_set_state(rpf, bfa_fcs_rpf_sm_rpsc_sending); | 2636 | bfa_sm_set_state(rpf, bfa_fcs_rpf_sm_rpsc_sending); |
diff --git a/drivers/scsi/bfa/bfa_ioc.c b/drivers/scsi/bfa/bfa_ioc.c index 3f41d290142..a8f745420f3 100644 --- a/drivers/scsi/bfa/bfa_ioc.c +++ b/drivers/scsi/bfa/bfa_ioc.c | |||
| @@ -42,11 +42,6 @@ BFA_TRC_FILE(CNA, IOC); | |||
| 42 | bfa_ioc_hb_check, (__ioc), BFA_IOC_HB_TOV) | 42 | bfa_ioc_hb_check, (__ioc), BFA_IOC_HB_TOV) |
| 43 | #define bfa_hb_timer_stop(__ioc) bfa_timer_stop(&(__ioc)->hb_timer) | 43 | #define bfa_hb_timer_stop(__ioc) bfa_timer_stop(&(__ioc)->hb_timer) |
| 44 | 44 | ||
| 45 | #define BFA_DBG_FWTRC_ENTS (BFI_IOC_TRC_ENTS) | ||
| 46 | #define BFA_DBG_FWTRC_LEN \ | ||
| 47 | (BFA_DBG_FWTRC_ENTS * sizeof(struct bfa_trc_s) + \ | ||
| 48 | (sizeof(struct bfa_trc_mod_s) - \ | ||
| 49 | BFA_TRC_MAX * sizeof(struct bfa_trc_s))) | ||
| 50 | #define BFA_DBG_FWTRC_OFF(_fn) (BFI_IOC_TRC_OFF + BFA_DBG_FWTRC_LEN * (_fn)) | 45 | #define BFA_DBG_FWTRC_OFF(_fn) (BFI_IOC_TRC_OFF + BFA_DBG_FWTRC_LEN * (_fn)) |
| 51 | 46 | ||
| 52 | /* | 47 | /* |
| @@ -81,24 +76,18 @@ bfa_boolean_t bfa_auto_recover = BFA_TRUE; | |||
| 81 | * forward declarations | 76 | * forward declarations |
| 82 | */ | 77 | */ |
| 83 | static void bfa_ioc_hw_sem_get(struct bfa_ioc_s *ioc); | 78 | static void bfa_ioc_hw_sem_get(struct bfa_ioc_s *ioc); |
| 84 | static void bfa_ioc_hw_sem_get_cancel(struct bfa_ioc_s *ioc); | ||
| 85 | static void bfa_ioc_hwinit(struct bfa_ioc_s *ioc, bfa_boolean_t force); | 79 | static void bfa_ioc_hwinit(struct bfa_ioc_s *ioc, bfa_boolean_t force); |
| 86 | static void bfa_ioc_timeout(void *ioc); | 80 | static void bfa_ioc_timeout(void *ioc); |
| 87 | static void bfa_ioc_send_enable(struct bfa_ioc_s *ioc); | 81 | static void bfa_ioc_send_enable(struct bfa_ioc_s *ioc); |
| 88 | static void bfa_ioc_send_disable(struct bfa_ioc_s *ioc); | 82 | static void bfa_ioc_send_disable(struct bfa_ioc_s *ioc); |
| 89 | static void bfa_ioc_send_getattr(struct bfa_ioc_s *ioc); | 83 | static void bfa_ioc_send_getattr(struct bfa_ioc_s *ioc); |
| 90 | static void bfa_ioc_hb_monitor(struct bfa_ioc_s *ioc); | 84 | static void bfa_ioc_hb_monitor(struct bfa_ioc_s *ioc); |
| 91 | static void bfa_ioc_hb_stop(struct bfa_ioc_s *ioc); | ||
| 92 | static void bfa_ioc_reset(struct bfa_ioc_s *ioc, bfa_boolean_t force); | ||
| 93 | static void bfa_ioc_mbox_poll(struct bfa_ioc_s *ioc); | 85 | static void bfa_ioc_mbox_poll(struct bfa_ioc_s *ioc); |
| 94 | static void bfa_ioc_mbox_hbfail(struct bfa_ioc_s *ioc); | 86 | static void bfa_ioc_mbox_hbfail(struct bfa_ioc_s *ioc); |
| 95 | static void bfa_ioc_recover(struct bfa_ioc_s *ioc); | 87 | static void bfa_ioc_recover(struct bfa_ioc_s *ioc); |
| 96 | static void bfa_ioc_check_attr_wwns(struct bfa_ioc_s *ioc); | 88 | static void bfa_ioc_check_attr_wwns(struct bfa_ioc_s *ioc); |
| 97 | static void bfa_ioc_disable_comp(struct bfa_ioc_s *ioc); | 89 | static void bfa_ioc_disable_comp(struct bfa_ioc_s *ioc); |
| 98 | static void bfa_ioc_lpu_stop(struct bfa_ioc_s *ioc); | 90 | static void bfa_ioc_lpu_stop(struct bfa_ioc_s *ioc); |
| 99 | static void bfa_ioc_pf_enabled(struct bfa_ioc_s *ioc); | ||
| 100 | static void bfa_ioc_pf_disabled(struct bfa_ioc_s *ioc); | ||
| 101 | static void bfa_ioc_pf_failed(struct bfa_ioc_s *ioc); | ||
| 102 | static void bfa_ioc_pf_fwmismatch(struct bfa_ioc_s *ioc); | 91 | static void bfa_ioc_pf_fwmismatch(struct bfa_ioc_s *ioc); |
| 103 | 92 | ||
| 104 | 93 | ||
| @@ -162,12 +151,6 @@ static struct bfa_sm_table_s ioc_sm_table[] = { | |||
| 162 | /* | 151 | /* |
| 163 | * Forward declareations for iocpf state machine | 152 | * Forward declareations for iocpf state machine |
| 164 | */ | 153 | */ |
| 165 | static void bfa_iocpf_enable(struct bfa_ioc_s *ioc); | ||
| 166 | static void bfa_iocpf_disable(struct bfa_ioc_s *ioc); | ||
| 167 | static void bfa_iocpf_fail(struct bfa_ioc_s *ioc); | ||
| 168 | static void bfa_iocpf_initfail(struct bfa_ioc_s *ioc); | ||
| 169 | static void bfa_iocpf_getattrfail(struct bfa_ioc_s *ioc); | ||
| 170 | static void bfa_iocpf_stop(struct bfa_ioc_s *ioc); | ||
| 171 | static void bfa_iocpf_timeout(void *ioc_arg); | 154 | static void bfa_iocpf_timeout(void *ioc_arg); |
| 172 | static void bfa_iocpf_sem_timeout(void *ioc_arg); | 155 | static void bfa_iocpf_sem_timeout(void *ioc_arg); |
| 173 | 156 | ||
| @@ -298,7 +281,7 @@ bfa_ioc_sm_reset(struct bfa_ioc_s *ioc, enum ioc_event event) | |||
| 298 | static void | 281 | static void |
| 299 | bfa_ioc_sm_enabling_entry(struct bfa_ioc_s *ioc) | 282 | bfa_ioc_sm_enabling_entry(struct bfa_ioc_s *ioc) |
| 300 | { | 283 | { |
| 301 | bfa_iocpf_enable(ioc); | 284 | bfa_fsm_send_event(&ioc->iocpf, IOCPF_E_ENABLE); |
| 302 | } | 285 | } |
| 303 | 286 | ||
| 304 | /* | 287 | /* |
| @@ -321,7 +304,7 @@ bfa_ioc_sm_enabling(struct bfa_ioc_s *ioc, enum ioc_event event) | |||
| 321 | 304 | ||
| 322 | case IOC_E_HWERROR: | 305 | case IOC_E_HWERROR: |
| 323 | bfa_fsm_set_state(ioc, bfa_ioc_sm_initfail); | 306 | bfa_fsm_set_state(ioc, bfa_ioc_sm_initfail); |
| 324 | bfa_iocpf_initfail(ioc); | 307 | bfa_fsm_send_event(&ioc->iocpf, IOCPF_E_INITFAIL); |
| 325 | break; | 308 | break; |
| 326 | 309 | ||
| 327 | case IOC_E_DISABLE: | 310 | case IOC_E_DISABLE: |
| @@ -330,7 +313,7 @@ bfa_ioc_sm_enabling(struct bfa_ioc_s *ioc, enum ioc_event event) | |||
| 330 | 313 | ||
| 331 | case IOC_E_DETACH: | 314 | case IOC_E_DETACH: |
| 332 | bfa_fsm_set_state(ioc, bfa_ioc_sm_uninit); | 315 | bfa_fsm_set_state(ioc, bfa_ioc_sm_uninit); |
| 333 | bfa_iocpf_stop(ioc); | 316 | bfa_fsm_send_event(&ioc->iocpf, IOCPF_E_STOP); |
| 334 | break; | 317 | break; |
| 335 | 318 | ||
| 336 | case IOC_E_ENABLE: | 319 | case IOC_E_ENABLE: |
| @@ -375,7 +358,7 @@ bfa_ioc_sm_getattr(struct bfa_ioc_s *ioc, enum ioc_event event) | |||
| 375 | 358 | ||
| 376 | case IOC_E_TIMEOUT: | 359 | case IOC_E_TIMEOUT: |
| 377 | bfa_fsm_set_state(ioc, bfa_ioc_sm_initfail); | 360 | bfa_fsm_set_state(ioc, bfa_ioc_sm_initfail); |
| 378 | bfa_iocpf_getattrfail(ioc); | 361 | bfa_fsm_send_event(&ioc->iocpf, IOCPF_E_GETATTRFAIL); |
| 379 | break; | 362 | break; |
| 380 | 363 | ||
| 381 | case IOC_E_DISABLE: | 364 | case IOC_E_DISABLE: |
| @@ -412,22 +395,22 @@ bfa_ioc_sm_op(struct bfa_ioc_s *ioc, enum ioc_event event) | |||
| 412 | break; | 395 | break; |
| 413 | 396 | ||
| 414 | case IOC_E_DISABLE: | 397 | case IOC_E_DISABLE: |
| 415 | bfa_ioc_hb_stop(ioc); | 398 | bfa_hb_timer_stop(ioc); |
| 416 | bfa_fsm_set_state(ioc, bfa_ioc_sm_disabling); | 399 | bfa_fsm_set_state(ioc, bfa_ioc_sm_disabling); |
| 417 | break; | 400 | break; |
| 418 | 401 | ||
| 419 | case IOC_E_FAILED: | 402 | case IOC_E_FAILED: |
| 420 | bfa_ioc_hb_stop(ioc); | 403 | bfa_hb_timer_stop(ioc); |
| 421 | bfa_fsm_set_state(ioc, bfa_ioc_sm_fail); | 404 | bfa_fsm_set_state(ioc, bfa_ioc_sm_fail); |
| 422 | break; | 405 | break; |
| 423 | 406 | ||
| 424 | case IOC_E_HWERROR: | 407 | case IOC_E_HWERROR: |
| 425 | bfa_ioc_hb_stop(ioc); | 408 | bfa_hb_timer_stop(ioc); |
| 426 | /* !!! fall through !!! */ | 409 | /* !!! fall through !!! */ |
| 427 | 410 | ||
| 428 | case IOC_E_HBFAIL: | 411 | case IOC_E_HBFAIL: |
| 429 | bfa_fsm_set_state(ioc, bfa_ioc_sm_fail); | 412 | bfa_fsm_set_state(ioc, bfa_ioc_sm_fail); |
| 430 | bfa_iocpf_fail(ioc); | 413 | bfa_fsm_send_event(&ioc->iocpf, IOCPF_E_FAIL); |
| 431 | break; | 414 | break; |
| 432 | 415 | ||
| 433 | default: | 416 | default: |
| @@ -440,7 +423,7 @@ static void | |||
| 440 | bfa_ioc_sm_disabling_entry(struct bfa_ioc_s *ioc) | 423 | bfa_ioc_sm_disabling_entry(struct bfa_ioc_s *ioc) |
| 441 | { | 424 | { |
| 442 | struct bfad_s *bfad = (struct bfad_s *)ioc->bfa->bfad; | 425 | struct bfad_s *bfad = (struct bfad_s *)ioc->bfa->bfad; |
| 443 | bfa_iocpf_disable(ioc); | 426 | bfa_fsm_send_event(&ioc->iocpf, IOCPF_E_DISABLE); |
| 444 | BFA_LOG(KERN_INFO, bfad, bfa_log_level, "IOC disabled\n"); | 427 | BFA_LOG(KERN_INFO, bfad, bfa_log_level, "IOC disabled\n"); |
| 445 | } | 428 | } |
| 446 | 429 | ||
| @@ -463,7 +446,7 @@ bfa_ioc_sm_disabling(struct bfa_ioc_s *ioc, enum ioc_event event) | |||
| 463 | * after iocpf sm completes failure processing and | 446 | * after iocpf sm completes failure processing and |
| 464 | * moves to disabled state. | 447 | * moves to disabled state. |
| 465 | */ | 448 | */ |
| 466 | bfa_iocpf_fail(ioc); | 449 | bfa_fsm_send_event(&ioc->iocpf, IOCPF_E_FAIL); |
| 467 | break; | 450 | break; |
| 468 | 451 | ||
| 469 | default: | 452 | default: |
| @@ -496,7 +479,7 @@ bfa_ioc_sm_disabled(struct bfa_ioc_s *ioc, enum ioc_event event) | |||
| 496 | 479 | ||
| 497 | case IOC_E_DETACH: | 480 | case IOC_E_DETACH: |
| 498 | bfa_fsm_set_state(ioc, bfa_ioc_sm_uninit); | 481 | bfa_fsm_set_state(ioc, bfa_ioc_sm_uninit); |
| 499 | bfa_iocpf_stop(ioc); | 482 | bfa_fsm_send_event(&ioc->iocpf, IOCPF_E_STOP); |
| 500 | break; | 483 | break; |
| 501 | 484 | ||
| 502 | default: | 485 | default: |
| @@ -537,7 +520,7 @@ bfa_ioc_sm_initfail(struct bfa_ioc_s *ioc, enum ioc_event event) | |||
| 537 | 520 | ||
| 538 | case IOC_E_DETACH: | 521 | case IOC_E_DETACH: |
| 539 | bfa_fsm_set_state(ioc, bfa_ioc_sm_uninit); | 522 | bfa_fsm_set_state(ioc, bfa_ioc_sm_uninit); |
| 540 | bfa_iocpf_stop(ioc); | 523 | bfa_fsm_send_event(&ioc->iocpf, IOCPF_E_STOP); |
| 541 | break; | 524 | break; |
| 542 | 525 | ||
| 543 | default: | 526 | default: |
| @@ -668,19 +651,19 @@ bfa_iocpf_sm_fwcheck(struct bfa_iocpf_s *iocpf, enum iocpf_event event) | |||
| 668 | iocpf->retry_count = 0; | 651 | iocpf->retry_count = 0; |
| 669 | bfa_fsm_set_state(iocpf, bfa_iocpf_sm_hwinit); | 652 | bfa_fsm_set_state(iocpf, bfa_iocpf_sm_hwinit); |
| 670 | } else { | 653 | } else { |
| 671 | bfa_ioc_hw_sem_release(ioc); | 654 | writel(1, ioc->ioc_regs.ioc_sem_reg); |
| 672 | bfa_fsm_set_state(iocpf, bfa_iocpf_sm_mismatch); | 655 | bfa_fsm_set_state(iocpf, bfa_iocpf_sm_mismatch); |
| 673 | } | 656 | } |
| 674 | break; | 657 | break; |
| 675 | 658 | ||
| 676 | case IOCPF_E_DISABLE: | 659 | case IOCPF_E_DISABLE: |
| 677 | bfa_ioc_hw_sem_get_cancel(ioc); | 660 | bfa_sem_timer_stop(ioc); |
| 678 | bfa_fsm_set_state(iocpf, bfa_iocpf_sm_reset); | 661 | bfa_fsm_set_state(iocpf, bfa_iocpf_sm_reset); |
| 679 | bfa_ioc_pf_disabled(ioc); | 662 | bfa_fsm_send_event(ioc, IOC_E_DISABLED); |
| 680 | break; | 663 | break; |
| 681 | 664 | ||
| 682 | case IOCPF_E_STOP: | 665 | case IOCPF_E_STOP: |
| 683 | bfa_ioc_hw_sem_get_cancel(ioc); | 666 | bfa_sem_timer_stop(ioc); |
| 684 | bfa_fsm_set_state(iocpf, bfa_iocpf_sm_reset); | 667 | bfa_fsm_set_state(iocpf, bfa_iocpf_sm_reset); |
| 685 | break; | 668 | break; |
| 686 | 669 | ||
| @@ -723,7 +706,7 @@ bfa_iocpf_sm_mismatch(struct bfa_iocpf_s *iocpf, enum iocpf_event event) | |||
| 723 | case IOCPF_E_DISABLE: | 706 | case IOCPF_E_DISABLE: |
| 724 | bfa_iocpf_timer_stop(ioc); | 707 | bfa_iocpf_timer_stop(ioc); |
| 725 | bfa_fsm_set_state(iocpf, bfa_iocpf_sm_reset); | 708 | bfa_fsm_set_state(iocpf, bfa_iocpf_sm_reset); |
| 726 | bfa_ioc_pf_disabled(ioc); | 709 | bfa_fsm_send_event(ioc, IOC_E_DISABLED); |
| 727 | break; | 710 | break; |
| 728 | 711 | ||
| 729 | case IOCPF_E_STOP: | 712 | case IOCPF_E_STOP: |
| @@ -762,7 +745,7 @@ bfa_iocpf_sm_semwait(struct bfa_iocpf_s *iocpf, enum iocpf_event event) | |||
| 762 | break; | 745 | break; |
| 763 | 746 | ||
| 764 | case IOCPF_E_DISABLE: | 747 | case IOCPF_E_DISABLE: |
| 765 | bfa_ioc_hw_sem_get_cancel(ioc); | 748 | bfa_sem_timer_stop(ioc); |
| 766 | bfa_fsm_set_state(iocpf, bfa_iocpf_sm_disabled); | 749 | bfa_fsm_set_state(iocpf, bfa_iocpf_sm_disabled); |
| 767 | break; | 750 | break; |
| 768 | 751 | ||
| @@ -776,7 +759,7 @@ static void | |||
| 776 | bfa_iocpf_sm_hwinit_entry(struct bfa_iocpf_s *iocpf) | 759 | bfa_iocpf_sm_hwinit_entry(struct bfa_iocpf_s *iocpf) |
| 777 | { | 760 | { |
| 778 | bfa_iocpf_timer_start(iocpf->ioc); | 761 | bfa_iocpf_timer_start(iocpf->ioc); |
| 779 | bfa_ioc_reset(iocpf->ioc, BFA_FALSE); | 762 | bfa_ioc_hwinit(iocpf->ioc, BFA_FALSE); |
| 780 | } | 763 | } |
| 781 | 764 | ||
| 782 | /* | 765 | /* |
| @@ -806,19 +789,19 @@ bfa_iocpf_sm_hwinit(struct bfa_iocpf_s *iocpf, enum iocpf_event event) | |||
| 806 | iocpf->retry_count++; | 789 | iocpf->retry_count++; |
| 807 | if (iocpf->retry_count < BFA_IOC_HWINIT_MAX) { | 790 | if (iocpf->retry_count < BFA_IOC_HWINIT_MAX) { |
| 808 | bfa_iocpf_timer_start(ioc); | 791 | bfa_iocpf_timer_start(ioc); |
| 809 | bfa_ioc_reset(ioc, BFA_TRUE); | 792 | bfa_ioc_hwinit(ioc, BFA_TRUE); |
| 810 | break; | 793 | break; |
| 811 | } | 794 | } |
| 812 | 795 | ||
| 813 | bfa_ioc_hw_sem_release(ioc); | 796 | writel(1, ioc->ioc_regs.ioc_sem_reg); |
| 814 | bfa_fsm_set_state(iocpf, bfa_iocpf_sm_initfail); | 797 | bfa_fsm_set_state(iocpf, bfa_iocpf_sm_initfail); |
| 815 | 798 | ||
| 816 | if (event == IOCPF_E_TIMEOUT) | 799 | if (event == IOCPF_E_TIMEOUT) |
| 817 | bfa_ioc_pf_failed(ioc); | 800 | bfa_fsm_send_event(ioc, IOC_E_FAILED); |
| 818 | break; | 801 | break; |
| 819 | 802 | ||
| 820 | case IOCPF_E_DISABLE: | 803 | case IOCPF_E_DISABLE: |
| 821 | bfa_ioc_hw_sem_release(ioc); | 804 | writel(1, ioc->ioc_regs.ioc_sem_reg); |
| 822 | bfa_iocpf_timer_stop(ioc); | 805 | bfa_iocpf_timer_stop(ioc); |
| 823 | bfa_fsm_set_state(iocpf, bfa_iocpf_sm_disabled); | 806 | bfa_fsm_set_state(iocpf, bfa_iocpf_sm_disabled); |
| 824 | break; | 807 | break; |
| @@ -850,7 +833,7 @@ bfa_iocpf_sm_enabling(struct bfa_iocpf_s *iocpf, enum iocpf_event event) | |||
| 850 | switch (event) { | 833 | switch (event) { |
| 851 | case IOCPF_E_FWRSP_ENABLE: | 834 | case IOCPF_E_FWRSP_ENABLE: |
| 852 | bfa_iocpf_timer_stop(ioc); | 835 | bfa_iocpf_timer_stop(ioc); |
| 853 | bfa_ioc_hw_sem_release(ioc); | 836 | writel(1, ioc->ioc_regs.ioc_sem_reg); |
| 854 | bfa_fsm_set_state(iocpf, bfa_iocpf_sm_ready); | 837 | bfa_fsm_set_state(iocpf, bfa_iocpf_sm_ready); |
| 855 | break; | 838 | break; |
| 856 | 839 | ||
| @@ -868,16 +851,16 @@ bfa_iocpf_sm_enabling(struct bfa_iocpf_s *iocpf, enum iocpf_event event) | |||
| 868 | break; | 851 | break; |
| 869 | } | 852 | } |
| 870 | 853 | ||
| 871 | bfa_ioc_hw_sem_release(ioc); | 854 | writel(1, ioc->ioc_regs.ioc_sem_reg); |
| 872 | bfa_fsm_set_state(iocpf, bfa_iocpf_sm_initfail); | 855 | bfa_fsm_set_state(iocpf, bfa_iocpf_sm_initfail); |
| 873 | 856 | ||
| 874 | if (event == IOCPF_E_TIMEOUT) | 857 | if (event == IOCPF_E_TIMEOUT) |
| 875 | bfa_ioc_pf_failed(ioc); | 858 | bfa_fsm_send_event(ioc, IOC_E_FAILED); |
| 876 | break; | 859 | break; |
| 877 | 860 | ||
| 878 | case IOCPF_E_DISABLE: | 861 | case IOCPF_E_DISABLE: |
| 879 | bfa_iocpf_timer_stop(ioc); | 862 | bfa_iocpf_timer_stop(ioc); |
| 880 | bfa_ioc_hw_sem_release(ioc); | 863 | writel(1, ioc->ioc_regs.ioc_sem_reg); |
| 881 | bfa_fsm_set_state(iocpf, bfa_iocpf_sm_disabling); | 864 | bfa_fsm_set_state(iocpf, bfa_iocpf_sm_disabling); |
| 882 | break; | 865 | break; |
| 883 | 866 | ||
| @@ -895,7 +878,7 @@ bfa_iocpf_sm_enabling(struct bfa_iocpf_s *iocpf, enum iocpf_event event) | |||
| 895 | static void | 878 | static void |
| 896 | bfa_iocpf_sm_ready_entry(struct bfa_iocpf_s *iocpf) | 879 | bfa_iocpf_sm_ready_entry(struct bfa_iocpf_s *iocpf) |
| 897 | { | 880 | { |
| 898 | bfa_ioc_pf_enabled(iocpf->ioc); | 881 | bfa_fsm_send_event(iocpf->ioc, IOC_E_ENABLED); |
| 899 | } | 882 | } |
| 900 | 883 | ||
| 901 | static void | 884 | static void |
| @@ -919,12 +902,12 @@ bfa_iocpf_sm_ready(struct bfa_iocpf_s *iocpf, enum iocpf_event event) | |||
| 919 | break; | 902 | break; |
| 920 | 903 | ||
| 921 | case IOCPF_E_FWREADY: | 904 | case IOCPF_E_FWREADY: |
| 922 | if (bfa_ioc_is_operational(ioc)) | 905 | if (bfa_fsm_cmp_state(ioc, bfa_ioc_sm_op)) |
| 923 | bfa_fsm_set_state(iocpf, bfa_iocpf_sm_fail); | 906 | bfa_fsm_set_state(iocpf, bfa_iocpf_sm_fail); |
| 924 | else | 907 | else |
| 925 | bfa_fsm_set_state(iocpf, bfa_iocpf_sm_initfail); | 908 | bfa_fsm_set_state(iocpf, bfa_iocpf_sm_initfail); |
| 926 | 909 | ||
| 927 | bfa_ioc_pf_failed(ioc); | 910 | bfa_fsm_send_event(ioc, IOC_E_FAILED); |
| 928 | break; | 911 | break; |
| 929 | 912 | ||
| 930 | default: | 913 | default: |
| @@ -982,7 +965,7 @@ bfa_iocpf_sm_disabling(struct bfa_iocpf_s *iocpf, enum iocpf_event event) | |||
| 982 | static void | 965 | static void |
| 983 | bfa_iocpf_sm_disabled_entry(struct bfa_iocpf_s *iocpf) | 966 | bfa_iocpf_sm_disabled_entry(struct bfa_iocpf_s *iocpf) |
| 984 | { | 967 | { |
| 985 | bfa_ioc_pf_disabled(iocpf->ioc); | 968 | bfa_fsm_send_event(iocpf->ioc, IOC_E_DISABLED); |
| 986 | } | 969 | } |
| 987 | 970 | ||
| 988 | static void | 971 | static void |
| @@ -1140,11 +1123,6 @@ bfa_ioc_sem_get(void __iomem *sem_reg) | |||
| 1140 | return BFA_FALSE; | 1123 | return BFA_FALSE; |
| 1141 | } | 1124 | } |
| 1142 | 1125 | ||
| 1143 | void | ||
| 1144 | bfa_ioc_sem_release(void __iomem *sem_reg) | ||
| 1145 | { | ||
| 1146 | writel(1, sem_reg); | ||
| 1147 | } | ||
| 1148 | 1126 | ||
| 1149 | static void | 1127 | static void |
| 1150 | bfa_ioc_hw_sem_get(struct bfa_ioc_s *ioc) | 1128 | bfa_ioc_hw_sem_get(struct bfa_ioc_s *ioc) |
| @@ -1164,18 +1142,6 @@ bfa_ioc_hw_sem_get(struct bfa_ioc_s *ioc) | |||
| 1164 | bfa_sem_timer_start(ioc); | 1142 | bfa_sem_timer_start(ioc); |
| 1165 | } | 1143 | } |
| 1166 | 1144 | ||
| 1167 | void | ||
| 1168 | bfa_ioc_hw_sem_release(struct bfa_ioc_s *ioc) | ||
| 1169 | { | ||
| 1170 | writel(1, ioc->ioc_regs.ioc_sem_reg); | ||
| 1171 | } | ||
| 1172 | |||
| 1173 | static void | ||
| 1174 | bfa_ioc_hw_sem_get_cancel(struct bfa_ioc_s *ioc) | ||
| 1175 | { | ||
| 1176 | bfa_sem_timer_stop(ioc); | ||
| 1177 | } | ||
| 1178 | |||
| 1179 | /* | 1145 | /* |
| 1180 | * Initialize LPU local memory (aka secondary memory / SRAM) | 1146 | * Initialize LPU local memory (aka secondary memory / SRAM) |
| 1181 | */ | 1147 | */ |
| @@ -1255,8 +1221,8 @@ bfa_ioc_fwver_get(struct bfa_ioc_s *ioc, struct bfi_ioc_image_hdr_s *fwhdr) | |||
| 1255 | int i; | 1221 | int i; |
| 1256 | u32 *fwsig = (u32 *) fwhdr; | 1222 | u32 *fwsig = (u32 *) fwhdr; |
| 1257 | 1223 | ||
| 1258 | pgnum = bfa_ioc_smem_pgnum(ioc, loff); | 1224 | pgnum = PSS_SMEM_PGNUM(ioc->ioc_regs.smem_pg0, loff); |
| 1259 | pgoff = bfa_ioc_smem_pgoff(ioc, loff); | 1225 | pgoff = PSS_SMEM_PGOFF(loff); |
| 1260 | writel(pgnum, ioc->ioc_regs.host_page_num_fn); | 1226 | writel(pgnum, ioc->ioc_regs.host_page_num_fn); |
| 1261 | 1227 | ||
| 1262 | for (i = 0; i < (sizeof(struct bfi_ioc_image_hdr_s) / sizeof(u32)); | 1228 | for (i = 0; i < (sizeof(struct bfi_ioc_image_hdr_s) / sizeof(u32)); |
| @@ -1519,13 +1485,6 @@ bfa_ioc_hb_monitor(struct bfa_ioc_s *ioc) | |||
| 1519 | bfa_hb_timer_start(ioc); | 1485 | bfa_hb_timer_start(ioc); |
| 1520 | } | 1486 | } |
| 1521 | 1487 | ||
| 1522 | static void | ||
| 1523 | bfa_ioc_hb_stop(struct bfa_ioc_s *ioc) | ||
| 1524 | { | ||
| 1525 | bfa_hb_timer_stop(ioc); | ||
| 1526 | } | ||
| 1527 | |||
| 1528 | |||
| 1529 | /* | 1488 | /* |
| 1530 | * Initiate a full firmware download. | 1489 | * Initiate a full firmware download. |
| 1531 | */ | 1490 | */ |
| @@ -1547,8 +1506,8 @@ bfa_ioc_download_fw(struct bfa_ioc_s *ioc, u32 boot_type, | |||
| 1547 | bfa_trc(ioc, bfa_cb_image_get_size(BFA_IOC_FWIMG_TYPE(ioc))); | 1506 | bfa_trc(ioc, bfa_cb_image_get_size(BFA_IOC_FWIMG_TYPE(ioc))); |
| 1548 | fwimg = bfa_cb_image_get_chunk(BFA_IOC_FWIMG_TYPE(ioc), chunkno); | 1507 | fwimg = bfa_cb_image_get_chunk(BFA_IOC_FWIMG_TYPE(ioc), chunkno); |
| 1549 | 1508 | ||
| 1550 | pgnum = bfa_ioc_smem_pgnum(ioc, loff); | 1509 | pgnum = PSS_SMEM_PGNUM(ioc->ioc_regs.smem_pg0, loff); |
| 1551 | pgoff = bfa_ioc_smem_pgoff(ioc, loff); | 1510 | pgoff = PSS_SMEM_PGOFF(loff); |
| 1552 | 1511 | ||
| 1553 | writel(pgnum, ioc->ioc_regs.host_page_num_fn); | 1512 | writel(pgnum, ioc->ioc_regs.host_page_num_fn); |
| 1554 | 1513 | ||
| @@ -1578,7 +1537,8 @@ bfa_ioc_download_fw(struct bfa_ioc_s *ioc, u32 boot_type, | |||
| 1578 | } | 1537 | } |
| 1579 | } | 1538 | } |
| 1580 | 1539 | ||
| 1581 | writel(bfa_ioc_smem_pgnum(ioc, 0), ioc->ioc_regs.host_page_num_fn); | 1540 | writel(PSS_SMEM_PGNUM(ioc->ioc_regs.smem_pg0, 0), |
| 1541 | ioc->ioc_regs.host_page_num_fn); | ||
| 1582 | 1542 | ||
| 1583 | /* | 1543 | /* |
| 1584 | * Set boot type and boot param at the end. | 1544 | * Set boot type and boot param at the end. |
| @@ -1589,11 +1549,6 @@ bfa_ioc_download_fw(struct bfa_ioc_s *ioc, u32 boot_type, | |||
| 1589 | swab32(boot_env)); | 1549 | swab32(boot_env)); |
| 1590 | } | 1550 | } |
| 1591 | 1551 | ||
| 1592 | static void | ||
| 1593 | bfa_ioc_reset(struct bfa_ioc_s *ioc, bfa_boolean_t force) | ||
| 1594 | { | ||
| 1595 | bfa_ioc_hwinit(ioc, force); | ||
| 1596 | } | ||
| 1597 | 1552 | ||
| 1598 | /* | 1553 | /* |
| 1599 | * Update BFA configuration from firmware configuration. | 1554 | * Update BFA configuration from firmware configuration. |
| @@ -1685,8 +1640,8 @@ bfa_ioc_smem_read(struct bfa_ioc_s *ioc, void *tbuf, u32 soff, u32 sz) | |||
| 1685 | int i, len; | 1640 | int i, len; |
| 1686 | u32 *buf = tbuf; | 1641 | u32 *buf = tbuf; |
| 1687 | 1642 | ||
| 1688 | pgnum = bfa_ioc_smem_pgnum(ioc, soff); | 1643 | pgnum = PSS_SMEM_PGNUM(ioc->ioc_regs.smem_pg0, soff); |
| 1689 | loff = bfa_ioc_smem_pgoff(ioc, soff); | 1644 | loff = PSS_SMEM_PGOFF(soff); |
| 1690 | bfa_trc(ioc, pgnum); | 1645 | bfa_trc(ioc, pgnum); |
| 1691 | bfa_trc(ioc, loff); | 1646 | bfa_trc(ioc, loff); |
| 1692 | bfa_trc(ioc, sz); | 1647 | bfa_trc(ioc, sz); |
| @@ -1717,11 +1672,12 @@ bfa_ioc_smem_read(struct bfa_ioc_s *ioc, void *tbuf, u32 soff, u32 sz) | |||
| 1717 | writel(pgnum, ioc->ioc_regs.host_page_num_fn); | 1672 | writel(pgnum, ioc->ioc_regs.host_page_num_fn); |
| 1718 | } | 1673 | } |
| 1719 | } | 1674 | } |
| 1720 | writel(bfa_ioc_smem_pgnum(ioc, 0), ioc->ioc_regs.host_page_num_fn); | 1675 | writel(PSS_SMEM_PGNUM(ioc->ioc_regs.smem_pg0, 0), |
| 1676 | ioc->ioc_regs.host_page_num_fn); | ||
| 1721 | /* | 1677 | /* |
| 1722 | * release semaphore. | 1678 | * release semaphore. |
| 1723 | */ | 1679 | */ |
| 1724 | bfa_ioc_sem_release(ioc->ioc_regs.ioc_init_sem_reg); | 1680 | writel(1, ioc->ioc_regs.ioc_init_sem_reg); |
| 1725 | 1681 | ||
| 1726 | bfa_trc(ioc, pgnum); | 1682 | bfa_trc(ioc, pgnum); |
| 1727 | return BFA_STATUS_OK; | 1683 | return BFA_STATUS_OK; |
| @@ -1740,8 +1696,8 @@ bfa_ioc_smem_clr(struct bfa_ioc_s *ioc, u32 soff, u32 sz) | |||
| 1740 | int i, len; | 1696 | int i, len; |
| 1741 | u32 pgnum, loff; | 1697 | u32 pgnum, loff; |
| 1742 | 1698 | ||
| 1743 | pgnum = bfa_ioc_smem_pgnum(ioc, soff); | 1699 | pgnum = PSS_SMEM_PGNUM(ioc->ioc_regs.smem_pg0, soff); |
| 1744 | loff = bfa_ioc_smem_pgoff(ioc, soff); | 1700 | loff = PSS_SMEM_PGOFF(soff); |
| 1745 | bfa_trc(ioc, pgnum); | 1701 | bfa_trc(ioc, pgnum); |
| 1746 | bfa_trc(ioc, loff); | 1702 | bfa_trc(ioc, loff); |
| 1747 | bfa_trc(ioc, sz); | 1703 | bfa_trc(ioc, sz); |
| @@ -1771,36 +1727,17 @@ bfa_ioc_smem_clr(struct bfa_ioc_s *ioc, u32 soff, u32 sz) | |||
| 1771 | writel(pgnum, ioc->ioc_regs.host_page_num_fn); | 1727 | writel(pgnum, ioc->ioc_regs.host_page_num_fn); |
| 1772 | } | 1728 | } |
| 1773 | } | 1729 | } |
| 1774 | writel(bfa_ioc_smem_pgnum(ioc, 0), ioc->ioc_regs.host_page_num_fn); | 1730 | writel(PSS_SMEM_PGNUM(ioc->ioc_regs.smem_pg0, 0), |
| 1731 | ioc->ioc_regs.host_page_num_fn); | ||
| 1775 | 1732 | ||
| 1776 | /* | 1733 | /* |
| 1777 | * release semaphore. | 1734 | * release semaphore. |
| 1778 | */ | 1735 | */ |
| 1779 | bfa_ioc_sem_release(ioc->ioc_regs.ioc_init_sem_reg); | 1736 | writel(1, ioc->ioc_regs.ioc_init_sem_reg); |
| 1780 | bfa_trc(ioc, pgnum); | 1737 | bfa_trc(ioc, pgnum); |
| 1781 | return BFA_STATUS_OK; | 1738 | return BFA_STATUS_OK; |
| 1782 | } | 1739 | } |
| 1783 | 1740 | ||
| 1784 | /* | ||
| 1785 | * hal iocpf to ioc interface | ||
| 1786 | */ | ||
| 1787 | static void | ||
| 1788 | bfa_ioc_pf_enabled(struct bfa_ioc_s *ioc) | ||
| 1789 | { | ||
| 1790 | bfa_fsm_send_event(ioc, IOC_E_ENABLED); | ||
| 1791 | } | ||
| 1792 | |||
| 1793 | static void | ||
| 1794 | bfa_ioc_pf_disabled(struct bfa_ioc_s *ioc) | ||
| 1795 | { | ||
| 1796 | bfa_fsm_send_event(ioc, IOC_E_DISABLED); | ||
| 1797 | } | ||
| 1798 | |||
| 1799 | static void | ||
| 1800 | bfa_ioc_pf_failed(struct bfa_ioc_s *ioc) | ||
| 1801 | { | ||
| 1802 | bfa_fsm_send_event(ioc, IOC_E_FAILED); | ||
| 1803 | } | ||
| 1804 | 1741 | ||
| 1805 | static void | 1742 | static void |
| 1806 | bfa_ioc_pf_fwmismatch(struct bfa_ioc_s *ioc) | 1743 | bfa_ioc_pf_fwmismatch(struct bfa_ioc_s *ioc) |
| @@ -1831,7 +1768,7 @@ bfa_ioc_pll_init(struct bfa_ioc_s *ioc) | |||
| 1831 | /* | 1768 | /* |
| 1832 | * release semaphore. | 1769 | * release semaphore. |
| 1833 | */ | 1770 | */ |
| 1834 | bfa_ioc_sem_release(ioc->ioc_regs.ioc_init_sem_reg); | 1771 | writel(1, ioc->ioc_regs.ioc_init_sem_reg); |
| 1835 | 1772 | ||
| 1836 | return BFA_STATUS_OK; | 1773 | return BFA_STATUS_OK; |
| 1837 | } | 1774 | } |
| @@ -2036,15 +1973,6 @@ bfa_ioc_mem_claim(struct bfa_ioc_s *ioc, u8 *dm_kva, u64 dm_pa) | |||
| 2036 | ioc->attr = (struct bfi_ioc_attr_s *) dm_kva; | 1973 | ioc->attr = (struct bfi_ioc_attr_s *) dm_kva; |
| 2037 | } | 1974 | } |
| 2038 | 1975 | ||
| 2039 | /* | ||
| 2040 | * Return size of dma memory required. | ||
| 2041 | */ | ||
| 2042 | u32 | ||
| 2043 | bfa_ioc_meminfo(void) | ||
| 2044 | { | ||
| 2045 | return BFA_ROUNDUP(sizeof(struct bfi_ioc_attr_s), BFA_DMA_ALIGN_SZ); | ||
| 2046 | } | ||
| 2047 | |||
| 2048 | void | 1976 | void |
| 2049 | bfa_ioc_enable(struct bfa_ioc_s *ioc) | 1977 | bfa_ioc_enable(struct bfa_ioc_s *ioc) |
| 2050 | { | 1978 | { |
| @@ -2061,18 +1989,6 @@ bfa_ioc_disable(struct bfa_ioc_s *ioc) | |||
| 2061 | bfa_fsm_send_event(ioc, IOC_E_DISABLE); | 1989 | bfa_fsm_send_event(ioc, IOC_E_DISABLE); |
| 2062 | } | 1990 | } |
| 2063 | 1991 | ||
| 2064 | /* | ||
| 2065 | * Returns memory required for saving firmware trace in case of crash. | ||
| 2066 | * Driver must call this interface to allocate memory required for | ||
| 2067 | * automatic saving of firmware trace. Driver should call | ||
| 2068 | * bfa_ioc_debug_memclaim() right after bfa_ioc_attach() to setup this | ||
| 2069 | * trace memory. | ||
| 2070 | */ | ||
| 2071 | int | ||
| 2072 | bfa_ioc_debug_trcsz(bfa_boolean_t auto_recover) | ||
| 2073 | { | ||
| 2074 | return (auto_recover) ? BFA_DBG_FWTRC_LEN : 0; | ||
| 2075 | } | ||
| 2076 | 1992 | ||
| 2077 | /* | 1993 | /* |
| 2078 | * Initialize memory for saving firmware trace. Driver must initialize | 1994 | * Initialize memory for saving firmware trace. Driver must initialize |
| @@ -2082,19 +1998,7 @@ void | |||
| 2082 | bfa_ioc_debug_memclaim(struct bfa_ioc_s *ioc, void *dbg_fwsave) | 1998 | bfa_ioc_debug_memclaim(struct bfa_ioc_s *ioc, void *dbg_fwsave) |
| 2083 | { | 1999 | { |
| 2084 | ioc->dbg_fwsave = dbg_fwsave; | 2000 | ioc->dbg_fwsave = dbg_fwsave; |
| 2085 | ioc->dbg_fwsave_len = bfa_ioc_debug_trcsz(ioc->iocpf.auto_recover); | 2001 | ioc->dbg_fwsave_len = (ioc->iocpf.auto_recover) ? BFA_DBG_FWTRC_LEN : 0; |
| 2086 | } | ||
| 2087 | |||
| 2088 | u32 | ||
| 2089 | bfa_ioc_smem_pgnum(struct bfa_ioc_s *ioc, u32 fmaddr) | ||
| 2090 | { | ||
| 2091 | return PSS_SMEM_PGNUM(ioc->ioc_regs.smem_pg0, fmaddr); | ||
| 2092 | } | ||
| 2093 | |||
| 2094 | u32 | ||
| 2095 | bfa_ioc_smem_pgoff(struct bfa_ioc_s *ioc, u32 fmaddr) | ||
| 2096 | { | ||
| 2097 | return PSS_SMEM_PGOFF(fmaddr); | ||
| 2098 | } | 2002 | } |
| 2099 | 2003 | ||
| 2100 | /* | 2004 | /* |
| @@ -2257,17 +2161,6 @@ bfa_ioc_adapter_is_disabled(struct bfa_ioc_s *ioc) | |||
| 2257 | return BFA_TRUE; | 2161 | return BFA_TRUE; |
| 2258 | } | 2162 | } |
| 2259 | 2163 | ||
| 2260 | /* | ||
| 2261 | * Add to IOC heartbeat failure notification queue. To be used by common | ||
| 2262 | * modules such as cee, port, diag. | ||
| 2263 | */ | ||
| 2264 | void | ||
| 2265 | bfa_ioc_hbfail_register(struct bfa_ioc_s *ioc, | ||
| 2266 | struct bfa_ioc_hbfail_notify_s *notify) | ||
| 2267 | { | ||
| 2268 | list_add_tail(¬ify->qe, &ioc->hb_notify_q); | ||
| 2269 | } | ||
| 2270 | |||
| 2271 | #define BFA_MFG_NAME "Brocade" | 2164 | #define BFA_MFG_NAME "Brocade" |
| 2272 | void | 2165 | void |
| 2273 | bfa_ioc_get_adapter_attr(struct bfa_ioc_s *ioc, | 2166 | bfa_ioc_get_adapter_attr(struct bfa_ioc_s *ioc, |
| @@ -2299,7 +2192,7 @@ bfa_ioc_get_adapter_attr(struct bfa_ioc_s *ioc, | |||
| 2299 | else | 2192 | else |
| 2300 | ad_attr->prototype = 0; | 2193 | ad_attr->prototype = 0; |
| 2301 | 2194 | ||
| 2302 | ad_attr->pwwn = bfa_ioc_get_pwwn(ioc); | 2195 | ad_attr->pwwn = ioc->attr->pwwn; |
| 2303 | ad_attr->mac = bfa_ioc_get_mac(ioc); | 2196 | ad_attr->mac = bfa_ioc_get_mac(ioc); |
| 2304 | 2197 | ||
| 2305 | ad_attr->pcie_gen = ioc_attr->pcie_gen; | 2198 | ad_attr->pcie_gen = ioc_attr->pcie_gen; |
| @@ -2448,24 +2341,6 @@ bfa_ioc_get_attr(struct bfa_ioc_s *ioc, struct bfa_ioc_attr_s *ioc_attr) | |||
| 2448 | bfa_ioc_get_pci_chip_rev(ioc, ioc_attr->pci_attr.chip_rev); | 2341 | bfa_ioc_get_pci_chip_rev(ioc, ioc_attr->pci_attr.chip_rev); |
| 2449 | } | 2342 | } |
| 2450 | 2343 | ||
| 2451 | wwn_t | ||
| 2452 | bfa_ioc_get_pwwn(struct bfa_ioc_s *ioc) | ||
| 2453 | { | ||
| 2454 | return ioc->attr->pwwn; | ||
| 2455 | } | ||
| 2456 | |||
| 2457 | wwn_t | ||
| 2458 | bfa_ioc_get_nwwn(struct bfa_ioc_s *ioc) | ||
| 2459 | { | ||
| 2460 | return ioc->attr->nwwn; | ||
| 2461 | } | ||
| 2462 | |||
| 2463 | u64 | ||
| 2464 | bfa_ioc_get_adid(struct bfa_ioc_s *ioc) | ||
| 2465 | { | ||
| 2466 | return ioc->attr->mfg_pwwn; | ||
| 2467 | } | ||
| 2468 | |||
| 2469 | mac_t | 2344 | mac_t |
| 2470 | bfa_ioc_get_mac(struct bfa_ioc_s *ioc) | 2345 | bfa_ioc_get_mac(struct bfa_ioc_s *ioc) |
| 2471 | { | 2346 | { |
| @@ -2478,18 +2353,6 @@ bfa_ioc_get_mac(struct bfa_ioc_s *ioc) | |||
| 2478 | return ioc->attr->mac; | 2353 | return ioc->attr->mac; |
| 2479 | } | 2354 | } |
| 2480 | 2355 | ||
| 2481 | wwn_t | ||
| 2482 | bfa_ioc_get_mfg_pwwn(struct bfa_ioc_s *ioc) | ||
| 2483 | { | ||
| 2484 | return ioc->attr->mfg_pwwn; | ||
| 2485 | } | ||
| 2486 | |||
| 2487 | wwn_t | ||
| 2488 | bfa_ioc_get_mfg_nwwn(struct bfa_ioc_s *ioc) | ||
| 2489 | { | ||
| 2490 | return ioc->attr->mfg_nwwn; | ||
| 2491 | } | ||
| 2492 | |||
| 2493 | mac_t | 2356 | mac_t |
| 2494 | bfa_ioc_get_mfg_mac(struct bfa_ioc_s *ioc) | 2357 | bfa_ioc_get_mfg_mac(struct bfa_ioc_s *ioc) |
| 2495 | { | 2358 | { |
| @@ -2718,43 +2581,6 @@ bfa_ioc_check_attr_wwns(struct bfa_ioc_s *ioc) | |||
| 2718 | /* | 2581 | /* |
| 2719 | * BFA IOC PF private functions | 2582 | * BFA IOC PF private functions |
| 2720 | */ | 2583 | */ |
| 2721 | |||
| 2722 | static void | ||
| 2723 | bfa_iocpf_enable(struct bfa_ioc_s *ioc) | ||
| 2724 | { | ||
| 2725 | bfa_fsm_send_event(&ioc->iocpf, IOCPF_E_ENABLE); | ||
| 2726 | } | ||
| 2727 | |||
| 2728 | static void | ||
| 2729 | bfa_iocpf_disable(struct bfa_ioc_s *ioc) | ||
| 2730 | { | ||
| 2731 | bfa_fsm_send_event(&ioc->iocpf, IOCPF_E_DISABLE); | ||
| 2732 | } | ||
| 2733 | |||
| 2734 | static void | ||
| 2735 | bfa_iocpf_fail(struct bfa_ioc_s *ioc) | ||
| 2736 | { | ||
| 2737 | bfa_fsm_send_event(&ioc->iocpf, IOCPF_E_FAIL); | ||
| 2738 | } | ||
| 2739 | |||
| 2740 | static void | ||
| 2741 | bfa_iocpf_initfail(struct bfa_ioc_s *ioc) | ||
| 2742 | { | ||
| 2743 | bfa_fsm_send_event(&ioc->iocpf, IOCPF_E_INITFAIL); | ||
| 2744 | } | ||
| 2745 | |||
| 2746 | static void | ||
| 2747 | bfa_iocpf_getattrfail(struct bfa_ioc_s *ioc) | ||
| 2748 | { | ||
| 2749 | bfa_fsm_send_event(&ioc->iocpf, IOCPF_E_GETATTRFAIL); | ||
| 2750 | } | ||
| 2751 | |||
| 2752 | static void | ||
| 2753 | bfa_iocpf_stop(struct bfa_ioc_s *ioc) | ||
| 2754 | { | ||
| 2755 | bfa_fsm_send_event(&ioc->iocpf, IOCPF_E_STOP); | ||
| 2756 | } | ||
| 2757 | |||
| 2758 | static void | 2584 | static void |
| 2759 | bfa_iocpf_timeout(void *ioc_arg) | 2585 | bfa_iocpf_timeout(void *ioc_arg) |
| 2760 | { | 2586 | { |
| @@ -2776,12 +2602,6 @@ bfa_iocpf_sem_timeout(void *ioc_arg) | |||
| 2776 | * bfa timer function | 2602 | * bfa timer function |
| 2777 | */ | 2603 | */ |
| 2778 | void | 2604 | void |
| 2779 | bfa_timer_init(struct bfa_timer_mod_s *mod) | ||
| 2780 | { | ||
| 2781 | INIT_LIST_HEAD(&mod->timer_q); | ||
| 2782 | } | ||
| 2783 | |||
| 2784 | void | ||
| 2785 | bfa_timer_beat(struct bfa_timer_mod_s *mod) | 2605 | bfa_timer_beat(struct bfa_timer_mod_s *mod) |
| 2786 | { | 2606 | { |
| 2787 | struct list_head *qh = &mod->timer_q; | 2607 | struct list_head *qh = &mod->timer_q; |
diff --git a/drivers/scsi/bfa/bfa_ioc.h b/drivers/scsi/bfa/bfa_ioc.h index ff012f7f075..3c5bdd1c0c7 100644 --- a/drivers/scsi/bfa/bfa_ioc.h +++ b/drivers/scsi/bfa/bfa_ioc.h | |||
| @@ -22,6 +22,11 @@ | |||
| 22 | #include "bfa_cs.h" | 22 | #include "bfa_cs.h" |
| 23 | #include "bfi.h" | 23 | #include "bfi.h" |
| 24 | 24 | ||
| 25 | #define BFA_DBG_FWTRC_ENTS (BFI_IOC_TRC_ENTS) | ||
| 26 | #define BFA_DBG_FWTRC_LEN \ | ||
| 27 | (BFA_DBG_FWTRC_ENTS * sizeof(struct bfa_trc_s) + \ | ||
| 28 | (sizeof(struct bfa_trc_mod_s) - \ | ||
| 29 | BFA_TRC_MAX * sizeof(struct bfa_trc_s))) | ||
| 25 | /* | 30 | /* |
| 26 | * BFA timer declarations | 31 | * BFA timer declarations |
| 27 | */ | 32 | */ |
| @@ -47,7 +52,6 @@ struct bfa_timer_mod_s { | |||
| 47 | #define BFA_TIMER_FREQ 200 /* specified in millisecs */ | 52 | #define BFA_TIMER_FREQ 200 /* specified in millisecs */ |
| 48 | 53 | ||
| 49 | void bfa_timer_beat(struct bfa_timer_mod_s *mod); | 54 | void bfa_timer_beat(struct bfa_timer_mod_s *mod); |
| 50 | void bfa_timer_init(struct bfa_timer_mod_s *mod); | ||
| 51 | void bfa_timer_begin(struct bfa_timer_mod_s *mod, struct bfa_timer_s *timer, | 55 | void bfa_timer_begin(struct bfa_timer_mod_s *mod, struct bfa_timer_s *timer, |
| 52 | bfa_timer_cbfn_t timercb, void *arg, | 56 | bfa_timer_cbfn_t timercb, void *arg, |
| 53 | unsigned int timeout); | 57 | unsigned int timeout); |
| @@ -325,7 +329,6 @@ void bfa_ioc_auto_recover(bfa_boolean_t auto_recover); | |||
| 325 | void bfa_ioc_detach(struct bfa_ioc_s *ioc); | 329 | void bfa_ioc_detach(struct bfa_ioc_s *ioc); |
| 326 | void bfa_ioc_pci_init(struct bfa_ioc_s *ioc, struct bfa_pcidev_s *pcidev, | 330 | void bfa_ioc_pci_init(struct bfa_ioc_s *ioc, struct bfa_pcidev_s *pcidev, |
| 327 | enum bfi_mclass mc); | 331 | enum bfi_mclass mc); |
| 328 | u32 bfa_ioc_meminfo(void); | ||
| 329 | void bfa_ioc_mem_claim(struct bfa_ioc_s *ioc, u8 *dm_kva, u64 dm_pa); | 332 | void bfa_ioc_mem_claim(struct bfa_ioc_s *ioc, u8 *dm_kva, u64 dm_pa); |
| 330 | void bfa_ioc_enable(struct bfa_ioc_s *ioc); | 333 | void bfa_ioc_enable(struct bfa_ioc_s *ioc); |
| 331 | void bfa_ioc_disable(struct bfa_ioc_s *ioc); | 334 | void bfa_ioc_disable(struct bfa_ioc_s *ioc); |
| @@ -353,7 +356,6 @@ enum bfa_ioc_state bfa_ioc_get_state(struct bfa_ioc_s *ioc); | |||
| 353 | void bfa_ioc_get_attr(struct bfa_ioc_s *ioc, struct bfa_ioc_attr_s *ioc_attr); | 356 | void bfa_ioc_get_attr(struct bfa_ioc_s *ioc, struct bfa_ioc_attr_s *ioc_attr); |
| 354 | void bfa_ioc_get_adapter_attr(struct bfa_ioc_s *ioc, | 357 | void bfa_ioc_get_adapter_attr(struct bfa_ioc_s *ioc, |
| 355 | struct bfa_adapter_attr_s *ad_attr); | 358 | struct bfa_adapter_attr_s *ad_attr); |
| 356 | int bfa_ioc_debug_trcsz(bfa_boolean_t auto_recover); | ||
| 357 | void bfa_ioc_debug_memclaim(struct bfa_ioc_s *ioc, void *dbg_fwsave); | 359 | void bfa_ioc_debug_memclaim(struct bfa_ioc_s *ioc, void *dbg_fwsave); |
| 358 | bfa_status_t bfa_ioc_debug_fwsave(struct bfa_ioc_s *ioc, void *trcdata, | 360 | bfa_status_t bfa_ioc_debug_fwsave(struct bfa_ioc_s *ioc, void *trcdata, |
| 359 | int *trclen); | 361 | int *trclen); |
| @@ -361,15 +363,9 @@ bfa_status_t bfa_ioc_debug_fwtrc(struct bfa_ioc_s *ioc, void *trcdata, | |||
| 361 | int *trclen); | 363 | int *trclen); |
| 362 | bfa_status_t bfa_ioc_debug_fwcore(struct bfa_ioc_s *ioc, void *buf, | 364 | bfa_status_t bfa_ioc_debug_fwcore(struct bfa_ioc_s *ioc, void *buf, |
| 363 | u32 *offset, int *buflen); | 365 | u32 *offset, int *buflen); |
| 364 | u32 bfa_ioc_smem_pgnum(struct bfa_ioc_s *ioc, u32 fmaddr); | ||
| 365 | u32 bfa_ioc_smem_pgoff(struct bfa_ioc_s *ioc, u32 fmaddr); | ||
| 366 | void bfa_ioc_set_fcmode(struct bfa_ioc_s *ioc); | 366 | void bfa_ioc_set_fcmode(struct bfa_ioc_s *ioc); |
| 367 | bfa_boolean_t bfa_ioc_get_fcmode(struct bfa_ioc_s *ioc); | 367 | bfa_boolean_t bfa_ioc_get_fcmode(struct bfa_ioc_s *ioc); |
| 368 | void bfa_ioc_hbfail_register(struct bfa_ioc_s *ioc, | ||
| 369 | struct bfa_ioc_hbfail_notify_s *notify); | ||
| 370 | bfa_boolean_t bfa_ioc_sem_get(void __iomem *sem_reg); | 368 | bfa_boolean_t bfa_ioc_sem_get(void __iomem *sem_reg); |
| 371 | void bfa_ioc_sem_release(void __iomem *sem_reg); | ||
| 372 | void bfa_ioc_hw_sem_release(struct bfa_ioc_s *ioc); | ||
| 373 | void bfa_ioc_fwver_get(struct bfa_ioc_s *ioc, | 369 | void bfa_ioc_fwver_get(struct bfa_ioc_s *ioc, |
| 374 | struct bfi_ioc_image_hdr_s *fwhdr); | 370 | struct bfi_ioc_image_hdr_s *fwhdr); |
| 375 | bfa_boolean_t bfa_ioc_fwver_cmp(struct bfa_ioc_s *ioc, | 371 | bfa_boolean_t bfa_ioc_fwver_cmp(struct bfa_ioc_s *ioc, |
| @@ -380,13 +376,8 @@ bfa_status_t bfa_ioc_fw_stats_clear(struct bfa_ioc_s *ioc); | |||
| 380 | /* | 376 | /* |
| 381 | * bfa mfg wwn API functions | 377 | * bfa mfg wwn API functions |
| 382 | */ | 378 | */ |
| 383 | wwn_t bfa_ioc_get_pwwn(struct bfa_ioc_s *ioc); | ||
| 384 | wwn_t bfa_ioc_get_nwwn(struct bfa_ioc_s *ioc); | ||
| 385 | mac_t bfa_ioc_get_mac(struct bfa_ioc_s *ioc); | 379 | mac_t bfa_ioc_get_mac(struct bfa_ioc_s *ioc); |
| 386 | wwn_t bfa_ioc_get_mfg_pwwn(struct bfa_ioc_s *ioc); | ||
| 387 | wwn_t bfa_ioc_get_mfg_nwwn(struct bfa_ioc_s *ioc); | ||
| 388 | mac_t bfa_ioc_get_mfg_mac(struct bfa_ioc_s *ioc); | 380 | mac_t bfa_ioc_get_mfg_mac(struct bfa_ioc_s *ioc); |
| 389 | u64 bfa_ioc_get_adid(struct bfa_ioc_s *ioc); | ||
| 390 | 381 | ||
| 391 | /* | 382 | /* |
| 392 | * F/W Image Size & Chunk | 383 | * F/W Image Size & Chunk |
diff --git a/drivers/scsi/bfa/bfa_ioc_cb.c b/drivers/scsi/bfa/bfa_ioc_cb.c index 61f03cbe543..e9c8554e356 100644 --- a/drivers/scsi/bfa/bfa_ioc_cb.c +++ b/drivers/scsi/bfa/bfa_ioc_cb.c | |||
| @@ -181,7 +181,7 @@ bfa_ioc_cb_ownership_reset(struct bfa_ioc_s *ioc) | |||
| 181 | * will lock it instead of clearing it. | 181 | * will lock it instead of clearing it. |
| 182 | */ | 182 | */ |
| 183 | readl(ioc->ioc_regs.ioc_sem_reg); | 183 | readl(ioc->ioc_regs.ioc_sem_reg); |
| 184 | bfa_ioc_hw_sem_release(ioc); | 184 | writel(1, ioc->ioc_regs.ioc_sem_reg); |
| 185 | } | 185 | } |
| 186 | 186 | ||
| 187 | 187 | ||
diff --git a/drivers/scsi/bfa/bfa_ioc_ct.c b/drivers/scsi/bfa/bfa_ioc_ct.c index 79fb3120363..45d0ddc88c5 100644 --- a/drivers/scsi/bfa/bfa_ioc_ct.c +++ b/drivers/scsi/bfa/bfa_ioc_ct.c | |||
| @@ -83,7 +83,7 @@ bfa_ioc_ct_firmware_lock(struct bfa_ioc_s *ioc) | |||
| 83 | */ | 83 | */ |
| 84 | if (usecnt == 0) { | 84 | if (usecnt == 0) { |
| 85 | writel(1, ioc->ioc_regs.ioc_usage_reg); | 85 | writel(1, ioc->ioc_regs.ioc_usage_reg); |
| 86 | bfa_ioc_sem_release(ioc->ioc_regs.ioc_usage_sem_reg); | 86 | writel(1, ioc->ioc_regs.ioc_usage_sem_reg); |
| 87 | bfa_trc(ioc, usecnt); | 87 | bfa_trc(ioc, usecnt); |
| 88 | return BFA_TRUE; | 88 | return BFA_TRUE; |
| 89 | } | 89 | } |
| @@ -101,7 +101,7 @@ bfa_ioc_ct_firmware_lock(struct bfa_ioc_s *ioc) | |||
| 101 | */ | 101 | */ |
| 102 | bfa_ioc_fwver_get(ioc, &fwhdr); | 102 | bfa_ioc_fwver_get(ioc, &fwhdr); |
| 103 | if (!bfa_ioc_fwver_cmp(ioc, &fwhdr)) { | 103 | if (!bfa_ioc_fwver_cmp(ioc, &fwhdr)) { |
| 104 | bfa_ioc_sem_release(ioc->ioc_regs.ioc_usage_sem_reg); | 104 | writel(1, ioc->ioc_regs.ioc_usage_sem_reg); |
| 105 | bfa_trc(ioc, usecnt); | 105 | bfa_trc(ioc, usecnt); |
| 106 | return BFA_FALSE; | 106 | return BFA_FALSE; |
| 107 | } | 107 | } |
| @@ -111,7 +111,7 @@ bfa_ioc_ct_firmware_lock(struct bfa_ioc_s *ioc) | |||
| 111 | */ | 111 | */ |
| 112 | usecnt++; | 112 | usecnt++; |
| 113 | writel(usecnt, ioc->ioc_regs.ioc_usage_reg); | 113 | writel(usecnt, ioc->ioc_regs.ioc_usage_reg); |
| 114 | bfa_ioc_sem_release(ioc->ioc_regs.ioc_usage_sem_reg); | 114 | writel(1, ioc->ioc_regs.ioc_usage_sem_reg); |
| 115 | bfa_trc(ioc, usecnt); | 115 | bfa_trc(ioc, usecnt); |
| 116 | return BFA_TRUE; | 116 | return BFA_TRUE; |
| 117 | } | 117 | } |
| @@ -145,7 +145,7 @@ bfa_ioc_ct_firmware_unlock(struct bfa_ioc_s *ioc) | |||
| 145 | writel(usecnt, ioc->ioc_regs.ioc_usage_reg); | 145 | writel(usecnt, ioc->ioc_regs.ioc_usage_reg); |
| 146 | bfa_trc(ioc, usecnt); | 146 | bfa_trc(ioc, usecnt); |
| 147 | 147 | ||
| 148 | bfa_ioc_sem_release(ioc->ioc_regs.ioc_usage_sem_reg); | 148 | writel(1, ioc->ioc_regs.ioc_usage_sem_reg); |
| 149 | } | 149 | } |
| 150 | 150 | ||
| 151 | /* | 151 | /* |
| @@ -313,7 +313,7 @@ bfa_ioc_ct_ownership_reset(struct bfa_ioc_s *ioc) | |||
| 313 | if (ioc->cna) { | 313 | if (ioc->cna) { |
| 314 | bfa_ioc_sem_get(ioc->ioc_regs.ioc_usage_sem_reg); | 314 | bfa_ioc_sem_get(ioc->ioc_regs.ioc_usage_sem_reg); |
| 315 | writel(0, ioc->ioc_regs.ioc_usage_reg); | 315 | writel(0, ioc->ioc_regs.ioc_usage_reg); |
| 316 | bfa_ioc_sem_release(ioc->ioc_regs.ioc_usage_sem_reg); | 316 | writel(1, ioc->ioc_regs.ioc_usage_sem_reg); |
| 317 | } | 317 | } |
| 318 | 318 | ||
| 319 | /* | 319 | /* |
| @@ -322,7 +322,7 @@ bfa_ioc_ct_ownership_reset(struct bfa_ioc_s *ioc) | |||
| 322 | * will lock it instead of clearing it. | 322 | * will lock it instead of clearing it. |
| 323 | */ | 323 | */ |
| 324 | readl(ioc->ioc_regs.ioc_sem_reg); | 324 | readl(ioc->ioc_regs.ioc_sem_reg); |
| 325 | bfa_ioc_hw_sem_release(ioc); | 325 | writel(1, ioc->ioc_regs.ioc_sem_reg); |
| 326 | } | 326 | } |
| 327 | 327 | ||
| 328 | 328 | ||
diff --git a/drivers/scsi/bfa/bfa_plog.h b/drivers/scsi/bfa/bfa_plog.h index bdcd8ecd4f4..1c9baa68339 100644 --- a/drivers/scsi/bfa/bfa_plog.h +++ b/drivers/scsi/bfa/bfa_plog.h | |||
| @@ -151,6 +151,5 @@ void bfa_plog_fchdr(struct bfa_plog_s *plog, enum bfa_plog_mid mid, | |||
| 151 | void bfa_plog_fchdr_and_pl(struct bfa_plog_s *plog, enum bfa_plog_mid mid, | 151 | void bfa_plog_fchdr_and_pl(struct bfa_plog_s *plog, enum bfa_plog_mid mid, |
| 152 | enum bfa_plog_eid event, u16 misc, | 152 | enum bfa_plog_eid event, u16 misc, |
| 153 | struct fchs_s *fchdr, u32 pld_w0); | 153 | struct fchs_s *fchdr, u32 pld_w0); |
| 154 | bfa_boolean_t bfa_plog_get_setting(struct bfa_plog_s *plog); | ||
| 155 | 154 | ||
| 156 | #endif /* __BFA_PORTLOG_H__ */ | 155 | #endif /* __BFA_PORTLOG_H__ */ |
diff --git a/drivers/scsi/bfa/bfa_port.c b/drivers/scsi/bfa/bfa_port.c index fa57b128b3d..76efb9a5c32 100644 --- a/drivers/scsi/bfa/bfa_port.c +++ b/drivers/scsi/bfa/bfa_port.c | |||
| @@ -447,7 +447,7 @@ bfa_port_attach(struct bfa_port_s *port, struct bfa_ioc_s *ioc, | |||
| 447 | 447 | ||
| 448 | bfa_ioc_mbox_regisr(port->ioc, BFI_MC_PORT, bfa_port_isr, port); | 448 | bfa_ioc_mbox_regisr(port->ioc, BFI_MC_PORT, bfa_port_isr, port); |
| 449 | bfa_ioc_hbfail_init(&port->hbfail, bfa_port_hbfail, port); | 449 | bfa_ioc_hbfail_init(&port->hbfail, bfa_port_hbfail, port); |
| 450 | bfa_ioc_hbfail_register(port->ioc, &port->hbfail); | 450 | list_add_tail(&port->hbfail.qe, &port->ioc->hb_notify_q); |
| 451 | 451 | ||
| 452 | /* | 452 | /* |
| 453 | * initialize time stamp for stats reset | 453 | * initialize time stamp for stats reset |
diff --git a/drivers/scsi/bfa/bfa_svc.c b/drivers/scsi/bfa/bfa_svc.c index 3a2bee4d42d..c9192869c0f 100644 --- a/drivers/scsi/bfa/bfa_svc.c +++ b/drivers/scsi/bfa/bfa_svc.c | |||
| @@ -41,19 +41,6 @@ BFA_MODULE(uf); | |||
| 41 | #define BFA_LPS_MAX_VPORTS_SUPP_CB 255 | 41 | #define BFA_LPS_MAX_VPORTS_SUPP_CB 255 |
| 42 | #define BFA_LPS_MAX_VPORTS_SUPP_CT 190 | 42 | #define BFA_LPS_MAX_VPORTS_SUPP_CT 190 |
| 43 | 43 | ||
| 44 | /* | ||
| 45 | * lps_pvt BFA LPS private functions | ||
| 46 | */ | ||
| 47 | |||
| 48 | enum bfa_lps_event { | ||
| 49 | BFA_LPS_SM_LOGIN = 1, /* login request from user */ | ||
| 50 | BFA_LPS_SM_LOGOUT = 2, /* logout request from user */ | ||
| 51 | BFA_LPS_SM_FWRSP = 3, /* f/w response to login/logout */ | ||
| 52 | BFA_LPS_SM_RESUME = 4, /* space present in reqq queue */ | ||
| 53 | BFA_LPS_SM_DELETE = 5, /* lps delete from user */ | ||
| 54 | BFA_LPS_SM_OFFLINE = 6, /* Link is offline */ | ||
| 55 | BFA_LPS_SM_RX_CVL = 7, /* Rx clear virtual link */ | ||
| 56 | }; | ||
| 57 | 44 | ||
| 58 | /* | 45 | /* |
| 59 | * FC PORT related definitions | 46 | * FC PORT related definitions |
| @@ -113,19 +100,6 @@ enum bfa_fcport_ln_sm_event { | |||
| 113 | } \ | 100 | } \ |
| 114 | } while (0) | 101 | } while (0) |
| 115 | 102 | ||
| 116 | |||
| 117 | enum bfa_rport_event { | ||
| 118 | BFA_RPORT_SM_CREATE = 1, /* rport create event */ | ||
| 119 | BFA_RPORT_SM_DELETE = 2, /* deleting an existing rport */ | ||
| 120 | BFA_RPORT_SM_ONLINE = 3, /* rport is online */ | ||
| 121 | BFA_RPORT_SM_OFFLINE = 4, /* rport is offline */ | ||
| 122 | BFA_RPORT_SM_FWRSP = 5, /* firmware response */ | ||
| 123 | BFA_RPORT_SM_HWFAIL = 6, /* IOC h/w failure */ | ||
| 124 | BFA_RPORT_SM_QOS_SCN = 7, /* QoS SCN from firmware */ | ||
| 125 | BFA_RPORT_SM_SET_SPEED = 8, /* Set Rport Speed */ | ||
| 126 | BFA_RPORT_SM_QRESUME = 9, /* space in requeue queue */ | ||
| 127 | }; | ||
| 128 | |||
| 129 | /* | 103 | /* |
| 130 | * forward declarations FCXP related functions | 104 | * forward declarations FCXP related functions |
| 131 | */ | 105 | */ |
| @@ -438,12 +412,6 @@ bfa_plog_fchdr_and_pl(struct bfa_plog_s *plog, enum bfa_plog_mid mid, | |||
| 438 | } | 412 | } |
| 439 | 413 | ||
| 440 | 414 | ||
| 441 | bfa_boolean_t | ||
| 442 | bfa_plog_get_setting(struct bfa_plog_s *plog) | ||
| 443 | { | ||
| 444 | return (bfa_boolean_t)plog->plog_enabled; | ||
| 445 | } | ||
| 446 | |||
| 447 | /* | 415 | /* |
| 448 | * fcxp_pvt BFA FCXP private functions | 416 | * fcxp_pvt BFA FCXP private functions |
| 449 | */ | 417 | */ |
| @@ -1846,24 +1814,6 @@ bfa_lps_fdisclogo(struct bfa_lps_s *lps) | |||
| 1846 | bfa_sm_send_event(lps, BFA_LPS_SM_LOGOUT); | 1814 | bfa_sm_send_event(lps, BFA_LPS_SM_LOGOUT); |
| 1847 | } | 1815 | } |
| 1848 | 1816 | ||
| 1849 | /* | ||
| 1850 | * Discard a pending login request -- should be called only for | ||
| 1851 | * link down handling. | ||
| 1852 | */ | ||
| 1853 | void | ||
| 1854 | bfa_lps_discard(struct bfa_lps_s *lps) | ||
| 1855 | { | ||
| 1856 | bfa_sm_send_event(lps, BFA_LPS_SM_OFFLINE); | ||
| 1857 | } | ||
| 1858 | |||
| 1859 | /* | ||
| 1860 | * Return lport services tag | ||
| 1861 | */ | ||
| 1862 | u8 | ||
| 1863 | bfa_lps_get_tag(struct bfa_lps_s *lps) | ||
| 1864 | { | ||
| 1865 | return lps->lp_tag; | ||
| 1866 | } | ||
| 1867 | 1817 | ||
| 1868 | /* | 1818 | /* |
| 1869 | * Return lport services tag given the pid | 1819 | * Return lport services tag given the pid |
| @@ -1884,55 +1834,6 @@ bfa_lps_get_tag_from_pid(struct bfa_s *bfa, u32 pid) | |||
| 1884 | return 0; | 1834 | return 0; |
| 1885 | } | 1835 | } |
| 1886 | 1836 | ||
| 1887 | /* | ||
| 1888 | * return if fabric login indicates support for NPIV | ||
| 1889 | */ | ||
| 1890 | bfa_boolean_t | ||
| 1891 | bfa_lps_is_npiv_en(struct bfa_lps_s *lps) | ||
| 1892 | { | ||
| 1893 | return lps->npiv_en; | ||
| 1894 | } | ||
| 1895 | |||
| 1896 | /* | ||
| 1897 | * Return TRUE if attached to F-Port, else return FALSE | ||
| 1898 | */ | ||
| 1899 | bfa_boolean_t | ||
| 1900 | bfa_lps_is_fport(struct bfa_lps_s *lps) | ||
| 1901 | { | ||
| 1902 | return lps->fport; | ||
| 1903 | } | ||
| 1904 | |||
| 1905 | /* | ||
| 1906 | * Return TRUE if attached to a Brocade Fabric | ||
| 1907 | */ | ||
| 1908 | bfa_boolean_t | ||
| 1909 | bfa_lps_is_brcd_fabric(struct bfa_lps_s *lps) | ||
| 1910 | { | ||
| 1911 | return lps->brcd_switch; | ||
| 1912 | } | ||
| 1913 | /* | ||
| 1914 | * return TRUE if authentication is required | ||
| 1915 | */ | ||
| 1916 | bfa_boolean_t | ||
| 1917 | bfa_lps_is_authreq(struct bfa_lps_s *lps) | ||
| 1918 | { | ||
| 1919 | return lps->auth_req; | ||
| 1920 | } | ||
| 1921 | |||
| 1922 | bfa_eproto_status_t | ||
| 1923 | bfa_lps_get_extstatus(struct bfa_lps_s *lps) | ||
| 1924 | { | ||
| 1925 | return lps->ext_status; | ||
| 1926 | } | ||
| 1927 | |||
| 1928 | /* | ||
| 1929 | * return port id assigned to the lport | ||
| 1930 | */ | ||
| 1931 | u32 | ||
| 1932 | bfa_lps_get_pid(struct bfa_lps_s *lps) | ||
| 1933 | { | ||
| 1934 | return lps->lp_pid; | ||
| 1935 | } | ||
| 1936 | 1837 | ||
| 1937 | /* | 1838 | /* |
| 1938 | * return port id assigned to the base lport | 1839 | * return port id assigned to the base lport |
| @@ -1946,60 +1847,6 @@ bfa_lps_get_base_pid(struct bfa_s *bfa) | |||
| 1946 | } | 1847 | } |
| 1947 | 1848 | ||
| 1948 | /* | 1849 | /* |
| 1949 | * Return bb_credit assigned in FLOGI response | ||
| 1950 | */ | ||
| 1951 | u16 | ||
| 1952 | bfa_lps_get_peer_bbcredit(struct bfa_lps_s *lps) | ||
| 1953 | { | ||
| 1954 | return lps->pr_bbcred; | ||
| 1955 | } | ||
| 1956 | |||
| 1957 | /* | ||
| 1958 | * Return peer port name | ||
| 1959 | */ | ||
| 1960 | wwn_t | ||
| 1961 | bfa_lps_get_peer_pwwn(struct bfa_lps_s *lps) | ||
| 1962 | { | ||
| 1963 | return lps->pr_pwwn; | ||
| 1964 | } | ||
| 1965 | |||
| 1966 | /* | ||
| 1967 | * Return peer node name | ||
| 1968 | */ | ||
| 1969 | wwn_t | ||
| 1970 | bfa_lps_get_peer_nwwn(struct bfa_lps_s *lps) | ||
| 1971 | { | ||
| 1972 | return lps->pr_nwwn; | ||
| 1973 | } | ||
| 1974 | |||
| 1975 | /* | ||
| 1976 | * return reason code if login request is rejected | ||
| 1977 | */ | ||
| 1978 | u8 | ||
| 1979 | bfa_lps_get_lsrjt_rsn(struct bfa_lps_s *lps) | ||
| 1980 | { | ||
| 1981 | return lps->lsrjt_rsn; | ||
| 1982 | } | ||
| 1983 | |||
| 1984 | /* | ||
| 1985 | * return explanation code if login request is rejected | ||
| 1986 | */ | ||
| 1987 | u8 | ||
| 1988 | bfa_lps_get_lsrjt_expl(struct bfa_lps_s *lps) | ||
| 1989 | { | ||
| 1990 | return lps->lsrjt_expl; | ||
| 1991 | } | ||
| 1992 | |||
| 1993 | /* | ||
| 1994 | * Return fpma/spma MAC for lport | ||
| 1995 | */ | ||
| 1996 | mac_t | ||
| 1997 | bfa_lps_get_lp_mac(struct bfa_lps_s *lps) | ||
| 1998 | { | ||
| 1999 | return lps->lp_mac; | ||
| 2000 | } | ||
| 2001 | |||
| 2002 | /* | ||
| 2003 | * LPS firmware message class handler. | 1850 | * LPS firmware message class handler. |
| 2004 | */ | 1851 | */ |
| 2005 | void | 1852 | void |
| @@ -3064,8 +2911,8 @@ bfa_fcport_send_disable(struct bfa_fcport_s *fcport) | |||
| 3064 | static void | 2911 | static void |
| 3065 | bfa_fcport_set_wwns(struct bfa_fcport_s *fcport) | 2912 | bfa_fcport_set_wwns(struct bfa_fcport_s *fcport) |
| 3066 | { | 2913 | { |
| 3067 | fcport->pwwn = bfa_ioc_get_pwwn(&fcport->bfa->ioc); | 2914 | fcport->pwwn = fcport->bfa->ioc.attr->pwwn; |
| 3068 | fcport->nwwn = bfa_ioc_get_nwwn(&fcport->bfa->ioc); | 2915 | fcport->nwwn = fcport->bfa->ioc.attr->nwwn; |
| 3069 | 2916 | ||
| 3070 | bfa_trc(fcport->bfa, fcport->pwwn); | 2917 | bfa_trc(fcport->bfa, fcport->pwwn); |
| 3071 | bfa_trc(fcport->bfa, fcport->nwwn); | 2918 | bfa_trc(fcport->bfa, fcport->nwwn); |
| @@ -3707,8 +3554,8 @@ bfa_fcport_get_attr(struct bfa_s *bfa, struct bfa_port_attr_s *attr) | |||
| 3707 | attr->nwwn = fcport->nwwn; | 3554 | attr->nwwn = fcport->nwwn; |
| 3708 | attr->pwwn = fcport->pwwn; | 3555 | attr->pwwn = fcport->pwwn; |
| 3709 | 3556 | ||
| 3710 | attr->factorypwwn = bfa_ioc_get_mfg_pwwn(&bfa->ioc); | 3557 | attr->factorypwwn = bfa->ioc.attr->mfg_pwwn; |
| 3711 | attr->factorynwwn = bfa_ioc_get_mfg_nwwn(&bfa->ioc); | 3558 | attr->factorynwwn = bfa->ioc.attr->mfg_nwwn; |
| 3712 | 3559 | ||
| 3713 | memcpy(&attr->pport_cfg, &fcport->cfg, | 3560 | memcpy(&attr->pport_cfg, &fcport->cfg, |
| 3714 | sizeof(struct bfa_port_cfg_s)); | 3561 | sizeof(struct bfa_port_cfg_s)); |
| @@ -3726,7 +3573,7 @@ bfa_fcport_get_attr(struct bfa_s *bfa, struct bfa_port_attr_s *attr) | |||
| 3726 | /* beacon attributes */ | 3573 | /* beacon attributes */ |
| 3727 | attr->beacon = fcport->beacon; | 3574 | attr->beacon = fcport->beacon; |
| 3728 | attr->link_e2e_beacon = fcport->link_e2e_beacon; | 3575 | attr->link_e2e_beacon = fcport->link_e2e_beacon; |
| 3729 | attr->plog_enabled = bfa_plog_get_setting(fcport->bfa->plog); | 3576 | attr->plog_enabled = (bfa_boolean_t)fcport->bfa->plog->plog_enabled; |
| 3730 | attr->io_profile = bfa_fcpim_get_io_profile(fcport->bfa); | 3577 | attr->io_profile = bfa_fcpim_get_io_profile(fcport->bfa); |
| 3731 | 3578 | ||
| 3732 | attr->pport_cfg.path_tov = bfa_fcpim_path_tov_get(bfa); | 3579 | attr->pport_cfg.path_tov = bfa_fcpim_path_tov_get(bfa); |
| @@ -4584,7 +4431,7 @@ bfa_rport_create(struct bfa_s *bfa, void *rport_drv) | |||
| 4584 | 4431 | ||
| 4585 | rp->bfa = bfa; | 4432 | rp->bfa = bfa; |
| 4586 | rp->rport_drv = rport_drv; | 4433 | rp->rport_drv = rport_drv; |
| 4587 | bfa_rport_clear_stats(rp); | 4434 | memset(&rp->stats, 0, sizeof(rp->stats)); |
| 4588 | 4435 | ||
| 4589 | bfa_assert(bfa_sm_cmp_state(rp, bfa_rport_sm_uninit)); | 4436 | bfa_assert(bfa_sm_cmp_state(rp, bfa_rport_sm_uninit)); |
| 4590 | bfa_sm_send_event(rp, BFA_RPORT_SM_CREATE); | 4437 | bfa_sm_send_event(rp, BFA_RPORT_SM_CREATE); |
| @@ -4593,12 +4440,6 @@ bfa_rport_create(struct bfa_s *bfa, void *rport_drv) | |||
| 4593 | } | 4440 | } |
| 4594 | 4441 | ||
| 4595 | void | 4442 | void |
| 4596 | bfa_rport_delete(struct bfa_rport_s *rport) | ||
| 4597 | { | ||
| 4598 | bfa_sm_send_event(rport, BFA_RPORT_SM_DELETE); | ||
| 4599 | } | ||
| 4600 | |||
| 4601 | void | ||
| 4602 | bfa_rport_online(struct bfa_rport_s *rport, struct bfa_rport_info_s *rport_info) | 4443 | bfa_rport_online(struct bfa_rport_s *rport, struct bfa_rport_info_s *rport_info) |
| 4603 | { | 4444 | { |
| 4604 | bfa_assert(rport_info->max_frmsz != 0); | 4445 | bfa_assert(rport_info->max_frmsz != 0); |
| @@ -4617,12 +4458,6 @@ bfa_rport_online(struct bfa_rport_s *rport, struct bfa_rport_info_s *rport_info) | |||
| 4617 | } | 4458 | } |
| 4618 | 4459 | ||
| 4619 | void | 4460 | void |
| 4620 | bfa_rport_offline(struct bfa_rport_s *rport) | ||
| 4621 | { | ||
| 4622 | bfa_sm_send_event(rport, BFA_RPORT_SM_OFFLINE); | ||
| 4623 | } | ||
| 4624 | |||
| 4625 | void | ||
| 4626 | bfa_rport_speed(struct bfa_rport_s *rport, enum bfa_port_speed speed) | 4461 | bfa_rport_speed(struct bfa_rport_s *rport, enum bfa_port_speed speed) |
| 4627 | { | 4462 | { |
| 4628 | bfa_assert(speed != 0); | 4463 | bfa_assert(speed != 0); |
| @@ -4632,12 +4467,6 @@ bfa_rport_speed(struct bfa_rport_s *rport, enum bfa_port_speed speed) | |||
| 4632 | bfa_sm_send_event(rport, BFA_RPORT_SM_SET_SPEED); | 4467 | bfa_sm_send_event(rport, BFA_RPORT_SM_SET_SPEED); |
| 4633 | } | 4468 | } |
| 4634 | 4469 | ||
| 4635 | void | ||
| 4636 | bfa_rport_clear_stats(struct bfa_rport_s *rport) | ||
| 4637 | { | ||
| 4638 | memset(&rport->stats, 0, sizeof(rport->stats)); | ||
| 4639 | } | ||
| 4640 | |||
| 4641 | 4470 | ||
| 4642 | /* | 4471 | /* |
| 4643 | * SGPG related functions | 4472 | * SGPG related functions |
| @@ -5101,8 +4930,6 @@ bfa_uf_start(struct bfa_s *bfa) | |||
| 5101 | bfa_uf_post_all(BFA_UF_MOD(bfa)); | 4930 | bfa_uf_post_all(BFA_UF_MOD(bfa)); |
| 5102 | } | 4931 | } |
| 5103 | 4932 | ||
| 5104 | |||
| 5105 | |||
| 5106 | /* | 4933 | /* |
| 5107 | * hal_uf_api | 4934 | * hal_uf_api |
| 5108 | */ | 4935 | */ |
diff --git a/drivers/scsi/bfa/bfa_svc.h b/drivers/scsi/bfa/bfa_svc.h index 0e23c1bfcba..29b091826e9 100644 --- a/drivers/scsi/bfa/bfa_svc.h +++ b/drivers/scsi/bfa/bfa_svc.h | |||
| @@ -220,6 +220,18 @@ void bfa_fcxp_isr(struct bfa_s *bfa, struct bfi_msg_s *msg); | |||
| 220 | /* | 220 | /* |
| 221 | * RPORT related defines | 221 | * RPORT related defines |
| 222 | */ | 222 | */ |
| 223 | enum bfa_rport_event { | ||
| 224 | BFA_RPORT_SM_CREATE = 1, /* rport create event */ | ||
| 225 | BFA_RPORT_SM_DELETE = 2, /* deleting an existing rport */ | ||
| 226 | BFA_RPORT_SM_ONLINE = 3, /* rport is online */ | ||
| 227 | BFA_RPORT_SM_OFFLINE = 4, /* rport is offline */ | ||
| 228 | BFA_RPORT_SM_FWRSP = 5, /* firmware response */ | ||
| 229 | BFA_RPORT_SM_HWFAIL = 6, /* IOC h/w failure */ | ||
| 230 | BFA_RPORT_SM_QOS_SCN = 7, /* QoS SCN from firmware */ | ||
| 231 | BFA_RPORT_SM_SET_SPEED = 8, /* Set Rport Speed */ | ||
| 232 | BFA_RPORT_SM_QRESUME = 9, /* space in requeue queue */ | ||
| 233 | }; | ||
| 234 | |||
| 223 | #define BFA_RPORT_MIN 4 | 235 | #define BFA_RPORT_MIN 4 |
| 224 | 236 | ||
| 225 | struct bfa_rport_mod_s { | 237 | struct bfa_rport_mod_s { |
| @@ -516,12 +528,9 @@ bfa_boolean_t bfa_fcport_is_qos_enabled(struct bfa_s *bfa); | |||
| 516 | * bfa rport API functions | 528 | * bfa rport API functions |
| 517 | */ | 529 | */ |
| 518 | struct bfa_rport_s *bfa_rport_create(struct bfa_s *bfa, void *rport_drv); | 530 | struct bfa_rport_s *bfa_rport_create(struct bfa_s *bfa, void *rport_drv); |
| 519 | void bfa_rport_delete(struct bfa_rport_s *rport); | ||
| 520 | void bfa_rport_online(struct bfa_rport_s *rport, | 531 | void bfa_rport_online(struct bfa_rport_s *rport, |
| 521 | struct bfa_rport_info_s *rport_info); | 532 | struct bfa_rport_info_s *rport_info); |
| 522 | void bfa_rport_offline(struct bfa_rport_s *rport); | ||
| 523 | void bfa_rport_speed(struct bfa_rport_s *rport, enum bfa_port_speed speed); | 533 | void bfa_rport_speed(struct bfa_rport_s *rport, enum bfa_port_speed speed); |
| 524 | void bfa_rport_clear_stats(struct bfa_rport_s *rport); | ||
| 525 | void bfa_cb_rport_online(void *rport); | 534 | void bfa_cb_rport_online(void *rport); |
| 526 | void bfa_cb_rport_offline(void *rport); | 535 | void bfa_cb_rport_offline(void *rport); |
| 527 | void bfa_cb_rport_qos_scn_flowid(void *rport, | 536 | void bfa_cb_rport_qos_scn_flowid(void *rport, |
| @@ -594,28 +603,14 @@ void bfa_uf_free(struct bfa_uf_s *uf); | |||
| 594 | u32 bfa_lps_get_max_vport(struct bfa_s *bfa); | 603 | u32 bfa_lps_get_max_vport(struct bfa_s *bfa); |
| 595 | struct bfa_lps_s *bfa_lps_alloc(struct bfa_s *bfa); | 604 | struct bfa_lps_s *bfa_lps_alloc(struct bfa_s *bfa); |
| 596 | void bfa_lps_delete(struct bfa_lps_s *lps); | 605 | void bfa_lps_delete(struct bfa_lps_s *lps); |
| 597 | void bfa_lps_discard(struct bfa_lps_s *lps); | ||
| 598 | void bfa_lps_flogi(struct bfa_lps_s *lps, void *uarg, u8 alpa, | 606 | void bfa_lps_flogi(struct bfa_lps_s *lps, void *uarg, u8 alpa, |
| 599 | u16 pdusz, wwn_t pwwn, wwn_t nwwn, | 607 | u16 pdusz, wwn_t pwwn, wwn_t nwwn, |
| 600 | bfa_boolean_t auth_en); | 608 | bfa_boolean_t auth_en); |
| 601 | void bfa_lps_fdisc(struct bfa_lps_s *lps, void *uarg, u16 pdusz, | 609 | void bfa_lps_fdisc(struct bfa_lps_s *lps, void *uarg, u16 pdusz, |
| 602 | wwn_t pwwn, wwn_t nwwn); | 610 | wwn_t pwwn, wwn_t nwwn); |
| 603 | void bfa_lps_fdisclogo(struct bfa_lps_s *lps); | 611 | void bfa_lps_fdisclogo(struct bfa_lps_s *lps); |
| 604 | u8 bfa_lps_get_tag(struct bfa_lps_s *lps); | ||
| 605 | bfa_boolean_t bfa_lps_is_npiv_en(struct bfa_lps_s *lps); | ||
| 606 | bfa_boolean_t bfa_lps_is_fport(struct bfa_lps_s *lps); | ||
| 607 | bfa_boolean_t bfa_lps_is_brcd_fabric(struct bfa_lps_s *lps); | ||
| 608 | bfa_boolean_t bfa_lps_is_authreq(struct bfa_lps_s *lps); | ||
| 609 | bfa_eproto_status_t bfa_lps_get_extstatus(struct bfa_lps_s *lps); | ||
| 610 | u32 bfa_lps_get_pid(struct bfa_lps_s *lps); | ||
| 611 | u32 bfa_lps_get_base_pid(struct bfa_s *bfa); | 612 | u32 bfa_lps_get_base_pid(struct bfa_s *bfa); |
| 612 | u8 bfa_lps_get_tag_from_pid(struct bfa_s *bfa, u32 pid); | 613 | u8 bfa_lps_get_tag_from_pid(struct bfa_s *bfa, u32 pid); |
| 613 | u16 bfa_lps_get_peer_bbcredit(struct bfa_lps_s *lps); | ||
| 614 | wwn_t bfa_lps_get_peer_pwwn(struct bfa_lps_s *lps); | ||
| 615 | wwn_t bfa_lps_get_peer_nwwn(struct bfa_lps_s *lps); | ||
| 616 | u8 bfa_lps_get_lsrjt_rsn(struct bfa_lps_s *lps); | ||
| 617 | u8 bfa_lps_get_lsrjt_expl(struct bfa_lps_s *lps); | ||
| 618 | mac_t bfa_lps_get_lp_mac(struct bfa_lps_s *lps); | ||
| 619 | void bfa_cb_lps_flogi_comp(void *bfad, void *uarg, bfa_status_t status); | 614 | void bfa_cb_lps_flogi_comp(void *bfad, void *uarg, bfa_status_t status); |
| 620 | void bfa_cb_lps_fdisc_comp(void *bfad, void *uarg, bfa_status_t status); | 615 | void bfa_cb_lps_fdisc_comp(void *bfad, void *uarg, bfa_status_t status); |
| 621 | void bfa_cb_lps_fdisclogo_comp(void *bfad, void *uarg); | 616 | void bfa_cb_lps_fdisclogo_comp(void *bfad, void *uarg); |
diff --git a/drivers/scsi/bfa/bfad.c b/drivers/scsi/bfa/bfad.c index 4239fdf0d2d..2bc78621252 100644 --- a/drivers/scsi/bfa/bfad.c +++ b/drivers/scsi/bfa/bfad.c | |||
| @@ -206,7 +206,7 @@ bfad_sm_created(struct bfad_s *bfad, enum bfad_sm_event event) | |||
| 206 | } | 206 | } |
| 207 | 207 | ||
| 208 | spin_lock_irqsave(&bfad->bfad_lock, flags); | 208 | spin_lock_irqsave(&bfad->bfad_lock, flags); |
| 209 | bfa_init(&bfad->bfa); | 209 | bfa_iocfc_init(&bfad->bfa); |
| 210 | spin_unlock_irqrestore(&bfad->bfad_lock, flags); | 210 | spin_unlock_irqrestore(&bfad->bfad_lock, flags); |
| 211 | 211 | ||
| 212 | /* Set up interrupt handler for each vectors */ | 212 | /* Set up interrupt handler for each vectors */ |
| @@ -725,7 +725,7 @@ bfad_bfa_tmo(unsigned long data) | |||
| 725 | 725 | ||
| 726 | spin_lock_irqsave(&bfad->bfad_lock, flags); | 726 | spin_lock_irqsave(&bfad->bfad_lock, flags); |
| 727 | 727 | ||
| 728 | bfa_timer_tick(&bfad->bfa); | 728 | bfa_timer_beat(&bfad->bfa.timer_mod); |
| 729 | 729 | ||
| 730 | bfa_comp_deq(&bfad->bfa, &doneq); | 730 | bfa_comp_deq(&bfad->bfa, &doneq); |
| 731 | spin_unlock_irqrestore(&bfad->bfad_lock, flags); | 731 | spin_unlock_irqrestore(&bfad->bfad_lock, flags); |
| @@ -882,8 +882,8 @@ bfad_drv_init(struct bfad_s *bfad) | |||
| 882 | goto out_hal_mem_alloc_failure; | 882 | goto out_hal_mem_alloc_failure; |
| 883 | } | 883 | } |
| 884 | 884 | ||
| 885 | bfa_init_trc(&bfad->bfa, bfad->trcmod); | 885 | bfad->bfa.trcmod = bfad->trcmod; |
| 886 | bfa_init_plog(&bfad->bfa, &bfad->plog_buf); | 886 | bfad->bfa.plog = &bfad->plog_buf; |
| 887 | bfa_plog_init(&bfad->plog_buf); | 887 | bfa_plog_init(&bfad->plog_buf); |
| 888 | bfa_plog_str(&bfad->plog_buf, BFA_PL_MID_DRVR, BFA_PL_EID_DRIVER_START, | 888 | bfa_plog_str(&bfad->plog_buf, BFA_PL_MID_DRVR, BFA_PL_EID_DRIVER_START, |
| 889 | 0, "Driver Attach"); | 889 | 0, "Driver Attach"); |
| @@ -893,9 +893,9 @@ bfad_drv_init(struct bfad_s *bfad) | |||
| 893 | 893 | ||
| 894 | /* FCS INIT */ | 894 | /* FCS INIT */ |
| 895 | spin_lock_irqsave(&bfad->bfad_lock, flags); | 895 | spin_lock_irqsave(&bfad->bfad_lock, flags); |
| 896 | bfa_fcs_trc_init(&bfad->bfa_fcs, bfad->trcmod); | 896 | bfad->bfa_fcs.trcmod = bfad->trcmod; |
| 897 | bfa_fcs_attach(&bfad->bfa_fcs, &bfad->bfa, bfad, BFA_FALSE); | 897 | bfa_fcs_attach(&bfad->bfa_fcs, &bfad->bfa, bfad, BFA_FALSE); |
| 898 | bfa_fcs_set_fdmi_param(&bfad->bfa_fcs, fdmi_enable); | 898 | bfad->bfa_fcs.fdmi_enabled = fdmi_enable; |
| 899 | spin_unlock_irqrestore(&bfad->bfad_lock, flags); | 899 | spin_unlock_irqrestore(&bfad->bfad_lock, flags); |
| 900 | 900 | ||
| 901 | bfad->bfad_flags |= BFAD_DRV_INIT_DONE; | 901 | bfad->bfad_flags |= BFAD_DRV_INIT_DONE; |
| @@ -913,7 +913,7 @@ bfad_drv_uninit(struct bfad_s *bfad) | |||
| 913 | 913 | ||
| 914 | spin_lock_irqsave(&bfad->bfad_lock, flags); | 914 | spin_lock_irqsave(&bfad->bfad_lock, flags); |
| 915 | init_completion(&bfad->comp); | 915 | init_completion(&bfad->comp); |
| 916 | bfa_stop(&bfad->bfa); | 916 | bfa_iocfc_stop(&bfad->bfa); |
| 917 | spin_unlock_irqrestore(&bfad->bfad_lock, flags); | 917 | spin_unlock_irqrestore(&bfad->bfad_lock, flags); |
| 918 | wait_for_completion(&bfad->comp); | 918 | wait_for_completion(&bfad->comp); |
| 919 | 919 | ||
| @@ -932,8 +932,8 @@ bfad_drv_start(struct bfad_s *bfad) | |||
| 932 | unsigned long flags; | 932 | unsigned long flags; |
| 933 | 933 | ||
| 934 | spin_lock_irqsave(&bfad->bfad_lock, flags); | 934 | spin_lock_irqsave(&bfad->bfad_lock, flags); |
| 935 | bfa_start(&bfad->bfa); | 935 | bfa_iocfc_start(&bfad->bfa); |
| 936 | bfa_fcs_start(&bfad->bfa_fcs); | 936 | bfa_fcs_fabric_modstart(&bfad->bfa_fcs); |
| 937 | bfad->bfad_flags |= BFAD_HAL_START_DONE; | 937 | bfad->bfad_flags |= BFAD_HAL_START_DONE; |
| 938 | spin_unlock_irqrestore(&bfad->bfad_lock, flags); | 938 | spin_unlock_irqrestore(&bfad->bfad_lock, flags); |
| 939 | 939 | ||
| @@ -963,7 +963,7 @@ bfad_stop(struct bfad_s *bfad) | |||
| 963 | 963 | ||
| 964 | spin_lock_irqsave(&bfad->bfad_lock, flags); | 964 | spin_lock_irqsave(&bfad->bfad_lock, flags); |
| 965 | init_completion(&bfad->comp); | 965 | init_completion(&bfad->comp); |
| 966 | bfa_stop(&bfad->bfa); | 966 | bfa_iocfc_stop(&bfad->bfa); |
| 967 | bfad->bfad_flags &= ~BFAD_HAL_START_DONE; | 967 | bfad->bfad_flags &= ~BFAD_HAL_START_DONE; |
| 968 | spin_unlock_irqrestore(&bfad->bfad_lock, flags); | 968 | spin_unlock_irqrestore(&bfad->bfad_lock, flags); |
| 969 | wait_for_completion(&bfad->comp); | 969 | wait_for_completion(&bfad->comp); |
| @@ -1524,7 +1524,7 @@ bfad_init(void) | |||
| 1524 | if (strcmp(FCPI_NAME, " fcpim") == 0) | 1524 | if (strcmp(FCPI_NAME, " fcpim") == 0) |
| 1525 | supported_fc4s |= BFA_LPORT_ROLE_FCP_IM; | 1525 | supported_fc4s |= BFA_LPORT_ROLE_FCP_IM; |
| 1526 | 1526 | ||
| 1527 | bfa_ioc_auto_recover(ioc_auto_recover); | 1527 | bfa_auto_recover = ioc_auto_recover; |
| 1528 | bfa_fcs_rport_set_del_timeout(rport_del_timeout); | 1528 | bfa_fcs_rport_set_del_timeout(rport_del_timeout); |
| 1529 | 1529 | ||
| 1530 | error = pci_register_driver(&bfad_pci_driver); | 1530 | error = pci_register_driver(&bfad_pci_driver); |
diff --git a/drivers/scsi/bfa/bfad_debugfs.c b/drivers/scsi/bfa/bfad_debugfs.c index 0fbd620474c..c66e32eced7 100644 --- a/drivers/scsi/bfa/bfad_debugfs.c +++ b/drivers/scsi/bfa/bfad_debugfs.c | |||
| @@ -90,7 +90,7 @@ bfad_debugfs_open_fwtrc(struct inode *inode, struct file *file) | |||
| 90 | memset(fw_debug->debug_buffer, 0, fw_debug->buffer_len); | 90 | memset(fw_debug->debug_buffer, 0, fw_debug->buffer_len); |
| 91 | 91 | ||
| 92 | spin_lock_irqsave(&bfad->bfad_lock, flags); | 92 | spin_lock_irqsave(&bfad->bfad_lock, flags); |
| 93 | rc = bfa_debug_fwtrc(&bfad->bfa, | 93 | rc = bfa_ioc_debug_fwtrc(&bfad->bfa.ioc, |
| 94 | fw_debug->debug_buffer, | 94 | fw_debug->debug_buffer, |
| 95 | &fw_debug->buffer_len); | 95 | &fw_debug->buffer_len); |
| 96 | spin_unlock_irqrestore(&bfad->bfad_lock, flags); | 96 | spin_unlock_irqrestore(&bfad->bfad_lock, flags); |
| @@ -134,7 +134,7 @@ bfad_debugfs_open_fwsave(struct inode *inode, struct file *file) | |||
| 134 | memset(fw_debug->debug_buffer, 0, fw_debug->buffer_len); | 134 | memset(fw_debug->debug_buffer, 0, fw_debug->buffer_len); |
| 135 | 135 | ||
| 136 | spin_lock_irqsave(&bfad->bfad_lock, flags); | 136 | spin_lock_irqsave(&bfad->bfad_lock, flags); |
| 137 | rc = bfa_debug_fwsave(&bfad->bfa, | 137 | rc = bfa_ioc_debug_fwsave(&bfad->bfa.ioc, |
| 138 | fw_debug->debug_buffer, | 138 | fw_debug->debug_buffer, |
| 139 | &fw_debug->buffer_len); | 139 | &fw_debug->buffer_len); |
| 140 | spin_unlock_irqrestore(&bfad->bfad_lock, flags); | 140 | spin_unlock_irqrestore(&bfad->bfad_lock, flags); |
diff --git a/drivers/scsi/bfa/bfad_im.c b/drivers/scsi/bfa/bfad_im.c index fbad5e9b240..bcab8912dd5 100644 --- a/drivers/scsi/bfa/bfad_im.c +++ b/drivers/scsi/bfa/bfad_im.c | |||
| @@ -922,7 +922,7 @@ bfad_im_supported_speeds(struct bfa_s *bfa) | |||
| 922 | if (!ioc_attr) | 922 | if (!ioc_attr) |
| 923 | return 0; | 923 | return 0; |
| 924 | 924 | ||
| 925 | bfa_get_attr(bfa, ioc_attr); | 925 | bfa_ioc_get_attr(&bfa->ioc, ioc_attr); |
| 926 | if (ioc_attr->adapter_attr.max_speed == BFA_PORT_SPEED_8GBPS) { | 926 | if (ioc_attr->adapter_attr.max_speed == BFA_PORT_SPEED_8GBPS) { |
| 927 | if (ioc_attr->adapter_attr.is_mezz) { | 927 | if (ioc_attr->adapter_attr.is_mezz) { |
| 928 | supported_speed |= FC_PORTSPEED_8GBIT | | 928 | supported_speed |= FC_PORTSPEED_8GBIT | |
