STRUCT ETHTOOL_TS_INFO(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

🌸 struct ethtool_ts_info(9) 🌸

okay so bestie, welcome to the Kernel API Manual page for struct ethtool_ts_info(9) β€” yes it's a mouthful, yes it's iconic, and yes we're gonna get through it together πŸ’…


✨ NAME ✨

struct ethtool_ts_info β€” literally the struct that holds a device's timestamping info and its PHC association. two things, one struct, main character energy πŸŽ€


✨ SYNOPSIS ✨

struct ethtool_ts_info {
    __u32 cmd;
    __u32 so_timestamping;
    __s32 phc_index;
    __u32 tx_types;
    __u32 tx_reserved[3];
    __u32 rx_filters;
    __u32 rx_reserved[3];
 };

like… look at her. all those __u32s and that one lonely __s32. she's serving structure, she's serving bit masks πŸ¦‹


πŸ’– Members πŸ’–

  • cmd β€” the command number, and it equals ETHTOOL_GET_TS_INFO. that's it, that's the field, she's just here to announce herself ✨
  • so_timestamping β€” a bit mask of the sum of the supported SO_TIMESTAMPING flags. it's giving "add up all my little flags and put them in a bag" πŸ“
  • phc_index β€” the device index of the associated PHC. and if there is none? it's -1, bestie. ghosted. πŸ’€
  • tx_types β€” a bit mask of the supported hwtstamp_tx_types enumeration values. iykyk πŸ‘‘
  • tx_reserved β€” Reserved for future use; see the note on reserved space. it's a holding pen for future lore πŸ™ˆ
  • rx_filters β€” a bit mask of the supported hwtstamp_rx_filters enumeration values. the receiving-side twin, we stan a matched set 🌈
  • rx_reserved β€” Reserved for future use; see the note on reserved space. same holding pen, receiving department ⭐

🌸 Description 🌸

so here's the vibe check. the bits in the 'tx_types' and 'rx_filters' fields correspond to the 'hwtstamp_tx_types' and 'hwtstamp_rx_filters' enumeration values, respectively β€” like one-to-one, no cap. πŸ’œ

and for example, if the device supports HWTSTAMP_TX_ON, then (1 << HWTSTAMP_TX_ON) in 'tx_types' will be set. that's the whole bit-shift moment, she ate πŸ”₯

okay and this part is the real one, listen up: drivers should only report the filters they actually support without upscaling in the SIOCSHWTSTAMP ioctl. do not be out here reporting things you don't do, it's not cute.

like, if the SIOCSHWSTAMP request for HWTSTAMP_FILTER_V1_SYNC is supported by HWTSTAMP_FILTER_V1_EVENT, then the driver should only report HWTSTAMP_FILTER_V1_EVENT in this op. ngl that's the rule, follow it 🫢


🧚 SEE ALSO 🧚

first up, the kernel file itself: ./include/uapi/linux/ethtool.h ✨

and then, bestie… brace yourself, because the friend group is extensive:

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_indir(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_per_queue_op(9), struct ethtool_fecparam(9), enum ethtool_fec_config_bits(9), struct ethtool_link_settings(9), enum phy_upstream(9)

like i said. extensive. every single one of them is linked and every single one of them matters πŸ’–


and that's the page, bestie!! πŸŽ€ this lil manpage lives in ./include/uapi/linux, dated October 2026, and it belongs to struct ethtool_ts_info(9) in the Kernel API Manual. go forth and report only the filters you actually support πŸ’…βœ¨

πŸ“¦ where this page comes from