UNION IONIC_DEV_CMD_REGS(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… union ionic_dev_cmd_regs β€” Kernel API Manual, but make it make sense πŸ’…

okay bestie, sit down, hydrate, and let me tell you about union ionic_dev_cmd_regs(9) β€” it's the Device command register format (read-write) and it is, no cap, the main character of getting your commands to the NIC. this is the page for the Kernel API Manual, and honestly? she's iconic. πŸŽ€


✨ NAME ✨

union ionic_dev_cmd_regs β€” the Device command register format (read-write). yes that's the whole vibe. it's a union, she's read-write, she contains multitudes. πŸ’œ


✨ SYNOPSIS ✨

here's the whole layout, exactly as it lives, do not touch, do not "clean up":

union ionic_dev_cmd_regs {
    struct {
      u32 doorbell;
      u32 done;
      union ionic_dev_cmd         cmd;
      union ionic_dev_cmd_comp    comp;
      u8 rsvd[48];
      u32 data[478];
    };
    u32 words[512];
 };

lowkey beautiful. it's giving "two ways to look at the same memory" and I am obsessed. πŸ¦‹


✨ Members ✨

  • {unnamed_struct} β€” anonymous πŸ«₯ (yes really, that's the whole description, she's mysterious, she's unnamed, she's that girl)
  • doorbell β€” Device Cmd Doorbell, write-only. so listen: you write a 1 here to signal the device to process cmd, and then you poll done for completion. that's the whole dance. write-only, so don't be out here trying to read it, bestie. πŸ’€
  • done β€” the Done indicator. bit 0 == 1 when the command is complete. that's your little green checkmark. 🌸
  • cmd β€” the Opcode-specific command bytes. this is what you're actually asking for.
  • comp β€” the Opcode-specific response bytes. this is what the device yells back.
  • rsvd β€” reserved byte(s). do not touch. not yours. leave her alone. πŸ™ˆ
  • data β€” Opcode-specific side-data. the little bonus content. the director's commentary.
  • words β€” word access to struct contents. same memory, different outfit. slay. πŸ‘‘
⚠️ real talk: doorbell is write-only and rsvd is reserved β€” those aren't suggestions, that's the whole rule. and done completes at bit 0 == 1, so check the bit, not the vibe.

✨ SEE ALSO ✨

okay so this is the part where the page just, like, lists everyone at the function. and I mean everyone. here's the whole friend group, no one gets left out, starting with the source file itself:

  • Kernel file ./drivers/net/ethernet/pensando/ionic/ionic_if.h

and then, in order, the entire extended universe:

  • struct ionic_admin_cmd(9)
  • struct ionic_admin_comp(9)
  • struct ionic_nop_cmd(9)
  • struct ionic_nop_comp(9)
  • struct ionic_dev_init_cmd(9)
  • struct ionic_dev_init_comp(9)
  • struct ionic_dev_reset_cmd(9)
  • struct ionic_dev_reset_comp(9)
  • struct ionic_dev_identify_cmd(9)
  • struct ionic_dev_identify_comp(9)
  • union ionic_drv_identity(9)
  • enum ionic_dev_capability(9)
  • union ionic_dev_identity(9)
  • struct ionic_lif_identify_cmd(9)
  • struct ionic_lif_identify_comp(9)
  • enum ionic_lif_capability(9)
  • enum ionic_logical_qtype(9)
  • enum ionic_q_feature(9)
  • enum ionic_rxq_feature(9)
  • enum ionic_txq_feature(9)
  • enum ionic_hwstamp_bits(9)
  • struct ionic_lif_logical_qtype(9)
  • enum ionic_lif_state(9)
  • union ionic_lif_config(9)
  • enum ionic_lif_rdma_cap_stats(9)
  • union ionic_lif_identity(9)
  • struct ionic_lif_init_cmd(9)
  • struct ionic_lif_init_comp(9)
  • struct ionic_q_identify_cmd(9)
  • struct ionic_q_identify_comp(9)
  • union ionic_q_identity(9)
  • struct ionic_q_init_cmd(9)
  • struct ionic_q_init_comp(9)
  • struct ionic_txq_desc(9)
  • struct ionic_txq_sg_elem(9)
  • struct ionic_txq_sg_desc(9)
  • struct ionic_txq_comp(9)
  • struct ionic_rxq_desc(9)
  • struct ionic_rxq_sg_elem(9)
  • struct ionic_rxq_sg_desc(9)
  • struct ionic_rxq_comp(9)
  • enum ionic_pkt_class(9)
  • struct ionic_q_control_cmd(9)
  • enum ionic_phy_type(9)
  • enum ionic_xcvr_state(9)
  • enum ionic_port_type(9)
  • enum ionic_port_admin_state(9)
  • enum ionic_port_oper_status(9)
  • enum ionic_port_fec_type(9)
  • enum ionic_port_pause_type(9)
  • enum ionic_port_loopback_mode(9)
  • struct ionic_xcvr_status(9)
  • union ionic_port_config(9)
  • struct ionic_port_status(9)
  • struct ionic_port_identify_cmd(9)
  • struct ionic_port_identify_comp(9)
  • struct ionic_port_init_cmd(9)
  • struct ionic_port_init_comp(9)
  • struct ionic_port_reset_cmd(9)
  • struct ionic_port_reset_comp(9)
  • enum ionic_stats_ctl_cmd(9)
  • enum ionic_txstamp_mode(9)
  • enum ionic_port_attr(9)
  • struct ionic_port_setattr_cmd(9)
  • struct ionic_port_setattr_comp(9)
  • struct ionic_port_getattr_cmd(9)
  • struct ionic_port_getattr_comp(9)
  • struct ionic_lif_status(9)
  • struct ionic_lif_reset_cmd(9)
  • enum ionic_dev_attr(9)
  • struct ionic_dev_setattr_cmd(9)
  • struct ionic_dev_setattr_comp(9)
  • struct ionic_dev_getattr_cmd(9)
  • struct ionic_dev_getattr_comp(9)
  • enum ionic_lif_attr(9)
  • struct ionic_lif_setattr_cmd(9)
  • struct ionic_lif_setattr_comp(9)
  • struct ionic_lif_getattr_cmd(9)
  • struct ionic_lif_getattr_comp(9)
  • struct ionic_lif_setphc_cmd(9)
  • struct ionic_rx_mode_set_cmd(9)
  • struct ionic_rx_filter_add_cmd(9)
  • struct ionic_rx_filter_add_comp(9)
  • struct ionic_rx_filter_del_cmd(9)
  • enum ionic_vf_link_status(9)
  • struct ionic_vf_setattr_cmd(9)
  • struct ionic_vf_getattr_cmd(9)
  • struct ionic_vf_ctrl_cmd(9)
  • struct ionic_vf_ctrl_comp(9)
  • struct ionic_discover_cmb_cmd(9)
  • struct ionic_discover_cmb_comp(9)
  • union ionic_cmb_region(9)
  • union ionic_discover_cmb_identity(9)
  • struct ionic_qos_identify_cmd(9)
  • struct ionic_qos_identify_comp(9)
  • enum ionic_qos_class_type(9)
  • enum ionic_qos_sched_type(9)
  • union ionic_qos_config(9)
  • union ionic_qos_identity(9)
  • struct ionic_qos_init_cmd(9)
  • struct ionic_qos_reset_cmd(9)
  • struct ionic_qos_clear_stats_cmd(9)
  • struct ionic_fw_download_cmd(9)
  • enum ionic_fw_control_oper(9)
  • struct ionic_fw_control_cmd(9)
  • struct ionic_fw_control_comp(9)
  • struct ionic_rdma_reset_cmd(9)
  • struct ionic_rdma_queue_cmd(9)
  • struct ionic_notifyq_event(9)
  • struct ionic_link_change_event(9)
  • struct ionic_reset_event(9)
  • struct ionic_heartbeat_event(9)
  • struct ionic_log_event(9)
  • struct ionic_xcvr_event(9)
  • union ionic_port_identity(9)
  • struct ionic_port_info(9)
  • struct ionic_lif_info(9)
  • struct ionic_hwstamp_regs(9)
  • union ionic_dev_info_regs(9)
  • union ionic_dev_regs(9)
  • struct ionic_doorbell(9)

like I said. everyone. and honestly? they all ate. πŸ”₯


and that's the page, bestie β€” go forth, ring that doorbell with a 1, poll your done bit 0, and be the main character of your own command processing. πŸ§šβ€β™€οΈ

sign-off cuteness: this little love letter comes from ./drivers/net/ethernet/pensand... and it's dated October 2026 β€” til then, stay hydrated, read your reserved bytes, and don't touch rsvd. periodt. πŸ’–πŸŒˆβ­
πŸ“¦ where this page comes from