STRUCT PDS_CORE_DEV_IDENTITY(9)
π struct pds_core_dev_identity(9) β bestie's guide to the device identity struct β¨
okay so this is a page from the Kernel API Manual, and it's literally all about struct pds_core_dev_identity β the lil' bundle of info where the device tells you who it is π
think of it as the device's ID card but make it kernel.
πΈ NAME πΈ
struct pds_core_dev_identity β Device identity information π«Ά
β¨ SYNOPSIS β¨
here's the whole squad, laid out exactly as it lives in the header β do not touch, just admire π
struct pds_core_dev_identity {
u8 version;
u8 type;
u8 state;
u8 rsvd;
__le32 nlifs;
__le32 nintrs;
__le32 ndbpgs_per_lif;
__le32 intr_coal_mult;
__le32 intr_coal_div;
__le16 vif_types[PDS_DEV_TYPE_MAX];
__le16 max_fw_slots;
u8 rsvd2[6];
__le64 capabilities;
};
π¦ Members π¦
okay field-by-field, let's get into it β every single one, no skipping π
versionβ the version of the device identify. it's giving "which era of me are you talking to" β¨typeβ the identify type. and yes, it's0for now β iconic minimalism, no notes πstateβ the device state. what mood is the device in, basically π«Άrsvdβ word boundary padding. it's just there to keep the alignment cute and tidy πnlifsβ number of LIFs provisioned. that's how many LIFs you get, fr fr πΈnintrsβ number of interrupts provisioned. the interrupt allowance, slay π₯ndbpgs_per_lifβ number of doorbell pages per LIF. per LIF, bestie, write that down πintr_coal_multβ interrupt coalescing multiplication factor. it scales the user-supplied interrupt coalescing value in usecs into device units using:
device units = usecs * mult / div
that formula is load-bearing, do not lose it π
intr_coal_divβ interrupt coalescing division factor. same deal, it scales the user-supplied interrupt coalescing value in usecs to device units using:
device units = usecs * mult / div
same formula, the other half of the vibe check π
vif_typesβ how many of each VIF device type is supported. an array ofPDS_DEV_TYPE_MAXof these, bestie, so it's counting per type πmax_fw_slotsβ number of firmware components reported by device. important caveat: this is only supported on version >=PDS_CORE_IDENTITY_VERSION_2π so if you're on an older version, don't come for her, she's not there yetrsvd2β word boundary padding. again.u8 rsvd2[6]of pure alignment energy βcapabilitiesβ device capabilities. and same rule as above: only supported on version >=PDS_CORE_IDENTITY_VERSION_2π so check your version first, no cap
lowkey the main character takeaway:max_fw_slotsandcapabilitiesare gated behindPDS_CORE_IDENTITY_VERSION_2or later. read the version field before you go trusting them π
π₯ SEE ALSO π₯
this list is LONG and I respect it β it's the whole pds_core extended universe, all of it, in order, nothing cut π€
Kernel file ./include/linux/pds/pds_core_if.h, plus:
struct pds_core_drv_identity(9)enum pds_core_dev_capability(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_cmd(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)
and that's the whole page, bestie β go forth and identify some devices πβ¨π
this came out of ./include/linux/pds, dated October 2026, wrapping up struct pds_core_dev_identity(9). stan the manpage, 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