lpfc_sli3_bs...oopback_mode(9)
π lpfc_sli3_bsg_diag_loopback_mode(9) β the Kernel API Manual, but make it make sense β¨
okay so first things first, bestie: this is a page from the Kernel API Manual, and the star of the show is lpfc_sli3_bsg_diag_loopback_mode. yeah the header clips it to lpfc_sli3_bs...oopback_mode(9) because even the manpage system ran out of screen, but we know her full name π
β¨ NAME β¨
lpfc_sli3_bsg_diag_loopback_mode β literally just processes an sli3 bsg vendor command. that's the whole job description. she's a specialist π
π¦ SYNOPSIS π¦
int lpfc_sli3_bsg_diag_loopback_mode (struct lpfc_hba *phba , struct
bsg_job *job );
πΈ ARGUMENTS πΈ
phbaβ a pointer to the HBA context object. the whole personality of the adapter lives in here π«ΆjobβLPFC_BSG_VENDOR_DIAG_MODE. that's the value, no cap.
π DESCRIPTION π
ok so here's the vibe. this function is responsible for placing an sli3 port into diagnostic loopback mode so a diagnostic loopback test can actually happen. it's giving backstage crew energy β nobody sees her, but the show does not go on without her π
the sequence is, in order:
- all new scsi requests are blocked. door's closed, sorry besties π
- a small delay β literally just giving the in-flight scsi requests a sec to wrap up so nobody gets ghosted mid-request β
- the link is brought down. dramatic but necessary π
- if the link is placed in loopback mode, then scsi requests are again allowed β this is the thoughtful part, fr fr, so the scsi mid-layer doesn't give up on the port π
and the kicker: all of this is done in-line. no handing it off, no queueing, she's doing it right there, main character energy π₯
π§ SEE ALSO π§
the kernel file lives at ./drivers/scsi/lpfc/lpfc_bsg.c β that's the source of truth, iykyk π
and here's the whole group chat, everyone she's adjacent to:
lpfc_bsg_send_mgmt_cmd_cmp(9)lpfc_bsg_send_mgmt_cmd(9)lpfc_bsg_rport_els_cmp(9)lpfc_bsg_rport_els(9)lpfc_bsg_event_free(9)lpfc_bsg_event_ref(9)lpfc_bsg_event_unref(9)lpfc_bsg_event_new(9)diag_cmd_data_free(9)lpfc_bsg_ct_unsol_abort(9)lpfc_bsg_hba_set_event(9)lpfc_bsg_hba_get_event(9)lpfc_issue_ct_rsp_cmp(9)lpfc_issue_ct_rsp(9)lpfc_bsg_send_mgmt_rsp(9)lpfc_bsg_diag_mode_enter(9)lpfc_bsg_diag_mode_exit(9)lpfc_sli4_bsg_set_link_diag_state(9)lpfc_sli4_bsg_set_loopback_mode(9)lpfc_sli4_diag_fcport_reg_setup(9)lpfc_sli4_bsg_diag_loopback_mode(9)lpfc_bsg_diag_loopback_mode(9)lpfc_sli4_bsg_diag_mode_end(9)lpfc_sli4_bsg_link_diag_test(9)lpfcdiag_loop_self_reg(9)lpfcdiag_loop_self_unreg(9)lpfcdiag_loop_get_xri(9)lpfc_bsg_dma_page_alloc(9)lpfc_bsg_dma_page_free(9)lpfc_bsg_dma_page_list_free(9)diag_cmd_data_alloc(9)lpfcdiag_sli3_loop_post_rxbufs(9)lpfc_bsg_diag_loopback_run(9)lpfc_bsg_get_dfc_rev(9)lpfc_bsg_issue_mbox_cmpl(9)lpfc_bsg_check_cmd_access(9)lpfc_bsg_mbox_ext_session_reset(9)lpfc_rd_obj_emb0_handle_job(9)lpfc_bsg_issue_mbox_ext_handle_job(9)lpfc_bsg_issue_read_mbox_ext_cmpl(9)lpfc_bsg_issue_write_mbox_ext_cmpl(9)lpfc_bsg_sli_cfg_read_cmd_ext(9)lpfc_bsg_sli_cfg_write_cmd_ext(9)lpfc_bsg_handle_sli_cfg_mbox(9)lpfc_bsg_mbox_ext_abort(9)lpfc_bsg_read_ebuf_get(9)lpfc_bsg_write_ebuf_set(9)lpfc_bsg_handle_sli_cfg_ebuf(9)lpfc_bsg_handle_sli_cfg_ext(9)lpfc_bsg_issue_mbox(9)lpfc_bsg_mbox_cmd(9)lpfc_check_fwlog_support(9)lpfc_bsg_get_ras_config(9)lpfc_bsg_set_ras_config(9)lpfc_bsg_get_ras_lwpd(9)lpfc_bsg_get_ras_fwlog(9)lpfc_bsg_hst_vendor(9)lpfc_bsg_request(9)lpfc_bsg_timeout(9)
lowkey? read the ones aboutlpfc_bsg_diag_mode_enter(9)andlpfc_bsg_diag_mode_exit(9)next, they're literally the setup and cleanup for this whole bit π«Ά
πΈ okay that's the page!! tiny sign-off before you go: this one ships from ./drivers/scsi/lpfc, dated October 2026, and it's filed under lpfc_sli3_bs...oopback_mode(9) in case you need to find her again. slay, go run some diagnostics bestie πβ¨ππ¦
π¦ 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