lpfc_sli_process_sol_iocb(9)
π lpfc_sli_process_sol_iocb β Kernel API Manual, section 9
okay bestie, welcome to the Kernel API Manual β¨ this one is section 9, and it's all about one little function in the lpfc driver that cleans up after your solicited iocbs. yes. iocbs. the way that kernel networking just has its own whole vocabulary π but we're gonna get through it together, i promise π«Ά
πΈ NAME πΈ
lpfc_sli_process_sol_iocb β process solicited iocb completion π
like, the function that handles it when your solicited iocb is done and needs to be dealt with. periodt.
β¨ SYNOPSIS β¨
int lpfc_sli_process_sol_iocb (struct lpfc_hba *phba , struct
lpfc_sli_ring *pring , struct lpfc_iocbq *saveq );
that's the whole signature, no cap β returns an int, takes three pointers. iconic honestly π
π ARGUMENTS π
phbaβ Pointer to HBA context object. this is your main-character struct, the Host Bus Adapter's whole vibe and context lives here πpringβ Pointer to driver SLI ring object. the ring, bestie. the circle of iocb life πsaveqβ Pointer to the response iocb to be processed. the one we're actually here for, the guest of honor π
π¦ DESCRIPTION π¦
okay so here's the tea β β this function gets called by the ring event handler for non-fcp rings when there's a new response iocb chilling in the response ring. and the caller? not required to hold any locks. none. zero. not even one. go off, caller π
what it does: it gets the command iocb that's associated with the response iocb, and then it calls the completion handler for that command iocb. like a little hand-off. π«Ά
and if there's no completion handler? no problem, it just frees the resources associated with the command iocb itself. self-sufficient. independent. main character energy π
now the spicy bit πΆοΈ β if the response iocb is for a command iocb that's already aborted, it changes the status of the completion to IOSTAT_LOCAL_REJECT/IOERR_SLI_ABORTED. so the abort doesn't just vanish into the void, it gets acknowledged. we love closure π
and the ending? this function always returns 1. always. no matter what. no notes. π₯
π SEE ALSO π
the whole squad, fr fr β these all live in the kernel file ./drivers/scsi/lpfc/lpfc_sli.c:
lpfc_sli4_pcimem_bcopy,lpfc_sli4_wq_put,lpfc_sli4_wq_release,lpfc_sli4_mq_put,lpfc_sli4_mq_releaselpfc_sli4_eq_get,lpfc_sli4_eq_clr_intr,lpfc_sli4_if6_eq_clr_intr,lpfc_sli4_write_eq_db,lpfc_sli4_if6_write_eq_dblpfc_sli4_cq_get,lpfc_sli4_write_cq_db,lpfc_sli4_if6_write_cq_db,lpfc_cmd_iocb,lpfc_resp_iocb__lpfc_sli_get_iocbq,__lpfc_clear_active_sglq,__lpfc_get_active_sglq,lpfc_clr_rrq_active,lpfc_handle_rrq_activelpfc_get_active_rrq,lpfc_cleanup_vports_rrqs,lpfc_test_rrq_active,lpfc_set_rrq_active,__lpfc_sli_get_els_sglq__lpfc_sli_get_nvmet_sglq,lpfc_sli_get_iocbq,__lpfc_sli_release_iocbq_s4,__lpfc_sli_release_iocbq_s3,__lpfc_sli_release_iocbqlpfc_sli_release_iocbq,lpfc_sli_cancel_iocbs,lpfc_sli_iocb_cmd_type,lpfc_sli_ring_map,lpfc_sli_ringtxcmpl_putlpfc_sli_ringtx_get,lpfc_cmf_sync_cmpl,lpfc_issue_cmf_sync_wqe,lpfc_sli_next_iocb_slot,lpfc_sli_next_iotaglpfc_sli_submit_iocb,lpfc_sli_update_full_ring,lpfc_sli_update_ring,lpfc_sli_resume_iocb,lpfc_sli_next_hbq_slotlpfc_sli_hbqbuf_free_all,lpfc_sli_hbq_to_firmware,lpfc_sli_hbq_to_firmware_s3,lpfc_sli_hbq_to_firmware_s4,lpfc_sli_hbqbuf_fill_hbqslpfc_sli_hbqbuf_add_hbqs,lpfc_sli_hbqbuf_init_hbqs,lpfc_sli_rqbuf_get,lpfc_sli_hbqbuf_find,lpfc_sli_free_hbqlpfc_sli_chk_mbx_command,lpfc_sli_wake_mbox_wait,lpfc_sli_def_mbox_cmpl,lpfc_sli_handle_mb_event,lpfc_sli_get_bufflpfc_nvme_unsol_ls_handler,lpfc_complete_unsol_iocb,lpfc_sli_process_unsol_iocb,lpfc_sli_iocbq_lookup,lpfc_sli_iocbq_lookup_by_taglpfc_sli_rsp_pointers_error,lpfc_poll_eratt,lpfc_sli_handle_fast_ring_event,lpfc_sli_sp_handle_rspiocb,lpfc_sli_handle_slow_ring_eventlpfc_sli_handle_slow_ring_event_s3,lpfc_sli_handle_slow_ring_event_s4,lpfc_sli_abort_iocb_ring,lpfc_sli_abort_fcp_rings,lpfc_sli_flush_io_ringslpfc_sli_brdready_s3,lpfc_sli_brdready_s4,lpfc_sli_brdready,lpfc_reset_barrier,lpfc_sli_brdkilllpfc_sli_brdreset,lpfc_sli4_brdreset,lpfc_sli_brdrestart_s3,lpfc_sli_brdrestart_s4,lpfc_sli_brdrestartlpfc_sli_chipset_init,lpfc_sli_hbq_count,lpfc_sli_hbq_entry_count,lpfc_sli_hbq_size,lpfc_sli_hbq_setuplpfc_sli4_rb_setup,lpfc_sli_config_port,lpfc_sli_hba_setup,lpfc_sli4_read_fcoe_params,lpfc_sli4_read_revlpfc_sli4_get_ctl_attr,lpfc_sli4_retrieve_pport_name,lpfc_sli4_arm_cqeq_intr,lpfc_sli4_get_avail_extnt_rsrc,lpfc_sli4_chk_avail_extnt_rsrclpfc_sli4_cfg_post_extnts,lpfc_sli4_alloc_extent,lpfc_sli4_dealloc_extent,lpfc_ras_stop_fwlog,lpfc_sli4_ras_dma_freelpfc_sli4_ras_dma_alloc,lpfc_sli4_ras_mbox_cmpl,lpfc_sli4_ras_fwlog_init,lpfc_sli4_ras_setup,lpfc_sli4_alloc_resource_identifierslpfc_sli4_dealloc_resource_identifiers,lpfc_sli4_get_allocated_extnts,lpfc_sli4_repost_sgl_list,lpfc_sli4_repost_io_sgl_list,lpfc_init_idle_stat_hblpfc_rx_monitor_create_ring,lpfc_rx_monitor_destroy_ring,lpfc_rx_monitor_record,lpfc_rx_monitor_report,lpfc_cmf_setuplpfc_get_platform_uuid,lpfc_sli4_hba_setup,lpfc_mbox_timeout,lpfc_sli4_mbox_completions_pending,lpfc_sli4_process_missed_mbox_completionslpfc_mbox_timeout_handler,lpfc_sli_issue_mbox_s3,lpfc_sli4_async_mbox_block,lpfc_sli4_async_mbox_unblock,lpfc_sli4_wait_bmbx_readylpfc_sli4_post_sync_mbox,lpfc_sli_issue_mbox_s4,lpfc_sli4_post_async_mbox,lpfc_sli_issue_mbox,lpfc_mbox_api_table_setup__lpfc_sli_ringtx_put,lpfc_sli_next_iocb,__lpfc_sli_issue_iocb_s3,__lpfc_sli_issue_fcp_io_s3,__lpfc_sli_issue_fcp_io_s4__lpfc_sli_issue_iocb_s4,lpfc_sli_api_table_setup,lpfc_sli4_calc_ring,lpfc_sli_issue_iocb,lpfc_extra_ring_setuplpfc_sli_async_event_handler,lpfc_sli4_setup,lpfc_sli_setup,lpfc_sli4_queue_init,lpfc_sli_queue_initlpfc_sli_mbox_sys_flush,lpfc_sli_host_down,lpfc_sli_hba_down,lpfc_sli_pcimem_bcopy,lpfc_sli_bemem_bcopylpfc_sli_ringpostbuf_put,lpfc_sli_get_buffer_tag,lpfc_sli_ring_taggedbuf_get,lpfc_sli_ringpostbuf_get,lpfc_sli_abort_els_cmpllpfc_ignore_els_cmpl,lpfc_sli_issue_abort_iotag,lpfc_sli_hba_iocb_abort,lpfc_sli_validate_fcp_iocb_for_abort,lpfc_sli_validate_fcp_iocblpfc_sli_sum_iocb,lpfc_sli_abort_fcp_cmpl,lpfc_sli_abort_iocb,lpfc_sli_abort_taskmgmt,lpfc_sli_wake_iocb_waitlpfc_chk_iocb_flg,lpfc_sli_issue_iocb_wait,lpfc_sli_issue_mbox_wait,lpfc_sli_mbox_sys_shutdown,lpfc_sli_eratt_readlpfc_sli4_eratt_read,lpfc_sli_check_eratt,lpfc_intr_state_check,lpfc_sli_sp_intr_handler,lpfc_sli_fp_intr_handlerlpfc_sli_intr_handler,lpfc_sli4_els_xri_abort_event_proc,lpfc_sli4_els_preprocess_rspiocbq,lpfc_sli4_sp_handle_async_event,lpfc_sli4_sp_handle_mbox_eventlpfc_sli4_sp_handle_mcqe,lpfc_sli4_sp_handle_els_wcqe,lpfc_sli4_sp_handle_rel_wcqe,lpfc_sli4_sp_handle_abort_xri_wcqe,lpfc_sli4_sp_handle_rcqelpfc_sli4_sp_handle_cqe,lpfc_sli4_sp_handle_eqe,__lpfc_sli4_process_cq,__lpfc_sli4_sp_process_cq,lpfc_sli4_sp_process_cqlpfc_sli4_dly_sp_process_cq,lpfc_sli4_fp_handle_fcp_wcqe,lpfc_sli4_fp_handle_rel_wcqe,lpfc_sli4_nvmet_handle_rcqe,lpfc_sli4_fp_handle_cqe__lpfc_sli4_hba_process_cq,lpfc_sli4_hba_process_cq,lpfc_sli4_hba_handle_eqe,lpfc_sli4_dly_hba_process_cq,lpfc_sli4_hba_intr_handlerlpfc_sli4_intr_handler,lpfc_sli4_queue_free,lpfc_sli4_queue_alloc,lpfc_dual_chute_pci_bar_map,lpfc_modify_hba_eq_delaylpfc_eq_create,lpfc_sli4_hba_intr_handler_th,lpfc_cq_create,lpfc_cq_create_set,lpfc_mq_create_fb_initlpfc_mq_create,lpfc_wq_create,lpfc_rq_create,lpfc_mrq_create,lpfc_eq_destroylpfc_cq_destroy,lpfc_mq_destroy,lpfc_wq_destroy,lpfc_rq_destroy,lpfc_sli4_post_sgllpfc_sli4_alloc_xri,__lpfc_sli4_free_xri,lpfc_sli4_free_xri,lpfc_sli4_next_xritag,lpfc_sli4_post_sgl_listlpfc_sli4_post_io_sgl_block,lpfc_sli4_post_io_sgl_list,lpfc_fc_frame_check,lpfc_fc_hdr_get_vfi,lpfc_fc_frame_to_vportlpfc_update_rcv_time_stamp,lpfc_cleanup_rcv_buffers,lpfc_rcv_seq_check_edtov,lpfc_fc_frame_add,lpfc_sli4_abort_partial_seqlpfc_sli4_abort_ulp_seq,lpfc_sli4_seq_abort_rsp_cmpl,lpfc_sli4_xri_inrange,lpfc_sli4_seq_abort_rsp,lpfc_sli4_handle_unsol_abortlpfc_seq_complete,lpfc_prep_seq,lpfc_sli4_handle_received_buffer,lpfc_sli4_post_all_rpi_hdrs,lpfc_sli4_post_rpi_hdrlpfc_sli4_alloc_rpi,__lpfc_sli4_free_rpi,lpfc_sli4_free_rpi,lpfc_sli4_remove_rpis,lpfc_sli4_resume_rpilpfc_sli4_init_vpi,lpfc_mbx_cmpl_add_fcf_record,lpfc_sli4_add_fcf_record,lpfc_sli4_build_dflt_fcf_record,lpfc_sli4_fcf_scan_read_fcf_reclpfc_sli4_fcf_rr_read_fcf_rec,lpfc_sli4_read_fcf_rec,lpfc_check_next_fcf_pri_level,lpfc_sli4_fcf_rr_next_index_get,lpfc_sli4_fcf_rr_index_setlpfc_sli4_fcf_rr_index_clear,lpfc_mbx_cmpl_redisc_fcf_table,lpfc_sli4_redisc_fcf_table,lpfc_sli4_fcf_dead_failthrough,lpfc_sli_get_config_region23lpfc_sli4_get_config_region23,lpfc_sli_read_link_ste,lpfc_log_fw_write_cmpl,lpfc_wr_object,lpfc_cleanup_pending_mboxlpfc_drain_txq,lpfc_wqe_bpl2sgl,lpfc_sli4_issue_wqe,lpfc_sli4_issue_abort_iotag,lpfc_snapshot_mxplpfc_adjust_pvt_pool_count,lpfc_adjust_high_watermark,lpfc_move_xri_pvt_to_pbl,_lpfc_move_xri_pbl_to_pvt,lpfc_move_xri_pbl_to_pvtlpfc_keep_pvt_pool_above_lowwm,lpfc_release_io_buf,lpfc_get_io_buf_from_private_pool,lpfc_get_io_buf_from_expedite_pool,lpfc_get_io_buf_from_multixri_poolslpfc_get_io_buf,lpfc_read_object,lpfc_get_sgl_per_hdwq,lpfc_put_sgl_per_hdwq,lpfc_free_sgl_per_hdwqlpfc_get_cmd_rsp_buf_per_hdwq,lpfc_put_cmd_rsp_buf_per_hdwq,lpfc_free_cmd_rsp_buf_per_hdwq,lpfc_sli_prep_wqe
that's the whole friend group, iykyk πΈ
heads up bestie π«Ά β every single one of those names is exactly as it appears in the manual. don't go typing them with β¨vibesβ¨ instead of underscores, because the kernel does NOT forgive typos π
and that's a wrap, queen π this page came straight out of ./drivers/scsi/lpfc, dated October 2026, and it's lpfc_sli_process_sol_iocb(9) all the way down. go process those solicited iocbs, 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