lpfc_rq_destroy(9)
π lpfc_rq_destroy β from the Kernel API Manual, bestie π
okay so welcome to lpfc_rq_destroy(9), the page where we learn how to yeet a Receive Queue into the sun (politely, via firmware, as one does). this is a kernel API manual page, it lives with the other (9) pages, and honestly? it's short, it's sweet, and it's giving "one job, done well." β¨
πΈ NAME πΈ
lpfc_rq_destroy β Destroy a Receive Queue on the HBA π
like, the whole vibe. one queue. gone. no cap.
β¨ SYNOPSIS β¨
int lpfc_rq_destroy (struct lpfc_hba *phba , struct lpfc_queue *hrq ,
struct lpfc_queue *drq );
yes she returns an int, and yes those spaces before the commas are exactly how the original has them β copying code character for character is the rule, i don't make the rules, i just slay by them π
π«Ά ARGUMENTS π«Ά
phbaβ the HBA structure, aka the thing that tells us which port we're destroying a queue on. it's the main character of this whole operation ngl πhrqβ the queue structure associated with the queue to destroy. π¦drqβ the queue structure associated with the queue to destroy. also. same deal. both of them are queue structures associated with the queue to destroy, and the page says it twice, so i say it twice too, periodt.
π₯ DESCRIPTION π₯
so what does this function do? it destroys a queue, as detailed in rq, by sending a mailbox command to the HBA β and that command is specific to the type of queue. busy being precise, honestly iconic.
the rq struct is what we use to get the queue ID of the queue to destroy. that's the little piece of info that tells the firmware exactly which queue we're yeeting. iykyk π
π return value check, bestie, don't skip it: on success this function will return a zero. if the queue destroy mailbox command fails, this function will return-ENXIO. that's it. that's the whole drama. zero = slay,-ENXIO= the mailbox command said "no β€οΈ".
π SEE ALSO π
okay this is the part where the page goes absolutely feral. this list is long β like, longer than my screen time report β and i am not skipping a single entry, because every one of these is part of the page and we keep every detail. Kernel file ./drivers/scsi/lpfc/lpfc_sli.c plus the full cast, in order, no edits, no merging, no "lol close enough":
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_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_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)
the way that list just keeps going?? ate and left no crumbs. π also note: the original page names the kernel file ./drivers/scsi/lpfc/lpfc_sli.c in this section β that's where the source lives, bestie, go read it if you're curious π
and that's the whole page, babes π
cute little sign-off time π this one came out of ./drivers/scsi/lpfc, dated October 2026, and it's lpfc_rq_destroy(9) β that's the source, the date, and the page name all wrapped up with a bow, so nothing from the footer got lost. mwah π go destroy a queue responsibly (and check your return value!!) π¦β
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms