STRUCT PDS_CORE_SEND_COMPONENT_CMD(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

✨ 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 is PDS_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 β€” an enum pds_core_fw_slot. which slot, obviously πŸ—‚οΈ
  • operation β€” an enum 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 at data_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