lpfc_issue_fabric_iocb(9)
π« lpfc_issue_fabric_iocb(9) β from the Kernel API Manual β¨
okay bestie, gather round, because today we're looking at lpfc_issue_fabric_iocb(9) straight out of the Kernel API Manual and honestly? it's a little drama queen of a function π
πΈ NAME πΈ
lpfc_issue_fabric_iocb β issue a fabric iocb command π
β¨ SYNOPSIS β¨
int lpfc_issue_fabric_iocb (struct lpfc_hba *phba , struct lpfc_iocbq
*iocb );
like, that's the whole vibe right there π«Ά
π ARGUMENTS π
phbaβ pointer to lpfc hba data structure. (the big one, the main character, the hba itself π)iocbβ pointer to lpfc command iocb data structure. (the actual command being sent out, bestie π)
π¦ DESCRIPTION π¦
So this routine is the top-level API for issuing a fabric iocb command β think stuff like FLOGI and FDISC. π
Here's the whole reason it exists: certain switch fabrics are picky, so this driver function makes sure that only one fabric bound iocb is outstanding at any given time. literally one (1) at a time. no cap. π
So what it does first is check whether there's already an outstanding fabric iocb on the wire:
- If there is one, it puts the newly issued iocb onto the driver internal fabric iocb list, just waiting to be issued later. π€
- If there isn't one, it issues the iocb on the wire and updates the fabric iocb count to indicate that there is one fabric iocb on the wire. π
β οΈ okay um, warning time β οΈ β note that this implementation has a potential for sending out fabric IOCBs out of order. the problem is caused by the construction of the "ready" boolean not including the condition that the internal fabric IOCB list is empty. as such, it's possible a fabric IOCB issued by this routine might "jump" ahead of the fabric IOCBs in the internal list. π like it just cuts the line. rude.
Return code π
IOCB_SUCCESSβ either fabric iocb put on the list or issued successfully πIOCB_ERRORβ failed to issue fabric iocb π
π SEE ALSO π
Kernel file ./drivers/scsi/lpfc/lpfc_els.c β and bestie, the friend group here is enormous, so buckle up π§
lpfc_els_chk_latt(9)lpfc_prep_els_iocb(9)lpfc_issue_fabric_reglogin(9)lpfc_issue_reg_vfi(9)lpfc_issue_unreg_vfi(9)lpfc_check_clean_addr_bit(9)lpfc_cmpl_els_flogi_fabric(9)lpfc_cmpl_els_flogi_nport(9)lpfc_cmpl_els_flogi(9)lpfc_cmpl_els_link_down(9)lpfc_issue_els_flogi(9)lpfc_els_abort_flogi(9)lpfc_initial_flogi(9)lpfc_initial_fdisc(9)lpfc_more_plogi(9)lpfc_plogi_confirm_nport(9)lpfc_end_rscn(9)lpfc_cmpl_els_rrq(9)lpfc_check_encryption(9)lpfc_cmpl_els_plogi(9)lpfc_issue_els_plogi(9)lpfc_cmpl_els_prli(9)lpfc_issue_els_prli(9)lpfc_rscn_disc(9)lpfc_adisc_done(9)lpfc_more_adisc(9)lpfc_cmpl_els_adisc(9)lpfc_issue_els_adisc(9)lpfc_cmpl_els_logo(9)lpfc_issue_els_logo(9)lpfc_cmpl_els_cmd(9)lpfc_reg_fab_ctrl_node(9)lpfc_cmpl_els_disc_cmd(9)lpfc_issue_els_scr(9)lpfc_issue_els_rscn(9)lpfc_issue_els_farpr(9)lpfc_issue_els_rdf(9)lpfc_least_capable_settings(9)lpfc_cmpl_els_edc(9)lpfc_cancel_retry_delay_tmo(9)lpfc_els_retry_delay(9)lpfc_els_retry_delay_handler(9)lpfc_link_reset(9)lpfc_els_retry(9)lpfc_els_free_data(9)lpfc_els_free_bpl(9)lpfc_els_free_iocb(9)lpfc_cmpl_els_logo_acc(9)lpfc_mbx_cmpl_dflt_rpi(9)lpfc_cmpl_els_rsp(9)lpfc_els_rsp_acc(9)lpfc_els_rsp_reject(9)lpfc_els_rsp_adisc_acc(9)lpfc_els_rsp_prli_acc(9)lpfc_els_rsp_rnid_acc(9)lpfc_els_clear_rrq(9)lpfc_els_rsp_echo_acc(9)lpfc_els_disc_adisc(9)lpfc_els_disc_plogi(9)lpfc_els_rcv_lcb(9)lpfc_els_flush_rscn(9)lpfc_rscn_payload_check(9)lpfc_rscn_recovery_check(9)lpfc_send_rscn_event(9)lpfc_els_rcv_rscn(9)lpfc_els_handle_rscn(9)lpfc_els_rcv_flogi(9)lpfc_els_rcv_rnid(9)lpfc_els_rcv_echo(9)lpfc_els_rcv_lirr(9)lpfc_els_rcv_rrq(9)lpfc_els_rsp_rls_acc(9)lpfc_els_rcv_rls(9)lpfc_els_rcv_rtv(9)lpfc_send_rrq(9)lpfc_els_rsp_rpl_acc(9)lpfc_els_rcv_rpl(9)lpfc_els_rcv_farp(9)lpfc_els_rcv_farpr(9)lpfc_els_rcv_fan(9)lpfc_els_rcv_edc(9)lpfc_els_timeout(9)lpfc_els_timeout_handler(9)lpfc_els_flush_cmd(9)lpfc_els_flush_all_cmd(9)lpfc_send_els_failure_event(9)lpfc_send_els_event(9)lpfc_display_fpin_wwpn(9)lpfc_els_rcv_fpin_li(9)lpfc_els_rcv_fpin_del(9)lpfc_els_rcv_fpin_peer_cgn(9)lpfc_els_rcv_fpin_cgn(9)lpfc_els_unsol_buffer(9)lpfc_els_unsol_event(9)lpfc_do_scr_ns_plogi(9)lpfc_cmpl_reg_new_vport(9)lpfc_register_new_vport(9)lpfc_cancel_all_vport_retry_delay_timer(9)lpfc_retry_pport_discovery(9)lpfc_fabric_login_reqd(9)lpfc_cmpl_els_fdisc(9)lpfc_issue_els_fdisc(9)lpfc_cmpl_els_npiv_logo(9)lpfc_issue_els_npiv_logo(9)lpfc_fabric_block_timeout(9)lpfc_resume_fabric_iocbs(9)lpfc_unblock_fabric_iocbs(9)lpfc_block_fabric_iocbs(9)lpfc_cmpl_fabric_iocb(9)lpfc_fabric_abort_vport(9)lpfc_fabric_abort_nport(9)lpfc_fabric_abort_hba(9)lpfc_sli4_vport_delete_els_xri_aborted(9)lpfc_sli4_els_xri_aborted(9)
and that's the page, bestie!! π«Άβ¨ this came out of ./drivers/scsi/lpfc with a date stamp of October 2026 β ily, go read your kernel source, mwah πππ¦
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms