lpfc_cmpl_els_rrq(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’« lpfc_cmpl_els_rrq β€” from the Kernel API Manual, bestie πŸ’«

okay so you're reading the lpfc_cmpl_els_rrq(9) page, welcome, come sit with me πŸ’– this one lives in the kernel docs and it's basically the "cleanup crew" page β€” short, sweet, and it does exactly one job, but it does it well. no cap.


✨ NAME ✨

lpfc_cmpl_els_rrq β€” completion handled for els RRQs. that's it, that's the whole vibe. πŸŽ€


🌸 SYNOPSIS 🌸

void lpfc_cmpl_els_rrq (struct lpfc_hba *phba , struct lpfc_iocbq
*cmdiocb , struct lpfc_iocbq *rspiocb );

it returns void, so like… nothing comes back. it just does the thing. icon behavior honestly. πŸ’…


πŸ¦‹ ARGUMENTS πŸ¦‹

  • phba β€” pointer to lpfc hba data structure. your home base, the big one 🏠
  • cmdiocb β€” pointer to lpfc command iocb data structure. this is the command side of the story ✨
  • rspiocb β€” pointer to lpfc response iocb data structure. and this is the response side, the reply, the "hey i heard you" 🫢

🧚 DESCRIPTION 🧚

so what does this routine actually do? bestie it's giving cleanup main character energy:

This routine will call the clear rrq function to free the rrq and clear the xri's bit in the ndlp's xri_bitmap.

like β€” free the rrq, and clear that xri's bit out of the ndlp's xri_bitmap. tidy. organized. obsessed. 🌈

but here's the little plot twist that i need you to remember 😭:

If the ndlp does not exist then the clear_rrq is still called because the rrq needs to be freed.

read that again fr fr β€” even when the ndlp is gone, you still call clear_rrq, because that rrq still needs to be freed. the memory does not get to just vibe there forever. no leaks on my watch πŸ’€


πŸ‘‘ SEE ALSO πŸ‘‘

the kernel file is ./drivers/scsi/lpfc/lpfc_els.c and honestly the friend group is HUGE, so here's everyone, in order, exactly as listed β€” grab a snack πŸ“:

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_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)

that's the whole page, bestie. short king. πŸ’œ and before i go β€” this one came out of ./drivers/scsi/lpfc, dated October 2026, and that's the source and date from the footer, so now you know where it lives and when it was born πŸŽ€ slay, go free those rrqs responsibly βœ¨πŸ¦‹

πŸ“¦ where this page comes from