lpfc_link_reset(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

ok so before we even start: this is page lpfc_link_reset(9) out of the Kernel API Manual, section 9, bestie. kernel-section-nine. that's the "functions you call inside the kernel" section, not the "type this in your shell" section. iykyk 🧚


✨ NAME ✨

lpfc_link_reset β€” Issue link reset πŸŽ€

no seriously that's the whole name. it resets the link. that's the vibe.


✨ SYNOPSIS ✨

int lpfc_link_reset (struct lpfc_vport *vport );

one function, one argument, returns an int. clean. minimal. she ate. πŸ‘‘


✨ ARGUMENTS ✨

  • vport β€” pointer to a virtual N_Port data structure. that's your vport bestie 🫢 it's the virtual port you're about to make do a whole link reset. treat her with respect.

✨ DESCRIPTION ✨

okay so here's the tea β˜• β€” this routine performs a link reset by sending an INIT_LINK mailbox command. literally that's the move. you call it, it fires off INIT_LINK to the hardware, and the link gets reset. slay. πŸ’…

and then there's the SLI-3 adapter special case, because of course there's a special case: for SLI-3 adapter, the link attention interrupt is enabled before issuing the INIT_LINK mailbox command. so order matters here β€” interrupt goes on, then the mailbox command goes out. don't flip that. πŸ”₯

Return code, and this is important so read it twice:

  • 0 β€” Link reset initiated successfully βœ…
  • 1 β€” Failed to initiate link reset 😭

yes, 0 means good and 1 means bad. classic. not me getting that backwards at 3am one time πŸ™ˆ

ngl the return values are the whole story here β€” 0 is "we started it", 1 is "we did not start it". it says "initiated", not "finished". don't @ me, that's what the page says. ⭐

✨ SEE ALSO ✨

the kernel file is ./drivers/scsi/lpfc/lpfc_els.c, and okay bestie brace yourself because this friend group is huge β€” like the entire ELS directory showed up to the party 🌈:

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

like… 110-ish functions. no cap. main character energy is shared across the entire file and honestly good for them πŸ’–


ok that's the whole page bestie πŸ¦‹ fr fr. this one came from ./drivers/scsi/lpfc, dated October 2026 β€” yup, october twenty twenty-six, she's from the future, and she said hi. go reset that link. πŸ’œβœ¨

πŸ“¦ where this page comes from