lpfc_cmpl_els_npiv_logo(9)
π
lpfc_cmpl_els_npiv_logo β straight outta the Kernel API Manual, bestie π
okay so the header's doing the whole "title + manual name" thing, but we don't have to copy-paste the vibe β the manual is the Kernel API Manual, the function is lpfc_cmpl_els_npiv_logo, and no cap, this one is a completion callback and it matters. π«Ά
β¨ NAME β¨
lpfc_cmpl_els_npiv_logo β completion function with vport logo. literally the "we're done here" girlie for a LOGO off a vport π
πΈ SYNOPSIS πΈ
void lpfc_cmpl_els_npiv_logo (struct lpfc_hba *phba , struct lpfc_iocbq
*cmdiocb , struct lpfc_iocbq *rspiocb );
she returns void. no return value, no notes, just vibes and cleanup β
π¦ ARGUMENTS π¦
phbaβ pointer to lpfc hba data structure. the whole HBA's main-character record πcmdiocbβ pointer to lpfc command iocb data structure. this is the command iocb, aka the thing she's gonna free πrspiocbβ pointer to lpfc response iocb data structure. the response iocb, just sitting there being a response π
π§ DESCRIPTION π§
so bestie, this routine is the completion callback function to the issuing of a LOGO ELS command off a vport. translation: somebody sent a LOGO out through a vport, and now this is the function that gets pinged when it's done. π«
here's the tea on what she actually does, in order, no skipping:
- she frees the command IOCB π«§
- then she decrements the reference count held on
ndlpfor this completion function β which is the lowkey way of saying the reference to thendlpis no longer needed π
β οΈ okay this part is important so read it twice: note that thelpfc_els_free_iocbroutine decrements thendlpreference held for this callback function, and an additional explicitndlpreference decrementation will trigger the actual release of thendlp. like, the extra decrement is what actually frees it. so do not go doubling up on decrements unless that's literally what you meant to do, fr fr π
π₯ SEE ALSO π₯
the whole friend group, and yes we're listing every single one, no crumbs left behind π the kernel file is ./drivers/scsi/lpfc/lpfc_els.c and everyone below is in (9) gang:
Kernel file ./drivers/scsi/lpfc/lpfc_els.c 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_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!! she's giving "small function, big reference-count responsibilities" and honestly? iconic. periodt π
okay byeee β from your favorite source tree, ./drivers/scsi/lpfc, dated October 2026, living inside the Kernel API Manual. 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