lpfc_els_rcv_rscn(9)
π 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 tolpfccommand 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_listof thisvportis walked and thelpfc_rscn_recovery_checkroutine is invoked to send a recovery event for all nodes that match the RSCN payload. recovery girl era π₯ - Otherwise, the
lpfc_els_handle_rscnroutine 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 literally0or1, 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 underlpfc_els_rcv_rscn(9)in the Kernel API Manual. periodt. π β¨
π¦ 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