lpfc_cmpl_els_flogi_nport(9)
π lpfc_cmpl_els_flogi_nport(9) β the Kernel API Manual, section 9, bestie β¨
okay so this is a page from the Kernel API Manual, section 9 (kernel routines, iykyk), and it's all about one little completion function. it is giving "small function, big responsibility" and honestly? we stan π
πΈ NAME πΈ
lpfc_cmpl_els_flogi_nport β the completion function for flogi to an N_Port π¦
like, literally. that's the whole name. completion. for. flogi. to. an. N_Port. and yes we WILL be explaining what that means.
β¨ SYNOPSIS β¨
int lpfc_cmpl_els_flogi_nport (struct lpfc_vport *vport , struct
lpfc_nodelist *ndlp , struct serv_parm *sp );
it returns an int, it takes three pointers, that's the whole vibe check. π
π«Ά ARGUMENTS π«Ά
vportβ pointer to a host virtual N_Port data structure. your vport. your main character. πndlpβ pointer to a node-list data structure. the node list bestie herself. πspβ pointer to service parameter data structure. service parameters, slay. β
π DESCRIPTION π
okay so, plot twist: this routine doesn't just show up on its own. it gets invoked by the lpfc_cmpl_els_flogi completion callback function β so it's the callback's callback, the vibe is very "she got the invite through a friend" π
β and its whole job is handling the completion of a Fabric Login (FLOGI) into an N_Port in a point-to-point topology. no cap.
here's where it gets good, so pay attention bestie:
first, the vport's N_Port Name gets compared with the received N_Port Name. π¦ and then it's a fork in the road:
- if the vport's N_Port Name is greater than the received N_Port Name lexicographically, this node shall assign local N_Port ID (
PT2PT_LocalID: 1) and remote N_Port ID (PT2PT_RemoteID: 2) and will send out Port Login (PLOGI) with the N_Port IDs assigned. she took initiative. she's the leader. periodt. π₯ - otherwise, this node shall just wait for the remote node to issue PLOGI and assign N_Port IDs. lowkey passive but honestly respectful. let the other side have their moment π
and the return codes, because we always check the return codes:
0β Success π-ENXIOβ Fail π
ngl, that's a pretty short list of outcomes for something this dramatic. but she keeps it simple. iconic behavior.
π SEE ALSO π
the kernel file ./drivers/scsi/lpfc/lpfc_els.c and, okay, buckle up, this list is LONG, but every single one of them is here because I would never do lpfc_els_chk_latt(9) dirty like that:
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(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)
okay that was a lot but bestie asked for the whole friend group and I delivered π«Ά every one of them is invited to the group chat.
and that's the page!! π this little gem lives over in ./drivers/scsi/lpfc, and it was last updated October 2026, so she's fresh. go forth and complete your FLOGI. slay. ππ
π¦ 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