STRUCT IONIC_RDMA_QUEUE_CMD(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

✨ struct ionic_rdma_queue_cmd(9) ✨

okay so bestie, welcome to the Kernel API Manual πŸ’… this one's all about struct ionic_rdma_queue_cmd and honestly it's giving "small struct, big job" energy. buckle up πŸŽ€


🌸 NAME 🌸

struct ionic_rdma_queue_cmd β€” Create RDMA Queue command πŸ¦‹


✨ SYNOPSIS ✨

struct ionic_rdma_queue_cmd {
    u8 opcode;
    u8 rsvd;
    __le16 lif_index;
    __le32 qid_ver;
    __le32 cid;
    __le16 dbid;
    u8 depth_log2;
    u8 stride_log2;
    __le64 dma_addr;
    u8 rsvd2[40];
 };

πŸ’– Members πŸ’–

  • opcode β€” the opcode, and it's literally 52 or 53. those are the only ones in the club, no cap. πŸ’…
  • rsvd β€” reserved byte(s). ignore her, she's just holding space 🫢
  • lif_index β€” the LIF index πŸ‘‘
  • qid_ver β€” it's (qid | (RDMA version << 24)), like two besties packed into one field 🌈
  • cid β€” this one's a shapeshifter: an intr, an eq_id, or a cq_id depending on what kind of queue you're building πŸ”₯
  • dbid β€” doorbell page id πŸ”” (yes queen, ring it)
  • depth_log2 β€” log base two of the queue depth πŸ“
  • stride_log2 β€” log base two of the queue stride 🧚
  • dma_addr β€” address of the queue memory πŸ’Ύ
  • rsvd2 β€” more reserved byte(s) (u8 rsvd2[40], forty whole bytes of "no thoughts, head empty") πŸ™ˆ

πŸ’œ Description πŸ’œ

So the same command struct gets reused to create an RDMA event queue, a completion queue, or an RDMA admin queue β€” one struct, three lewks, main character energy fr fr πŸ‘‘

The cid is literally different things depending on the queue:

  • an interrupt number for an event queue
  • an event queue id for a completion queue
  • a completion queue id for an RDMA admin queue

The queue you create via a dev command must be contiguous in dma space. that's not optional, bestie, that's the whole vibe check 😭

The dev commands are intended only to be used during driver initialization, to create queues supporting the RDMA admin queue. Other queues β€” and other types of RDMA resources like memory regions β€” get created and registered via the RDMA admin queue instead, and those support a much more complete interface with scatter gather lists for larger, scattered queue buffers and memory registration. so like, the dev command path is the starter pack, not the glow-up 🌸

Also important: there is no RDMA specific dev command completion struct. completion uses the common struct ionic_admin_comp, and only the status is indicated. that's it. that's the whole update πŸ’€

πŸ¦‹ SEE ALSO πŸ¦‹

Kernel file ./drivers/net/ethernet/pensando/ionic/ionic_if.h β€” go read her, she's iconic πŸ“–

  • 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_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_cmd_regs(9)
  • union ionic_dev_regs(9)
  • struct ionic_doorbell(9)

that's the whole page, bestie, you ate that πŸ“

sign-off szn: this masterpiece comes from ./drivers/net/ethernet/pensand... (yes the path literally trails off like that, we respect the ellipse πŸ™ˆ) and it's dated October 2026. struct ionic_rdma_queue_cmd(9) forever πŸ’œβœ¨

πŸ“¦ where this page comes from