STRUCT ETHTOOL_RXFH_INDIR(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ¦‹ struct ethtool_rxfh_indir(9) β€” the kernel API manual, bestie edition πŸ¦‹

Okay so this is a page from the Kernel API Manual (section 9, the kernel-flavored one), and honestly? It's a little struct with big main character energy. Let's get into it πŸ’…


✨ NAME ✨

struct ethtool_rxfh_indir β€” the command to get or set the RX flow hash indirection. Yep. That's the whole vibe. πŸŽ€


🌸 SYNOPSIS 🌸

struct ethtool_rxfh_indir {
    __u32 cmd;
    __u32 size;
    __u32 ring_index[];
};

Look at her. Three members, one of them a flexible array. Iconic. ✨


πŸ’– Members πŸ’–

  • cmd β€” the specific command number you're rolling with. It's either ETHTOOL_GRXFHINDIR (the "get" girlie) or ETHTOOL_SRXFHINDIR (the "set" girlie). Pick one, no cap. 🫢
  • size β€” okay so this one's a two-way street, pay attention:
    • on entry, it's the array size of the user buffer, and it may be zero πŸ‘€
    • on return from ETHTOOL_GRXFHINDIR, it becomes the array size of the hardware indirection table
  • ring_index β€” the RX ring/queue index for each hash value. One per hash value. That's the whole job. πŸ’…

πŸ”₯ Description πŸ”₯

So for ETHTOOL_GRXFHINDIR, a size of zero means only the size should be returned β€” like, you're just asking "how big is it?" and the kernel tells you, that's it, nothing else, periodt. πŸŽ€

For ETHTOOL_SRXFHINDIR, a size of zero means the table gets reset to default values. Little reset button behavior. Cute!

⚠️ But bestie, listen β€” that last feature? The zero-size reset? It's not supported by the original implementations. So if you're out here on some vintage driver expecting it to work, it's giving delusion 😭. Don't say I didn't warn you.

🌈 SEE ALSO 🌈

The kernel file itself lives at ./include/uapi/linux/ethtool.h, and then there's this whole entourage of related pages β€” every single one, in order, because we don't skip anyone in this house πŸ‘‘

  • struct ethtool_cmd(9)
  • struct ethtool_drvinfo(9)
  • struct ethtool_wolinfo(9)
  • struct ethtool_regs(9)
  • struct ethtool_eeprom(9)
  • struct ethtool_eee(9)
  • struct ethtool_modinfo(9)
  • struct ethtool_coalesce(9)
  • struct ethtool_ringparam(9)
  • struct ethtool_channels(9)
  • struct ethtool_pauseparam(9)
  • enum ethtool_stringset(9)
  • enum ethtool_mac_stats_src(9)
  • enum ethtool_module_power_mode_policy(9)
  • enum ethtool_module_power_mode(9)
  • enum ethtool_c33_pse_ext_state(9)
  • enum ethtool_c33_pse_ext_substate_mr_mps_valid(9)
  • enum ethtool_c33_pse_ext_substate_error_condition(9)
  • enum ethtool_c33_pse_ext_substate_mr_pse_enable(9)
  • enum ethtool_c33_pse_ext_substate_option_detect_ted(9)
  • enum ethtool_c33_pse_ext_substate_option_vport_lim(9)
  • enum ethtool_c33_pse_ext_substate_ovld_detected(9)
  • enum ethtool_c33_pse_ext_substate_power_not_available(9)
  • enum ethtool_c33_pse_ext_substate_short_detected(9)
  • enum ethtool_pse_types(9)
  • enum ethtool_c33_pse_admin_state(9)
  • enum ethtool_c33_pse_pw_d_status(9)
  • enum ethtool_podl_pse_admin_state(9)
  • enum ethtool_podl_pse_pw_d_status(9)
  • enum ethtool_mm_verify_status(9)
  • enum ethtool_module_fw_flash_status(9)
  • struct ethtool_gstrings(9)
  • struct ethtool_sset_info(9)
  • enum ethtool_test_flags(9)
  • struct ethtool_test(9)
  • struct ethtool_stats(9)
  • struct ethtool_perm_addr(9)
  • struct ethtool_tcpip4_spec(9)
  • struct ethtool_ah_espip4_spec(9)
  • struct ethtool_usrip4_spec(9)
  • struct ethtool_tcpip6_spec(9)
  • struct ethtool_ah_espip6_spec(9)
  • struct ethtool_usrip6_spec(9)
  • struct ethtool_flow_ext(9)
  • struct ethtool_rx_flow_spec(9)
  • struct ethtool_rxnfc(9)
  • struct ethtool_rxfh(9)
  • struct ethtool_rx_ntuple_flow_spec(9)
  • struct ethtool_rx_ntuple(9)
  • struct ethtool_dump(9)
  • struct ethtool_get_features_block(9)
  • struct ethtool_gfeatures(9)
  • struct ethtool_set_features_block(9)
  • struct ethtool_sfeatures(9)
  • struct ethtool_ts_info(9)
  • struct ethtool_per_queue_op(9)
  • struct ethtool_fecparam(9)
  • enum ethtool_fec_config_bits(9)
  • struct ethtool_link_settings(9)
  • enum phy_upstream(9)

That's the whole page, bestie β€” no notes, no crumbs, we ate πŸ’…βœ¨

πŸ’– sign-off time πŸ’– β€” this little masterpiece comes from ./include/uapi/linux, dated October 2026, and it's filed under struct ethtool_rxfh_indir(9). Go forth and hash your flows correctly, ily πŸ«ΆπŸŽ€

πŸ“¦ where this page comes from