STRUCT VIRTCHNL2_TXQ_INFO(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’Œ struct virtchnl2_txq_info(9) β€” the transmit queue config info glow-up

okay bestie, settle in, because this is a Kernel API Manual page and it's genuinely kind of iconic. We're talking about struct virtchnl2_txq_info β€” aka Transmit queue config info, aka the little struct that tells everyone how a TX queue should look. No cap. πŸŽ€


✨ NAME ✨

struct virtchnl2_txq_info β€” Transmit queue config info πŸ’…


🌸 SYNOPSIS 🌸

Here's the whole struct, verbatim, don't touch it, it's perfect:

struct virtchnl2_txq_info {
    __le64 dma_ring_addr;
    __le32 type;
    __le32 queue_id;
    __le16 relative_queue_id;
    __le16 model;
    __le16 sched_mode;
    __le16 qflags;
    __le16 ring_len;
    __le16 tx_compl_queue_id;
    __le16 peer_type;
    __le16 peer_rx_queue_id;
    u8 pad[4];
    __le32 egress_pasid;
    __le32 egress_hdr_pasid;
    __le32 egress_buf_pasid;
    u8 pad1[8];
 };

πŸ¦‹ Members πŸ¦‹

okay so each field, one by one, main character energy each:

  • dma_ring_addr β€” the DMA address. literally where the ring lives in DMA-land. ✨
  • type β€” see enum virtchnl2_queue_type. iykyk.
  • queue_id β€” the queue ID. simple, cute, does its job. πŸ’–
  • relative_queue_id β€” valid only if the queue model is split and the type is a transmit queue. It's used in the many-to-one mapping of transmit queues to a completion queue. lowkey the most lore-heavy field here.
  • model β€” see enum virtchnl2_queue_model.
  • sched_mode β€” see enum virtchnl2_txq_sched_mode.
  • qflags β€” the TX queue feature flags. 🚩 (the good kind)
  • ring_len β€” the ring length.
  • tx_compl_queue_id β€” valid only if the queue model is split and the type is a transmit queue. same vibe check as relative_queue_id.
  • peer_type β€” valid only if the queue type is VIRTCHNL2_QUEUE_TYPE_MAILBOX_TX.
  • peer_rx_queue_id β€” valid only if the queue type is CONFIG_TX, and it's used to deliver messages for the respective CONFIG_TX queue.
  • pad β€” padding. the filler episode. 🫢
  • egress_pasid β€” egress PASID info.
  • egress_hdr_pasid β€” egress HDR passid. (yes, the original spells it "passid" here β€” we respect the canon 🫑)
  • egress_buf_pasid β€” egress buf passid.
  • pad1 β€” padding for future extensions. manifesting future features for her. 🌈
πŸ’€ reminder bestie: relative_queue_id and tx_compl_queue_id are only valid under those split-model + transmit-queue conditions, peer_type is only valid for VIRTCHNL2_QUEUE_TYPE_MAILBOX_TX, and peer_rx_queue_id is only valid for CONFIG_TX. Don't be out here reading them in the wrong context, fr fr.

⭐ SEE ALSO ⭐

so many friends, she's so connected. First up, the actual source file: Kernel file ./include/linux/net/intel/virtchnl2.h. Then the whole squad:

  • enum virtchnl2_vport_type(9)
  • enum virtchnl2_queue_model(9)
  • enum virtchnl2_action_types(9)
  • enum virtchnl2_txq_sched_mode(9)
  • enum virtchnl2_rxq_flags(9)
  • enum virtchnl2_mac_addr_type(9)
  • struct virtchnl2_edt_caps(9)
  • struct virtchnl2_version_info(9)
  • struct virtchnl2_get_capabilities(9)
  • struct virtchnl2_queue_reg_chunk(9)
  • struct virtchnl2_queue_reg_chunks(9)
  • enum virtchnl2_vport_flags(9)
  • struct virtchnl2_create_vport(9)
  • struct virtchnl2_vport(9)
  • struct virtchnl2_config_tx_queues(9)
  • struct virtchnl2_rxq_info(9)
  • struct virtchnl2_config_rx_queues(9)
  • struct virtchnl2_add_queues(9)
  • struct virtchnl2_vector_chunk(9)
  • struct virtchnl2_vector_chunks(9)
  • struct virtchnl2_alloc_vectors(9)
  • struct virtchnl2_rss_lut(9)
  • struct virtchnl2_rss_hash(9)
  • struct virtchnl2_sriov_vfs_info(9)
  • struct virtchnl2_ptype(9)
  • struct virtchnl2_get_ptype_info(9)
  • struct virtchnl2_vport_stats(9)
  • struct virtchnl2_event(9)
  • struct virtchnl2_rss_key(9)
  • struct virtchnl2_queue_chunk(9)
  • struct virtchnl2_del_ena_dis_queues(9)
  • struct virtchnl2_queue_vector(9)
  • struct virtchnl2_queue_vector_maps(9)
  • struct virtchnl2_loopback(9)
  • struct virtchnl2_mac_addr_list(9)
  • struct virtchnl2_promisc_info(9)
  • enum virtchnl2_ptp_caps(9)
  • struct virtchnl2_ptp_clk_reg_offsets(9)
  • struct virtchnl2_ptp_cross_time_reg_offsets(9)
  • struct virtchnl2_ptp_clk_adj_reg_offsets(9)
  • struct virtchnl2_ptp_tx_tstamp_latch_caps(9)
  • struct virtchnl2_ptp_get_vport_tx_tstamp_caps(9)
  • struct virtchnl2_ptp_get_caps(9)
  • struct virtchnl2_ptp_tx_tstamp_latch(9)
  • struct virtchnl2_ptp_get_vport_tx_tstamp_latches(9)
  • struct virtchnl2_ptp_get_dev_clk_time(9)
  • struct virtchnl2_ptp_get_cross_time(9)
  • struct virtchnl2_ptp_set_dev_clk_time(9)
  • struct virtchnl2_ptp_adj_dev_clk_fine(9)
  • struct virtchnl2_ptp_adj_dev_clk_time(9)
  • struct virtchnl2_mem_region(9)
  • struct virtchnl2_get_lan_memory_regions(9)
  • struct virtchnl2_proto_hdr(9)
  • struct virtchnl2_proto_hdrs(9)
  • struct virtchnl2_rule_action(9)
  • struct virtchnl2_rule_action_set(9)
  • struct virtchnl2_flow_rule(9)
  • struct virtchnl2_flow_rule_info(9)
  • struct virtchnl2_flow_rule_add_del(9)

like… she has a lot of mutuals. ate and left no crumbs. πŸ‘‘


🧚 sign-off 🧚

and that's the whole page, bestie! this one comes from ./include/linux/net/intel, dated October 2026, and it's filed as struct virtchnl2_txq_info(9). go forth and configure those transmit queues responsibly. mwah! πŸ’œπŸŽ€βœ¨

πŸ“¦ where this page comes from