STRUCT VIRTCHNL2_ADD_QUEUES(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

✨ struct virtchnl2_add_queues β€” the kernel API manual, bestie edition ✨

Okay so this page is from the kernel API manual (struct virtchnl2_add_queues(9)), and it's literally all about one little struct. Buckle up. πŸŽ€


🌸 NAME 🌸

struct virtchnl2_add_queues β€” the data for VIRTCHNL2_OP_ADD_QUEUES. That's it, that's the vibe. ✨


πŸ¦‹ SYNOPSIS πŸ¦‹

struct virtchnl2_add_queues {
    __le32 vport_id;
    __le16 num_tx_q;
    __le16 num_tx_complq;
    __le16 num_rx_q;
    __le16 num_rx_bufq;
    u8 pad[4];
    struct virtchnl2_queue_reg_chunks chunks;
 };

No cap, she's compact. Every field copied exactly, character for character, because we do not mess with kernel structs. πŸ’…


πŸ’– Members πŸ’–

  • vport_id β€” the Vport id. That's her whole personality.
  • num_tx_q β€” number of Tx qieues. (Yes, "qieues" β€” the kernel doc says it like that and honestly? iconic of it. 😭 It means Tx queues, bestie.)
  • num_tx_complq β€” number of Tx completion queues. These are the queues that tell you your transmit actually happened. 🫢
  • num_rx_q β€” number of Rx queues.
  • num_rx_bufq β€” number of Rx buffer queues.
  • pad β€” padding. It's giving filler arc, but it's load-bearing, don't touch. πŸ™ˆ
  • chunks β€” chunks of contiguous queues. This is a struct virtchnl2_queue_reg_chunks, and it's the main character of the whole thing tbh. πŸ‘‘

🌈 Description 🌈

So here's the lore. The PF sends this message to ask for additional transmit/receive queues beyond the ones that were already assigned via the CREATE_VPORT request. Like "hi bestie, I already have these, can I get more pls πŸ₯Ί".

The virtchnl2_add_queues structure is what you use to specify the number of each type of queue. Then the CP responds with the same structure β€” but now it holds the actual number of queues assigned, followed by num_chunks of virtchnl2_queue_chunk structures. So you ask, they answer, and the answer comes with a little bonus payload. Slay. ✨

All of this is associated with VIRTCHNL2_OP_ADD_QUEUES. That's the op, that's the whole point. πŸ”₯


πŸ‘‘ SEE ALSO πŸ‘‘

The whole family, no one left behind. First off, the home base: kernel file ./include/linux/net/intel/virtchnl2.h, and then:

  • 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_txq_info(9)
  • struct virtchnl2_config_tx_queues(9)
  • struct virtchnl2_rxq_info(9)
  • struct virtchnl2_config_rx_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)

Forty-something cross-references and we listed every single one, because leaving one out would be a crime and we don't do that here. πŸ§šπŸ’œ


ngl bestie, if you got this far you lowkey understand virtchnl2 queue negotiation now. go off. 🫢

And that's the page! Signed off with love β€” this one lives in ./include/linux/net/intel, dated October 2026, and it's the struct virtchnl2_add_queues(9) page, periodt. πŸ’…πŸŒΈ

πŸ“¦ where this page comes from