lpfc_cmpl_els_npiv_logo(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… 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:

  1. she frees the command IOCB 🫧
  2. then she decrements the reference count held on ndlp for this completion function β€” which is the lowkey way of saying the reference to the ndlp is no longer needed πŸ’€
⚠️ okay this part is important so read it twice: note that the lpfc_els_free_iocb routine decrements the ndlp reference held for this callback function, and an additional explicit ndlp reference decrementation will trigger the actual release of the ndlp. 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