lpfc_cmpl_els_plogi(9)
π lpfc_cmpl_els_plogi β a Kernel API Manual moment β¨
okay so bestie, welcome to the Kernel API Manual entry for lpfc_cmpl_els_plogi(9). yes it's a mouthful, yes it's a kernel function, and yes we're gonna get through it together π«Ά
πΈ NAME πΈ
lpfc_cmpl_els_plogi β the completion callback function for plogi. that's it, that's the whole name. iconic minimalism π
β¨ SYNOPSIS β¨
void lpfc_cmpl_els_plogi (struct lpfc_hba *phba , struct lpfc_iocbq
*cmdiocb , struct lpfc_iocbq *rspiocb );
it returns void, so likeβ¦ no return value, no drama, no expectations. we love a function that just does the thing and leaves π
π ARGUMENTS π
phbaβ pointer to the lpfc hba data structure. this is the host bus adapter's whole personality, the main character of the struct world πcmdiocbβ pointer to the lpfc command iocb data structure. the command side of the story, the one who sent the thing πrspiocbβ pointer to the lpfc response iocb data structure. the reply guy. the one carrying the news back π¬
π DESCRIPTION π
so this routine is the completion callback function for issuing the Port Login (PLOGI) command. think of it as the "your PLOGI came back, let's debrief" handler π¦
here's the vibe check, step by step:
- for PLOGI completion, there must be an active
ndlpon the vport node list that matches the remote node ID from the PLOGI response IOCB. that's the whole prerequisite, no exceptions β - if such
ndlpdoes not exist, the PLOGI is simply ignored and the command IOCB is released. no ndlp, no problem, we move on π - the PLOGI response IOCB status gets checked for error conditions. gotta read the room (and the status field) π
- if there's error status reported, a PLOGI retry shall be attempted by invoking the
lpfc_els_retryroutine. we try again, we don't give up, that's the energy π₯ - otherwise (no error, we're slaying), the
lpfc_plogi_confirm_nportroutine shall be invoked on thendlp, and theNLP_EVT_CMPL_PLOGIstate to the Discover State Machine (DSM) is set for this PLOGI completion. yes the state machine has a whole moment here β - finally, it checks whether there are additional N_Port nodes with the vport that still need to perform PLOGI. our fave kind of follow-up question π
- if so, the
lpfc_more_plogiroutine is invoked to issue additional PLOGIs. one PLOGI was never the endgame, it's a whole friend group π
π¦ SEE ALSO π¦
Kernel file ./drivers/scsi/lpfc/lpfc_els.c β and like, an absolutely unhinged amount of sibling functions, all of whom are invited to the group chat. no cap, we're listing every single 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_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_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)
ngl that's a lot of cross-references and every single one of them made the cut. iykyk π
and that's the page, bestie π§ this was lpfc_cmpl_els_plogi(9) from the Kernel API Manual, living down in ./drivers/scsi/lpfc, dated October 2026 β go read the source, it's right there, lpfc_els.c is calling your name πβ¨π
π¦ 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