STRUCT PPE_RSS_HASH_CFG(9)
β¨ struct ppe_rss_hash_cfg β PPE RSS hash configuration β¨
Okay bestie, sit down, because we're talking about struct ppe_rss_hash_cfg(9) from the Kernel API Manual, and it's literally the blueprint for how your PPE (packet processing engine, iykyk) builds an RSS hash. π It's giving "configuration struct that decides everything," and honestly? Obsessed.
πΈ SYNOPSIS πΈ
Like, here's the whole vibe, character for character:
struct ppe_rss_hash_cfg {
u32 hash_mask;
bool hash_fragment_mode;
u32 hash_seed;
u8 hash_sip_mix[PPE_RSS_HASH_IP_LENGTH];
u8 hash_dip_mix[PPE_RSS_HASH_IP_LENGTH];
u8 hash_protocol_mix;
u8 hash_sport_mix;
u8 hash_dport_mix;
u8 hash_fin_inner[PPE_RSS_HASH_TUPLES];
u8 hash_fin_outer[PPE_RSS_HASH_TUPLES];
};
No cap, that's the entire struct. Every field matters, so let's get into it π
π¦ Members π¦
hash_maskβ the mask of the generated hash value. It's the filter, the moment of truth, the "what actually makes it through" of it all πhash_fragment_modeβ the hash generation mode for the first fragment of TCP, UDP and UDP-Lite packets, so you can use either 3 tuple or 5 tuple for the RSS hash key computation. Pick your fighter, bestie π₯hash_seedβ the seed used to generate the RSS hash. It's literally the β¨origin storyβ¨ of your hash.hash_sip_mixβ source IP selection. Yup, that one π«Άhash_dip_mixβ destination IP selection. The other half of the IP duo πhash_protocol_mixβ protocol selection. Which protocol is main character today? π€hash_sport_mixβ source L4 port selection. Port rights! πhash_dport_mixβ destination L4 port selection. Equally iconic, obviously πhash_fin_innerβ RSS hash value first selection. First!! πhash_fin_outerβ RSS hash value second selection. Second, but never second-best π
π Description π
So here's the tea: the PPE RSS hash value gets generated for the packet based on the RSS hash configured. That's it, that's the whole story β the packet rolls in, the config says what goes into the hash, and the hash happens β¨π₯ No extra lore, no secret bonus behaviour, that's genuinely it.
π« SEE ALSO π«
Go read these next, bestie, they're all in the kernel file ./drivers/net/ethernet/qualcomm/ppe/ppe_config.h and they're all lowkey essential:
enum ppe_scheduler_frame_mode(9)struct ppe_scheduler_cfg(9)enum ppe_resource_type(9)struct ppe_queue_ucast_dest(9)struct ppe_sc_bypass(9)struct ppe_sc_cfg(9)enum ppe_action_type(9)
π Real talk though: this page is from ./drivers/net/ethernet/qualcom... and it's dated October 2026, so if you're reading this on some ancient kernel, do a little vibe check first, mkay?
That's the whole page, bestie β you ate that ππ§π
π¦ 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