STRUCT MPI3MR_DRV_CMD(9)
π struct mpi3mr_drv_cmd(9) π
okay so bestie, welcome to the Kernel API Manual β this is the page for struct mpi3mr_drv_cmd, and it's literally the internal command tracker for the mpi3mr driver. no cap, it's giving main character energy in the SCSI subsystem. let's get into it π«Ά
β¨ NAME β¨
struct mpi3mr_drv_cmd β Internal command tracker
like, it tracks commands internally. that's the vibe. periodt π
π¦ SYNOPSIS π¦
struct mpi3mr_drv_cmd {
struct mutex mutex;
struct completion done;
void *reply;
u8 *sensebuf;
u8 iou_rc;
u16 state;
u16 dev_handle;
u16 ioc_status;
u32 ioc_loginfo;
u8 is_waiting;
u8 is_sense;
u8 retry_count;
u16 host_tag;
void (*callback)(struct mpi3mr_ioc *mrioc, struct mpi3mr_drv_cmd
*drv_cmd);
};
look at that struct, she's iconic π
π Members π
okay so every field has a job and they all ate:
mutexβ Command mutex. it's the lock that keeps things from getting messy, y'know? like a group chat admin πdoneβ Completeor for wakeup. yes it says "Completeor" in the original, we don't fix typos here, we respect the lore. it's the completion thingy that wakes stuff up π΄β‘οΈπ³replyβ Firmware reply for internal commands. the firmware slides into your DMs with this π©sensebufβ Sensebuf for SCSI IO commands. it's the buffer where the sense data lives, very demure, very mindful πiou_rcβ IO Unit control reason code. iykyk π₯stateβ Command State. literally the state of the command, no cap πdev_handleβ Firmware handle for device specific commands. it's giving device-specific realness π¦ioc_statusβ IOC status from the firmware. the firmware's honest opinion, fr fr πioc_loginfoβ IOC log info from the firmware. extra lore from the firmware, we love context πΈis_waitingβ Is the command issued in block mode. block mode bestie, it's a whole vibe β³is_senseβ Is Sense data present. yes/no, is the sense data in the room with us rn? π§retry_countβ Retry count for retriable commands. for when you gotta try again, and again, and again ππhost_tagβ Host tag used by the command. every command needs a name tag, slay π·οΈβ¨callbackβ Callback for non blocking commands. for the non-blocking girlies who don't wait around π«
π SEE ALSO π
bestie you are NOT ready for this list, it's long and it's all connected, like a cinematic universe π
Kernel file ./drivers/scsi/mpi3mr/mpi3mr.h and then:
struct mpi3mr_nvme_pt_sge(9), struct mpi3mr_buf_map(9), struct mpi3mr_compimg_ver(9), struct segments(9), struct op_req_qinfo(9), struct op_reply_qinfo(9), struct mpi3mr_intr_info(9), struct mpi3mr_throttle_group_info(9), struct mpi3mr_hba_port(9), struct mpi3mr_sas_port(9), struct mpi3mr_sas_phy(9), struct mpi3mr_sas_node(9), struct mpi3mr_enclosure_node(9), struct tgt_dev_sas_sata(9), struct tgt_dev_pcie(9), struct tgt_dev_vd(9), union _form_spec_inf(9), struct mpi3mr_tgt_dev(9), mpi3mr_tgtdev_get(9), mpi3mr_free_tgtdev(9), mpi3mr_tgtdev_put(9), struct mpi3mr_stgt_priv_data(9), union mpi3mr_trigger_data(9), struct trigger_event_data(9), struct diag_buffer_desc(9), struct dma_memory_desc(9), struct chain_element(9), struct scmd_priv(9), struct mpi3mr_ioc(9), struct mpi3mr_fwevt(9), struct delayed_dev_rmhs_node(9), struct delayed_evt_ack_node(9)
like I said. cinematic universe. go read them, they're all doing amazing sweetie π
lowkey reminder: this is kernel API stuff, so pls don't go changing these fields casually unless you know what you're doing. the driver will simply not slay if you mess it up π
okay that's the whole page bestie, every field, every reference, all the lore. this was authored by ./drivers/scsi/mpi3mr with the date October 2026 β so mark your calendars, it's giving future energy β and that's the cute little sign-off, mwah πβ¨
π¦ 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