__lpfc_sli_ringtx_put(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… __lpfc_sli_ringtx_put(9) β€” Kernel API Manual, bestie edition ✨

okay so this page is literally called __lpfc_sli_ringtx_put(9), and it lives in the Kernel API Manual. It’s one function, it’s giving lpfc driver energy, and we are gonna read it together. No cap. 🫢

πŸŽ€ NAME πŸŽ€

__lpfc_sli_ringtx_put β€” Add an iocb to the txq

✨ SYNOPSIS ✨

void __lpfc_sli_ringtx_put (struct lpfc_hba *phba , struct lpfc_sli_ring
       *pring , struct lpfc_iocbq *piocb );

πŸ¦‹ ARGUMENTS πŸ¦‹

  • phba β€” pointer to the HBA context object, bestie.
  • pring β€” pointer to the driver SLI ring object.
  • piocb β€” pointer to the address of the newly added command iocb.

🌸 DESCRIPTION 🌸

okay so picture this: this function is called with hbalock held for SLI3 ports, or the ring lock held for SLI4 ports. Its whole job is to add a command iocb to the txq when the SLI layer cannot submit the command iocb to the ring. That’s the entire vibe. The lock situation is highkey part of the plot, so don’t sleep on it. πŸ”’βœ¨

πŸ‘‘ SEE ALSO πŸ‘‘

Kernel file ./drivers/scsi/lpfc/lpfc_sli.c, plus the whole extended universe of refs:

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

okay that’s the whole page, bestie 🫢. mwah πŸ’‹ β€” the footer energy is source/version line ./drivers/scsi/lpfc, date October 2026, and title __lpfc_sli_ringtx_put(9). Go be iconic. πŸ’…βœ¨

πŸ“¦ where this page comes from