lpfc_sli_process_unsol_iocb(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

✨ NAME ✨

okay so bestie, welcome to the Kernel API Manual page for lpfc_sli_process_unsol_iocb β€” the Unsolicited iocb handler. It’s giving low-level kernel-core realness, and yes, the title is literally the function name. πŸ’…


πŸ’– SYNOPSIS πŸ’–

int lpfc_sli_process_unsol_iocb (struct lpfc_hba *phba , struct
lpfc_sli_ring *pring , struct lpfc_iocbq *saveq );

πŸŽ€ ARGUMENTS πŸŽ€

  • phba β€” pointer to HBA context object. the HBA’s whole context situation 🫢
  • pring β€” pointer to driver SLI ring object. ring business ✨
  • saveq β€” pointer to the unsolicited iocb. the unsolicited one πŸ‘‘

🌸 DESCRIPTION 🌸

Okay so here’s the teardown: this function is called with no lock held by the ring event handler when there is an unsolicited iocb posted to the response ring by the firmware. That β€œno lock held” part is important, bestie β€” that’s literally the setup. ✨

Then it gets the buffer associated with the iocbs and calls the event handler for the ring. It handles both qring buffers and hbq buffers, so yes, both flavors get love. 🫢

Return-value tea: when the function returns 1, the caller can free the iocb object. Otherwise, upper layer functions will free the iocb objects. That’s the ownership handoff β€” don’t skip it. Periodt. πŸ’…


πŸ¦‹ SEE ALSO πŸ¦‹

the whole squad, literally:

Kernel file ./drivers/scsi/lpfc/lpfc_sli.c lpfc_sli4_pcimem_bcopy(9),
       lpfc_sli4_wq_put(9), lpfc_sli4_wq_release(9), lpfc_sli4_mq_put(9),
       lpfc_sli4_mq_release(9), lpfc_sli4_eq_get(9), lpfc_sli4_eq_clr_intr(9),
       lpfc_sli4_if6_eq_clr_intr(9), lpfc_sli4_write_eq_db(9),
       lpfc_sli4_if6_write_eq_db(9), lpfc_sli4_cq_get(9),
       lpfc_sli4_write_cq_db(9), lpfc_sli4_if6_write_cq_db(9),
       lpfc_cmd_iocb(9), lpfc_resp_iocb(9), __lpfc_sli_get_iocbq(9),
       __lpfc_clear_active_sglq(9), __lpfc_get_active_sglq(9),
       lpfc_clr_rrq_active(9), lpfc_handle_rrq_active(9),
       lpfc_get_active_rrq(9), lpfc_cleanup_vports_rrqs(9),
       lpfc_test_rrq_active(9), lpfc_set_rrq_active(9),
       __lpfc_sli_get_els_sglq(9), __lpfc_sli_get_nvmet_sglq(9),
       lpfc_sli_get_iocbq(9), __lpfc_sli_release_iocbq_s4(9),
       __lpfc_sli_release_iocbq_s3(9), __lpfc_sli_release_iocbq(9),
       lpfc_sli_release_iocbq(9), lpfc_sli_cancel_iocbs(9),
       lpfc_sli_iocb_cmd_type(9), lpfc_sli_ring_map(9),
       lpfc_sli_ringtxcmpl_put(9), lpfc_sli_ringtx_get(9),
       lpfc_cmf_sync_cmpl(9), lpfc_issue_cmf_sync_wqe(9),
       lpfc_sli_next_iocb_slot(9), lpfc_sli_next_iotag(9),
       lpfc_sli_submit_iocb(9), lpfc_sli_update_full_ring(9),
       lpfc_sli_update_ring(9), lpfc_sli_resume_iocb(9),
       lpfc_sli_next_hbq_slot(9), lpfc_sli_hbqbuf_free_all(9),
       lpfc_sli_hbq_to_firmware(9), lpfc_sli_hbq_to_firmware_s3(9),
       lpfc_sli_hbq_to_firmware_s4(9), lpfc_sli_hbqbuf_fill_hbqs(9),
       lpfc_sli_hbqbuf_add_hbqs(9), lpfc_sli_hbqbuf_init_hbqs(9),
       lpfc_sli_rqbuf_get(9), lpfc_sli_hbqbuf_find(9), lpfc_sli_free_hbq(9),
       lpfc_sli_chk_mbx_command(9), lpfc_sli_wake_mbox_wait(9),
       lpfc_sli_def_mbox_cmpl(9), lpfc_sli_handle_mb_event(9),
       lpfc_sli_get_buff(9), lpfc_nvme_unsol_ls_handler(9),
       lpfc_complete_unsol_iocb(9), lpfc_sli_iocbq_lookup(9),
       lpfc_sli_iocbq_lookup_by_tag(9), lpfc_sli_process_sol_iocb(9),
       lpfc_sli_rsp_pointers_error(9), lpfc_poll_eratt(9),
       lpfc_sli_handle_fast_ring_event(9), lpfc_sli_sp_handle_rspiocb(9),
       lpfc_sli_handle_slow_ring_event(9),
       lpfc_sli_handle_slow_ring_event_s3(9),
       lpfc_sli_handle_slow_ring_event_s4(9), lpfc_sli_abort_iocb_ring(9),
       lpfc_sli_abort_fcp_rings(9), lpfc_sli_flush_io_rings(9),
       lpfc_sli_brdready_s3(9), lpfc_sli_brdready_s4(9), lpfc_sli_brdready(9),
       lpfc_reset_barrier(9), lpfc_sli_brdkill(9), lpfc_sli_brdreset(9),
       lpfc_sli4_brdreset(9), lpfc_sli_brdrestart_s3(9),
       lpfc_sli_brdrestart_s4(9), lpfc_sli_brdrestart(9),
       lpfc_sli_chipset_init(9), lpfc_sli_hbq_count(9),
       lpfc_sli_hbq_entry_count(9), lpfc_sli_hbq_size(9),
       lpfc_sli_hbq_setup(9), lpfc_sli4_rb_setup(9), lpfc_sli_config_port(9),
       lpfc_sli_hba_setup(9), lpfc_sli4_read_fcoe_params(9),
       lpfc_sli4_read_rev(9), lpfc_sli4_get_ctl_attr(9),
       lpfc_sli4_retrieve_pport_name(9), lpfc_sli4_arm_cqeq_intr(9),
       lpfc_sli4_get_avail_extnt_rsrc(9), lpfc_sli4_chk_avail_extnt_rsrc(9),
       lpfc_sli4_cfg_post_extnts(9), lpfc_sli4_alloc_extent(9),
       lpfc_sli4_dealloc_extent(9), lpfc_ras_stop_fwlog(9),
       lpfc_sli4_ras_dma_free(9), lpfc_sli4_ras_dma_alloc(9),
       lpfc_sli4_ras_mbox_cmpl(9), lpfc_sli4_ras_fwlog_init(9),
       lpfc_sli4_ras_setup(9), lpfc_sli4_alloc_resource_identifiers(9),
       lpfc_sli4_dealloc_resource_identifiers(9),
       lpfc_sli4_get_allocated_extnts(9), lpfc_sli4_repost_sgl_list(9),
       lpfc_sli4_repost_io_sgl_list(9), lpfc_init_idle_stat_hb(9),
       lpfc_rx_monitor_create_ring(9), lpfc_rx_monitor_destroy_ring(9),
       lpfc_rx_monitor_record(9), lpfc_rx_monitor_report(9), lpfc_cmf_setup(9),
       lpfc_get_platform_uuid(9), lpfc_sli4_hba_setup(9), lpfc_mbox_timeout(9),
       lpfc_sli4_mbox_completions_pending(9),
       lpfc_sli4_process_missed_mbox_completions(9),
       lpfc_mbox_timeout_handler(9), lpfc_sli_issue_mbox_s3(9),
       lpfc_sli4_async_mbox_block(9), lpfc_sli4_async_mbox_unblock(9),
       lpfc_sli4_wait_bmbx_ready(9), lpfc_sli4_post_sync_mbox(9),
       lpfc_sli_issue_mbox_s4(9), lpfc_sli4_post_async_mbox(9),
       lpfc_sli_issue_mbox(9), lpfc_mbox_api_table_setup(9),
       __lpfc_sli_ringtx_put(9), lpfc_sli_next_iocb(9),
       __lpfc_sli_issue_iocb_s3(9), __lpfc_sli_issue_fcp_io_s3(9),
       __lpfc_sli_issue_fcp_io_s4(9), __lpfc_sli_issue_iocb_s4(9),
       lpfc_sli_api_table_setup(9), lpfc_sli4_calc_ring(9),
       lpfc_sli_issue_iocb(9), lpfc_extra_ring_setup(9),
       lpfc_sli_async_event_handler(9), lpfc_sli4_setup(9), lpfc_sli_setup(9),
       lpfc_sli4_queue_init(9), lpfc_sli_queue_init(9),
       lpfc_sli_mbox_sys_flush(9), lpfc_sli_host_down(9), lpfc_sli_hba_down(9),
       lpfc_sli_pcimem_bcopy(9), lpfc_sli_bemem_bcopy(9),
       lpfc_sli_ringpostbuf_put(9), lpfc_sli_get_buffer_tag(9),
       lpfc_sli_ring_taggedbuf_get(9), lpfc_sli_ringpostbuf_get(9),
       lpfc_sli_abort_els_cmpl(9), lpfc_ignore_els_cmpl(9),
       lpfc_sli_issue_abort_iotag(9), lpfc_sli_hba_iocb_abort(9),
       lpfc_sli_validate_fcp_iocb_for_abort(9), lpfc_sli_validate_fcp_iocb(9),
       lpfc_sli_sum_iocb(9), lpfc_sli_abort_fcp_cmpl(9),
       lpfc_sli_abort_iocb(9), lpfc_sli_abort_taskmgmt(9),
       lpfc_sli_wake_iocb_wait(9), lpfc_chk_iocb_flg(9),
       lpfc_sli_issue_iocb_wait(9), lpfc_sli_issue_mbox_wait(9),
       lpfc_sli_mbox_sys_shutdown(9), lpfc_sli_eratt_read(9),
       lpfc_sli4_eratt_read(9), lpfc_sli_check_eratt(9),
       lpfc_intr_state_check(9), lpfc_sli_sp_intr_handler(9),
       lpfc_sli_fp_intr_handler(9), lpfc_sli_intr_handler(9),
       lpfc_sli4_els_xri_abort_event_proc(9),
       lpfc_sli4_els_preprocess_rspiocbq(9),
       lpfc_sli4_sp_handle_async_event(9), lpfc_sli4_sp_handle_mbox_event(9),
       lpfc_sli4_sp_handle_mcqe(9), lpfc_sli4_sp_handle_els_wcqe(9),
       lpfc_sli4_sp_handle_rel_wcqe(9), lpfc_sli4_sp_handle_abort_xri_wcqe(9),
       lpfc_sli4_sp_handle_rcqe(9), lpfc_sli4_sp_handle_cqe(9),
       lpfc_sli4_sp_handle_eqe(9), __lpfc_sli4_process_cq(9),
       __lpfc_sli4_sp_process_cq(9), lpfc_sli4_sp_process_cq(9),
       lpfc_sli4_dly_sp_process_cq(9), lpfc_sli4_fp_handle_fcp_wcqe(9),
       lpfc_sli4_fp_handle_rel_wcqe(9), lpfc_sli4_nvmet_handle_rcqe(9),
       lpfc_sli4_fp_handle_cqe(9), __lpfc_sli4_hba_process_cq(9),
       lpfc_sli4_hba_process_cq(9), lpfc_sli4_hba_handle_eqe(9),
       lpfc_sli4_dly_hba_process_cq(9), lpfc_sli4_hba_intr_handler(9),
       lpfc_sli4_intr_handler(9), lpfc_sli4_queue_free(9),
       lpfc_sli4_queue_alloc(9), lpfc_dual_chute_pci_bar_map(9),
       lpfc_modify_hba_eq_delay(9), lpfc_eq_create(9),
       lpfc_sli4_hba_intr_handler_th(9), lpfc_cq_create(9),
       lpfc_cq_create_set(9), lpfc_mq_create_fb_init(9), lpfc_mq_create(9),
       lpfc_wq_create(9), lpfc_rq_create(9), lpfc_mrq_create(9),
       lpfc_eq_destroy(9), lpfc_cq_destroy(9), lpfc_mq_destroy(9),
       lpfc_wq_destroy(9), lpfc_rq_destroy(9), lpfc_sli4_post_sgl(9),
       lpfc_sli4_alloc_xri(9), __lpfc_sli4_free_xri(9), lpfc_sli4_free_xri(9),
       lpfc_sli4_next_xritag(9), lpfc_sli4_post_sgl_list(9),
       lpfc_sli4_post_io_sgl_block(9), lpfc_sli4_post_io_sgl_list(9),
       lpfc_fc_frame_check(9), lpfc_fc_hdr_get_vfi(9),
       lpfc_fc_frame_to_vport(9), lpfc_update_rcv_time_stamp(9),
       lpfc_cleanup_rcv_buffers(9), lpfc_rcv_seq_check_edtov(9),
       lpfc_fc_frame_add(9), lpfc_sli4_abort_partial_seq(9),
       lpfc_sli4_abort_ulp_seq(9), lpfc_sli4_seq_abort_rsp_cmpl(9),
       lpfc_sli4_xri_inrange(9), lpfc_sli4_seq_abort_rsp(9),
       lpfc_sli4_handle_unsol_abort(9), lpfc_seq_complete(9), lpfc_prep_seq(9),
       lpfc_sli4_handle_received_buffer(9), lpfc_sli4_post_all_rpi_hdrs(9),
       lpfc_sli4_post_rpi_hdr(9), lpfc_sli4_alloc_rpi(9),
       __lpfc_sli4_free_rpi(9), lpfc_sli4_free_rpi(9),
       lpfc_sli4_remove_rpis(9), lpfc_sli4_resume_rpi(9),
       lpfc_sli4_init_vpi(9), lpfc_mbx_cmpl_add_fcf_record(9),
       lpfc_sli4_add_fcf_record(9), lpfc_sli4_build_dflt_fcf_record(9),
       lpfc_sli4_fcf_scan_read_fcf_rec(9), lpfc_sli4_fcf_rr_read_fcf_rec(9),
       lpfc_sli4_read_fcf_rec(9), lpfc_check_next_fcf_pri_level(9),
       lpfc_sli4_fcf_rr_next_index_get(9), lpfc_sli4_fcf_rr_index_set(9),
       lpfc_sli4_fcf_rr_index_clear(9), lpfc_mbx_cmpl_redisc_fcf_table(9),
       lpfc_sli4_redisc_fcf_table(9), lpfc_sli4_fcf_dead_failthrough(9),
       lpfc_sli_get_config_region23(9), lpfc_sli4_get_config_region23(9),
       lpfc_sli_read_link_ste(9), lpfc_log_fw_write_cmpl(9), lpfc_wr_object(9),
       lpfc_cleanup_pending_mbox(9), lpfc_drain_txq(9), lpfc_wqe_bpl2sgl(9),
       lpfc_sli4_issue_wqe(9), lpfc_sli4_issue_abort_iotag(9),
       lpfc_snapshot_mxp(9), lpfc_adjust_pvt_pool_count(9),
       lpfc_adjust_high_watermark(9), lpfc_move_xri_pvt_to_pbl(9),
       _lpfc_move_xri_pbl_to_pvt(9), lpfc_move_xri_pbl_to_pvt(9),
       lpfc_keep_pvt_pool_above_lowwm(9), lpfc_release_io_buf(9),
       lpfc_get_io_buf_from_private_pool(9),
       lpfc_get_io_buf_from_expedite_pool(9),
       lpfc_get_io_buf_from_multixri_pools(9), lpfc_get_io_buf(9),
       lpfc_read_object(9), lpfc_get_sgl_per_hdwq(9), lpfc_put_sgl_per_hdwq(9),
       lpfc_free_sgl_per_hdwq(9), lpfc_get_cmd_rsp_buf_per_hdwq(9),
       lpfc_put_cmd_rsp_buf_per_hdwq(9), lpfc_free_cmd_rsp_buf_per_hdwq(9),
       lpfc_sli_prep_wqe(9)

xoxo, your kernel bestie πŸ’– β€” source/version: ./drivers/scsi/lpfc Β· date: October 2026 Β· manual: lpfc_sli_process_unsol_iocb(9). stay slaying those iocbs πŸŽ€

πŸ“¦ where this page comes from