STRUCT VIRTCHNL2_SINGLEQ_BASE_RX_DESC(9)
π struct virtchnl2_singleq_base_rx_desc(9) β the kernel API manual, bestie edition β¨
Okay so, real talk: this is a page out of the Kernel API Manual, and the star of the show is struct virtchnl2_singleq_base_rx_desc β literally the RX descriptor writeback format. It's giving "the receipts your NIC hands back to you after a packet shows up" π. Come sit with me, we're gonna go through every single field, no skipping, periodt.
β¨ NAME β¨
struct virtchnl2_singleq_base_rx_desc β the RX descriptor writeback format. That's it, that's the vibe π.
πΈ SYNOPSIS πΈ
Here's the whole struct, character for character, so you can copy it straight into your notes:
struct virtchnl2_singleq_base_rx_desc {
struct {
struct {
__le16 mirroring_status;
__le16 l2tag1;
} lo_dword;
union {
__le32 rss;
__le32 fd_id;
} hi_dword;
} qword0;
struct {
__le64 status_error_ptype_len;
} qword1;
struct {
__le16 ext_status;
__le16 rsvd;
__le16 l2tag2_1;
__le16 l2tag2_2;
} qword2;
struct {
__le32 reserved;
__le32 fd_id;
} qword3;
};
Like, look at it. Four quad words. Nested structs inside nested structs. A union doing union things. It's a whole little ecosystem π¦.
π Members π
Bestie, we're going field by field, and yes, we're doing all of them. Grab a snack π.
qword0β the first quad word struct. The opening act, the main character of the first eight bytes β¨.qword0.lo_dwordβ the lower dual word struct, sitting all cozy in the bottom half.qword0.lo_dword.mirroring_statusβ the mirrored packet status πͺ.qword0.lo_dword.l2tag1β the stripped L2 tag from the received packet. It got extracted, bestie, it's free now π.
qword0.hi_dwordβ the high dual word union. It's a union, so it's gonna be one of these two, iykyk π.qword0.hi_dword.rssβ the RSS hash π₯.qword0.hi_dword.fd_idβ the flow director filter id.
qword1β the second quad word struct. We love a consistent naming scheme π.qword1.status_error_ptype_lenβ status/error/PTYPE/length. Yes, all four at once, it's an overachiever, it's giving multitasking queen π.
qword2β the third quad word struct. Still slaying, still quad, still word π .qword2.ext_statusβ the extended status.qword2.rsvdβ reserved. Not for you, bestie, hands off π.qword2.l2tag2_1β extracted L2 tag 2 from the packet.qword2.l2tag2_2β reserved. Also not for you π«Ά.
qword3β the fourth quad word struct. The finale, the closing number π.qword3.reservedβ reserved. Again. Stay out of it, it's private β¨.qword3.fd_idβ the flow director filter id. (Yep, this name shows up inqword0.hi_dwordtoo β that's exactly what the page says, we don't merge, we don't edit π.)
π§ Description π§
Profile ID 0x1, SingleQ, base writeback format. That's the whole description, and honestly? It ate. Short, iconic, no notes πΈ.
β SEE ALSO β
Go read these next, bestie, they're the friend group:
- Kernel file
./include/linux/net/intel/virtchnl2_lan_desc.hstructvirtchnl2_splitq_rx_buf_desc(9) - struct
virtchnl2_singleq_rx_buf_desc(9) - struct
virtchnl2_rx_flex_desc_nic(9) - struct
virtchnl2_rx_flex_desc_adv_nic_3(9)
Heads up, bestie: everyrsvdandreservedfield in here is exactly that β reserved. Don't go claiming those bytes for your own schemes, they are not yours π.
Mwah π β that's the whole page, and here's your cute little sign-off: this one lives under the kernel path ./include/linux/net/intel, dated October 2026, in the struct virt...base_rx_desc(9) era of the manual. Go forth and parse descriptors, you gorgeous nerd π¦ππ
π¦ 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