lpfc_sli_process_sol_iocb(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… 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_release
  • lpfc_sli4_eq_get, lpfc_sli4_eq_clr_intr, lpfc_sli4_if6_eq_clr_intr, lpfc_sli4_write_eq_db, lpfc_sli4_if6_write_eq_db
  • lpfc_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_active
  • lpfc_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_iocbq
  • lpfc_sli_release_iocbq, lpfc_sli_cancel_iocbs, lpfc_sli_iocb_cmd_type, lpfc_sli_ring_map, lpfc_sli_ringtxcmpl_put
  • lpfc_sli_ringtx_get, lpfc_cmf_sync_cmpl, lpfc_issue_cmf_sync_wqe, lpfc_sli_next_iocb_slot, lpfc_sli_next_iotag
  • lpfc_sli_submit_iocb, lpfc_sli_update_full_ring, lpfc_sli_update_ring, lpfc_sli_resume_iocb, lpfc_sli_next_hbq_slot
  • lpfc_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_hbqs
  • lpfc_sli_hbqbuf_add_hbqs, lpfc_sli_hbqbuf_init_hbqs, lpfc_sli_rqbuf_get, lpfc_sli_hbqbuf_find, lpfc_sli_free_hbq
  • lpfc_sli_chk_mbx_command, lpfc_sli_wake_mbox_wait, lpfc_sli_def_mbox_cmpl, lpfc_sli_handle_mb_event, lpfc_sli_get_buff
  • lpfc_nvme_unsol_ls_handler, lpfc_complete_unsol_iocb, lpfc_sli_process_unsol_iocb, lpfc_sli_iocbq_lookup, lpfc_sli_iocbq_lookup_by_tag
  • lpfc_sli_rsp_pointers_error, lpfc_poll_eratt, lpfc_sli_handle_fast_ring_event, lpfc_sli_sp_handle_rspiocb, lpfc_sli_handle_slow_ring_event
  • lpfc_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_rings
  • lpfc_sli_brdready_s3, lpfc_sli_brdready_s4, lpfc_sli_brdready, lpfc_reset_barrier, lpfc_sli_brdkill
  • lpfc_sli_brdreset, lpfc_sli4_brdreset, lpfc_sli_brdrestart_s3, lpfc_sli_brdrestart_s4, lpfc_sli_brdrestart
  • lpfc_sli_chipset_init, lpfc_sli_hbq_count, lpfc_sli_hbq_entry_count, lpfc_sli_hbq_size, lpfc_sli_hbq_setup
  • lpfc_sli4_rb_setup, lpfc_sli_config_port, lpfc_sli_hba_setup, lpfc_sli4_read_fcoe_params, lpfc_sli4_read_rev
  • lpfc_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_rsrc
  • lpfc_sli4_cfg_post_extnts, lpfc_sli4_alloc_extent, lpfc_sli4_dealloc_extent, lpfc_ras_stop_fwlog, lpfc_sli4_ras_dma_free
  • lpfc_sli4_ras_dma_alloc, lpfc_sli4_ras_mbox_cmpl, lpfc_sli4_ras_fwlog_init, lpfc_sli4_ras_setup, lpfc_sli4_alloc_resource_identifiers
  • lpfc_sli4_dealloc_resource_identifiers, lpfc_sli4_get_allocated_extnts, lpfc_sli4_repost_sgl_list, lpfc_sli4_repost_io_sgl_list, lpfc_init_idle_stat_hb
  • lpfc_rx_monitor_create_ring, lpfc_rx_monitor_destroy_ring, lpfc_rx_monitor_record, lpfc_rx_monitor_report, lpfc_cmf_setup
  • lpfc_get_platform_uuid, lpfc_sli4_hba_setup, lpfc_mbox_timeout, lpfc_sli4_mbox_completions_pending, lpfc_sli4_process_missed_mbox_completions
  • lpfc_mbox_timeout_handler, lpfc_sli_issue_mbox_s3, lpfc_sli4_async_mbox_block, lpfc_sli4_async_mbox_unblock, lpfc_sli4_wait_bmbx_ready
  • lpfc_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_setup
  • lpfc_sli_async_event_handler, lpfc_sli4_setup, lpfc_sli_setup, lpfc_sli4_queue_init, lpfc_sli_queue_init
  • lpfc_sli_mbox_sys_flush, lpfc_sli_host_down, lpfc_sli_hba_down, lpfc_sli_pcimem_bcopy, lpfc_sli_bemem_bcopy
  • lpfc_sli_ringpostbuf_put, lpfc_sli_get_buffer_tag, lpfc_sli_ring_taggedbuf_get, lpfc_sli_ringpostbuf_get, lpfc_sli_abort_els_cmpl
  • lpfc_ignore_els_cmpl, lpfc_sli_issue_abort_iotag, lpfc_sli_hba_iocb_abort, lpfc_sli_validate_fcp_iocb_for_abort, lpfc_sli_validate_fcp_iocb
  • lpfc_sli_sum_iocb, lpfc_sli_abort_fcp_cmpl, lpfc_sli_abort_iocb, lpfc_sli_abort_taskmgmt, lpfc_sli_wake_iocb_wait
  • lpfc_chk_iocb_flg, lpfc_sli_issue_iocb_wait, lpfc_sli_issue_mbox_wait, lpfc_sli_mbox_sys_shutdown, lpfc_sli_eratt_read
  • lpfc_sli4_eratt_read, lpfc_sli_check_eratt, lpfc_intr_state_check, lpfc_sli_sp_intr_handler, lpfc_sli_fp_intr_handler
  • lpfc_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_event
  • lpfc_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_rcqe
  • lpfc_sli4_sp_handle_cqe, lpfc_sli4_sp_handle_eqe, __lpfc_sli4_process_cq, __lpfc_sli4_sp_process_cq, lpfc_sli4_sp_process_cq
  • lpfc_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_handler
  • lpfc_sli4_intr_handler, lpfc_sli4_queue_free, lpfc_sli4_queue_alloc, lpfc_dual_chute_pci_bar_map, lpfc_modify_hba_eq_delay
  • lpfc_eq_create, lpfc_sli4_hba_intr_handler_th, lpfc_cq_create, lpfc_cq_create_set, lpfc_mq_create_fb_init
  • lpfc_mq_create, lpfc_wq_create, lpfc_rq_create, lpfc_mrq_create, lpfc_eq_destroy
  • lpfc_cq_destroy, lpfc_mq_destroy, lpfc_wq_destroy, lpfc_rq_destroy, lpfc_sli4_post_sgl
  • lpfc_sli4_alloc_xri, __lpfc_sli4_free_xri, lpfc_sli4_free_xri, lpfc_sli4_next_xritag, lpfc_sli4_post_sgl_list
  • lpfc_sli4_post_io_sgl_block, lpfc_sli4_post_io_sgl_list, lpfc_fc_frame_check, lpfc_fc_hdr_get_vfi, lpfc_fc_frame_to_vport
  • lpfc_update_rcv_time_stamp, lpfc_cleanup_rcv_buffers, lpfc_rcv_seq_check_edtov, lpfc_fc_frame_add, lpfc_sli4_abort_partial_seq
  • lpfc_sli4_abort_ulp_seq, lpfc_sli4_seq_abort_rsp_cmpl, lpfc_sli4_xri_inrange, lpfc_sli4_seq_abort_rsp, lpfc_sli4_handle_unsol_abort
  • lpfc_seq_complete, lpfc_prep_seq, lpfc_sli4_handle_received_buffer, lpfc_sli4_post_all_rpi_hdrs, lpfc_sli4_post_rpi_hdr
  • lpfc_sli4_alloc_rpi, __lpfc_sli4_free_rpi, lpfc_sli4_free_rpi, lpfc_sli4_remove_rpis, lpfc_sli4_resume_rpi
  • lpfc_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_rec
  • lpfc_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_set
  • lpfc_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_region23
  • lpfc_sli4_get_config_region23, lpfc_sli_read_link_ste, lpfc_log_fw_write_cmpl, lpfc_wr_object, lpfc_cleanup_pending_mbox
  • lpfc_drain_txq, lpfc_wqe_bpl2sgl, lpfc_sli4_issue_wqe, lpfc_sli4_issue_abort_iotag, lpfc_snapshot_mxp
  • lpfc_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_pvt
  • lpfc_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_pools
  • lpfc_get_io_buf, lpfc_read_object, lpfc_get_sgl_per_hdwq, lpfc_put_sgl_per_hdwq, lpfc_free_sgl_per_hdwq
  • lpfc_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