mpt3sas_base...d_nvme_encap(9)
๐ธ mpt3sas_base_put_smid_nvme_encap(9) ๐
okay so bestie, you're looking at a Kernel API Manual page (the manpage-y name for it is literally mpt3sas_base...d_nvme_encap(9), yes the dots are part of it, no I didn't do that, the kernel did) and honestly? she's a small page with a HUGE friend group. Let's get into it ๐ซถ
โจ NAME โจ
mpt3sas_base_put_smid_nvme_encap โ the girl who sends your NVMe encapsulated request straight to the firmware ๐
it's giving "little function, very important job" energy, no cap.
๐ SYNOPSIS ๐
void mpt3sas_base_put_smid_nvme_encap (struct MPT3SAS_ADAPTER *ioc , u16 smid );
that's it. that's the whole signature. two args, no return, she just does it ๐ซ
๐ ARGUMENTS ๐
iocโ per adapter object โจ like, the adapter's whole personality in one struct. everything you need to know about which adapter you're talking to lives here, bestie.smidโ system request message index ๐ this is the little ID number that says "yes this one, this specific message." lowkey iconic tbh. it'su16, so be normal about the range.
๐ฆ SEE ALSO ๐ฆ
bestie. sit down. this list is long and I mean genuinely long. the whole rest of mpt3sas_base.c is in here and honestly she tagged everyone. it's giving "let me add the whole group chat to the birthday invite" ๐ anyway, here's the entire roster, no skips, no summarising:
the kernel file it lives in (yes you can read the source directly, go off):
./drivers/scsi/mpt3sas/mpt3sas_base.c
timeouts, fw faults, and register reads:
the clone squad (they copy stuff, that's the whole vibe):
chains, buffers, and BAR0 girlies:
_base_get_chain(9),_base_get_chain_phys(9),_base_get_buffer_bar0(9),_base_get_buffer_phys_bar0(9),_base_get_chain_buffer_dma_to_chain_buffer(9),_clone_sg_entries(9)
dead adapters, timestamps, and fault reset:
watchdogs + coredumps, a very serious chapter:
mpt3sas_base_start_watchdog(9),mpt3sas_base_stop_watchdog(9),mpt3sas_base_fault_info(9),mpt3sas_base_coredump_info(9),mpt3sas_base_wait_for_coredump_completion(9),mpt3sas_halt_firmware(9)
vibes and logging:
_base_sas_ioc_info(9),_base_display_event_data(9),_base_sas_log_info(9),_base_display_reply_info(9)
done handlers + async events:
the whole IRQ / polling ecosystem (this is a whole clique):
mpt3sas_base_pause_mq_polling(9),mpt3sas_base_resume_mq_polling(9),mpt3sas_base_mask_interrupts(9),mpt3sas_base_unmask_interrupts(9),_base_process_reply_queue(9),mpt3sas_blk_mq_poll(9),_base_interrupt(9),_base_irqpoll(9),_base_init_irqpolls(9),_base_is_controller_msix_enabled(9),mpt3sas_base_sync_reply_irqs(9)
callback handler trio ๐:
mpt3sas_base_release_callback_handler(9),mpt3sas_base_register_callback_handler(9),mpt3sas_base_initialize_callback_handler(9)
scatter-gather central (so many SG functions, she ate):
_base_build_zero_len_sge(9),_base_add_sg_single_32(9),_base_add_sg_single_64(9),_base_get_chain_buffer_tracker(9),_base_build_sg(9),_base_build_nvme_prp(9),base_make_prp_nvme(9),_base_check_pcie_native_sgl(9),_base_add_sg_single_ieee(9),_base_build_zero_len_sge_ieee(9),_base_build_sg_scmd(9),_base_build_sg_scmd_ieee(9),_base_build_sg_ieee(9)
DMA addressing + IRQ vector setup ๐ฎโ๐จ:
_base_config_dma_addressing(9),_base_check_enable_msix(9),mpt3sas_base_free_irq(9),_base_request_irq(9),_base_assign_reply_queues(9),_base_check_and_enable_high_iops_queues(9),mpt3sas_base_disable_msix(9),_base_alloc_irq_vectors(9),_base_enable_msix(9)
mapping and unmapping resources:
mpt3sas_base_unmap_resources(9),mpt3sas_base_check_for_fault_and_issue_reset(9),mpt3sas_base_map_resources(9)
the "get me a buffer / get me an address" girlies:
mpt3sas_base_get_msg_frame(9),mpt3sas_base_get_sense_buffer(9),mpt3sas_base_get_sense_buffer_dma(9),mpt3sas_base_get_pcie_sgl(9),mpt3sas_base_get_pcie_sgl_dma(9),mpt3sas_base_get_reply_virt_addr(9),_base_get_msix_index(9),_base_get_high_iops_msix_index(9)
SMID allocation crew (our girl smid's direct relatives ๐):
mpt3sas_base_get_smid(9),mpt3sas_base_get_smid_scsiio(9),mpt3sas_base_get_smid_hpr(9),mpt3sas_base_free_smid(9)
writes + msix index juggling:
the put_smid family โ this is literally our function's siblings, be nice to them:
_base_put_smid_mpi_ep_scsi_io(9),_base_put_smid_scsi_io(9),_base_put_smid_fast_path(9),_base_put_smid_hi_priority(9),_base_put_smid_default(9),_base_put_smid_scsi_io_atomic(9),_base_put_smid_fast_path_atomic(9),_base_put_smid_hi_priority_atomic(9),_base_put_smid_default_atomic(9)
branding + fw version + capabilities (the aesthetic posts):
delays + perf mode:
diag triggers, all of them, every trigger:
_base_get_event_diag_triggers(9),_base_get_scsi_diag_triggers(9),_base_get_mpi_diag_triggers(9),_base_get_master_diag_triggers(9),_base_check_for_trigger_pages_support(9),_base_get_diag_triggers(9),_base_update_diag_trigger_pages(9)
queue depth:
atto things ๐ง:
config pages, enclosures, memory pools:
_base_static_config_pages(9),mpt3sas_free_enclosure_list(9),_base_release_memory_pools(9),mpt3sas_check_same_4gb_region(9),_base_reduce_hba_queue_depth(9)
the allocate-everything gang (DMA pools for days):
_base_allocate_pcie_sgl_pool(9),_base_allocate_chain_dma_pool(9),_base_allocate_sense_dma_pool(9),_base_allocate_reply_pool(9),_base_allocate_reply_free_dma_pool(9),_base_allocate_reply_post_free_array(9),base_alloc_rdpq_dma_pool(9),_base_allocate_memory_pools(9)
ioc state + doorbells + handshakes (patience is a virtue):
mpt3sas_base_get_iocstate(9),_base_wait_on_iocstate(9),_base_dump_reg_set(9),_base_wait_for_doorbell_int(9),_base_wait_for_doorbell_ack(9),_base_wait_for_doorbell_not_used(9),_base_send_ioc_reset(9),mpt3sas_wait_for_ioc(9),_base_handshake_req_reply_wait(9)
iounit control, enclosures, facts:
mpt3sas_base_sas_iounit_control(9),mpt3sas_base_scsi_enclosure_processor(9),_base_get_port_facts(9),_base_wait_for_iocstate(9),_base_get_ioc_facts(9)
init + port enable + discovery:
_base_send_ioc_init(9),mpt3sas_port_enable_done(9),_base_send_port_enable(9),mpt3sas_port_enable(9),_base_determine_wait_on_discovery(9)
events:
host diagnostic locking + ioc ready/operational:
mpt3sas_base_unlock_and_get_host_diagnostic(9),mpt3sas_base_lock_host_diagnostic(9),_base_diag_reset(9),mpt3sas_base_make_ioc_ready(9),_base_make_ioc_operational(9)
attach/detach + reset handlers (the finale โจ):
mpt3sas_base_free_resources(9),mpt3sas_base_attach(9),mpt3sas_base_detach(9),_base_pre_reset_handler(9),_base_clear_outstanding_mpt_commands(9),_base_clear_outstanding_commands(9),_base_reset_done_handler(9),mpt3sas_wait_for_commands_to_complete(9),_base_check_ioc_facts_changes(9),mpt3sas_base_hard_reset_handler(9)
fr fr that's the whole list, all 157 of them, I did not skip a single one because I would never do that to you ๐
and that's the page bestie!! short synopsis, two args, one enormous friend group. she's simple, she's focused, she sends NVMe encapsulated requests to firmware and she goes home. main character energy honestly ๐
sign-off time: this one lives in ./drivers/scsi/mpt3sas, and the page is dated October 2026 in the source/version footer, so yes โ she's from the future and she's thriving ๐๐ slay, periodt โจ
๐ฆ 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