lpfc_rq_destroy(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… 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