STRUCT IAVF_RX_DESC(9)
π struct iavf_rx_desc(9) β the Kernel API Manual glow-up π
okay bestie, sit down, because we're about to read a receive descriptor together and honestly? it's giving dual-personality icon. this is struct iavf_rx_desc, and it handles both legacy and flexible layouts β yes, both, at the same time, in the same struct. main character energy fr fr π
β¨ SYNOPSIS β¨
struct iavf_rx_desc {
aligned_le64 qw0;
#define IAVF_RXD_LEGACY_RSS_M GENMASK_ULL(63, 32);
#define IAVF_RXD_LEGACY_L2TAG1_M GENMASK_ULL(33, 16);
#define IAVF_RXD_FLEX_PTYPE_M GENMASK_ULL(25, 16);
#define IAVF_RXD_FLEX_PKT_LEN_M GENMASK_ULL(45, 32);
aligned_le64 qw1;
#define IAVF_RXD_LEGACY_DD_M BIT(0);
#define IAVF_RXD_LEGACY_EOP_M BIT(1);
#define IAVF_RXD_LEGACY_L2TAG1P_M BIT(2);
#define IAVF_RXD_LEGACY_L3L4P_M BIT(3);
#define IAVF_RXD_LEGACY_IPV6EXADD_M BIT(15);
#define IAVF_RXD_LEGACY_RXE_M BIT(19);
#define IAVF_RXD_LEGACY_IPE_M BIT(22);
#define IAVF_RXD_LEGACY_L4E_M BIT(23);
#define IAVF_RXD_LEGACY_EIPE_M BIT(24);
#define IAVF_RXD_LEGACY_PPRS_M BIT(26);
#define IAVF_RXD_LEGACY_FLTSTAT_M GENMASK_ULL(13, 12);
#define IAVF_RXD_LEGACY_PTYPE_M GENMASK_ULL(37, 30);
#define IAVF_RXD_LEGACY_LENGTH_M GENMASK_ULL(51, 38);
#define IAVF_RXD_FLEX_DD_M BIT(0);
#define IAVF_RXD_FLEX_EOP_M BIT(1);
#define IAVF_RXD_FLEX_L3L4P_M BIT(3);
#define IAVF_RXD_FLEX_XSUM_IPE_M BIT(4);
#define IAVF_RXD_FLEX_XSUM_L4E_M BIT(5);
#define IAVF_RXD_FLEX_XSUM_EIPE_M BIT(6);
#define IAVF_RXD_FLEX_XSUM_EUDPE_M BIT(7);
#define IAVF_RXD_FLEX_IPV6EXADD_M BIT(9);
#define IAVF_RXD_FLEX_RXE_M BIT(10);
#define IAVF_RXD_FLEX_RSS_VALID_M BIT(12);
#define IAVF_RXD_FLEX_L2TAG1P_M BIT(13);
#define IAVF_RXD_FLEX_L2TAG1_M GENMASK_ULL(31, 16);
#define IAVF_RXD_FLEX_RSS_HASH_M GENMASK_ULL(63, 32);
aligned_le64 qw2;
#define IAVF_RXD_LEGACY_L2TAG2P_M BIT(0);
#define IAVF_RXD_LEGACY_L2TAG2_M GENMASK_ULL(63, 48);
#define IAVF_RXD_FLEX_L2TAG2_2_M GENMASK_ULL(63, 48);
#define IAVF_RXD_FLEX_NAT_M BIT(4);
#define IAVF_RXD_FLEX_L2TAG2P_M BIT(11);
aligned_le64 qw3;
#define IAVF_RXD_FLEX_QW3_TSTAMP_HIGH_M GENMASK_ULL(63, 32);
};
likeβ¦ look at all those masks. she contains multitudes. π
π Members π
four quad words, two whole personalities each. let's get into it π«Ά
qw0β quad word 0 fields, bestie. Legacy: Descriptor Type; Mirror ID; L2TAG1P (S-TAG); Filter Status. Flex: Descriptor Type; Mirror ID; UMBCAST; Packet Type; Flexible Flags Section 0; Packet Length; Header Length; Split Header Flag; Flexible Flags section 1 / Extended Status. π that's a lot of fields for one quad word and honestly she's serving.qw1β quad word 1 fields, periodt. Legacy: Status Field; Error Field; Packet Type; Packet Length (packet, header, Split Header Flag). Flex: Status / Error 0 Field; L2TAG1P (S-TAG); Flexible Metadata Container #0; Flexible Metadata Container #1. see how the flex side has containers? fancy. πqw2β quad word 2 fields, no cap. Legacy: Extended Status; 1st L2TAG2P (C-TAG); 2nd L2TAG2P (C-TAG). Flex: Status / Error 1 Field; Flexible Flags section 2; Timestamp Low; 1st L2TAG2 (C-TAG); 2nd L2TAG2 (C-TAG). two C-TAGs?? she's double-tagging, iconic. πqw3β quad word 3 fields, and this is the one. Legacy: FD Filter ID / Flexible Bytes. Flex: Flexible Metadata Container #2; Flexible Metadata Container #3; Flexible Metadata Container #4 / Timestamp High 0; Flexible Metadata Container #5 / Timestamp High 1. the way she multiplexes metadata containers with timestampsβ¦ lowkey obsessed. β¨
ngl the legacy/flex split is literally the whole vibe of this struct β same quad words, completely different field maps depending on which mode you're in. don't mix 'em up, bestie, iykyk. π
π₯ SEE ALSO π₯
the source of truth, the origin story, the blueprint:
- Kernel file
./drivers/net/ethernet/intel/iavf/iavf_type.h
okay that's the whole page, you ate that π and if you want the receipts, this one lives over in ./drivers/net/ethernet/intel/iavf, dated October 2026. mwah, go read some 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