lpfc_els_rcv_rscn(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– lpfc_els_rcv_rscn β€” a lpfc Kernel API Manual moment ✨

okay so bestie, buckle up, because we're reading a manpage from the Kernel API Manual and honestly? it ate. this is lpfc_els_rcv_rscn(9) and she processes unsolicited RSCN iocbs like it's nothing. πŸ’…


🌸 NAME 🌸

lpfc_els_rcv_rscn β€” Process an unsolicited rscn iocb


πŸ¦‹ SYNOPSIS πŸ¦‹

int lpfc_els_rcv_rscn (struct lpfc_vport *vport , struct lpfc_iocbq
*cmdiocb , struct lpfc_nodelist *ndlp );

πŸŽ€ ARGUMENTS πŸŽ€

  • vport β€” pointer to a host virtual N_Port data structure. iconic little pointer, knows where everything lives πŸ’–
  • cmdiocb β€” pointer to lpfc command iocb data structure. that's the command iocb bestie, don't forget it 🫢
  • ndlp β€” pointer to a node-list data structure. the node-list one, yes ma'am ✨

πŸ‘‘ DESCRIPTION πŸ‘‘

so this routine processes an unsolicited RSCN (Registration State Change Notification) IOCB. like, it's the whole job. lowkey a lot of responsibility for one function, but she handles it. πŸ’…

first up: the payload of the unsolicited RSCN is walked so it can invoke the fc_host_post_event routine to the FC transport layer. yes, walked. we are walking that payload. πŸšΆβ€β™€οΈ

then it's a whole vibe check depending on what state the state machine is in:

  • If the discover state machine is about to begin discovery, it just accepts the RSCN, and the discovery process will satisfy the RSCN. easy. no notes. βœ…
  • If this RSCN only contains N_Port IDs for other vports on this HBA, it just accepts the RSCN and ignores processing it. not her problem, honestly πŸ™ˆ
  • If the state machine is in the recovery state, the fc_rscn_id_list of this vport is walked and the lpfc_rscn_recovery_check routine is invoked to send a recovery event for all nodes that match the RSCN payload. recovery girl era πŸ”₯
  • Otherwise, the lpfc_els_handle_rscn routine is invoked to handle the RSCN event. main character energy right there πŸ‘‘

and the return codes, because we love a dramatic ending:

  • Return code 0 β€” Just sent the acc response
  • Return code 1 β€” Sent the acc response and waited for name server completion
bestie take note: it's literally 0 or 1, no in-between, no extra lore. πŸŽ€

πŸ”₯ SEE ALSO πŸ”₯

okay this part is a moment. the kernel file is ./drivers/scsi/lpfc/lpfc_els.c and the guest list is genuinely enormous β€” she knows everybody, iykyk. here's the full squad, no cap, nobody left out:

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

and that's the whole page bestie, you understood it, I'm so proud of you πŸ₯ΉπŸ’œ

🌈 cute lil sign-off: this one lives in ./drivers/scsi/lpfc, dated October 2026, and it's filed under lpfc_els_rcv_rscn(9) in the Kernel API Manual. periodt. πŸ’…βœ¨
πŸ“¦ where this page comes from