lpfc_update_cmf_cmpl(9)
π lpfc_update_cmf_cmpl β the Kernel API Manual tea β
okay so bestie, gather round, because we're reading a kernel API page together and honestly? it's giving main character energy. this is lpfc_update_cmf_cmpl, straight out of the Kernel API Manual, and it's lowkey iconic. let's get into it β¨
πΈ NAME πΈ
lpfc_update_cmf_cmpl β adjusts the CMF counters when an IO completes. that's it, that's the vibe π
π¦ SYNOPSIS π¦
int lpfc_update_cmf_cmpl (struct lpfc_hba *phba , uint64_t time ,
uint32_t size , struct Scsi_Host *shost );
like, copy it exactly, no cap. four args, one return, we move π
π ARGUMENTS π
phbaβ the HBA this call is running for. it's her HBA, she's the moment.timeβ how long the IO took to complete, measured in ns (nanoseconds, yes, we're being that precise π«Ά).sizeβ the size of the IO that just completed.shostβ the SCSI host the IO completed on. it'sNULLfor a NVME IO, so if you're passingNULLbestie, that's not a bug, that's a NVME IO. π
π DESCRIPTION π
so what does this routine actually do? it adjusts the various Burst and Bandwidth counters β the ones used in Congestion management and E2E. that's the whole job, and she does it slayfully.
now here's the plot twist π: if time is set to LPFC_CGN_NOT_SENT, that means the IO was never issued to the HBA. so this routine isn't doing the normal counter thing β it's just being called to clean up the counter from a previous lpfc_update_cmf_cmd call. it's giving cleanup crew energy, and honestly? we respect it. π§Ήβ¨
β SEE ALSO β
the kernel file, first and foremost:
- Kernel file
./drivers/scsi/lpfc/lpfc_scsi.c
and then, bestie, the entire friend group π β every single one of these, no skipping, iykyk:
lpfc_sli4_set_rsp_sgl_last(9)lpfc_rampdown_queue_depth(9)lpfc_ramp_down_queue_handler(9)lpfc_scsi_dev_block(9)lpfc_new_scsi_buf_s3(9)lpfc_sli4_vport_delete_fcp_xri_aborted(9)lpfc_sli4_io_xri_aborted(9)lpfc_get_scsi_buf_s3(9)lpfc_get_scsi_buf_s4(9)lpfc_get_scsi_buf(9)lpfc_release_scsi_buf_s3(9)lpfc_release_scsi_buf_s4(9)lpfc_release_scsi_buf(9)lpfc_fcpcmd_to_iocb(9)lpfc_scsi_prep_dma_buf_s3(9)lpfc_bg_err_inject(9)lpfc_sc_to_bg_opcodes(9)lpfc_bg_err_opcodes(9)lpfc_bg_setup_bpl(9)lpfc_bg_setup_bpl_prot(9)lpfc_bg_setup_sgl(9)lpfc_bg_setup_sgl_prot(9)lpfc_prot_group_type(9)lpfc_bg_scsi_adjust_dl(9)lpfc_bg_scsi_prep_dma_buf_s3(9)lpfc_scsi_prep_dma_buf_s4(9)lpfc_bg_scsi_prep_dma_buf_s4(9)lpfc_scsi_prep_dma_buf(9)lpfc_bg_scsi_prep_dma_buf(9)lpfc_scsi_prep_cmnd_buf(9)lpfc_send_scsi_error_event(9)lpfc_scsi_unprep_dma_buf(9)lpfc_unblock_requests(9)lpfc_block_requests(9)lpfc_update_cmf_cmd(9)lpfc_handle_fcp_err(9)lpfc_fcp_io_cmd_wqe_cmpl(9)lpfc_scsi_cmd_iocb_cmpl(9)lpfc_scsi_prep_cmnd_buf_s3(9)lpfc_scsi_prep_cmnd_buf_s4(9)lpfc_scsi_prep_cmnd(9)lpfc_scsi_prep_task_mgmt_cmd_s3(9)lpfc_scsi_prep_task_mgmt_cmd_s4(9)lpfc_scsi_api_table_setup(9)lpfc_tskmgmt_def_cmpl(9)lpfc_check_pci_resettable(9)lpfc_info(9)lpfc_poll_rearm_timer(9)lpfc_poll_start_timer(9)lpfc_poll_timeout(9)lpfc_queuecommand(9)lpfc_abort_handler(9)lpfc_check_fcp_rsp(9)lpfc_send_taskmgmt(9)lpfc_chk_tgt_mapped(9)lpfc_reset_flush_io_context(9)lpfc_device_reset_handler(9)lpfc_target_reset_handler(9)lpfc_host_reset_handler(9)lpfc_sdev_init(9)lpfc_sdev_configure(9)lpfc_sdev_destroy(9)lpfc_create_device_data(9)lpfc_delete_device_data(9)__lpfc_get_device_data(9)lpfc_find_next_oas_lun(9)lpfc_enable_oas_lun(9)lpfc_disable_oas_lun(9)
ngl bestie, that's a lot of cross-references, but every single one is real and every single one is in the original. we do not drop friends around here. π«Ά
π the cute sign-off π
this little masterpiece lives in ./drivers/scsi/lpfc, and it was dated October 2026. so yeah, she's from the future, she's in your kernel tree, and she's adjusting CMF counters like the icon she is. periodt. ππ₯πΈ
bye bestie, go complete some IOs π¦β¨
π¦ 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