STRUCT PDS_CORE_SEND_COMPONENT_CMD(9)
β¨ NAME β¨
struct pds_core_send_component_cmd β bestie, this is the Send component command struct, and it's giving "firmware delivery girlie" π
(this is from the kernel API manual, section 9, iykyk).
πΈ SYNOPSIS πΈ
struct pds_core_send_component_cmd {
u8 opcode;
u8 ver;
u8 slot_id;
u8 operation;
__le32 offset;
__le32 data_len;
u8 rsvd[4];
__le64 data_pa;
};
π Members π
opcodeβ the opcode, which isPDS_CORE_CMD_SEND_COMPONENT. that's the one, that's the whole vibe β¨verβ the driver's max supported version of this command. like, the highest version she can speak, no cap.slot_idβ anenum pds_core_fw_slot. which slot, obviously ποΈoperationβ anenum pds_core_send_component_op. what we're doing to it.offsetβ offset into the component. it's non-zero if multiple commands are needed for a single component. so if it's zero, one-and-done; if not, we're doing this in pieces π§©data_lenβ length of this part of the component stored atdata_pa. yes, this part specifically. the saga continues.rsvdβ word boundary padding. it's just there for the alignment aesthetic πu8 rsvd[4];don't touch it, it's doing its job.data_paβ the DMA address of the component.__le64, little-endian icon π
π DESCRIPTION π
okay so the whole reason this struct exists: a component may be too large to store in a single buffer π so multiple PDS_CORE_CMD_SEND_COMPONENT devcmds may be needed. it's not one big drop, it's a multi-part delivery. periodt.
it expects to find flash component info (struct pds_core_flash_component) in cmd_regs->data. and β important β the driver should keep the devcmd interface locked while preparing and sending the flash component info. like, hold the door, don't let anybody in mid-send π«Ά
π¨ real talk: keep that devcmd interface locked during prepare + send. no sneaky concurrent access, bestie.
π¦ SEE ALSO π¦
kernel file ./include/linux/pds/pds_core_if.h struct pds_core_drv_identity(9), enum pds_core_dev_capability(9), struct pds_core_dev_identity(9), struct pds_core_dev_identify_cmd(9), struct pds_core_dev_identify_comp(9), struct pds_core_dev_reset_cmd(9), struct pds_core_dev_reset_comp(9), struct pds_core_dev_init_cmd(9), struct pds_core_dev_init_comp(9), struct pds_core_fw_download_cmd(9), struct pds_core_fw_download_comp(9), enum pds_core_fw_control_oper(9), enum pds_core_fw_slot(9), struct pds_core_fw_control_cmd(9), struct pds_core_fw_control_comp(9), enum pds_core_vf_link_status(9), struct pds_core_vf_setattr_cmd(9), struct pds_core_vf_getattr_cmd(9), struct pds_core_vf_ctrl_cmd(9), struct pds_core_vf_ctrl_comp(9), struct pds_core_send_pkg_data_cmd(9), struct pds_core_send_pkg_data_comp(9), struct pds_core_component_tbl(9), struct pds_core_send_component_tbl_cmd(9), struct pds_core_send_component_tbl_comp(9), enum pds_core_send_component_op(9), struct pds_core_flash_component(9), struct pds_core_send_component_comp(9), enum pds_core_fw_component_type(9), enum pds_core_component_info_flags(9), struct pds_core_fw_component_info(9), struct pds_core_component_list_info(9), struct pds_core_get_component_info_cmd(9), struct pds_core_get_component_info_comp(9), struct pds_core_finalize_update_cmd(9), struct pds_core_finalize_update_comp(9), struct pds_core_match_record_desc_cmd(9), struct pds_core_match_record_desc_comp(9), enum pds_core_host_mem_oper(9), struct pds_core_host_mem_cmd(9), struct pds_core_host_mem_comp(9), struct pds_core_dev_hwstamp_regs(9), struct pds_core_dev_info_regs(9), struct pds_core_dev_cmd_regs(9), struct pds_core_dev_regs(9)
(that's the whole friend group, fr fr β every single one of them is linked, go say hi π)
that's the page, bestie! sourced from ./include/linux/pds, dated October 2026, and that's the whole thing for struct pds_core_send_component_cmd(9) β go ship that component ππ¦β¨
π¦ 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