lpfc_bsg_rport_els_cmp(9)
π lpfc_bsg_rport_els_cmp β okay bestie, let me tell you about this completion handler π
So this is a kernel API manual page for lpfc_bsg_rport_els_cmp(9) β yes, the (9) means it's a kernel function, we're in the big leagues now β¨
β¨ NAME β¨
lpfc_bsg_rport_els_cmp β literally the completion handler for lpfc_bsg_rport_els, no cap π
π¦ SYNOPSIS π¦
void lpfc_bsg_rport_els_cmp (struct lpfc_hba *phba , struct lpfc_iocbq
*cmdiocbq , struct lpfc_iocbq *rspiocbq );
That's the whole signature, periodt π
πΈ ARGUMENTS πΈ
phbaβ Pointer to the HBA context object. Like, the main character of the whole storage situation, iykyk πcmdiocbqβ Pointer to the command iocb. This is the "what we asked for" vibe πrspiocbqβ Pointer to the response iocb. And this is the "what we got back" vibe π
π₯ DESCRIPTION π₯
Okay so here's the tea β β this function is the completion handler for iocbs issued using the lpfc_bsg_rport_els_cmp function. It literally gets called by the ring event handler function with no lock held, ngl that's important.
It can be called from both worker thread context and interrupt context β versatile icon behavior β¨ It also can be called from other threads that clean up the SLI layer objects. Multi-context queen, we love to see it π
And here's what it actually does: this function copies the contents of the response iocb to the response iocb memory object provided by the caller of lpfc_sli_issue_iocb_wait, and then wakes up the thread which sleeps for the iocb completion. So it's literally the "hey bestie, your data arrived, wake up" moment π«Άπ
π SEE ALSO π
Kernel file ./drivers/scsi/lpfc/lpfc_bsg.c β that's the home base, bestie π
And the whole friend group of related functions, no cap:
lpfc_bsg_send_mgmt_cmd_cmp(9), lpfc_bsg_send_mgmt_cmd(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_sli3_bsg_diag_loopback_mode(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)
That's literally the whole function family tree, slay π
π and that's the whole page, bestie β stay iconic out there in the kernel π
ftr this is from ./drivers/scsi/lpfc, dated October 2026 β yes, the future is now, 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