lpfc_sli_han...ing_event_s4(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… lpfc_sli_handle_slow_ring_event_s4 πŸ’…

okay so this is a page from the Kernel API Manual, section 9 β€” yes the Big Kernel One. bestie, it's giving "one tiny helper function that politely cleans up after everyone." let's get into it 🫢


🌸 NAME 🌸

lpfc_sli_handle_slow_ring_event_s4 β€” Handle SLI4 slow-path els events ✨


πŸ¦‹ SYNOPSIS πŸ¦‹

void lpfc_sli_handle_slow_ring_event_s4 (struct lpfc_hba *phba , struct
lpfc_sli_ring *pring , uint32_t mask );

πŸŽ€ ARGUMENTS πŸŽ€

  • phba β€” Pointer to HBA context object. the main character, honestly πŸ‘‘
  • pring β€” Pointer to driver SLI ring object. she's the ring in question πŸ’
  • mask β€” Host attention register mask for this ring. lowkey the vibe check for which ring woke up πŸ”₯

πŸ’– DESCRIPTION πŸ’–

okay so picture this. the worker thread is just minding its own business, and it goes "wait… there's a pending ELS response iocb sitting on the driver internal slow-path response iocb worker queue πŸ‘€". that's when this function gets called.

important detail, no cap: the caller does not hold any lock. none. zero. nada. πŸš«πŸ”’

so what does she do? she goes through the response worker queue and removes each response iocb from it, then calls the handle response iocb routine (lpfc_sli_sp_handle_rspiocb) to actually process it. she's not doing the work herself, she's the one handing out the work. delegation queen, periodt πŸ’…


⭐ SEE ALSO ⭐

first up, the main-character source file: ./drivers/scsi/lpfc/lpfc_sli.c 🎬

and now… the entire squad. every single one of them. i'm not skipping a single bestie πŸ˜­πŸ’œ

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_process_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_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)

like… 299 functions. she knows everybody. iykyk πŸŒˆπŸ’€


and that's the whole thing, bestie, you ate that πŸ“ this lil page lives in ./drivers/scsi/lpfc and it's dated October 2026 β€” so go forth and handle those slow-ring events, you absolute icon πŸŒŸπŸ’œβœ¨

πŸ“¦ where this page comes from