STRUCT IDPF_Q_VEC_RSRC(9)
๐ struct idpf_q_vec_rsrc(9) ๐
okay so you're reading the Kernel API Manual (that's the manual name bestie, we're in kernel-doc land now) and this page is literally all about struct idpf_q_vec_rsrc โ the handle for queue and vector resources. it's giving "one struct to hold every queue-and-vector thing you'll ever need" and honestly? iconic. ๐
โจ NAME โจ
struct idpf_q_vec_rsrc โ handle for queue and vector resources ๐ฆ
โจ SYNOPSIS โจ
struct idpf_q_vec_rsrc {
struct device *dev;
struct idpf_q_vector *q_vectors;
u16 *q_vector_idxs;
u16 num_q_vectors;
u16 noirq_v_idx;
u32 noirq_dyn_ctl_ena;
void __iomem *noirq_dyn_ctl;
struct idpf_txq_group *txq_grps;
u32 txq_desc_count;
u32 complq_desc_count;
u32 txq_model;
u16 num_txq;
u16 num_complq;
u16 num_txq_grp;
u16 xdp_txq_offset;
u16 num_rxq_grp;
u32 rxq_model;
struct idpf_rxq_group *rxq_grps;
u16 num_rxq;
u16 num_bufq;
u32 rxq_desc_count;
u32 bufq_desc_count[IDPF_MAX_BUFQS_PER_RXQ_GRP];
u8 num_bufqs_per_qgrp;
bool base_rxd;
};
look at that layout. absolutely ate. no cap, every single field is right there and we're gonna go through all of them together ๐
๐ธ Members ๐ธ
๐ง The device + vector side
devโ device pointer for DMA mapping. like, the actual thing you're mapping DMA against ๐ซถq_vectorsโ array of queue vectors. the whole squad of them.q_vector_idxsโ starting index of queue vectors.num_q_vectorsโ number of IRQ vectors allocated. count 'em.noirq_v_idxโ ID of the NOIRQ vector.noirq_dyn_ctl_enaโ the value to write to the above to enable it. (the above = that register right below, keep reading lol)noirq_dyn_ctlโ register to enable/disable the vector for NOIRQ queues ๐ฅ
๐ The TX side
txq_grpsโ array of TX queue groups.txq_desc_countโ TX queue descriptor count.complq_desc_countโ completion queue descriptor count.txq_modelโ split queue or single queue queuing model.num_txqโ number of allocated TX queues.num_complqโ number of allocated completion queues.num_txq_grpโ number of TX queue groups.xdp_txq_offsetโ index of the first XDPSQ (==number of regular SQs). yes the double equals is literally in the original, we respect it ๐
๐ฆ The RX side
num_rxq_grpโ number of RX queues in a group.rxq_modelโsplitqqueue or single queue queuing model. (their spelling, not mine, keeping it ๐)rxq_grpsโ total number of RX groups. Number of groups * number of RX per group will yield total number of RX queues. math slay ๐งฎโจnum_rxqโ number of allocated RX queues.num_bufqโ number of allocated buffer queues.rxq_desc_countโ RX queue descriptor count. *MUST* have enough descriptors to complete all buffer descriptors for all buffer queues in the worst case. like, genuinely must. that's an all-caps MUST, do not play with it ๐bufq_desc_countโ buffer queue descriptor count. it's an array sizedIDPF_MAX_BUFQS_PER_RXQ_GRP, just saying ๐num_bufqs_per_qgrpโ buffer queues per RX queue in a given grouping.base_rxdโtrueif the driver should use base descriptors instead of flex.
fr fr the only scary one here is rxq_desc_count โ that MUST is doing a lot of heavy lifting. give it enough descriptors or the worst case will find you. ๐ญ
๐ฅ SEE ALSO ๐ฅ
Kernel file ./drivers/net/ethernet/intel/idpf/idpf.h โ and bestie, the whole friend group is listed, we're going through all of them:
struct idpf_mac_filter(9)enum idpf_state(9)enum idpf_flags(9)enum idpf_cap_field(9)enum idpf_vport_state(9)struct idpf_netdev_priv(9)struct idpf_reset_reg(9)struct idpf_vport_max_q(9)struct idpf_reg_ops(9)struct idpf_dev_ops(9)enum idpf_vport_reset_cause(9)enum idpf_vport_flags(9)struct idpf_tstamp_stats(9)struct idpf_vport(9)enum idpf_user_flags(9)struct idpf_rss_data(9)struct idpf_q_coalesce(9)struct idpf_vport_user_config_data(9)enum idpf_vport_config_flags(9)struct idpf_avail_queue_info(9)struct idpf_vector_info(9)struct idpf_vector_lifo(9)struct idpf_queue_id_reg_chunk(9)struct idpf_queue_id_reg_info(9)struct idpf_vport_config(9)struct idpf_adapter(9)idpf_is_queue_model_split(9)idpf_is_rdma_cap_ena(9)idpf_get_reserved_vecs(9)idpf_get_reserved_rdma_vecs(9)idpf_get_default_vports(9)idpf_get_max_vports(9)idpf_get_max_tx_bufs(9)idpf_get_min_tx_pkt_len(9)idpf_is_reset_detected(9)idpf_is_reset_in_prog(9)idpf_netdev_to_vport(9)idpf_netdev_to_adapter(9)idpf_is_feature_ena(9)idpf_get_max_tx_hdr_size(9)idpf_vport_ctrl_lock(9)idpf_vport_ctrl_unlock(9)
like?? that's a whole group chat of references and every single one of them made the list. obsessed. ๐
and that's the page!! source is ./drivers/net/ethernet/intel/idpf, dated October 2026, and it's living in the Kernel API Manual โ mwah, bye bestie, go read your queue descriptors ๐โจ๐
๐ฆ 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