lpfc_cmpl_els_flogi(9)
π lpfc_cmpl_els_flogi(9) π
okay so this is a page from the Kernel API Manual bestie, and today's main character is lpfc_cmpl_els_flogi. yes it's a mouthful. yes it slays. let's get into it π¦
β¨ NAME β¨
lpfc_cmpl_els_flogi β the completion callback function for flogi, no cap π
β¨ SYNOPSIS β¨
void lpfc_cmpl_els_flogi (struct lpfc_hba *phba , struct lpfc_iocbq
*cmdiocb , struct lpfc_iocbq *rspiocb );
β¨ ARGUMENTS β¨
phbaβ pointer to the lpfc hba data structure. your hba bestie fr.cmdiocbβ pointer to the lpfc command iocb data structure. the command one πrspiocbβ pointer to the lpfc response iocb data structure. the response one π
β¨ DESCRIPTION β¨
okay so picture this: this routine is the top-level completion callback function for issuing a Fabric Login (FLOGI) command. very main character energy honestly π
so first thing, bestie β if the response IOCB reported an error, the lpfc_els_retry routine shall be invoked to retry the FLOGI. that's the move.
now if a retry has been made (either immediately, or, like, delayed β that's when lpfc_els_retry returns 1), the command IOCB will be released and the function returned. done and dusted π
but if the retry attempt has been given up (possibly because it reached the maximum number of retries π), one additional decrement of the ndlp reference shall be invoked before going out, after releasing the command IOCB. and like β this will actually release the remote node. quick note though, so you're not confused: lpfc_els_free_iocb will also invoke one decrement of the ndlp reference count. two decrements, two different places, iykyk π₯
and if there's no error reported in the IOCB status? then the command Port ID field is used to determine whether this is a point-to-point topology or a fabric topology:
- if the Port ID field is assigned β it's a fabric topology β¨
- otherwise β it's a point-to-point topology π¦
and then the routine lpfc_cmpl_els_flogi_fabric or lpfc_cmpl_els_flogi_nport shall be invoked accordingly, to handle the specific topology completion conditions. like, each one handles its own vibe. periodt.
β¨ SEE ALSO β¨
kernel file ./drivers/scsi/lpfc/lpfc_els.c β and honestly the whole friend group showed up for this one:
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_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_issue_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 whole page bestie, you ate that π ok bye, this came from ./drivers/scsi/lpfc and it's dated October 2026 β mwah, see you in the next man page π«Άβ¨
π¦ 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