STRUCT PPE_RSS_HASH_CFG(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

✨ 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