diff options
| author | Maggie Zhang <xmzhang@brocade.com> | 2010-12-09 22:13:20 -0500 |
|---|---|---|
| committer | James Bottomley <James.Bottomley@suse.de> | 2010-12-21 13:32:58 -0500 |
| commit | da99dcc98dd66a2de4864645bcafffd93cf5a62f (patch) | |
| tree | da6286a7f91f2087f916f6949dbd67d46570fe58 /drivers/scsi/bfa | |
| parent | f16a17507b09e10e0cccc4d675ccbfe030d51ef1 (diff) | |
[SCSI] bfa: remove unused functions and misc cleanups
Remove unused functions and fix checkpatch errors. Misc cleanups in
comment and formatting.
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_core.c | 2 | ||||
| -rw-r--r-- | drivers/scsi/bfa/bfa_fcbuild.c | 7 | ||||
| -rw-r--r-- | drivers/scsi/bfa/bfa_fcpim.c | 340 | ||||
| -rw-r--r-- | drivers/scsi/bfa/bfa_fcpim.h | 158 | ||||
| -rw-r--r-- | drivers/scsi/bfa/bfa_fcs_lport.c | 3 | ||||
| -rw-r--r-- | drivers/scsi/bfa/bfa_fcs_rport.c | 3 | ||||
| -rw-r--r-- | drivers/scsi/bfa/bfa_ioc.c | 16 | ||||
| -rw-r--r-- | drivers/scsi/bfa/bfa_svc.c | 38 |
8 files changed, 110 insertions, 457 deletions
diff --git a/drivers/scsi/bfa/bfa_core.c b/drivers/scsi/bfa/bfa_core.c index 02a5e04e365f..3f7f3742e72c 100644 --- a/drivers/scsi/bfa/bfa_core.c +++ b/drivers/scsi/bfa/bfa_core.c | |||
| @@ -342,7 +342,7 @@ bfa_msix_lpu_err(struct bfa_s *bfa, int vec) | |||
| 342 | intr = readl(bfa->iocfc.bfa_regs.intr_status); | 342 | intr = readl(bfa->iocfc.bfa_regs.intr_status); |
| 343 | 343 | ||
| 344 | if (intr & (__HFN_INT_MBOX_LPU0 | __HFN_INT_MBOX_LPU1)) | 344 | if (intr & (__HFN_INT_MBOX_LPU0 | __HFN_INT_MBOX_LPU1)) |
| 345 | bfa_ioc_mbox_isr(&bfa->ioc); | 345 | bfa_ioc_mbox_isr(&bfa->ioc); |
| 346 | 346 | ||
| 347 | intr &= (__HFN_INT_ERR_EMC | __HFN_INT_ERR_LPU0 | | 347 | intr &= (__HFN_INT_ERR_EMC | __HFN_INT_ERR_LPU0 | |
| 348 | __HFN_INT_ERR_LPU1 | __HFN_INT_ERR_PSS | __HFN_INT_LL_HALT); | 348 | __HFN_INT_ERR_LPU1 | __HFN_INT_ERR_PSS | __HFN_INT_LL_HALT); |
diff --git a/drivers/scsi/bfa/bfa_fcbuild.c b/drivers/scsi/bfa/bfa_fcbuild.c index 1ca5af75dd37..b7e253451654 100644 --- a/drivers/scsi/bfa/bfa_fcbuild.c +++ b/drivers/scsi/bfa/bfa_fcbuild.c | |||
| @@ -456,7 +456,7 @@ fc_logo_build(struct fchs_s *fchs, struct fc_logo_s *logo, u32 d_id, u32 s_id, | |||
| 456 | return sizeof(struct fc_logo_s); | 456 | return sizeof(struct fc_logo_s); |
| 457 | } | 457 | } |
| 458 | 458 | ||
| 459 | static u16 | 459 | static u16 |
| 460 | fc_adisc_x_build(struct fchs_s *fchs, struct fc_adisc_s *adisc, u32 d_id, | 460 | fc_adisc_x_build(struct fchs_s *fchs, struct fc_adisc_s *adisc, u32 d_id, |
| 461 | u32 s_id, __be16 ox_id, wwn_t port_name, | 461 | u32 s_id, __be16 ox_id, wwn_t port_name, |
| 462 | wwn_t node_name, u8 els_code) | 462 | wwn_t node_name, u8 els_code) |
| @@ -807,11 +807,6 @@ fc_rpsc_acc_build(struct fchs_s *fchs, struct fc_rpsc_acc_s *rpsc_acc, | |||
| 807 | return sizeof(struct fc_rpsc_acc_s); | 807 | return sizeof(struct fc_rpsc_acc_s); |
| 808 | } | 808 | } |
| 809 | 809 | ||
| 810 | /* | ||
| 811 | * TBD - | ||
| 812 | * . get rid of unnecessary memsets | ||
| 813 | */ | ||
| 814 | |||
| 815 | u16 | 810 | u16 |
| 816 | fc_logo_rsp_parse(struct fchs_s *fchs, int len) | 811 | fc_logo_rsp_parse(struct fchs_s *fchs, int len) |
| 817 | { | 812 | { |
diff --git a/drivers/scsi/bfa/bfa_fcpim.c b/drivers/scsi/bfa/bfa_fcpim.c index 506f1d326e5b..314c93122980 100644 --- a/drivers/scsi/bfa/bfa_fcpim.c +++ b/drivers/scsi/bfa/bfa_fcpim.c | |||
| @@ -21,11 +21,6 @@ | |||
| 21 | BFA_TRC_FILE(HAL, FCPIM); | 21 | BFA_TRC_FILE(HAL, FCPIM); |
| 22 | BFA_MODULE(fcpim); | 22 | BFA_MODULE(fcpim); |
| 23 | 23 | ||
| 24 | |||
| 25 | #define bfa_fcpim_add_iostats(__l, __r, __stats) \ | ||
| 26 | (__l->__stats += __r->__stats) | ||
| 27 | |||
| 28 | |||
| 29 | /* | 24 | /* |
| 30 | * BFA ITNIM Related definitions | 25 | * BFA ITNIM Related definitions |
| 31 | */ | 26 | */ |
| @@ -73,10 +68,8 @@ static void bfa_itnim_update_del_itn_stats(struct bfa_itnim_s *itnim); | |||
| 73 | } while (0) | 68 | } while (0) |
| 74 | 69 | ||
| 75 | /* | 70 | /* |
| 76 | * bfa_itnim_sm BFA itnim state machine | 71 | * itnim state machine event |
| 77 | */ | 72 | */ |
| 78 | |||
| 79 | |||
| 80 | enum bfa_itnim_event { | 73 | enum bfa_itnim_event { |
| 81 | BFA_ITNIM_SM_CREATE = 1, /* itnim is created */ | 74 | BFA_ITNIM_SM_CREATE = 1, /* itnim is created */ |
| 82 | BFA_ITNIM_SM_ONLINE = 2, /* itnim is online */ | 75 | BFA_ITNIM_SM_ONLINE = 2, /* itnim is online */ |
| @@ -228,7 +221,6 @@ static void __bfa_cb_ioim_failed(void *cbarg, bfa_boolean_t complete); | |||
| 228 | static void __bfa_cb_ioim_pathtov(void *cbarg, bfa_boolean_t complete); | 221 | static void __bfa_cb_ioim_pathtov(void *cbarg, bfa_boolean_t complete); |
| 229 | static bfa_boolean_t bfa_ioim_is_abortable(struct bfa_ioim_s *ioim); | 222 | static bfa_boolean_t bfa_ioim_is_abortable(struct bfa_ioim_s *ioim); |
| 230 | 223 | ||
| 231 | |||
| 232 | /* | 224 | /* |
| 233 | * forward declaration of BFA IO state machine | 225 | * forward declaration of BFA IO state machine |
| 234 | */ | 226 | */ |
| @@ -256,7 +248,6 @@ static void bfa_ioim_sm_resfree(struct bfa_ioim_s *ioim, | |||
| 256 | enum bfa_ioim_event event); | 248 | enum bfa_ioim_event event); |
| 257 | static void bfa_ioim_sm_cmnd_retry(struct bfa_ioim_s *ioim, | 249 | static void bfa_ioim_sm_cmnd_retry(struct bfa_ioim_s *ioim, |
| 258 | enum bfa_ioim_event event); | 250 | enum bfa_ioim_event event); |
| 259 | |||
| 260 | /* | 251 | /* |
| 261 | * forward declaration for BFA TSKIM functions | 252 | * forward declaration for BFA TSKIM functions |
| 262 | */ | 253 | */ |
| @@ -271,7 +262,6 @@ static bfa_boolean_t bfa_tskim_send(struct bfa_tskim_s *tskim); | |||
| 271 | static bfa_boolean_t bfa_tskim_send_abort(struct bfa_tskim_s *tskim); | 262 | static bfa_boolean_t bfa_tskim_send_abort(struct bfa_tskim_s *tskim); |
| 272 | static void bfa_tskim_iocdisable_ios(struct bfa_tskim_s *tskim); | 263 | static void bfa_tskim_iocdisable_ios(struct bfa_tskim_s *tskim); |
| 273 | 264 | ||
| 274 | |||
| 275 | /* | 265 | /* |
| 276 | * forward declaration of BFA TSKIM state machine | 266 | * forward declaration of BFA TSKIM state machine |
| 277 | */ | 267 | */ |
| @@ -289,13 +279,12 @@ static void bfa_tskim_sm_cleanup_qfull(struct bfa_tskim_s *tskim, | |||
| 289 | enum bfa_tskim_event event); | 279 | enum bfa_tskim_event event); |
| 290 | static void bfa_tskim_sm_hcb(struct bfa_tskim_s *tskim, | 280 | static void bfa_tskim_sm_hcb(struct bfa_tskim_s *tskim, |
| 291 | enum bfa_tskim_event event); | 281 | enum bfa_tskim_event event); |
| 292 | |||
| 293 | /* | 282 | /* |
| 294 | * BFA FCP Initiator Mode module | 283 | * BFA FCP Initiator Mode module |
| 295 | */ | 284 | */ |
| 296 | 285 | ||
| 297 | /* | 286 | /* |
| 298 | * Compute and return memory needed by FCP(im) module. | 287 | * Compute and return memory needed by FCP(im) module. |
| 299 | */ | 288 | */ |
| 300 | static void | 289 | static void |
| 301 | bfa_fcpim_meminfo(struct bfa_iocfc_cfg_s *cfg, u32 *km_len, | 290 | bfa_fcpim_meminfo(struct bfa_iocfc_cfg_s *cfg, u32 *km_len, |
| @@ -379,56 +368,6 @@ bfa_fcpim_iocdisable(struct bfa_s *bfa) | |||
| 379 | } | 368 | } |
| 380 | 369 | ||
| 381 | void | 370 | void |
| 382 | bfa_fcpim_add_stats(struct bfa_itnim_iostats_s *lstats, | ||
| 383 | struct bfa_itnim_iostats_s *rstats) | ||
| 384 | { | ||
| 385 | bfa_fcpim_add_iostats(lstats, rstats, total_ios); | ||
| 386 | bfa_fcpim_add_iostats(lstats, rstats, qresumes); | ||
| 387 | bfa_fcpim_add_iostats(lstats, rstats, no_iotags); | ||
| 388 | bfa_fcpim_add_iostats(lstats, rstats, io_aborts); | ||
| 389 | bfa_fcpim_add_iostats(lstats, rstats, no_tskims); | ||
| 390 | bfa_fcpim_add_iostats(lstats, rstats, iocomp_ok); | ||
| 391 | bfa_fcpim_add_iostats(lstats, rstats, iocomp_underrun); | ||
| 392 | bfa_fcpim_add_iostats(lstats, rstats, iocomp_overrun); | ||
| 393 | bfa_fcpim_add_iostats(lstats, rstats, iocomp_aborted); | ||
| 394 | bfa_fcpim_add_iostats(lstats, rstats, iocomp_timedout); | ||
| 395 | bfa_fcpim_add_iostats(lstats, rstats, iocom_nexus_abort); | ||
| 396 | bfa_fcpim_add_iostats(lstats, rstats, iocom_proto_err); | ||
| 397 | bfa_fcpim_add_iostats(lstats, rstats, iocom_dif_err); | ||
| 398 | bfa_fcpim_add_iostats(lstats, rstats, iocom_sqer_needed); | ||
| 399 | bfa_fcpim_add_iostats(lstats, rstats, iocom_res_free); | ||
| 400 | bfa_fcpim_add_iostats(lstats, rstats, iocom_hostabrts); | ||
| 401 | bfa_fcpim_add_iostats(lstats, rstats, iocom_utags); | ||
| 402 | bfa_fcpim_add_iostats(lstats, rstats, io_cleanups); | ||
| 403 | bfa_fcpim_add_iostats(lstats, rstats, io_tmaborts); | ||
| 404 | bfa_fcpim_add_iostats(lstats, rstats, onlines); | ||
| 405 | bfa_fcpim_add_iostats(lstats, rstats, offlines); | ||
| 406 | bfa_fcpim_add_iostats(lstats, rstats, creates); | ||
| 407 | bfa_fcpim_add_iostats(lstats, rstats, deletes); | ||
| 408 | bfa_fcpim_add_iostats(lstats, rstats, create_comps); | ||
| 409 | bfa_fcpim_add_iostats(lstats, rstats, delete_comps); | ||
| 410 | bfa_fcpim_add_iostats(lstats, rstats, sler_events); | ||
| 411 | bfa_fcpim_add_iostats(lstats, rstats, fw_create); | ||
| 412 | bfa_fcpim_add_iostats(lstats, rstats, fw_delete); | ||
| 413 | bfa_fcpim_add_iostats(lstats, rstats, ioc_disabled); | ||
| 414 | bfa_fcpim_add_iostats(lstats, rstats, cleanup_comps); | ||
| 415 | bfa_fcpim_add_iostats(lstats, rstats, tm_cmnds); | ||
| 416 | bfa_fcpim_add_iostats(lstats, rstats, tm_fw_rsps); | ||
| 417 | bfa_fcpim_add_iostats(lstats, rstats, tm_success); | ||
| 418 | bfa_fcpim_add_iostats(lstats, rstats, tm_failures); | ||
| 419 | bfa_fcpim_add_iostats(lstats, rstats, tm_io_comps); | ||
| 420 | bfa_fcpim_add_iostats(lstats, rstats, tm_qresumes); | ||
| 421 | bfa_fcpim_add_iostats(lstats, rstats, tm_iocdowns); | ||
| 422 | bfa_fcpim_add_iostats(lstats, rstats, tm_cleanups); | ||
| 423 | bfa_fcpim_add_iostats(lstats, rstats, tm_cleanup_comps); | ||
| 424 | bfa_fcpim_add_iostats(lstats, rstats, io_comps); | ||
| 425 | bfa_fcpim_add_iostats(lstats, rstats, input_reqs); | ||
| 426 | bfa_fcpim_add_iostats(lstats, rstats, output_reqs); | ||
| 427 | bfa_fcpim_add_iostats(lstats, rstats, rd_throughput); | ||
| 428 | bfa_fcpim_add_iostats(lstats, rstats, wr_throughput); | ||
| 429 | } | ||
| 430 | |||
| 431 | void | ||
| 432 | bfa_fcpim_path_tov_set(struct bfa_s *bfa, u16 path_tov) | 371 | bfa_fcpim_path_tov_set(struct bfa_s *bfa, u16 path_tov) |
| 433 | { | 372 | { |
| 434 | struct bfa_fcpim_mod_s *fcpim = BFA_FCPIM_MOD(bfa); | 373 | struct bfa_fcpim_mod_s *fcpim = BFA_FCPIM_MOD(bfa); |
| @@ -446,128 +385,6 @@ bfa_fcpim_path_tov_get(struct bfa_s *bfa) | |||
| 446 | return fcpim->path_tov / 1000; | 385 | return fcpim->path_tov / 1000; |
| 447 | } | 386 | } |
| 448 | 387 | ||
| 449 | bfa_status_t | ||
| 450 | bfa_fcpim_port_iostats(struct bfa_s *bfa, struct bfa_itnim_iostats_s *stats, | ||
| 451 | u8 lp_tag) | ||
| 452 | { | ||
| 453 | struct bfa_fcpim_mod_s *fcpim = BFA_FCPIM_MOD(bfa); | ||
| 454 | struct list_head *qe, *qen; | ||
| 455 | struct bfa_itnim_s *itnim; | ||
| 456 | |||
| 457 | /* accumulate IO stats from itnim */ | ||
| 458 | memset(stats, 0, sizeof(struct bfa_itnim_iostats_s)); | ||
| 459 | list_for_each_safe(qe, qen, &fcpim->itnim_q) { | ||
| 460 | itnim = (struct bfa_itnim_s *) qe; | ||
| 461 | if (itnim->rport->rport_info.lp_tag != lp_tag) | ||
| 462 | continue; | ||
| 463 | bfa_fcpim_add_stats(stats, &(itnim->stats)); | ||
| 464 | } | ||
| 465 | return BFA_STATUS_OK; | ||
| 466 | } | ||
| 467 | bfa_status_t | ||
| 468 | bfa_fcpim_get_modstats(struct bfa_s *bfa, struct bfa_itnim_iostats_s *modstats) | ||
| 469 | { | ||
| 470 | struct bfa_fcpim_mod_s *fcpim = BFA_FCPIM_MOD(bfa); | ||
| 471 | struct list_head *qe, *qen; | ||
| 472 | struct bfa_itnim_s *itnim; | ||
| 473 | |||
| 474 | /* accumulate IO stats from itnim */ | ||
| 475 | memset(modstats, 0, sizeof(struct bfa_itnim_iostats_s)); | ||
| 476 | list_for_each_safe(qe, qen, &fcpim->itnim_q) { | ||
| 477 | itnim = (struct bfa_itnim_s *) qe; | ||
| 478 | bfa_fcpim_add_stats(modstats, &(itnim->stats)); | ||
| 479 | } | ||
| 480 | return BFA_STATUS_OK; | ||
| 481 | } | ||
| 482 | |||
| 483 | bfa_status_t | ||
| 484 | bfa_fcpim_get_del_itn_stats(struct bfa_s *bfa, | ||
| 485 | struct bfa_fcpim_del_itn_stats_s *modstats) | ||
| 486 | { | ||
| 487 | struct bfa_fcpim_mod_s *fcpim = BFA_FCPIM_MOD(bfa); | ||
| 488 | |||
| 489 | *modstats = fcpim->del_itn_stats; | ||
| 490 | |||
| 491 | return BFA_STATUS_OK; | ||
| 492 | } | ||
| 493 | |||
| 494 | |||
| 495 | bfa_status_t | ||
| 496 | bfa_fcpim_profile_on(struct bfa_s *bfa, u32 time) | ||
| 497 | { | ||
| 498 | struct bfa_itnim_s *itnim; | ||
| 499 | struct bfa_fcpim_mod_s *fcpim = BFA_FCPIM_MOD(bfa); | ||
| 500 | struct list_head *qe, *qen; | ||
| 501 | |||
| 502 | /* accumulate IO stats from itnim */ | ||
| 503 | list_for_each_safe(qe, qen, &fcpim->itnim_q) { | ||
| 504 | itnim = (struct bfa_itnim_s *) qe; | ||
| 505 | bfa_itnim_clear_stats(itnim); | ||
| 506 | } | ||
| 507 | fcpim->io_profile = BFA_TRUE; | ||
| 508 | fcpim->io_profile_start_time = time; | ||
| 509 | fcpim->profile_comp = bfa_ioim_profile_comp; | ||
| 510 | fcpim->profile_start = bfa_ioim_profile_start; | ||
| 511 | |||
| 512 | return BFA_STATUS_OK; | ||
| 513 | } | ||
| 514 | bfa_status_t | ||
| 515 | bfa_fcpim_profile_off(struct bfa_s *bfa) | ||
| 516 | { | ||
| 517 | struct bfa_fcpim_mod_s *fcpim = BFA_FCPIM_MOD(bfa); | ||
| 518 | fcpim->io_profile = BFA_FALSE; | ||
| 519 | fcpim->io_profile_start_time = 0; | ||
| 520 | fcpim->profile_comp = NULL; | ||
| 521 | fcpim->profile_start = NULL; | ||
| 522 | return BFA_STATUS_OK; | ||
| 523 | } | ||
| 524 | |||
| 525 | bfa_status_t | ||
| 526 | bfa_fcpim_port_clear_iostats(struct bfa_s *bfa, u8 lp_tag) | ||
| 527 | { | ||
| 528 | struct bfa_fcpim_mod_s *fcpim = BFA_FCPIM_MOD(bfa); | ||
| 529 | struct list_head *qe, *qen; | ||
| 530 | struct bfa_itnim_s *itnim; | ||
| 531 | |||
| 532 | /* clear IO stats from all active itnims */ | ||
| 533 | list_for_each_safe(qe, qen, &fcpim->itnim_q) { | ||
| 534 | itnim = (struct bfa_itnim_s *) qe; | ||
| 535 | if (itnim->rport->rport_info.lp_tag != lp_tag) | ||
| 536 | continue; | ||
| 537 | bfa_itnim_clear_stats(itnim); | ||
| 538 | } | ||
| 539 | return BFA_STATUS_OK; | ||
| 540 | |||
| 541 | } | ||
| 542 | |||
| 543 | bfa_status_t | ||
| 544 | bfa_fcpim_clr_modstats(struct bfa_s *bfa) | ||
| 545 | { | ||
| 546 | struct bfa_fcpim_mod_s *fcpim = BFA_FCPIM_MOD(bfa); | ||
| 547 | struct list_head *qe, *qen; | ||
| 548 | struct bfa_itnim_s *itnim; | ||
| 549 | |||
| 550 | /* clear IO stats from all active itnims */ | ||
| 551 | list_for_each_safe(qe, qen, &fcpim->itnim_q) { | ||
| 552 | itnim = (struct bfa_itnim_s *) qe; | ||
| 553 | bfa_itnim_clear_stats(itnim); | ||
| 554 | } | ||
| 555 | memset(&fcpim->del_itn_stats, 0, | ||
| 556 | sizeof(struct bfa_fcpim_del_itn_stats_s)); | ||
| 557 | |||
| 558 | return BFA_STATUS_OK; | ||
| 559 | } | ||
| 560 | |||
| 561 | void | ||
| 562 | bfa_fcpim_qdepth_set(struct bfa_s *bfa, u16 q_depth) | ||
| 563 | { | ||
| 564 | struct bfa_fcpim_mod_s *fcpim = BFA_FCPIM_MOD(bfa); | ||
| 565 | |||
| 566 | bfa_assert(q_depth <= BFA_IOCFC_QDEPTH_MAX); | ||
| 567 | |||
| 568 | fcpim->q_depth = q_depth; | ||
| 569 | } | ||
| 570 | |||
| 571 | u16 | 388 | u16 |
| 572 | bfa_fcpim_qdepth_get(struct bfa_s *bfa) | 389 | bfa_fcpim_qdepth_get(struct bfa_s *bfa) |
| 573 | { | 390 | { |
| @@ -576,32 +393,12 @@ bfa_fcpim_qdepth_get(struct bfa_s *bfa) | |||
| 576 | return fcpim->q_depth; | 393 | return fcpim->q_depth; |
| 577 | } | 394 | } |
| 578 | 395 | ||
| 579 | void | ||
| 580 | bfa_fcpim_update_ioredirect(struct bfa_s *bfa) | ||
| 581 | { | ||
| 582 | bfa_boolean_t ioredirect; | ||
| 583 | |||
| 584 | /* | ||
| 585 | * IO redirection is turned off when QoS is enabled and vice versa | ||
| 586 | */ | ||
| 587 | ioredirect = bfa_fcport_is_qos_enabled(bfa) ? BFA_FALSE : BFA_TRUE; | ||
| 588 | } | ||
| 589 | |||
| 590 | void | ||
| 591 | bfa_fcpim_set_ioredirect(struct bfa_s *bfa, bfa_boolean_t state) | ||
| 592 | { | ||
| 593 | struct bfa_fcpim_mod_s *fcpim = BFA_FCPIM_MOD(bfa); | ||
| 594 | fcpim->ioredirect = state; | ||
| 595 | } | ||
| 596 | |||
| 597 | |||
| 598 | |||
| 599 | /* | 396 | /* |
| 600 | * BFA ITNIM module state machine functions | 397 | * BFA ITNIM module state machine functions |
| 601 | */ | 398 | */ |
| 602 | 399 | ||
| 603 | /* | 400 | /* |
| 604 | * Beginning/unallocated state - no events expected. | 401 | * Beginning/unallocated state - no events expected. |
| 605 | */ | 402 | */ |
| 606 | static void | 403 | static void |
| 607 | bfa_itnim_sm_uninit(struct bfa_itnim_s *itnim, enum bfa_itnim_event event) | 404 | bfa_itnim_sm_uninit(struct bfa_itnim_s *itnim, enum bfa_itnim_event event) |
| @@ -622,7 +419,7 @@ bfa_itnim_sm_uninit(struct bfa_itnim_s *itnim, enum bfa_itnim_event event) | |||
| 622 | } | 419 | } |
| 623 | 420 | ||
| 624 | /* | 421 | /* |
| 625 | * Beginning state, only online event expected. | 422 | * Beginning state, only online event expected. |
| 626 | */ | 423 | */ |
| 627 | static void | 424 | static void |
| 628 | bfa_itnim_sm_created(struct bfa_itnim_s *itnim, enum bfa_itnim_event event) | 425 | bfa_itnim_sm_created(struct bfa_itnim_s *itnim, enum bfa_itnim_event event) |
| @@ -725,7 +522,7 @@ bfa_itnim_sm_fwcreate_qfull(struct bfa_itnim_s *itnim, | |||
| 725 | } | 522 | } |
| 726 | 523 | ||
| 727 | /* | 524 | /* |
| 728 | * Waiting for itnim create response from firmware, a delete is pending. | 525 | * Waiting for itnim create response from firmware, a delete is pending. |
| 729 | */ | 526 | */ |
| 730 | static void | 527 | static void |
| 731 | bfa_itnim_sm_delete_pending(struct bfa_itnim_s *itnim, | 528 | bfa_itnim_sm_delete_pending(struct bfa_itnim_s *itnim, |
| @@ -753,7 +550,7 @@ bfa_itnim_sm_delete_pending(struct bfa_itnim_s *itnim, | |||
| 753 | } | 550 | } |
| 754 | 551 | ||
| 755 | /* | 552 | /* |
| 756 | * Online state - normal parking state. | 553 | * Online state - normal parking state. |
| 757 | */ | 554 | */ |
| 758 | static void | 555 | static void |
| 759 | bfa_itnim_sm_online(struct bfa_itnim_s *itnim, enum bfa_itnim_event event) | 556 | bfa_itnim_sm_online(struct bfa_itnim_s *itnim, enum bfa_itnim_event event) |
| @@ -795,7 +592,7 @@ bfa_itnim_sm_online(struct bfa_itnim_s *itnim, enum bfa_itnim_event event) | |||
| 795 | } | 592 | } |
| 796 | 593 | ||
| 797 | /* | 594 | /* |
| 798 | * Second level error recovery need. | 595 | * Second level error recovery need. |
| 799 | */ | 596 | */ |
| 800 | static void | 597 | static void |
| 801 | bfa_itnim_sm_sler(struct bfa_itnim_s *itnim, enum bfa_itnim_event event) | 598 | bfa_itnim_sm_sler(struct bfa_itnim_s *itnim, enum bfa_itnim_event event) |
| @@ -826,7 +623,7 @@ bfa_itnim_sm_sler(struct bfa_itnim_s *itnim, enum bfa_itnim_event event) | |||
| 826 | } | 623 | } |
| 827 | 624 | ||
| 828 | /* | 625 | /* |
| 829 | * Going offline. Waiting for active IO cleanup. | 626 | * Going offline. Waiting for active IO cleanup. |
| 830 | */ | 627 | */ |
| 831 | static void | 628 | static void |
| 832 | bfa_itnim_sm_cleanup_offline(struct bfa_itnim_s *itnim, | 629 | bfa_itnim_sm_cleanup_offline(struct bfa_itnim_s *itnim, |
| @@ -863,7 +660,7 @@ bfa_itnim_sm_cleanup_offline(struct bfa_itnim_s *itnim, | |||
| 863 | } | 660 | } |
| 864 | 661 | ||
| 865 | /* | 662 | /* |
| 866 | * Deleting itnim. Waiting for active IO cleanup. | 663 | * Deleting itnim. Waiting for active IO cleanup. |
| 867 | */ | 664 | */ |
| 868 | static void | 665 | static void |
| 869 | bfa_itnim_sm_cleanup_delete(struct bfa_itnim_s *itnim, | 666 | bfa_itnim_sm_cleanup_delete(struct bfa_itnim_s *itnim, |
| @@ -948,7 +745,7 @@ bfa_itnim_sm_fwdelete_qfull(struct bfa_itnim_s *itnim, | |||
| 948 | } | 745 | } |
| 949 | 746 | ||
| 950 | /* | 747 | /* |
| 951 | * Offline state. | 748 | * Offline state. |
| 952 | */ | 749 | */ |
| 953 | static void | 750 | static void |
| 954 | bfa_itnim_sm_offline(struct bfa_itnim_s *itnim, enum bfa_itnim_event event) | 751 | bfa_itnim_sm_offline(struct bfa_itnim_s *itnim, enum bfa_itnim_event event) |
| @@ -979,9 +776,6 @@ bfa_itnim_sm_offline(struct bfa_itnim_s *itnim, enum bfa_itnim_event event) | |||
| 979 | } | 776 | } |
| 980 | } | 777 | } |
| 981 | 778 | ||
| 982 | /* | ||
| 983 | * IOC h/w failed state. | ||
| 984 | */ | ||
| 985 | static void | 779 | static void |
| 986 | bfa_itnim_sm_iocdisable(struct bfa_itnim_s *itnim, | 780 | bfa_itnim_sm_iocdisable(struct bfa_itnim_s *itnim, |
| 987 | enum bfa_itnim_event event) | 781 | enum bfa_itnim_event event) |
| @@ -1016,7 +810,7 @@ bfa_itnim_sm_iocdisable(struct bfa_itnim_s *itnim, | |||
| 1016 | } | 810 | } |
| 1017 | 811 | ||
| 1018 | /* | 812 | /* |
| 1019 | * Itnim is deleted, waiting for firmware response to delete. | 813 | * Itnim is deleted, waiting for firmware response to delete. |
| 1020 | */ | 814 | */ |
| 1021 | static void | 815 | static void |
| 1022 | bfa_itnim_sm_deleting(struct bfa_itnim_s *itnim, enum bfa_itnim_event event) | 816 | bfa_itnim_sm_deleting(struct bfa_itnim_s *itnim, enum bfa_itnim_event event) |
| @@ -1061,7 +855,7 @@ bfa_itnim_sm_deleting_qfull(struct bfa_itnim_s *itnim, | |||
| 1061 | } | 855 | } |
| 1062 | 856 | ||
| 1063 | /* | 857 | /* |
| 1064 | * Initiate cleanup of all IOs on an IOC failure. | 858 | * Initiate cleanup of all IOs on an IOC failure. |
| 1065 | */ | 859 | */ |
| 1066 | static void | 860 | static void |
| 1067 | bfa_itnim_iocdisable_cleanup(struct bfa_itnim_s *itnim) | 861 | bfa_itnim_iocdisable_cleanup(struct bfa_itnim_s *itnim) |
| @@ -1095,7 +889,7 @@ bfa_itnim_iocdisable_cleanup(struct bfa_itnim_s *itnim) | |||
| 1095 | } | 889 | } |
| 1096 | 890 | ||
| 1097 | /* | 891 | /* |
| 1098 | * IO cleanup completion | 892 | * IO cleanup completion |
| 1099 | */ | 893 | */ |
| 1100 | static void | 894 | static void |
| 1101 | bfa_itnim_cleanp_comp(void *itnim_cbarg) | 895 | bfa_itnim_cleanp_comp(void *itnim_cbarg) |
| @@ -1107,7 +901,7 @@ bfa_itnim_cleanp_comp(void *itnim_cbarg) | |||
| 1107 | } | 901 | } |
| 1108 | 902 | ||
| 1109 | /* | 903 | /* |
| 1110 | * Initiate cleanup of all IOs. | 904 | * Initiate cleanup of all IOs. |
| 1111 | */ | 905 | */ |
| 1112 | static void | 906 | static void |
| 1113 | bfa_itnim_cleanup(struct bfa_itnim_s *itnim) | 907 | bfa_itnim_cleanup(struct bfa_itnim_s *itnim) |
| @@ -1179,9 +973,6 @@ bfa_itnim_qresume(void *cbarg) | |||
| 1179 | bfa_sm_send_event(itnim, BFA_ITNIM_SM_QRESUME); | 973 | bfa_sm_send_event(itnim, BFA_ITNIM_SM_QRESUME); |
| 1180 | } | 974 | } |
| 1181 | 975 | ||
| 1182 | |||
| 1183 | |||
| 1184 | |||
| 1185 | /* | 976 | /* |
| 1186 | * bfa_itnim_public | 977 | * bfa_itnim_public |
| 1187 | */ | 978 | */ |
| @@ -1449,14 +1240,12 @@ bfa_itnim_update_del_itn_stats(struct bfa_itnim_s *itnim) | |||
| 1449 | fcpim->del_itn_stats.del_tm_iocdowns += itnim->stats.tm_iocdowns; | 1240 | fcpim->del_itn_stats.del_tm_iocdowns += itnim->stats.tm_iocdowns; |
| 1450 | } | 1241 | } |
| 1451 | 1242 | ||
| 1452 | |||
| 1453 | |||
| 1454 | /* | 1243 | /* |
| 1455 | * bfa_itnim_public | 1244 | * bfa_itnim_public |
| 1456 | */ | 1245 | */ |
| 1457 | 1246 | ||
| 1458 | /* | 1247 | /* |
| 1459 | * Itnim interrupt processing. | 1248 | * Itnim interrupt processing. |
| 1460 | */ | 1249 | */ |
| 1461 | void | 1250 | void |
| 1462 | bfa_itnim_isr(struct bfa_s *bfa, struct bfi_msg_s *m) | 1251 | bfa_itnim_isr(struct bfa_s *bfa, struct bfi_msg_s *m) |
| @@ -1499,10 +1288,8 @@ bfa_itnim_isr(struct bfa_s *bfa, struct bfi_msg_s *m) | |||
| 1499 | } | 1288 | } |
| 1500 | } | 1289 | } |
| 1501 | 1290 | ||
| 1502 | |||
| 1503 | |||
| 1504 | /* | 1291 | /* |
| 1505 | * bfa_itnim_api | 1292 | * bfa_itnim_api |
| 1506 | */ | 1293 | */ |
| 1507 | 1294 | ||
| 1508 | struct bfa_itnim_s * | 1295 | struct bfa_itnim_s * |
| @@ -1575,7 +1362,7 @@ bfa_itnim_clear_stats(struct bfa_itnim_s *itnim) | |||
| 1575 | */ | 1362 | */ |
| 1576 | 1363 | ||
| 1577 | /* | 1364 | /* |
| 1578 | * IO is not started (unallocated). | 1365 | * IO is not started (unallocated). |
| 1579 | */ | 1366 | */ |
| 1580 | static void | 1367 | static void |
| 1581 | bfa_ioim_sm_uninit(struct bfa_ioim_s *ioim, enum bfa_ioim_event event) | 1368 | bfa_ioim_sm_uninit(struct bfa_ioim_s *ioim, enum bfa_ioim_event event) |
| @@ -1640,7 +1427,7 @@ bfa_ioim_sm_uninit(struct bfa_ioim_s *ioim, enum bfa_ioim_event event) | |||
| 1640 | } | 1427 | } |
| 1641 | 1428 | ||
| 1642 | /* | 1429 | /* |
| 1643 | * IO is waiting for SG pages. | 1430 | * IO is waiting for SG pages. |
| 1644 | */ | 1431 | */ |
| 1645 | static void | 1432 | static void |
| 1646 | bfa_ioim_sm_sgalloc(struct bfa_ioim_s *ioim, enum bfa_ioim_event event) | 1433 | bfa_ioim_sm_sgalloc(struct bfa_ioim_s *ioim, enum bfa_ioim_event event) |
| @@ -1687,7 +1474,7 @@ bfa_ioim_sm_sgalloc(struct bfa_ioim_s *ioim, enum bfa_ioim_event event) | |||
| 1687 | } | 1474 | } |
| 1688 | 1475 | ||
| 1689 | /* | 1476 | /* |
| 1690 | * IO is active. | 1477 | * IO is active. |
| 1691 | */ | 1478 | */ |
| 1692 | static void | 1479 | static void |
| 1693 | bfa_ioim_sm_active(struct bfa_ioim_s *ioim, enum bfa_ioim_event event) | 1480 | bfa_ioim_sm_active(struct bfa_ioim_s *ioim, enum bfa_ioim_event event) |
| @@ -1771,8 +1558,8 @@ bfa_ioim_sm_active(struct bfa_ioim_s *ioim, enum bfa_ioim_event event) | |||
| 1771 | } | 1558 | } |
| 1772 | 1559 | ||
| 1773 | /* | 1560 | /* |
| 1774 | * IO is retried with new tag. | 1561 | * IO is retried with new tag. |
| 1775 | */ | 1562 | */ |
| 1776 | static void | 1563 | static void |
| 1777 | bfa_ioim_sm_cmnd_retry(struct bfa_ioim_s *ioim, enum bfa_ioim_event event) | 1564 | bfa_ioim_sm_cmnd_retry(struct bfa_ioim_s *ioim, enum bfa_ioim_event event) |
| 1778 | { | 1565 | { |
| @@ -1825,7 +1612,7 @@ bfa_ioim_sm_cmnd_retry(struct bfa_ioim_s *ioim, enum bfa_ioim_event event) | |||
| 1825 | } | 1612 | } |
| 1826 | 1613 | ||
| 1827 | /* | 1614 | /* |
| 1828 | * IO is being aborted, waiting for completion from firmware. | 1615 | * IO is being aborted, waiting for completion from firmware. |
| 1829 | */ | 1616 | */ |
| 1830 | static void | 1617 | static void |
| 1831 | bfa_ioim_sm_abort(struct bfa_ioim_s *ioim, enum bfa_ioim_event event) | 1618 | bfa_ioim_sm_abort(struct bfa_ioim_s *ioim, enum bfa_ioim_event event) |
| @@ -1948,7 +1735,7 @@ bfa_ioim_sm_cleanup(struct bfa_ioim_s *ioim, enum bfa_ioim_event event) | |||
| 1948 | } | 1735 | } |
| 1949 | 1736 | ||
| 1950 | /* | 1737 | /* |
| 1951 | * IO is waiting for room in request CQ | 1738 | * IO is waiting for room in request CQ |
| 1952 | */ | 1739 | */ |
| 1953 | static void | 1740 | static void |
| 1954 | bfa_ioim_sm_qfull(struct bfa_ioim_s *ioim, enum bfa_ioim_event event) | 1741 | bfa_ioim_sm_qfull(struct bfa_ioim_s *ioim, enum bfa_ioim_event event) |
| @@ -1992,7 +1779,7 @@ bfa_ioim_sm_qfull(struct bfa_ioim_s *ioim, enum bfa_ioim_event event) | |||
| 1992 | } | 1779 | } |
| 1993 | 1780 | ||
| 1994 | /* | 1781 | /* |
| 1995 | * Active IO is being aborted, waiting for room in request CQ. | 1782 | * Active IO is being aborted, waiting for room in request CQ. |
| 1996 | */ | 1783 | */ |
| 1997 | static void | 1784 | static void |
| 1998 | bfa_ioim_sm_abort_qfull(struct bfa_ioim_s *ioim, enum bfa_ioim_event event) | 1785 | bfa_ioim_sm_abort_qfull(struct bfa_ioim_s *ioim, enum bfa_ioim_event event) |
| @@ -2043,7 +1830,7 @@ bfa_ioim_sm_abort_qfull(struct bfa_ioim_s *ioim, enum bfa_ioim_event event) | |||
| 2043 | } | 1830 | } |
| 2044 | 1831 | ||
| 2045 | /* | 1832 | /* |
| 2046 | * Active IO is being cleaned up, waiting for room in request CQ. | 1833 | * Active IO is being cleaned up, waiting for room in request CQ. |
| 2047 | */ | 1834 | */ |
| 2048 | static void | 1835 | static void |
| 2049 | bfa_ioim_sm_cleanup_qfull(struct bfa_ioim_s *ioim, enum bfa_ioim_event event) | 1836 | bfa_ioim_sm_cleanup_qfull(struct bfa_ioim_s *ioim, enum bfa_ioim_event event) |
| @@ -2297,7 +2084,7 @@ bfa_ioim_send_ioreq(struct bfa_ioim_s *ioim) | |||
| 2297 | { | 2084 | { |
| 2298 | struct bfa_itnim_s *itnim = ioim->itnim; | 2085 | struct bfa_itnim_s *itnim = ioim->itnim; |
| 2299 | struct bfi_ioim_req_s *m; | 2086 | struct bfi_ioim_req_s *m; |
| 2300 | static struct fcp_cmnd_s cmnd_z0 = {{{0}}}; | 2087 | static struct fcp_cmnd_s cmnd_z0 = { { { 0 } } }; |
| 2301 | struct bfi_sge_s *sge, *sgpge; | 2088 | struct bfi_sge_s *sge, *sgpge; |
| 2302 | u32 pgdlen = 0; | 2089 | u32 pgdlen = 0; |
| 2303 | u32 fcp_dl; | 2090 | u32 fcp_dl; |
| @@ -2553,9 +2340,6 @@ bfa_ioim_is_abortable(struct bfa_ioim_s *ioim) | |||
| 2553 | return BFA_TRUE; | 2340 | return BFA_TRUE; |
| 2554 | } | 2341 | } |
| 2555 | 2342 | ||
| 2556 | /* | ||
| 2557 | * or after the link comes back. | ||
| 2558 | */ | ||
| 2559 | void | 2343 | void |
| 2560 | bfa_ioim_delayed_comp(struct bfa_ioim_s *ioim, bfa_boolean_t iotov) | 2344 | bfa_ioim_delayed_comp(struct bfa_ioim_s *ioim, bfa_boolean_t iotov) |
| 2561 | { | 2345 | { |
| @@ -2750,32 +2534,6 @@ bfa_ioim_good_comp_isr(struct bfa_s *bfa, struct bfi_msg_s *m) | |||
| 2750 | bfa_sm_send_event(ioim, BFA_IOIM_SM_COMP_GOOD); | 2534 | bfa_sm_send_event(ioim, BFA_IOIM_SM_COMP_GOOD); |
| 2751 | } | 2535 | } |
| 2752 | 2536 | ||
| 2753 | void | ||
| 2754 | bfa_ioim_profile_start(struct bfa_ioim_s *ioim) | ||
| 2755 | { | ||
| 2756 | ioim->start_time = jiffies; | ||
| 2757 | } | ||
| 2758 | |||
| 2759 | void | ||
| 2760 | bfa_ioim_profile_comp(struct bfa_ioim_s *ioim) | ||
| 2761 | { | ||
| 2762 | struct scsi_cmnd *cmnd = (struct scsi_cmnd *) ioim->dio; | ||
| 2763 | u32 fcp_dl = scsi_bufflen(cmnd); | ||
| 2764 | u32 index = bfa_ioim_get_index(fcp_dl); | ||
| 2765 | u64 end_time = jiffies; | ||
| 2766 | struct bfa_itnim_latency_s *io_lat = | ||
| 2767 | &(ioim->itnim->ioprofile.io_latency); | ||
| 2768 | u32 val = (u32)(end_time - ioim->start_time); | ||
| 2769 | |||
| 2770 | bfa_itnim_ioprofile_update(ioim->itnim, index); | ||
| 2771 | |||
| 2772 | io_lat->count[index]++; | ||
| 2773 | io_lat->min[index] = (io_lat->min[index] < val) ? | ||
| 2774 | io_lat->min[index] : val; | ||
| 2775 | io_lat->max[index] = (io_lat->max[index] > val) ? | ||
| 2776 | io_lat->max[index] : val; | ||
| 2777 | io_lat->avg[index] += val; | ||
| 2778 | } | ||
| 2779 | /* | 2537 | /* |
| 2780 | * Called by itnim to clean up IO while going offline. | 2538 | * Called by itnim to clean up IO while going offline. |
| 2781 | */ | 2539 | */ |
| @@ -2909,13 +2667,12 @@ bfa_ioim_abort(struct bfa_ioim_s *ioim) | |||
| 2909 | return BFA_STATUS_OK; | 2667 | return BFA_STATUS_OK; |
| 2910 | } | 2668 | } |
| 2911 | 2669 | ||
| 2912 | |||
| 2913 | /* | 2670 | /* |
| 2914 | * BFA TSKIM state machine functions | 2671 | * BFA TSKIM state machine functions |
| 2915 | */ | 2672 | */ |
| 2916 | 2673 | ||
| 2917 | /* | 2674 | /* |
| 2918 | * Task management command beginning state. | 2675 | * Task management command beginning state. |
| 2919 | */ | 2676 | */ |
| 2920 | static void | 2677 | static void |
| 2921 | bfa_tskim_sm_uninit(struct bfa_tskim_s *tskim, enum bfa_tskim_event event) | 2678 | bfa_tskim_sm_uninit(struct bfa_tskim_s *tskim, enum bfa_tskim_event event) |
| @@ -2952,9 +2709,8 @@ bfa_tskim_sm_uninit(struct bfa_tskim_s *tskim, enum bfa_tskim_event event) | |||
| 2952 | } | 2709 | } |
| 2953 | 2710 | ||
| 2954 | /* | 2711 | /* |
| 2955 | * brief | 2712 | * TM command is active, awaiting completion from firmware to |
| 2956 | * TM command is active, awaiting completion from firmware to | 2713 | * cleanup IO requests in TM scope. |
| 2957 | * cleanup IO requests in TM scope. | ||
| 2958 | */ | 2714 | */ |
| 2959 | static void | 2715 | static void |
| 2960 | bfa_tskim_sm_active(struct bfa_tskim_s *tskim, enum bfa_tskim_event event) | 2716 | bfa_tskim_sm_active(struct bfa_tskim_s *tskim, enum bfa_tskim_event event) |
| @@ -2989,8 +2745,8 @@ bfa_tskim_sm_active(struct bfa_tskim_s *tskim, enum bfa_tskim_event event) | |||
| 2989 | } | 2745 | } |
| 2990 | 2746 | ||
| 2991 | /* | 2747 | /* |
| 2992 | * An active TM is being cleaned up since ITN is offline. Awaiting cleanup | 2748 | * An active TM is being cleaned up since ITN is offline. Awaiting cleanup |
| 2993 | * completion event from firmware. | 2749 | * completion event from firmware. |
| 2994 | */ | 2750 | */ |
| 2995 | static void | 2751 | static void |
| 2996 | bfa_tskim_sm_cleanup(struct bfa_tskim_s *tskim, enum bfa_tskim_event event) | 2752 | bfa_tskim_sm_cleanup(struct bfa_tskim_s *tskim, enum bfa_tskim_event event) |
| @@ -3050,7 +2806,7 @@ bfa_tskim_sm_iocleanup(struct bfa_tskim_s *tskim, enum bfa_tskim_event event) | |||
| 3050 | } | 2806 | } |
| 3051 | 2807 | ||
| 3052 | /* | 2808 | /* |
| 3053 | * Task management command is waiting for room in request CQ | 2809 | * Task management command is waiting for room in request CQ |
| 3054 | */ | 2810 | */ |
| 3055 | static void | 2811 | static void |
| 3056 | bfa_tskim_sm_qfull(struct bfa_tskim_s *tskim, enum bfa_tskim_event event) | 2812 | bfa_tskim_sm_qfull(struct bfa_tskim_s *tskim, enum bfa_tskim_event event) |
| @@ -3085,8 +2841,8 @@ bfa_tskim_sm_qfull(struct bfa_tskim_s *tskim, enum bfa_tskim_event event) | |||
| 3085 | } | 2841 | } |
| 3086 | 2842 | ||
| 3087 | /* | 2843 | /* |
| 3088 | * Task management command is active, awaiting for room in request CQ | 2844 | * Task management command is active, awaiting for room in request CQ |
| 3089 | * to send clean up request. | 2845 | * to send clean up request. |
| 3090 | */ | 2846 | */ |
| 3091 | static void | 2847 | static void |
| 3092 | bfa_tskim_sm_cleanup_qfull(struct bfa_tskim_s *tskim, | 2848 | bfa_tskim_sm_cleanup_qfull(struct bfa_tskim_s *tskim, |
| @@ -3098,10 +2854,8 @@ bfa_tskim_sm_cleanup_qfull(struct bfa_tskim_s *tskim, | |||
| 3098 | case BFA_TSKIM_SM_DONE: | 2854 | case BFA_TSKIM_SM_DONE: |
| 3099 | bfa_reqq_wcancel(&tskim->reqq_wait); | 2855 | bfa_reqq_wcancel(&tskim->reqq_wait); |
| 3100 | /* | 2856 | /* |
| 3101 | * | ||
| 3102 | * Fall through !!! | 2857 | * Fall through !!! |
| 3103 | */ | 2858 | */ |
| 3104 | |||
| 3105 | case BFA_TSKIM_SM_QRESUME: | 2859 | case BFA_TSKIM_SM_QRESUME: |
| 3106 | bfa_sm_set_state(tskim, bfa_tskim_sm_cleanup); | 2860 | bfa_sm_set_state(tskim, bfa_tskim_sm_cleanup); |
| 3107 | bfa_tskim_send_abort(tskim); | 2861 | bfa_tskim_send_abort(tskim); |
| @@ -3120,7 +2874,7 @@ bfa_tskim_sm_cleanup_qfull(struct bfa_tskim_s *tskim, | |||
| 3120 | } | 2874 | } |
| 3121 | 2875 | ||
| 3122 | /* | 2876 | /* |
| 3123 | * BFA callback is pending | 2877 | * BFA callback is pending |
| 3124 | */ | 2878 | */ |
| 3125 | static void | 2879 | static void |
| 3126 | bfa_tskim_sm_hcb(struct bfa_tskim_s *tskim, enum bfa_tskim_event event) | 2880 | bfa_tskim_sm_hcb(struct bfa_tskim_s *tskim, enum bfa_tskim_event event) |
| @@ -3145,7 +2899,6 @@ bfa_tskim_sm_hcb(struct bfa_tskim_s *tskim, enum bfa_tskim_event event) | |||
| 3145 | } | 2899 | } |
| 3146 | } | 2900 | } |
| 3147 | 2901 | ||
| 3148 | |||
| 3149 | static void | 2902 | static void |
| 3150 | __bfa_cb_tskim_done(void *cbarg, bfa_boolean_t complete) | 2903 | __bfa_cb_tskim_done(void *cbarg, bfa_boolean_t complete) |
| 3151 | { | 2904 | { |
| @@ -3175,7 +2928,7 @@ __bfa_cb_tskim_failed(void *cbarg, bfa_boolean_t complete) | |||
| 3175 | BFI_TSKIM_STS_FAILED); | 2928 | BFI_TSKIM_STS_FAILED); |
| 3176 | } | 2929 | } |
| 3177 | 2930 | ||
| 3178 | static bfa_boolean_t | 2931 | static bfa_boolean_t |
| 3179 | bfa_tskim_match_scope(struct bfa_tskim_s *tskim, struct scsi_lun lun) | 2932 | bfa_tskim_match_scope(struct bfa_tskim_s *tskim, struct scsi_lun lun) |
| 3180 | { | 2933 | { |
| 3181 | switch (tskim->tm_cmnd) { | 2934 | switch (tskim->tm_cmnd) { |
| @@ -3186,7 +2939,7 @@ bfa_tskim_match_scope(struct bfa_tskim_s *tskim, struct scsi_lun lun) | |||
| 3186 | case FCP_TM_CLEAR_TASK_SET: | 2939 | case FCP_TM_CLEAR_TASK_SET: |
| 3187 | case FCP_TM_LUN_RESET: | 2940 | case FCP_TM_LUN_RESET: |
| 3188 | case FCP_TM_CLEAR_ACA: | 2941 | case FCP_TM_CLEAR_ACA: |
| 3189 | return (!memcmp(&tskim->lun, &lun, sizeof(lun))); | 2942 | return !memcmp(&tskim->lun, &lun, sizeof(lun)); |
| 3190 | 2943 | ||
| 3191 | default: | 2944 | default: |
| 3192 | bfa_assert(0); | 2945 | bfa_assert(0); |
| @@ -3196,7 +2949,7 @@ bfa_tskim_match_scope(struct bfa_tskim_s *tskim, struct scsi_lun lun) | |||
| 3196 | } | 2949 | } |
| 3197 | 2950 | ||
| 3198 | /* | 2951 | /* |
| 3199 | * Gather affected IO requests and task management commands. | 2952 | * Gather affected IO requests and task management commands. |
| 3200 | */ | 2953 | */ |
| 3201 | static void | 2954 | static void |
| 3202 | bfa_tskim_gather_ios(struct bfa_tskim_s *tskim) | 2955 | bfa_tskim_gather_ios(struct bfa_tskim_s *tskim) |
| @@ -3238,7 +2991,7 @@ bfa_tskim_gather_ios(struct bfa_tskim_s *tskim) | |||
| 3238 | } | 2991 | } |
| 3239 | 2992 | ||
| 3240 | /* | 2993 | /* |
| 3241 | * IO cleanup completion | 2994 | * IO cleanup completion |
| 3242 | */ | 2995 | */ |
| 3243 | static void | 2996 | static void |
| 3244 | bfa_tskim_cleanp_comp(void *tskim_cbarg) | 2997 | bfa_tskim_cleanp_comp(void *tskim_cbarg) |
| @@ -3250,7 +3003,7 @@ bfa_tskim_cleanp_comp(void *tskim_cbarg) | |||
| 3250 | } | 3003 | } |
| 3251 | 3004 | ||
| 3252 | /* | 3005 | /* |
| 3253 | * Gather affected IO requests and task management commands. | 3006 | * Gather affected IO requests and task management commands. |
| 3254 | */ | 3007 | */ |
| 3255 | static void | 3008 | static void |
| 3256 | bfa_tskim_cleanup_ios(struct bfa_tskim_s *tskim) | 3009 | bfa_tskim_cleanup_ios(struct bfa_tskim_s *tskim) |
| @@ -3270,7 +3023,7 @@ bfa_tskim_cleanup_ios(struct bfa_tskim_s *tskim) | |||
| 3270 | } | 3023 | } |
| 3271 | 3024 | ||
| 3272 | /* | 3025 | /* |
| 3273 | * Send task management request to firmware. | 3026 | * Send task management request to firmware. |
| 3274 | */ | 3027 | */ |
| 3275 | static bfa_boolean_t | 3028 | static bfa_boolean_t |
| 3276 | bfa_tskim_send(struct bfa_tskim_s *tskim) | 3029 | bfa_tskim_send(struct bfa_tskim_s *tskim) |
| @@ -3305,7 +3058,7 @@ bfa_tskim_send(struct bfa_tskim_s *tskim) | |||
| 3305 | } | 3058 | } |
| 3306 | 3059 | ||
| 3307 | /* | 3060 | /* |
| 3308 | * Send abort request to cleanup an active TM to firmware. | 3061 | * Send abort request to cleanup an active TM to firmware. |
| 3309 | */ | 3062 | */ |
| 3310 | static bfa_boolean_t | 3063 | static bfa_boolean_t |
| 3311 | bfa_tskim_send_abort(struct bfa_tskim_s *tskim) | 3064 | bfa_tskim_send_abort(struct bfa_tskim_s *tskim) |
| @@ -3336,7 +3089,7 @@ bfa_tskim_send_abort(struct bfa_tskim_s *tskim) | |||
| 3336 | } | 3089 | } |
| 3337 | 3090 | ||
| 3338 | /* | 3091 | /* |
| 3339 | * Call to resume task management cmnd waiting for room in request queue. | 3092 | * Call to resume task management cmnd waiting for room in request queue. |
| 3340 | */ | 3093 | */ |
| 3341 | static void | 3094 | static void |
| 3342 | bfa_tskim_qresume(void *cbarg) | 3095 | bfa_tskim_qresume(void *cbarg) |
| @@ -3362,7 +3115,6 @@ bfa_tskim_iocdisable_ios(struct bfa_tskim_s *tskim) | |||
| 3362 | } | 3115 | } |
| 3363 | } | 3116 | } |
| 3364 | 3117 | ||
| 3365 | |||
| 3366 | /* | 3118 | /* |
| 3367 | * Notification on completions from related ioim. | 3119 | * Notification on completions from related ioim. |
| 3368 | */ | 3120 | */ |
| @@ -3395,7 +3147,7 @@ bfa_tskim_cleanup(struct bfa_tskim_s *tskim) | |||
| 3395 | } | 3147 | } |
| 3396 | 3148 | ||
| 3397 | /* | 3149 | /* |
| 3398 | * Memory allocation and initialization. | 3150 | * Memory allocation and initialization. |
| 3399 | */ | 3151 | */ |
| 3400 | void | 3152 | void |
| 3401 | bfa_tskim_attach(struct bfa_fcpim_mod_s *fcpim, struct bfa_meminfo_s *minfo) | 3153 | bfa_tskim_attach(struct bfa_fcpim_mod_s *fcpim, struct bfa_meminfo_s *minfo) |
| @@ -3477,7 +3229,7 @@ bfa_tskim_free(struct bfa_tskim_s *tskim) | |||
| 3477 | } | 3229 | } |
| 3478 | 3230 | ||
| 3479 | /* | 3231 | /* |
| 3480 | * Start a task management command. | 3232 | * Start a task management command. |
| 3481 | * | 3233 | * |
| 3482 | * @param[in] tskim BFA task management command instance | 3234 | * @param[in] tskim BFA task management command instance |
| 3483 | * @param[in] itnim i-t nexus for the task management command | 3235 | * @param[in] itnim i-t nexus for the task management command |
diff --git a/drivers/scsi/bfa/bfa_fcpim.h b/drivers/scsi/bfa/bfa_fcpim.h index 7d0eababa5df..f9334587e02a 100644 --- a/drivers/scsi/bfa/bfa_fcpim.h +++ b/drivers/scsi/bfa/bfa_fcpim.h | |||
| @@ -94,12 +94,12 @@ struct bfa_fcpim_mod_s { | |||
| 94 | struct list_head ioim_resfree_q; /* IOs waiting for f/w */ | 94 | struct list_head ioim_resfree_q; /* IOs waiting for f/w */ |
| 95 | struct list_head ioim_comp_q; /* IO global comp Q */ | 95 | struct list_head ioim_comp_q; /* IO global comp Q */ |
| 96 | struct list_head tskim_free_q; | 96 | struct list_head tskim_free_q; |
| 97 | u32 ios_active; /* current active IOs */ | 97 | u32 ios_active; /* current active IOs */ |
| 98 | u32 delay_comp; | 98 | u32 delay_comp; |
| 99 | struct bfa_fcpim_del_itn_stats_s del_itn_stats; | 99 | struct bfa_fcpim_del_itn_stats_s del_itn_stats; |
| 100 | bfa_boolean_t ioredirect; | 100 | bfa_boolean_t ioredirect; |
| 101 | bfa_boolean_t io_profile; | 101 | bfa_boolean_t io_profile; |
| 102 | u32 io_profile_start_time; | 102 | u32 io_profile_start_time; |
| 103 | bfa_fcpim_profile_t profile_comp; | 103 | bfa_fcpim_profile_t profile_comp; |
| 104 | bfa_fcpim_profile_t profile_start; | 104 | bfa_fcpim_profile_t profile_start; |
| 105 | }; | 105 | }; |
| @@ -114,25 +114,24 @@ struct bfa_ioim_s { | |||
| 114 | struct bfa_fcpim_mod_s *fcpim; /* parent fcpim module */ | 114 | struct bfa_fcpim_mod_s *fcpim; /* parent fcpim module */ |
| 115 | struct bfa_itnim_s *itnim; /* i-t-n nexus for this IO */ | 115 | struct bfa_itnim_s *itnim; /* i-t-n nexus for this IO */ |
| 116 | struct bfad_ioim_s *dio; /* driver IO handle */ | 116 | struct bfad_ioim_s *dio; /* driver IO handle */ |
| 117 | u16 iotag; /* FWI IO tag */ | 117 | u16 iotag; /* FWI IO tag */ |
| 118 | u16 abort_tag; /* unqiue abort request tag */ | 118 | u16 abort_tag; /* unqiue abort request tag */ |
| 119 | u16 nsges; /* number of SG elements */ | 119 | u16 nsges; /* number of SG elements */ |
| 120 | u16 nsgpgs; /* number of SG pages */ | 120 | u16 nsgpgs; /* number of SG pages */ |
| 121 | struct bfa_sgpg_s *sgpg; /* first SG page */ | 121 | struct bfa_sgpg_s *sgpg; /* first SG page */ |
| 122 | struct list_head sgpg_q; /* allocated SG pages */ | 122 | struct list_head sgpg_q; /* allocated SG pages */ |
| 123 | struct bfa_cb_qe_s hcb_qe; /* bfa callback qelem */ | 123 | struct bfa_cb_qe_s hcb_qe; /* bfa callback qelem */ |
| 124 | bfa_cb_cbfn_t io_cbfn; /* IO completion handler */ | 124 | bfa_cb_cbfn_t io_cbfn; /* IO completion handler */ |
| 125 | struct bfa_ioim_sp_s *iosp; /* slow-path IO handling */ | 125 | struct bfa_ioim_sp_s *iosp; /* slow-path IO handling */ |
| 126 | u8 reqq; /* Request queue for I/O */ | 126 | u8 reqq; /* Request queue for I/O */ |
| 127 | u64 start_time; /* IO's Profile start val */ | 127 | u64 start_time; /* IO's Profile start val */ |
| 128 | }; | 128 | }; |
| 129 | 129 | ||
| 130 | |||
| 131 | struct bfa_ioim_sp_s { | 130 | struct bfa_ioim_sp_s { |
| 132 | struct bfi_msg_s comp_rspmsg; /* IO comp f/w response */ | 131 | struct bfi_msg_s comp_rspmsg; /* IO comp f/w response */ |
| 133 | u8 *snsinfo; /* sense info for this IO */ | 132 | u8 *snsinfo; /* sense info for this IO */ |
| 134 | struct bfa_sgpg_wqe_s sgpg_wqe; /* waitq elem for sgpg */ | 133 | struct bfa_sgpg_wqe_s sgpg_wqe; /* waitq elem for sgpg */ |
| 135 | struct bfa_reqq_wait_s reqq_wait; /* to wait for room in reqq */ | 134 | struct bfa_reqq_wait_s reqq_wait; /* to wait for room in reqq */ |
| 136 | bfa_boolean_t abort_explicit; /* aborted by OS */ | 135 | bfa_boolean_t abort_explicit; /* aborted by OS */ |
| 137 | struct bfa_tskim_s *tskim; /* Relevant TM cmd */ | 136 | struct bfa_tskim_s *tskim; /* Relevant TM cmd */ |
| 138 | }; | 137 | }; |
| @@ -143,35 +142,34 @@ struct bfa_ioim_sp_s { | |||
| 143 | struct bfa_tskim_s { | 142 | struct bfa_tskim_s { |
| 144 | struct list_head qe; | 143 | struct list_head qe; |
| 145 | bfa_sm_t sm; | 144 | bfa_sm_t sm; |
| 146 | struct bfa_s *bfa; /* BFA module */ | 145 | struct bfa_s *bfa; /* BFA module */ |
| 147 | struct bfa_fcpim_mod_s *fcpim; /* parent fcpim module */ | 146 | struct bfa_fcpim_mod_s *fcpim; /* parent fcpim module */ |
| 148 | struct bfa_itnim_s *itnim; /* i-t-n nexus for this IO */ | 147 | struct bfa_itnim_s *itnim; /* i-t-n nexus for this IO */ |
| 149 | struct bfad_tskim_s *dtsk; /* driver task mgmt cmnd */ | 148 | struct bfad_tskim_s *dtsk; /* driver task mgmt cmnd */ |
| 150 | bfa_boolean_t notify; /* notify itnim on TM comp */ | 149 | bfa_boolean_t notify; /* notify itnim on TM comp */ |
| 151 | struct scsi_lun lun; /* lun if applicable */ | 150 | struct scsi_lun lun; /* lun if applicable */ |
| 152 | enum fcp_tm_cmnd tm_cmnd; /* task management command */ | 151 | enum fcp_tm_cmnd tm_cmnd; /* task management command */ |
| 153 | u16 tsk_tag; /* FWI IO tag */ | 152 | u16 tsk_tag; /* FWI IO tag */ |
| 154 | u8 tsecs; /* timeout in seconds */ | 153 | u8 tsecs; /* timeout in seconds */ |
| 155 | struct bfa_reqq_wait_s reqq_wait; /* to wait for room in reqq */ | 154 | struct bfa_reqq_wait_s reqq_wait; /* to wait for room in reqq */ |
| 156 | struct list_head io_q; /* queue of affected IOs */ | 155 | struct list_head io_q; /* queue of affected IOs */ |
| 157 | struct bfa_wc_s wc; /* waiting counter */ | 156 | struct bfa_wc_s wc; /* waiting counter */ |
| 158 | struct bfa_cb_qe_s hcb_qe; /* bfa callback qelem */ | 157 | struct bfa_cb_qe_s hcb_qe; /* bfa callback qelem */ |
| 159 | enum bfi_tskim_status tsk_status; /* TM status */ | 158 | enum bfi_tskim_status tsk_status; /* TM status */ |
| 160 | }; | 159 | }; |
| 161 | 160 | ||
| 162 | |||
| 163 | /* | 161 | /* |
| 164 | * BFA i-t-n (initiator mode) | 162 | * BFA i-t-n (initiator mode) |
| 165 | */ | 163 | */ |
| 166 | struct bfa_itnim_s { | 164 | struct bfa_itnim_s { |
| 167 | struct list_head qe; /* queue element */ | 165 | struct list_head qe; /* queue element */ |
| 168 | bfa_sm_t sm; /* i-t-n im BFA state machine */ | 166 | bfa_sm_t sm; /* i-t-n im BFA state machine */ |
| 169 | struct bfa_s *bfa; /* bfa instance */ | 167 | struct bfa_s *bfa; /* bfa instance */ |
| 170 | struct bfa_rport_s *rport; /* bfa rport */ | 168 | struct bfa_rport_s *rport; /* bfa rport */ |
| 171 | void *ditn; /* driver i-t-n structure */ | 169 | void *ditn; /* driver i-t-n structure */ |
| 172 | struct bfi_mhdr_s mhdr; /* pre-built mhdr */ | 170 | struct bfi_mhdr_s mhdr; /* pre-built mhdr */ |
| 173 | u8 msg_no; /* itnim/rport firmware handle */ | 171 | u8 msg_no; /* itnim/rport firmware handle */ |
| 174 | u8 reqq; /* CQ for requests */ | 172 | u8 reqq; /* CQ for requests */ |
| 175 | struct bfa_cb_qe_s hcb_qe; /* bfa callback qelem */ | 173 | struct bfa_cb_qe_s hcb_qe; /* bfa callback qelem */ |
| 176 | struct list_head pending_q; /* queue of pending IO requests */ | 174 | struct list_head pending_q; /* queue of pending IO requests */ |
| 177 | struct list_head io_q; /* queue of active IO requests */ | 175 | struct list_head io_q; /* queue of active IO requests */ |
| @@ -181,15 +179,14 @@ struct bfa_itnim_s { | |||
| 181 | bfa_boolean_t seq_rec; /* SQER supported */ | 179 | bfa_boolean_t seq_rec; /* SQER supported */ |
| 182 | bfa_boolean_t is_online; /* itnim is ONLINE for IO */ | 180 | bfa_boolean_t is_online; /* itnim is ONLINE for IO */ |
| 183 | bfa_boolean_t iotov_active; /* IO TOV timer is active */ | 181 | bfa_boolean_t iotov_active; /* IO TOV timer is active */ |
| 184 | struct bfa_wc_s wc; /* waiting counter */ | 182 | struct bfa_wc_s wc; /* waiting counter */ |
| 185 | struct bfa_timer_s timer; /* pending IO TOV */ | 183 | struct bfa_timer_s timer; /* pending IO TOV */ |
| 186 | struct bfa_reqq_wait_s reqq_wait; /* to wait for room in reqq */ | 184 | struct bfa_reqq_wait_s reqq_wait; /* to wait for room in reqq */ |
| 187 | struct bfa_fcpim_mod_s *fcpim; /* fcpim module */ | 185 | struct bfa_fcpim_mod_s *fcpim; /* fcpim module */ |
| 188 | struct bfa_itnim_iostats_s stats; | 186 | struct bfa_itnim_iostats_s stats; |
| 189 | struct bfa_itnim_ioprofile_s ioprofile; | 187 | struct bfa_itnim_ioprofile_s ioprofile; |
| 190 | }; | 188 | }; |
| 191 | 189 | ||
| 192 | |||
| 193 | #define bfa_itnim_is_online(_itnim) ((_itnim)->is_online) | 190 | #define bfa_itnim_is_online(_itnim) ((_itnim)->is_online) |
| 194 | #define BFA_FCPIM_MOD(_hal) (&(_hal)->modules.fcpim_mod) | 191 | #define BFA_FCPIM_MOD(_hal) (&(_hal)->modules.fcpim_mod) |
| 195 | #define BFA_IOIM_FROM_TAG(_fcpim, _iotag) \ | 192 | #define BFA_IOIM_FROM_TAG(_fcpim, _iotag) \ |
| @@ -246,32 +243,14 @@ void bfa_itnim_isr(struct bfa_s *bfa, struct bfi_msg_s *msg); | |||
| 246 | void bfa_itnim_iodone(struct bfa_itnim_s *itnim); | 243 | void bfa_itnim_iodone(struct bfa_itnim_s *itnim); |
| 247 | void bfa_itnim_tskdone(struct bfa_itnim_s *itnim); | 244 | void bfa_itnim_tskdone(struct bfa_itnim_s *itnim); |
| 248 | bfa_boolean_t bfa_itnim_hold_io(struct bfa_itnim_s *itnim); | 245 | bfa_boolean_t bfa_itnim_hold_io(struct bfa_itnim_s *itnim); |
| 249 | void bfa_ioim_profile_comp(struct bfa_ioim_s *ioim); | ||
| 250 | void bfa_ioim_profile_start(struct bfa_ioim_s *ioim); | ||
| 251 | |||
| 252 | 246 | ||
| 253 | /* | 247 | /* |
| 254 | * bfa fcpim module API functions | 248 | * bfa fcpim module API functions |
| 255 | */ | 249 | */ |
| 256 | void bfa_fcpim_path_tov_set(struct bfa_s *bfa, u16 path_tov); | 250 | void bfa_fcpim_path_tov_set(struct bfa_s *bfa, u16 path_tov); |
| 257 | u16 bfa_fcpim_path_tov_get(struct bfa_s *bfa); | 251 | u16 bfa_fcpim_path_tov_get(struct bfa_s *bfa); |
| 258 | void bfa_fcpim_qdepth_set(struct bfa_s *bfa, u16 q_depth); | ||
| 259 | u16 bfa_fcpim_qdepth_get(struct bfa_s *bfa); | 252 | u16 bfa_fcpim_qdepth_get(struct bfa_s *bfa); |
| 260 | bfa_status_t bfa_fcpim_get_modstats(struct bfa_s *bfa, | 253 | |
| 261 | struct bfa_itnim_iostats_s *modstats); | ||
| 262 | bfa_status_t bfa_fcpim_port_iostats(struct bfa_s *bfa, | ||
| 263 | struct bfa_itnim_iostats_s *stats, u8 lp_tag); | ||
| 264 | bfa_status_t bfa_fcpim_get_del_itn_stats(struct bfa_s *bfa, | ||
| 265 | struct bfa_fcpim_del_itn_stats_s *modstats); | ||
| 266 | bfa_status_t bfa_fcpim_port_clear_iostats(struct bfa_s *bfa, u8 lp_tag); | ||
| 267 | void bfa_fcpim_add_stats(struct bfa_itnim_iostats_s *fcpim_stats, | ||
| 268 | struct bfa_itnim_iostats_s *itnim_stats); | ||
| 269 | bfa_status_t bfa_fcpim_clr_modstats(struct bfa_s *bfa); | ||
| 270 | void bfa_fcpim_set_ioredirect(struct bfa_s *bfa, | ||
| 271 | bfa_boolean_t state); | ||
| 272 | void bfa_fcpim_update_ioredirect(struct bfa_s *bfa); | ||
| 273 | bfa_status_t bfa_fcpim_profile_on(struct bfa_s *bfa, u32 time); | ||
| 274 | bfa_status_t bfa_fcpim_profile_off(struct bfa_s *bfa); | ||
| 275 | #define bfa_fcpim_ioredirect_enabled(__bfa) \ | 254 | #define bfa_fcpim_ioredirect_enabled(__bfa) \ |
| 276 | (((struct bfa_fcpim_mod_s *)(BFA_FCPIM_MOD(__bfa)))->ioredirect) | 255 | (((struct bfa_fcpim_mod_s *)(BFA_FCPIM_MOD(__bfa)))->ioredirect) |
| 277 | 256 | ||
| @@ -289,46 +268,33 @@ bfa_status_t bfa_fcpim_profile_off(struct bfa_s *bfa); | |||
| 289 | * bfa itnim API functions | 268 | * bfa itnim API functions |
| 290 | */ | 269 | */ |
| 291 | struct bfa_itnim_s *bfa_itnim_create(struct bfa_s *bfa, | 270 | struct bfa_itnim_s *bfa_itnim_create(struct bfa_s *bfa, |
| 292 | struct bfa_rport_s *rport, void *itnim); | 271 | struct bfa_rport_s *rport, void *itnim); |
| 293 | void bfa_itnim_delete(struct bfa_itnim_s *itnim); | 272 | void bfa_itnim_delete(struct bfa_itnim_s *itnim); |
| 294 | void bfa_itnim_online(struct bfa_itnim_s *itnim, | 273 | void bfa_itnim_online(struct bfa_itnim_s *itnim, bfa_boolean_t seq_rec); |
| 295 | bfa_boolean_t seq_rec); | 274 | void bfa_itnim_offline(struct bfa_itnim_s *itnim); |
| 296 | void bfa_itnim_offline(struct bfa_itnim_s *itnim); | 275 | void bfa_itnim_clear_stats(struct bfa_itnim_s *itnim); |
| 297 | void bfa_itnim_clear_stats(struct bfa_itnim_s *itnim); | 276 | bfa_status_t bfa_itnim_get_ioprofile(struct bfa_itnim_s *itnim, |
| 298 | bfa_status_t bfa_itnim_get_ioprofile(struct bfa_itnim_s *itnim, | 277 | struct bfa_itnim_ioprofile_s *ioprofile); |
| 299 | struct bfa_itnim_ioprofile_s *ioprofile); | 278 | |
| 300 | #define bfa_itnim_get_reqq(__ioim) (((struct bfa_ioim_s *)__ioim)->itnim->reqq) | 279 | #define bfa_itnim_get_reqq(__ioim) (((struct bfa_ioim_s *)__ioim)->itnim->reqq) |
| 301 | 280 | ||
| 302 | /* | 281 | /* |
| 303 | * BFA completion callback for bfa_itnim_online(). | 282 | * BFA completion callback for bfa_itnim_online(). |
| 304 | * | ||
| 305 | * @param[in] itnim FCS or driver itnim instance | ||
| 306 | * | ||
| 307 | * return None | ||
| 308 | */ | 283 | */ |
| 309 | void bfa_cb_itnim_online(void *itnim); | 284 | void bfa_cb_itnim_online(void *itnim); |
| 310 | 285 | ||
| 311 | /* | 286 | /* |
| 312 | * BFA completion callback for bfa_itnim_offline(). | 287 | * BFA completion callback for bfa_itnim_offline(). |
| 313 | * | ||
| 314 | * @param[in] itnim FCS or driver itnim instance | ||
| 315 | * | ||
| 316 | * return None | ||
| 317 | */ | 288 | */ |
| 318 | void bfa_cb_itnim_offline(void *itnim); | 289 | void bfa_cb_itnim_offline(void *itnim); |
| 319 | void bfa_cb_itnim_tov_begin(void *itnim); | 290 | void bfa_cb_itnim_tov_begin(void *itnim); |
| 320 | void bfa_cb_itnim_tov(void *itnim); | 291 | void bfa_cb_itnim_tov(void *itnim); |
| 321 | 292 | ||
| 322 | /* | 293 | /* |
| 323 | * BFA notification to FCS/driver for second level error recovery. | 294 | * BFA notification to FCS/driver for second level error recovery. |
| 324 | * | ||
| 325 | * Atleast one I/O request has timedout and target is unresponsive to | 295 | * Atleast one I/O request has timedout and target is unresponsive to |
| 326 | * repeated abort requests. Second level error recovery should be initiated | 296 | * repeated abort requests. Second level error recovery should be initiated |
| 327 | * by starting implicit logout and recovery procedures. | 297 | * by starting implicit logout and recovery procedures. |
| 328 | * | ||
| 329 | * @param[in] itnim FCS or driver itnim instance | ||
| 330 | * | ||
| 331 | * return None | ||
| 332 | */ | 298 | */ |
| 333 | void bfa_cb_itnim_sler(void *itnim); | 299 | void bfa_cb_itnim_sler(void *itnim); |
| 334 | 300 | ||
| @@ -345,10 +311,8 @@ void bfa_ioim_start(struct bfa_ioim_s *ioim); | |||
| 345 | bfa_status_t bfa_ioim_abort(struct bfa_ioim_s *ioim); | 311 | bfa_status_t bfa_ioim_abort(struct bfa_ioim_s *ioim); |
| 346 | void bfa_ioim_delayed_comp(struct bfa_ioim_s *ioim, | 312 | void bfa_ioim_delayed_comp(struct bfa_ioim_s *ioim, |
| 347 | bfa_boolean_t iotov); | 313 | bfa_boolean_t iotov); |
| 348 | |||
| 349 | |||
| 350 | /* | 314 | /* |
| 351 | * I/O completion notification. | 315 | * I/O completion notification. |
| 352 | * | 316 | * |
| 353 | * @param[in] dio driver IO structure | 317 | * @param[in] dio driver IO structure |
| 354 | * @param[in] io_status IO completion status | 318 | * @param[in] io_status IO completion status |
| @@ -359,39 +323,31 @@ void bfa_ioim_delayed_comp(struct bfa_ioim_s *ioim, | |||
| 359 | * | 323 | * |
| 360 | * @return None | 324 | * @return None |
| 361 | */ | 325 | */ |
| 362 | void bfa_cb_ioim_done(void *bfad, struct bfad_ioim_s *dio, | 326 | void bfa_cb_ioim_done(void *bfad, struct bfad_ioim_s *dio, |
| 363 | enum bfi_ioim_status io_status, | 327 | enum bfi_ioim_status io_status, |
| 364 | u8 scsi_status, int sns_len, | 328 | u8 scsi_status, int sns_len, |
| 365 | u8 *sns_info, s32 residue); | 329 | u8 *sns_info, s32 residue); |
| 366 | 330 | ||
| 367 | /* | 331 | /* |
| 368 | * I/O good completion notification. | 332 | * I/O good completion notification. |
| 369 | * | ||
| 370 | * @param[in] dio driver IO structure | ||
| 371 | * | ||
| 372 | * @return None | ||
| 373 | */ | 333 | */ |
| 374 | void bfa_cb_ioim_good_comp(void *bfad, struct bfad_ioim_s *dio); | 334 | void bfa_cb_ioim_good_comp(void *bfad, struct bfad_ioim_s *dio); |
| 375 | 335 | ||
| 376 | /* | 336 | /* |
| 377 | * I/O abort completion notification | 337 | * I/O abort completion notification |
| 378 | * | ||
| 379 | * @param[in] dio driver IO that was aborted | ||
| 380 | * | ||
| 381 | * @return None | ||
| 382 | */ | 338 | */ |
| 383 | void bfa_cb_ioim_abort(void *bfad, struct bfad_ioim_s *dio); | 339 | void bfa_cb_ioim_abort(void *bfad, struct bfad_ioim_s *dio); |
| 384 | 340 | ||
| 385 | /* | 341 | /* |
| 386 | * bfa tskim API functions | 342 | * bfa tskim API functions |
| 387 | */ | 343 | */ |
| 388 | struct bfa_tskim_s *bfa_tskim_alloc(struct bfa_s *bfa, | 344 | struct bfa_tskim_s *bfa_tskim_alloc(struct bfa_s *bfa, |
| 389 | struct bfad_tskim_s *dtsk); | 345 | struct bfad_tskim_s *dtsk); |
| 390 | void bfa_tskim_free(struct bfa_tskim_s *tskim); | 346 | void bfa_tskim_free(struct bfa_tskim_s *tskim); |
| 391 | void bfa_tskim_start(struct bfa_tskim_s *tskim, | 347 | void bfa_tskim_start(struct bfa_tskim_s *tskim, |
| 392 | struct bfa_itnim_s *itnim, struct scsi_lun lun, | 348 | struct bfa_itnim_s *itnim, struct scsi_lun lun, |
| 393 | enum fcp_tm_cmnd tm, u8 t_secs); | 349 | enum fcp_tm_cmnd tm, u8 t_secs); |
| 394 | void bfa_cb_tskim_done(void *bfad, struct bfad_tskim_s *dtsk, | 350 | void bfa_cb_tskim_done(void *bfad, struct bfad_tskim_s *dtsk, |
| 395 | enum bfi_tskim_status tsk_status); | 351 | enum bfi_tskim_status tsk_status); |
| 396 | 352 | ||
| 397 | #endif /* __BFA_FCPIM_H__ */ | 353 | #endif /* __BFA_FCPIM_H__ */ |
diff --git a/drivers/scsi/bfa/bfa_fcs_lport.c b/drivers/scsi/bfa/bfa_fcs_lport.c index 7a2cf7713a95..aa4516672eed 100644 --- a/drivers/scsi/bfa/bfa_fcs_lport.c +++ b/drivers/scsi/bfa/bfa_fcs_lport.c | |||
| @@ -883,7 +883,8 @@ bfa_fcs_lport_get_attr( | |||
| 883 | 883 | ||
| 884 | if (port->fabric) { | 884 | if (port->fabric) { |
| 885 | port_attr->port_type = port->fabric->oper_type; | 885 | port_attr->port_type = port->fabric->oper_type; |
| 886 | port_attr->loopback = bfa_sm_cmp_state(port->fabric, bfa_fcs_fabric_sm_loopback); | 886 | port_attr->loopback = bfa_sm_cmp_state(port->fabric, |
| 887 | bfa_fcs_fabric_sm_loopback); | ||
| 887 | port_attr->authfail = | 888 | port_attr->authfail = |
| 888 | bfa_sm_cmp_state(port->fabric, | 889 | bfa_sm_cmp_state(port->fabric, |
| 889 | bfa_fcs_fabric_sm_auth_failed); | 890 | bfa_fcs_fabric_sm_auth_failed); |
diff --git a/drivers/scsi/bfa/bfa_fcs_rport.c b/drivers/scsi/bfa/bfa_fcs_rport.c index fbfcac7615b5..711f2d992a97 100644 --- a/drivers/scsi/bfa/bfa_fcs_rport.c +++ b/drivers/scsi/bfa/bfa_fcs_rport.c | |||
| @@ -1974,7 +1974,8 @@ bfa_fcs_rport_alloc(struct bfa_fcs_lport_s *port, wwn_t pwwn, u32 rpid) | |||
| 1974 | rport->itnim = bfa_fcs_itnim_create(rport); | 1974 | rport->itnim = bfa_fcs_itnim_create(rport); |
| 1975 | if (!rport->itnim) { | 1975 | if (!rport->itnim) { |
| 1976 | bfa_trc(fcs, rpid); | 1976 | bfa_trc(fcs, rpid); |
| 1977 | bfa_sm_send_event(rport->bfa_rport, BFA_RPORT_SM_DELETE); | 1977 | bfa_sm_send_event(rport->bfa_rport, |
| 1978 | BFA_RPORT_SM_DELETE); | ||
| 1978 | kfree(rport_drv); | 1979 | kfree(rport_drv); |
| 1979 | return NULL; | 1980 | return NULL; |
| 1980 | } | 1981 | } |
diff --git a/drivers/scsi/bfa/bfa_ioc.c b/drivers/scsi/bfa/bfa_ioc.c index cd532444ffd9..c4d56506e966 100644 --- a/drivers/scsi/bfa/bfa_ioc.c +++ b/drivers/scsi/bfa/bfa_ioc.c | |||
| @@ -586,13 +586,10 @@ bfa_ioc_sm_fail(struct bfa_ioc_s *ioc, enum ioc_event event) | |||
| 586 | } | 586 | } |
| 587 | } | 587 | } |
| 588 | 588 | ||
| 589 | |||
| 590 | |||
| 591 | /* | 589 | /* |
| 592 | * IOCPF State Machine | 590 | * IOCPF State Machine |
| 593 | */ | 591 | */ |
| 594 | 592 | ||
| 595 | |||
| 596 | /* | 593 | /* |
| 597 | * Reset entry actions -- initialize state machine | 594 | * Reset entry actions -- initialize state machine |
| 598 | */ | 595 | */ |
| @@ -754,7 +751,6 @@ bfa_iocpf_sm_semwait(struct bfa_iocpf_s *iocpf, enum iocpf_event event) | |||
| 754 | } | 751 | } |
| 755 | } | 752 | } |
| 756 | 753 | ||
| 757 | |||
| 758 | static void | 754 | static void |
| 759 | bfa_iocpf_sm_hwinit_entry(struct bfa_iocpf_s *iocpf) | 755 | bfa_iocpf_sm_hwinit_entry(struct bfa_iocpf_s *iocpf) |
| 760 | { | 756 | { |
| @@ -811,7 +807,6 @@ bfa_iocpf_sm_hwinit(struct bfa_iocpf_s *iocpf, enum iocpf_event event) | |||
| 811 | } | 807 | } |
| 812 | } | 808 | } |
| 813 | 809 | ||
| 814 | |||
| 815 | static void | 810 | static void |
| 816 | bfa_iocpf_sm_enabling_entry(struct bfa_iocpf_s *iocpf) | 811 | bfa_iocpf_sm_enabling_entry(struct bfa_iocpf_s *iocpf) |
| 817 | { | 812 | { |
| @@ -873,8 +868,6 @@ bfa_iocpf_sm_enabling(struct bfa_iocpf_s *iocpf, enum iocpf_event event) | |||
| 873 | } | 868 | } |
| 874 | } | 869 | } |
| 875 | 870 | ||
| 876 | |||
| 877 | |||
| 878 | static void | 871 | static void |
| 879 | bfa_iocpf_sm_ready_entry(struct bfa_iocpf_s *iocpf) | 872 | bfa_iocpf_sm_ready_entry(struct bfa_iocpf_s *iocpf) |
| 880 | { | 873 | { |
| @@ -915,7 +908,6 @@ bfa_iocpf_sm_ready(struct bfa_iocpf_s *iocpf, enum iocpf_event event) | |||
| 915 | } | 908 | } |
| 916 | } | 909 | } |
| 917 | 910 | ||
| 918 | |||
| 919 | static void | 911 | static void |
| 920 | bfa_iocpf_sm_disabling_entry(struct bfa_iocpf_s *iocpf) | 912 | bfa_iocpf_sm_disabling_entry(struct bfa_iocpf_s *iocpf) |
| 921 | { | 913 | { |
| @@ -990,7 +982,6 @@ bfa_iocpf_sm_disabled(struct bfa_iocpf_s *iocpf, enum iocpf_event event) | |||
| 990 | } | 982 | } |
| 991 | } | 983 | } |
| 992 | 984 | ||
| 993 | |||
| 994 | static void | 985 | static void |
| 995 | bfa_iocpf_sm_initfail_entry(struct bfa_iocpf_s *iocpf) | 986 | bfa_iocpf_sm_initfail_entry(struct bfa_iocpf_s *iocpf) |
| 996 | { | 987 | { |
| @@ -1028,7 +1019,6 @@ bfa_iocpf_sm_initfail(struct bfa_iocpf_s *iocpf, enum iocpf_event event) | |||
| 1028 | } | 1019 | } |
| 1029 | } | 1020 | } |
| 1030 | 1021 | ||
| 1031 | |||
| 1032 | static void | 1022 | static void |
| 1033 | bfa_iocpf_sm_fail_entry(struct bfa_iocpf_s *iocpf) | 1023 | bfa_iocpf_sm_fail_entry(struct bfa_iocpf_s *iocpf) |
| 1034 | { | 1024 | { |
| @@ -1078,8 +1068,6 @@ bfa_iocpf_sm_fail(struct bfa_iocpf_s *iocpf, enum iocpf_event event) | |||
| 1078 | } | 1068 | } |
| 1079 | } | 1069 | } |
| 1080 | 1070 | ||
| 1081 | |||
| 1082 | |||
| 1083 | /* | 1071 | /* |
| 1084 | * BFA IOC private functions | 1072 | * BFA IOC private functions |
| 1085 | */ | 1073 | */ |
| @@ -1123,7 +1111,6 @@ bfa_ioc_sem_get(void __iomem *sem_reg) | |||
| 1123 | return BFA_FALSE; | 1111 | return BFA_FALSE; |
| 1124 | } | 1112 | } |
| 1125 | 1113 | ||
| 1126 | |||
| 1127 | static void | 1114 | static void |
| 1128 | bfa_ioc_hw_sem_get(struct bfa_ioc_s *ioc) | 1115 | bfa_ioc_hw_sem_get(struct bfa_ioc_s *ioc) |
| 1129 | { | 1116 | { |
| @@ -1305,7 +1292,6 @@ bfa_ioc_msgflush(struct bfa_ioc_s *ioc) | |||
| 1305 | writel(1, ioc->ioc_regs.lpu_mbox_cmd); | 1292 | writel(1, ioc->ioc_regs.lpu_mbox_cmd); |
| 1306 | } | 1293 | } |
| 1307 | 1294 | ||
| 1308 | |||
| 1309 | static void | 1295 | static void |
| 1310 | bfa_ioc_hwinit(struct bfa_ioc_s *ioc, bfa_boolean_t force) | 1296 | bfa_ioc_hwinit(struct bfa_ioc_s *ioc, bfa_boolean_t force) |
| 1311 | { | 1297 | { |
| @@ -1738,7 +1724,6 @@ bfa_ioc_smem_clr(struct bfa_ioc_s *ioc, u32 soff, u32 sz) | |||
| 1738 | return BFA_STATUS_OK; | 1724 | return BFA_STATUS_OK; |
| 1739 | } | 1725 | } |
| 1740 | 1726 | ||
| 1741 | |||
| 1742 | static void | 1727 | static void |
| 1743 | bfa_ioc_pf_fwmismatch(struct bfa_ioc_s *ioc) | 1728 | bfa_ioc_pf_fwmismatch(struct bfa_ioc_s *ioc) |
| 1744 | { | 1729 | { |
| @@ -1752,7 +1737,6 @@ bfa_ioc_pf_fwmismatch(struct bfa_ioc_s *ioc) | |||
| 1752 | "with the driver version\n"); | 1737 | "with the driver version\n"); |
| 1753 | } | 1738 | } |
| 1754 | 1739 | ||
| 1755 | |||
| 1756 | bfa_status_t | 1740 | bfa_status_t |
| 1757 | bfa_ioc_pll_init(struct bfa_ioc_s *ioc) | 1741 | bfa_ioc_pll_init(struct bfa_ioc_s *ioc) |
| 1758 | { | 1742 | { |
diff --git a/drivers/scsi/bfa/bfa_svc.c b/drivers/scsi/bfa/bfa_svc.c index 1d5432b42a90..8dc2e7752e4c 100644 --- a/drivers/scsi/bfa/bfa_svc.c +++ b/drivers/scsi/bfa/bfa_svc.c | |||
| @@ -52,7 +52,6 @@ BFA_MODULE(uf); | |||
| 52 | ((bfa_fcport_is_disabled(bfa) == BFA_TRUE) || \ | 52 | ((bfa_fcport_is_disabled(bfa) == BFA_TRUE) || \ |
| 53 | (bfa_ioc_is_disabled(&bfa->ioc) == BFA_TRUE)) | 53 | (bfa_ioc_is_disabled(&bfa->ioc) == BFA_TRUE)) |
| 54 | 54 | ||
| 55 | |||
| 56 | /* | 55 | /* |
| 57 | * BFA port state machine events | 56 | * BFA port state machine events |
| 58 | */ | 57 | */ |
| @@ -917,10 +916,6 @@ bfa_fcxp_queue(struct bfa_fcxp_s *fcxp, struct bfi_fcxp_send_req_s *send_req) | |||
| 917 | } | 916 | } |
| 918 | 917 | ||
| 919 | /* | 918 | /* |
| 920 | * hal_fcxp_api BFA FCXP API | ||
| 921 | */ | ||
| 922 | |||
| 923 | /* | ||
| 924 | * Allocate an FCXP instance to send a response or to send a request | 919 | * Allocate an FCXP instance to send a response or to send a request |
| 925 | * that has a response. Request/response buffers are allocated by caller. | 920 | * that has a response. Request/response buffers are allocated by caller. |
| 926 | * | 921 | * |
| @@ -1014,7 +1009,7 @@ bfa_fcxp_get_rspbuf(struct bfa_fcxp_s *fcxp) | |||
| 1014 | } | 1009 | } |
| 1015 | 1010 | ||
| 1016 | /* | 1011 | /* |
| 1017 | * Free the BFA FCXP | 1012 | * Free the BFA FCXP |
| 1018 | * | 1013 | * |
| 1019 | * @param[in] fcxp BFA fcxp pointer | 1014 | * @param[in] fcxp BFA fcxp pointer |
| 1020 | * | 1015 | * |
| @@ -1161,12 +1156,6 @@ bfa_fcxp_discard(struct bfa_fcxp_s *fcxp) | |||
| 1161 | fcxp->send_cbfn = bfa_fcxp_null_comp; | 1156 | fcxp->send_cbfn = bfa_fcxp_null_comp; |
| 1162 | } | 1157 | } |
| 1163 | 1158 | ||
| 1164 | |||
| 1165 | |||
| 1166 | /* | ||
| 1167 | * hal_fcxp_public BFA FCXP public functions | ||
| 1168 | */ | ||
| 1169 | |||
| 1170 | void | 1159 | void |
| 1171 | bfa_fcxp_isr(struct bfa_s *bfa, struct bfi_msg_s *msg) | 1160 | bfa_fcxp_isr(struct bfa_s *bfa, struct bfi_msg_s *msg) |
| 1172 | { | 1161 | { |
| @@ -2636,12 +2625,6 @@ bfa_fcport_ln_sm_up_dn_up_nf(struct bfa_fcport_ln_s *ln, | |||
| 2636 | } | 2625 | } |
| 2637 | } | 2626 | } |
| 2638 | 2627 | ||
| 2639 | |||
| 2640 | |||
| 2641 | /* | ||
| 2642 | * hal_port_private | ||
| 2643 | */ | ||
| 2644 | |||
| 2645 | static void | 2628 | static void |
| 2646 | __bfa_cb_fcport_event(void *cbarg, bfa_boolean_t complete) | 2629 | __bfa_cb_fcport_event(void *cbarg, bfa_boolean_t complete) |
| 2647 | { | 2630 | { |
| @@ -3229,12 +3212,6 @@ bfa_trunk_iocdisable(struct bfa_s *bfa) | |||
| 3229 | } | 3212 | } |
| 3230 | } | 3213 | } |
| 3231 | 3214 | ||
| 3232 | |||
| 3233 | |||
| 3234 | /* | ||
| 3235 | * hal_port_public | ||
| 3236 | */ | ||
| 3237 | |||
| 3238 | /* | 3215 | /* |
| 3239 | * Called to initialize port attributes | 3216 | * Called to initialize port attributes |
| 3240 | */ | 3217 | */ |
| @@ -3336,12 +3313,6 @@ bfa_fcport_isr(struct bfa_s *bfa, struct bfi_msg_s *msg) | |||
| 3336 | } | 3313 | } |
| 3337 | } | 3314 | } |
| 3338 | 3315 | ||
| 3339 | |||
| 3340 | |||
| 3341 | /* | ||
| 3342 | * hal_port_api | ||
| 3343 | */ | ||
| 3344 | |||
| 3345 | /* | 3316 | /* |
| 3346 | * Registered callback for port events. | 3317 | * Registered callback for port events. |
| 3347 | */ | 3318 | */ |
| @@ -3674,7 +3645,6 @@ bfa_fcport_is_ratelim(struct bfa_s *bfa) | |||
| 3674 | 3645 | ||
| 3675 | } | 3646 | } |
| 3676 | 3647 | ||
| 3677 | |||
| 3678 | /* | 3648 | /* |
| 3679 | * Get default minimum ratelim speed | 3649 | * Get default minimum ratelim speed |
| 3680 | */ | 3650 | */ |
| @@ -4573,12 +4543,6 @@ bfa_sgpg_iocdisable(struct bfa_s *bfa) | |||
| 4573 | { | 4543 | { |
| 4574 | } | 4544 | } |
| 4575 | 4545 | ||
| 4576 | |||
| 4577 | |||
| 4578 | /* | ||
| 4579 | * hal_sgpg_public BFA SGPG public functions | ||
| 4580 | */ | ||
| 4581 | |||
| 4582 | bfa_status_t | 4546 | bfa_status_t |
| 4583 | bfa_sgpg_malloc(struct bfa_s *bfa, struct list_head *sgpg_q, int nsgpgs) | 4547 | bfa_sgpg_malloc(struct bfa_s *bfa, struct list_head *sgpg_q, int nsgpgs) |
| 4584 | { | 4548 | { |
