STRUCT VIRTCHNL2_SINGLEQ_BASE_RX_DESC(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… 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 in qword0.hi_dword too β€” 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.h struct virtchnl2_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: every rsvd and reserved field 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