lpfc_sli_han...ing_event_s3(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… lpfc_sli_handle_slow_ring_event_s3(9) πŸ’…

okay so bestie, you've opened the Kernel API Manual page for lpfc_sli_handle_slow_ring_event_s3(9) and honestly? iconic of you. grab a snack πŸ“, this one's about making SLI3 non-FCP rings behave.


✨ NAME ✨

lpfc_sli_handle_slow_ring_event_s3 β€” the girl whose whole job is handling SLI3 ring events for non-FCP rings πŸ’β€β™€οΈ


πŸŽ€ SYNOPSIS πŸŽ€

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

πŸ¦‹ ARGUMENTS πŸ¦‹

  • phba β€” pointer to the HBA context object. the main character, basically πŸ‘‘
  • pring β€” pointer to the driver's SLI ring object. the ring in question, living her life 🌸
  • mask β€” the host attention register mask for this ring. the vibe check for whether this ring needs attention πŸ‘€

πŸ”₯ DESCRIPTION πŸ”₯

so here's the tea β˜• β€” this function gets called from the worker thread whenever there's a ring event for non-fcp rings. that's it, that's the sitch.

the caller does not hold any lock. none. zero. not a single one πŸ”“ β€” so don't come in here assuming anything's locked down.

once it's running, the function goes through the response ring and removes each response iocb from it, then hands each one off to the handle response iocb routine (lpfc_sli_sp_handle_rspiocb) so it can actually be processed. it's giving cleanup crew energy 🧹✨ β€” one iocb at a time, no cap.


🌈 SEE ALSO 🌈

fr fr, start with the Kernel file ./drivers/scsi/lpfc/lpfc_sli.c β€” that's the home base 🏠 β€” then there's this whole extended friend group:

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

like?? that's the whole group chat and every single one of them is invited 🫢✨


πŸ’€ and yeah, remember the important bit: no locks held by the caller. don't assume otherwise, bestie, that's a one-way ticket to a bad time 😭

and that's the page!! 🌈 this lil masterpiece lives at ./drivers/scsi/lpfc, dated October 2026, and it's page lpfc_sli_han...ing_event_s3(9) of the Kernel API Manual β€” mwah, slay, periodt πŸ’…πŸŽ€πŸ¦‹

πŸ“¦ where this page comes from