ethtool_opsRegular
4.4: ✅struct ethtool_ops {
int (*get_settings)(struct net_device *, struct ethtool_cmd *);
int (*set_settings)(struct net_device *, struct ethtool_cmd *);
void (*get_drvinfo)(struct net_device *, struct ethtool_drvinfo *);
int (*get_regs_len)(struct net_device *);
void (*get_regs)(struct net_device *, struct ethtool_regs *, void *);
void (*get_wol)(struct net_device *, struct ethtool_wolinfo *);
int (*set_wol)(struct net_device *, struct ethtool_wolinfo *);
u32 (*get_msglevel)(struct net_device *);
void (*set_msglevel)(struct net_device *, u32);
int (*nway_reset)(struct net_device *);
u32 (*get_link)(struct net_device *);
int (*get_eeprom_len)(struct net_device *);
int (*get_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *);
int (*set_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *);
int (*get_coalesce)(struct net_device *, struct ethtool_coalesce *);
int (*set_coalesce)(struct net_device *, struct ethtool_coalesce *);
void (*get_ringparam)(struct net_device *, struct ethtool_ringparam *);
int (*set_ringparam)(struct net_device *, struct ethtool_ringparam *);
void (*get_pauseparam)(struct net_device *, struct ethtool_pauseparam *);
int (*set_pauseparam)(struct net_device *, struct ethtool_pauseparam *);
void (*self_test)(struct net_device *, struct ethtool_test *, u64 *);
void (*get_strings)(struct net_device *, u32, u8 *);
int (*set_phys_id)(struct net_device *, enum ethtool_phys_id_state);
void (*get_ethtool_stats)(struct net_device *, struct ethtool_stats *, u64 *);
int (*begin)(struct net_device *);
void (*complete)(struct net_device *);
u32 (*get_priv_flags)(struct net_device *);
int (*set_priv_flags)(struct net_device *, u32);
int (*get_sset_count)(struct net_device *, int);
int (*get_rxnfc)(struct net_device *, struct ethtool_rxnfc *, u32 *);
int (*set_rxnfc)(struct net_device *, struct ethtool_rxnfc *);
int (*flash_device)(struct net_device *, struct ethtool_flash *);
int (*reset)(struct net_device *, u32 *);
u32 (*get_rxfh_key_size)(struct net_device *);
u32 (*get_rxfh_indir_size)(struct net_device *);
int (*get_rxfh)(struct net_device *, u32 *, u8 *, u8 *);
int (*set_rxfh)(struct net_device *, const u32 *, const u8 *, const u8);
void (*get_channels)(struct net_device *, struct ethtool_channels *);
int (*set_channels)(struct net_device *, struct ethtool_channels *);
int (*get_dump_flag)(struct net_device *, struct ethtool_dump *);
int (*get_dump_data)(struct net_device *, struct ethtool_dump *, void *);
int (*set_dump)(struct net_device *, struct ethtool_dump *);
int (*get_ts_info)(struct net_device *, struct ethtool_ts_info *);
int (*get_module_info)(struct net_device *, struct ethtool_modinfo *);
int (*get_module_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *);
int (*get_eee)(struct net_device *, struct ethtool_eee *);
int (*set_eee)(struct net_device *, struct ethtool_eee *);
int (*get_tunable)(struct net_device *, const struct ethtool_tunable *, void *);
int (*set_tunable)(struct net_device *, const struct ethtool_tunable *, const void *);
};
4.8: ✅struct ethtool_ops {
int (*get_settings)(struct net_device *, struct ethtool_cmd *);
int (*set_settings)(struct net_device *, struct ethtool_cmd *);
void (*get_drvinfo)(struct net_device *, struct ethtool_drvinfo *);
int (*get_regs_len)(struct net_device *);
void (*get_regs)(struct net_device *, struct ethtool_regs *, void *);
void (*get_wol)(struct net_device *, struct ethtool_wolinfo *);
int (*set_wol)(struct net_device *, struct ethtool_wolinfo *);
u32 (*get_msglevel)(struct net_device *);
void (*set_msglevel)(struct net_device *, u32);
int (*nway_reset)(struct net_device *);
u32 (*get_link)(struct net_device *);
int (*get_eeprom_len)(struct net_device *);
int (*get_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *);
int (*set_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *);
int (*get_coalesce)(struct net_device *, struct ethtool_coalesce *);
int (*set_coalesce)(struct net_device *, struct ethtool_coalesce *);
void (*get_ringparam)(struct net_device *, struct ethtool_ringparam *);
int (*set_ringparam)(struct net_device *, struct ethtool_ringparam *);
void (*get_pauseparam)(struct net_device *, struct ethtool_pauseparam *);
int (*set_pauseparam)(struct net_device *, struct ethtool_pauseparam *);
void (*self_test)(struct net_device *, struct ethtool_test *, u64 *);
void (*get_strings)(struct net_device *, u32, u8 *);
int (*set_phys_id)(struct net_device *, enum ethtool_phys_id_state);
void (*get_ethtool_stats)(struct net_device *, struct ethtool_stats *, u64 *);
int (*begin)(struct net_device *);
void (*complete)(struct net_device *);
u32 (*get_priv_flags)(struct net_device *);
int (*set_priv_flags)(struct net_device *, u32);
int (*get_sset_count)(struct net_device *, int);
int (*get_rxnfc)(struct net_device *, struct ethtool_rxnfc *, u32 *);
int (*set_rxnfc)(struct net_device *, struct ethtool_rxnfc *);
int (*flash_device)(struct net_device *, struct ethtool_flash *);
int (*reset)(struct net_device *, u32 *);
u32 (*get_rxfh_key_size)(struct net_device *);
u32 (*get_rxfh_indir_size)(struct net_device *);
int (*get_rxfh)(struct net_device *, u32 *, u8 *, u8 *);
int (*set_rxfh)(struct net_device *, const u32 *, const u8 *, const u8);
void (*get_channels)(struct net_device *, struct ethtool_channels *);
int (*set_channels)(struct net_device *, struct ethtool_channels *);
int (*get_dump_flag)(struct net_device *, struct ethtool_dump *);
int (*get_dump_data)(struct net_device *, struct ethtool_dump *, void *);
int (*set_dump)(struct net_device *, struct ethtool_dump *);
int (*get_ts_info)(struct net_device *, struct ethtool_ts_info *);
int (*get_module_info)(struct net_device *, struct ethtool_modinfo *);
int (*get_module_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *);
int (*get_eee)(struct net_device *, struct ethtool_eee *);
int (*set_eee)(struct net_device *, struct ethtool_eee *);
int (*get_tunable)(struct net_device *, const struct ethtool_tunable *, void *);
int (*set_tunable)(struct net_device *, const struct ethtool_tunable *, const void *);
int (*get_per_queue_coalesce)(struct net_device *, u32, struct ethtool_coalesce *);
int (*set_per_queue_coalesce)(struct net_device *, u32, struct ethtool_coalesce *);
int (*get_link_ksettings)(struct net_device *, struct ethtool_link_ksettings *);
int (*set_link_ksettings)(struct net_device *, const struct ethtool_link_ksettings *);
};
4.10: ✅struct ethtool_ops {
int (*get_settings)(struct net_device *, struct ethtool_cmd *);
int (*set_settings)(struct net_device *, struct ethtool_cmd *);
void (*get_drvinfo)(struct net_device *, struct ethtool_drvinfo *);
int (*get_regs_len)(struct net_device *);
void (*get_regs)(struct net_device *, struct ethtool_regs *, void *);
void (*get_wol)(struct net_device *, struct ethtool_wolinfo *);
int (*set_wol)(struct net_device *, struct ethtool_wolinfo *);
u32 (*get_msglevel)(struct net_device *);
void (*set_msglevel)(struct net_device *, u32);
int (*nway_reset)(struct net_device *);
u32 (*get_link)(struct net_device *);
int (*get_eeprom_len)(struct net_device *);
int (*get_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *);
int (*set_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *);
int (*get_coalesce)(struct net_device *, struct ethtool_coalesce *);
int (*set_coalesce)(struct net_device *, struct ethtool_coalesce *);
void (*get_ringparam)(struct net_device *, struct ethtool_ringparam *);
int (*set_ringparam)(struct net_device *, struct ethtool_ringparam *);
void (*get_pauseparam)(struct net_device *, struct ethtool_pauseparam *);
int (*set_pauseparam)(struct net_device *, struct ethtool_pauseparam *);
void (*self_test)(struct net_device *, struct ethtool_test *, u64 *);
void (*get_strings)(struct net_device *, u32, u8 *);
int (*set_phys_id)(struct net_device *, enum ethtool_phys_id_state);
void (*get_ethtool_stats)(struct net_device *, struct ethtool_stats *, u64 *);
int (*begin)(struct net_device *);
void (*complete)(struct net_device *);
u32 (*get_priv_flags)(struct net_device *);
int (*set_priv_flags)(struct net_device *, u32);
int (*get_sset_count)(struct net_device *, int);
int (*get_rxnfc)(struct net_device *, struct ethtool_rxnfc *, u32 *);
int (*set_rxnfc)(struct net_device *, struct ethtool_rxnfc *);
int (*flash_device)(struct net_device *, struct ethtool_flash *);
int (*reset)(struct net_device *, u32 *);
u32 (*get_rxfh_key_size)(struct net_device *);
u32 (*get_rxfh_indir_size)(struct net_device *);
int (*get_rxfh)(struct net_device *, u32 *, u8 *, u8 *);
int (*set_rxfh)(struct net_device *, const u32 *, const u8 *, const u8);
void (*get_channels)(struct net_device *, struct ethtool_channels *);
int (*set_channels)(struct net_device *, struct ethtool_channels *);
int (*get_dump_flag)(struct net_device *, struct ethtool_dump *);
int (*get_dump_data)(struct net_device *, struct ethtool_dump *, void *);
int (*set_dump)(struct net_device *, struct ethtool_dump *);
int (*get_ts_info)(struct net_device *, struct ethtool_ts_info *);
int (*get_module_info)(struct net_device *, struct ethtool_modinfo *);
int (*get_module_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *);
int (*get_eee)(struct net_device *, struct ethtool_eee *);
int (*set_eee)(struct net_device *, struct ethtool_eee *);
int (*get_tunable)(struct net_device *, const struct ethtool_tunable *, void *);
int (*set_tunable)(struct net_device *, const struct ethtool_tunable *, const void *);
int (*get_per_queue_coalesce)(struct net_device *, u32, struct ethtool_coalesce *);
int (*set_per_queue_coalesce)(struct net_device *, u32, struct ethtool_coalesce *);
int (*get_link_ksettings)(struct net_device *, struct ethtool_link_ksettings *);
int (*set_link_ksettings)(struct net_device *, const struct ethtool_link_ksettings *);
};
4.13: ✅struct ethtool_ops {
int (*get_settings)(struct net_device *, struct ethtool_cmd *);
int (*set_settings)(struct net_device *, struct ethtool_cmd *);
void (*get_drvinfo)(struct net_device *, struct ethtool_drvinfo *);
int (*get_regs_len)(struct net_device *);
void (*get_regs)(struct net_device *, struct ethtool_regs *, void *);
void (*get_wol)(struct net_device *, struct ethtool_wolinfo *);
int (*set_wol)(struct net_device *, struct ethtool_wolinfo *);
u32 (*get_msglevel)(struct net_device *);
void (*set_msglevel)(struct net_device *, u32);
int (*nway_reset)(struct net_device *);
u32 (*get_link)(struct net_device *);
int (*get_eeprom_len)(struct net_device *);
int (*get_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *);
int (*set_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *);
int (*get_coalesce)(struct net_device *, struct ethtool_coalesce *);
int (*set_coalesce)(struct net_device *, struct ethtool_coalesce *);
void (*get_ringparam)(struct net_device *, struct ethtool_ringparam *);
int (*set_ringparam)(struct net_device *, struct ethtool_ringparam *);
void (*get_pauseparam)(struct net_device *, struct ethtool_pauseparam *);
int (*set_pauseparam)(struct net_device *, struct ethtool_pauseparam *);
void (*self_test)(struct net_device *, struct ethtool_test *, u64 *);
void (*get_strings)(struct net_device *, u32, u8 *);
int (*set_phys_id)(struct net_device *, enum ethtool_phys_id_state);
void (*get_ethtool_stats)(struct net_device *, struct ethtool_stats *, u64 *);
int (*begin)(struct net_device *);
void (*complete)(struct net_device *);
u32 (*get_priv_flags)(struct net_device *);
int (*set_priv_flags)(struct net_device *, u32);
int (*get_sset_count)(struct net_device *, int);
int (*get_rxnfc)(struct net_device *, struct ethtool_rxnfc *, u32 *);
int (*set_rxnfc)(struct net_device *, struct ethtool_rxnfc *);
int (*flash_device)(struct net_device *, struct ethtool_flash *);
int (*reset)(struct net_device *, u32 *);
u32 (*get_rxfh_key_size)(struct net_device *);
u32 (*get_rxfh_indir_size)(struct net_device *);
int (*get_rxfh)(struct net_device *, u32 *, u8 *, u8 *);
int (*set_rxfh)(struct net_device *, const u32 *, const u8 *, const u8);
void (*get_channels)(struct net_device *, struct ethtool_channels *);
int (*set_channels)(struct net_device *, struct ethtool_channels *);
int (*get_dump_flag)(struct net_device *, struct ethtool_dump *);
int (*get_dump_data)(struct net_device *, struct ethtool_dump *, void *);
int (*set_dump)(struct net_device *, struct ethtool_dump *);
int (*get_ts_info)(struct net_device *, struct ethtool_ts_info *);
int (*get_module_info)(struct net_device *, struct ethtool_modinfo *);
int (*get_module_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *);
int (*get_eee)(struct net_device *, struct ethtool_eee *);
int (*set_eee)(struct net_device *, struct ethtool_eee *);
int (*get_tunable)(struct net_device *, const struct ethtool_tunable *, void *);
int (*set_tunable)(struct net_device *, const struct ethtool_tunable *, const void *);
int (*get_per_queue_coalesce)(struct net_device *, u32, struct ethtool_coalesce *);
int (*set_per_queue_coalesce)(struct net_device *, u32, struct ethtool_coalesce *);
int (*get_link_ksettings)(struct net_device *, struct ethtool_link_ksettings *);
int (*set_link_ksettings)(struct net_device *, const struct ethtool_link_ksettings *);
};
4.15: ✅struct ethtool_ops {
int (*get_settings)(struct net_device *, struct ethtool_cmd *);
int (*set_settings)(struct net_device *, struct ethtool_cmd *);
void (*get_drvinfo)(struct net_device *, struct ethtool_drvinfo *);
int (*get_regs_len)(struct net_device *);
void (*get_regs)(struct net_device *, struct ethtool_regs *, void *);
void (*get_wol)(struct net_device *, struct ethtool_wolinfo *);
int (*set_wol)(struct net_device *, struct ethtool_wolinfo *);
u32 (*get_msglevel)(struct net_device *);
void (*set_msglevel)(struct net_device *, u32);
int (*nway_reset)(struct net_device *);
u32 (*get_link)(struct net_device *);
int (*get_eeprom_len)(struct net_device *);
int (*get_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *);
int (*set_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *);
int (*get_coalesce)(struct net_device *, struct ethtool_coalesce *);
int (*set_coalesce)(struct net_device *, struct ethtool_coalesce *);
void (*get_ringparam)(struct net_device *, struct ethtool_ringparam *);
int (*set_ringparam)(struct net_device *, struct ethtool_ringparam *);
void (*get_pauseparam)(struct net_device *, struct ethtool_pauseparam *);
int (*set_pauseparam)(struct net_device *, struct ethtool_pauseparam *);
void (*self_test)(struct net_device *, struct ethtool_test *, u64 *);
void (*get_strings)(struct net_device *, u32, u8 *);
int (*set_phys_id)(struct net_device *, enum ethtool_phys_id_state);
void (*get_ethtool_stats)(struct net_device *, struct ethtool_stats *, u64 *);
int (*begin)(struct net_device *);
void (*complete)(struct net_device *);
u32 (*get_priv_flags)(struct net_device *);
int (*set_priv_flags)(struct net_device *, u32);
int (*get_sset_count)(struct net_device *, int);
int (*get_rxnfc)(struct net_device *, struct ethtool_rxnfc *, u32 *);
int (*set_rxnfc)(struct net_device *, struct ethtool_rxnfc *);
int (*flash_device)(struct net_device *, struct ethtool_flash *);
int (*reset)(struct net_device *, u32 *);
u32 (*get_rxfh_key_size)(struct net_device *);
u32 (*get_rxfh_indir_size)(struct net_device *);
int (*get_rxfh)(struct net_device *, u32 *, u8 *, u8 *);
int (*set_rxfh)(struct net_device *, const u32 *, const u8 *, const u8);
void (*get_channels)(struct net_device *, struct ethtool_channels *);
int (*set_channels)(struct net_device *, struct ethtool_channels *);
int (*get_dump_flag)(struct net_device *, struct ethtool_dump *);
int (*get_dump_data)(struct net_device *, struct ethtool_dump *, void *);
int (*set_dump)(struct net_device *, struct ethtool_dump *);
int (*get_ts_info)(struct net_device *, struct ethtool_ts_info *);
int (*get_module_info)(struct net_device *, struct ethtool_modinfo *);
int (*get_module_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *);
int (*get_eee)(struct net_device *, struct ethtool_eee *);
int (*set_eee)(struct net_device *, struct ethtool_eee *);
int (*get_tunable)(struct net_device *, const struct ethtool_tunable *, void *);
int (*set_tunable)(struct net_device *, const struct ethtool_tunable *, const void *);
int (*get_per_queue_coalesce)(struct net_device *, u32, struct ethtool_coalesce *);
int (*set_per_queue_coalesce)(struct net_device *, u32, struct ethtool_coalesce *);
int (*get_link_ksettings)(struct net_device *, struct ethtool_link_ksettings *);
int (*set_link_ksettings)(struct net_device *, const struct ethtool_link_ksettings *);
int (*get_fecparam)(struct net_device *, struct ethtool_fecparam *);
int (*set_fecparam)(struct net_device *, struct ethtool_fecparam *);
};
4.18: ✅struct ethtool_ops {
int (*get_settings)(struct net_device *, struct ethtool_cmd *);
int (*set_settings)(struct net_device *, struct ethtool_cmd *);
void (*get_drvinfo)(struct net_device *, struct ethtool_drvinfo *);
int (*get_regs_len)(struct net_device *);
void (*get_regs)(struct net_device *, struct ethtool_regs *, void *);
void (*get_wol)(struct net_device *, struct ethtool_wolinfo *);
int (*set_wol)(struct net_device *, struct ethtool_wolinfo *);
u32 (*get_msglevel)(struct net_device *);
void (*set_msglevel)(struct net_device *, u32);
int (*nway_reset)(struct net_device *);
u32 (*get_link)(struct net_device *);
int (*get_eeprom_len)(struct net_device *);
int (*get_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *);
int (*set_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *);
int (*get_coalesce)(struct net_device *, struct ethtool_coalesce *);
int (*set_coalesce)(struct net_device *, struct ethtool_coalesce *);
void (*get_ringparam)(struct net_device *, struct ethtool_ringparam *);
int (*set_ringparam)(struct net_device *, struct ethtool_ringparam *);
void (*get_pauseparam)(struct net_device *, struct ethtool_pauseparam *);
int (*set_pauseparam)(struct net_device *, struct ethtool_pauseparam *);
void (*self_test)(struct net_device *, struct ethtool_test *, u64 *);
void (*get_strings)(struct net_device *, u32, u8 *);
int (*set_phys_id)(struct net_device *, enum ethtool_phys_id_state);
void (*get_ethtool_stats)(struct net_device *, struct ethtool_stats *, u64 *);
int (*begin)(struct net_device *);
void (*complete)(struct net_device *);
u32 (*get_priv_flags)(struct net_device *);
int (*set_priv_flags)(struct net_device *, u32);
int (*get_sset_count)(struct net_device *, int);
int (*get_rxnfc)(struct net_device *, struct ethtool_rxnfc *, u32 *);
int (*set_rxnfc)(struct net_device *, struct ethtool_rxnfc *);
int (*flash_device)(struct net_device *, struct ethtool_flash *);
int (*reset)(struct net_device *, u32 *);
u32 (*get_rxfh_key_size)(struct net_device *);
u32 (*get_rxfh_indir_size)(struct net_device *);
int (*get_rxfh)(struct net_device *, u32 *, u8 *, u8 *);
int (*set_rxfh)(struct net_device *, const u32 *, const u8 *, const u8);
int (*get_rxfh_context)(struct net_device *, u32 *, u8 *, u8 *, u32);
int (*set_rxfh_context)(struct net_device *, const u32 *, const u8 *, const u8, u32 *, bool);
void (*get_channels)(struct net_device *, struct ethtool_channels *);
int (*set_channels)(struct net_device *, struct ethtool_channels *);
int (*get_dump_flag)(struct net_device *, struct ethtool_dump *);
int (*get_dump_data)(struct net_device *, struct ethtool_dump *, void *);
int (*set_dump)(struct net_device *, struct ethtool_dump *);
int (*get_ts_info)(struct net_device *, struct ethtool_ts_info *);
int (*get_module_info)(struct net_device *, struct ethtool_modinfo *);
int (*get_module_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *);
int (*get_eee)(struct net_device *, struct ethtool_eee *);
int (*set_eee)(struct net_device *, struct ethtool_eee *);
int (*get_tunable)(struct net_device *, const struct ethtool_tunable *, void *);
int (*set_tunable)(struct net_device *, const struct ethtool_tunable *, const void *);
int (*get_per_queue_coalesce)(struct net_device *, u32, struct ethtool_coalesce *);
int (*set_per_queue_coalesce)(struct net_device *, u32, struct ethtool_coalesce *);
int (*get_link_ksettings)(struct net_device *, struct ethtool_link_ksettings *);
int (*set_link_ksettings)(struct net_device *, const struct ethtool_link_ksettings *);
int (*get_fecparam)(struct net_device *, struct ethtool_fecparam *);
int (*set_fecparam)(struct net_device *, struct ethtool_fecparam *);
void (*get_ethtool_phy_stats)(struct net_device *, struct ethtool_stats *, u64 *);
};
5.0: ✅struct ethtool_ops {
void (*get_drvinfo)(struct net_device *, struct ethtool_drvinfo *);
int (*get_regs_len)(struct net_device *);
void (*get_regs)(struct net_device *, struct ethtool_regs *, void *);
void (*get_wol)(struct net_device *, struct ethtool_wolinfo *);
int (*set_wol)(struct net_device *, struct ethtool_wolinfo *);
u32 (*get_msglevel)(struct net_device *);
void (*set_msglevel)(struct net_device *, u32);
int (*nway_reset)(struct net_device *);
u32 (*get_link)(struct net_device *);
int (*get_eeprom_len)(struct net_device *);
int (*get_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *);
int (*set_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *);
int (*get_coalesce)(struct net_device *, struct ethtool_coalesce *);
int (*set_coalesce)(struct net_device *, struct ethtool_coalesce *);
void (*get_ringparam)(struct net_device *, struct ethtool_ringparam *);
int (*set_ringparam)(struct net_device *, struct ethtool_ringparam *);
void (*get_pauseparam)(struct net_device *, struct ethtool_pauseparam *);
int (*set_pauseparam)(struct net_device *, struct ethtool_pauseparam *);
void (*self_test)(struct net_device *, struct ethtool_test *, u64 *);
void (*get_strings)(struct net_device *, u32, u8 *);
int (*set_phys_id)(struct net_device *, enum ethtool_phys_id_state);
void (*get_ethtool_stats)(struct net_device *, struct ethtool_stats *, u64 *);
int (*begin)(struct net_device *);
void (*complete)(struct net_device *);
u32 (*get_priv_flags)(struct net_device *);
int (*set_priv_flags)(struct net_device *, u32);
int (*get_sset_count)(struct net_device *, int);
int (*get_rxnfc)(struct net_device *, struct ethtool_rxnfc *, u32 *);
int (*set_rxnfc)(struct net_device *, struct ethtool_rxnfc *);
int (*flash_device)(struct net_device *, struct ethtool_flash *);
int (*reset)(struct net_device *, u32 *);
u32 (*get_rxfh_key_size)(struct net_device *);
u32 (*get_rxfh_indir_size)(struct net_device *);
int (*get_rxfh)(struct net_device *, u32 *, u8 *, u8 *);
int (*set_rxfh)(struct net_device *, const u32 *, const u8 *, const u8);
int (*get_rxfh_context)(struct net_device *, u32 *, u8 *, u8 *, u32);
int (*set_rxfh_context)(struct net_device *, const u32 *, const u8 *, const u8, u32 *, bool);
void (*get_channels)(struct net_device *, struct ethtool_channels *);
int (*set_channels)(struct net_device *, struct ethtool_channels *);
int (*get_dump_flag)(struct net_device *, struct ethtool_dump *);
int (*get_dump_data)(struct net_device *, struct ethtool_dump *, void *);
int (*set_dump)(struct net_device *, struct ethtool_dump *);
int (*get_ts_info)(struct net_device *, struct ethtool_ts_info *);
int (*get_module_info)(struct net_device *, struct ethtool_modinfo *);
int (*get_module_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *);
int (*get_eee)(struct net_device *, struct ethtool_eee *);
int (*set_eee)(struct net_device *, struct ethtool_eee *);
int (*get_tunable)(struct net_device *, const struct ethtool_tunable *, void *);
int (*set_tunable)(struct net_device *, const struct ethtool_tunable *, const void *);
int (*get_per_queue_coalesce)(struct net_device *, u32, struct ethtool_coalesce *);
int (*set_per_queue_coalesce)(struct net_device *, u32, struct ethtool_coalesce *);
int (*get_link_ksettings)(struct net_device *, struct ethtool_link_ksettings *);
int (*set_link_ksettings)(struct net_device *, const struct ethtool_link_ksettings *);
int (*get_fecparam)(struct net_device *, struct ethtool_fecparam *);
int (*set_fecparam)(struct net_device *, struct ethtool_fecparam *);
void (*get_ethtool_phy_stats)(struct net_device *, struct ethtool_stats *, u64 *);
};
5.3: ✅struct ethtool_ops {
void (*get_drvinfo)(struct net_device *, struct ethtool_drvinfo *);
int (*get_regs_len)(struct net_device *);
void (*get_regs)(struct net_device *, struct ethtool_regs *, void *);
void (*get_wol)(struct net_device *, struct ethtool_wolinfo *);
int (*set_wol)(struct net_device *, struct ethtool_wolinfo *);
u32 (*get_msglevel)(struct net_device *);
void (*set_msglevel)(struct net_device *, u32);
int (*nway_reset)(struct net_device *);
u32 (*get_link)(struct net_device *);
int (*get_eeprom_len)(struct net_device *);
int (*get_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *);
int (*set_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *);
int (*get_coalesce)(struct net_device *, struct ethtool_coalesce *);
int (*set_coalesce)(struct net_device *, struct ethtool_coalesce *);
void (*get_ringparam)(struct net_device *, struct ethtool_ringparam *);
int (*set_ringparam)(struct net_device *, struct ethtool_ringparam *);
void (*get_pauseparam)(struct net_device *, struct ethtool_pauseparam *);
int (*set_pauseparam)(struct net_device *, struct ethtool_pauseparam *);
void (*self_test)(struct net_device *, struct ethtool_test *, u64 *);
void (*get_strings)(struct net_device *, u32, u8 *);
int (*set_phys_id)(struct net_device *, enum ethtool_phys_id_state);
void (*get_ethtool_stats)(struct net_device *, struct ethtool_stats *, u64 *);
int (*begin)(struct net_device *);
void (*complete)(struct net_device *);
u32 (*get_priv_flags)(struct net_device *);
int (*set_priv_flags)(struct net_device *, u32);
int (*get_sset_count)(struct net_device *, int);
int (*get_rxnfc)(struct net_device *, struct ethtool_rxnfc *, u32 *);
int (*set_rxnfc)(struct net_device *, struct ethtool_rxnfc *);
int (*flash_device)(struct net_device *, struct ethtool_flash *);
int (*reset)(struct net_device *, u32 *);
u32 (*get_rxfh_key_size)(struct net_device *);
u32 (*get_rxfh_indir_size)(struct net_device *);
int (*get_rxfh)(struct net_device *, u32 *, u8 *, u8 *);
int (*set_rxfh)(struct net_device *, const u32 *, const u8 *, const u8);
int (*get_rxfh_context)(struct net_device *, u32 *, u8 *, u8 *, u32);
int (*set_rxfh_context)(struct net_device *, const u32 *, const u8 *, const u8, u32 *, bool);
void (*get_channels)(struct net_device *, struct ethtool_channels *);
int (*set_channels)(struct net_device *, struct ethtool_channels *);
int (*get_dump_flag)(struct net_device *, struct ethtool_dump *);
int (*get_dump_data)(struct net_device *, struct ethtool_dump *, void *);
int (*set_dump)(struct net_device *, struct ethtool_dump *);
int (*get_ts_info)(struct net_device *, struct ethtool_ts_info *);
int (*get_module_info)(struct net_device *, struct ethtool_modinfo *);
int (*get_module_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *);
int (*get_eee)(struct net_device *, struct ethtool_eee *);
int (*set_eee)(struct net_device *, struct ethtool_eee *);
int (*get_tunable)(struct net_device *, const struct ethtool_tunable *, void *);
int (*set_tunable)(struct net_device *, const struct ethtool_tunable *, const void *);
int (*get_per_queue_coalesce)(struct net_device *, u32, struct ethtool_coalesce *);
int (*set_per_queue_coalesce)(struct net_device *, u32, struct ethtool_coalesce *);
int (*get_link_ksettings)(struct net_device *, struct ethtool_link_ksettings *);
int (*set_link_ksettings)(struct net_device *, const struct ethtool_link_ksettings *);
int (*get_fecparam)(struct net_device *, struct ethtool_fecparam *);
int (*set_fecparam)(struct net_device *, struct ethtool_fecparam *);
void (*get_ethtool_phy_stats)(struct net_device *, struct ethtool_stats *, u64 *);
};
5.4: ✅struct ethtool_ops {
void (*get_drvinfo)(struct net_device *, struct ethtool_drvinfo *);
int (*get_regs_len)(struct net_device *);
void (*get_regs)(struct net_device *, struct ethtool_regs *, void *);
void (*get_wol)(struct net_device *, struct ethtool_wolinfo *);
int (*set_wol)(struct net_device *, struct ethtool_wolinfo *);
u32 (*get_msglevel)(struct net_device *);
void (*set_msglevel)(struct net_device *, u32);
int (*nway_reset)(struct net_device *);
u32 (*get_link)(struct net_device *);
int (*get_eeprom_len)(struct net_device *);
int (*get_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *);
int (*set_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *);
int (*get_coalesce)(struct net_device *, struct ethtool_coalesce *);
int (*set_coalesce)(struct net_device *, struct ethtool_coalesce *);
void (*get_ringparam)(struct net_device *, struct ethtool_ringparam *);
int (*set_ringparam)(struct net_device *, struct ethtool_ringparam *);
void (*get_pauseparam)(struct net_device *, struct ethtool_pauseparam *);
int (*set_pauseparam)(struct net_device *, struct ethtool_pauseparam *);
void (*self_test)(struct net_device *, struct ethtool_test *, u64 *);
void (*get_strings)(struct net_device *, u32, u8 *);
int (*set_phys_id)(struct net_device *, enum ethtool_phys_id_state);
void (*get_ethtool_stats)(struct net_device *, struct ethtool_stats *, u64 *);
int (*begin)(struct net_device *);
void (*complete)(struct net_device *);
u32 (*get_priv_flags)(struct net_device *);
int (*set_priv_flags)(struct net_device *, u32);
int (*get_sset_count)(struct net_device *, int);
int (*get_rxnfc)(struct net_device *, struct ethtool_rxnfc *, u32 *);
int (*set_rxnfc)(struct net_device *, struct ethtool_rxnfc *);
int (*flash_device)(struct net_device *, struct ethtool_flash *);
int (*reset)(struct net_device *, u32 *);
u32 (*get_rxfh_key_size)(struct net_device *);
u32 (*get_rxfh_indir_size)(struct net_device *);
int (*get_rxfh)(struct net_device *, u32 *, u8 *, u8 *);
int (*set_rxfh)(struct net_device *, const u32 *, const u8 *, const u8);
int (*get_rxfh_context)(struct net_device *, u32 *, u8 *, u8 *, u32);
int (*set_rxfh_context)(struct net_device *, const u32 *, const u8 *, const u8, u32 *, bool);
void (*get_channels)(struct net_device *, struct ethtool_channels *);
int (*set_channels)(struct net_device *, struct ethtool_channels *);
int (*get_dump_flag)(struct net_device *, struct ethtool_dump *);
int (*get_dump_data)(struct net_device *, struct ethtool_dump *, void *);
int (*set_dump)(struct net_device *, struct ethtool_dump *);
int (*get_ts_info)(struct net_device *, struct ethtool_ts_info *);
int (*get_module_info)(struct net_device *, struct ethtool_modinfo *);
int (*get_module_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *);
int (*get_eee)(struct net_device *, struct ethtool_eee *);
int (*set_eee)(struct net_device *, struct ethtool_eee *);
int (*get_tunable)(struct net_device *, const struct ethtool_tunable *, void *);
int (*set_tunable)(struct net_device *, const struct ethtool_tunable *, const void *);
int (*get_per_queue_coalesce)(struct net_device *, u32, struct ethtool_coalesce *);
int (*set_per_queue_coalesce)(struct net_device *, u32, struct ethtool_coalesce *);
int (*get_link_ksettings)(struct net_device *, struct ethtool_link_ksettings *);
int (*set_link_ksettings)(struct net_device *, const struct ethtool_link_ksettings *);
int (*get_fecparam)(struct net_device *, struct ethtool_fecparam *);
int (*set_fecparam)(struct net_device *, struct ethtool_fecparam *);
void (*get_ethtool_phy_stats)(struct net_device *, struct ethtool_stats *, u64 *);
};
5.8: ✅struct ethtool_ops {
u32 supported_coalesce_params;
void (*get_drvinfo)(struct net_device *, struct ethtool_drvinfo *);
int (*get_regs_len)(struct net_device *);
void (*get_regs)(struct net_device *, struct ethtool_regs *, void *);
void (*get_wol)(struct net_device *, struct ethtool_wolinfo *);
int (*set_wol)(struct net_device *, struct ethtool_wolinfo *);
u32 (*get_msglevel)(struct net_device *);
void (*set_msglevel)(struct net_device *, u32);
int (*nway_reset)(struct net_device *);
u32 (*get_link)(struct net_device *);
int (*get_eeprom_len)(struct net_device *);
int (*get_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *);
int (*set_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *);
int (*get_coalesce)(struct net_device *, struct ethtool_coalesce *);
int (*set_coalesce)(struct net_device *, struct ethtool_coalesce *);
void (*get_ringparam)(struct net_device *, struct ethtool_ringparam *);
int (*set_ringparam)(struct net_device *, struct ethtool_ringparam *);
void (*get_pauseparam)(struct net_device *, struct ethtool_pauseparam *);
int (*set_pauseparam)(struct net_device *, struct ethtool_pauseparam *);
void (*self_test)(struct net_device *, struct ethtool_test *, u64 *);
void (*get_strings)(struct net_device *, u32, u8 *);
int (*set_phys_id)(struct net_device *, enum ethtool_phys_id_state);
void (*get_ethtool_stats)(struct net_device *, struct ethtool_stats *, u64 *);
int (*begin)(struct net_device *);
void (*complete)(struct net_device *);
u32 (*get_priv_flags)(struct net_device *);
int (*set_priv_flags)(struct net_device *, u32);
int (*get_sset_count)(struct net_device *, int);
int (*get_rxnfc)(struct net_device *, struct ethtool_rxnfc *, u32 *);
int (*set_rxnfc)(struct net_device *, struct ethtool_rxnfc *);
int (*flash_device)(struct net_device *, struct ethtool_flash *);
int (*reset)(struct net_device *, u32 *);
u32 (*get_rxfh_key_size)(struct net_device *);
u32 (*get_rxfh_indir_size)(struct net_device *);
int (*get_rxfh)(struct net_device *, u32 *, u8 *, u8 *);
int (*set_rxfh)(struct net_device *, const u32 *, const u8 *, const u8);
int (*get_rxfh_context)(struct net_device *, u32 *, u8 *, u8 *, u32);
int (*set_rxfh_context)(struct net_device *, const u32 *, const u8 *, const u8, u32 *, bool);
void (*get_channels)(struct net_device *, struct ethtool_channels *);
int (*set_channels)(struct net_device *, struct ethtool_channels *);
int (*get_dump_flag)(struct net_device *, struct ethtool_dump *);
int (*get_dump_data)(struct net_device *, struct ethtool_dump *, void *);
int (*set_dump)(struct net_device *, struct ethtool_dump *);
int (*get_ts_info)(struct net_device *, struct ethtool_ts_info *);
int (*get_module_info)(struct net_device *, struct ethtool_modinfo *);
int (*get_module_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *);
int (*get_eee)(struct net_device *, struct ethtool_eee *);
int (*set_eee)(struct net_device *, struct ethtool_eee *);
int (*get_tunable)(struct net_device *, const struct ethtool_tunable *, void *);
int (*set_tunable)(struct net_device *, const struct ethtool_tunable *, const void *);
int (*get_per_queue_coalesce)(struct net_device *, u32, struct ethtool_coalesce *);
int (*set_per_queue_coalesce)(struct net_device *, u32, struct ethtool_coalesce *);
int (*get_link_ksettings)(struct net_device *, struct ethtool_link_ksettings *);
int (*set_link_ksettings)(struct net_device *, const struct ethtool_link_ksettings *);
int (*get_fecparam)(struct net_device *, struct ethtool_fecparam *);
int (*set_fecparam)(struct net_device *, struct ethtool_fecparam *);
void (*get_ethtool_phy_stats)(struct net_device *, struct ethtool_stats *, u64 *);
};
5.11: ✅struct ethtool_ops {
u32 supported_coalesce_params;
void (*get_drvinfo)(struct net_device *, struct ethtool_drvinfo *);
int (*get_regs_len)(struct net_device *);
void (*get_regs)(struct net_device *, struct ethtool_regs *, void *);
void (*get_wol)(struct net_device *, struct ethtool_wolinfo *);
int (*set_wol)(struct net_device *, struct ethtool_wolinfo *);
u32 (*get_msglevel)(struct net_device *);
void (*set_msglevel)(struct net_device *, u32);
int (*nway_reset)(struct net_device *);
u32 (*get_link)(struct net_device *);
int (*get_link_ext_state)(struct net_device *, struct ethtool_link_ext_state_info *);
int (*get_eeprom_len)(struct net_device *);
int (*get_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *);
int (*set_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *);
int (*get_coalesce)(struct net_device *, struct ethtool_coalesce *);
int (*set_coalesce)(struct net_device *, struct ethtool_coalesce *);
void (*get_ringparam)(struct net_device *, struct ethtool_ringparam *);
int (*set_ringparam)(struct net_device *, struct ethtool_ringparam *);
void (*get_pause_stats)(struct net_device *, struct ethtool_pause_stats *);
void (*get_pauseparam)(struct net_device *, struct ethtool_pauseparam *);
int (*set_pauseparam)(struct net_device *, struct ethtool_pauseparam *);
void (*self_test)(struct net_device *, struct ethtool_test *, u64 *);
void (*get_strings)(struct net_device *, u32, u8 *);
int (*set_phys_id)(struct net_device *, enum ethtool_phys_id_state);
void (*get_ethtool_stats)(struct net_device *, struct ethtool_stats *, u64 *);
int (*begin)(struct net_device *);
void (*complete)(struct net_device *);
u32 (*get_priv_flags)(struct net_device *);
int (*set_priv_flags)(struct net_device *, u32);
int (*get_sset_count)(struct net_device *, int);
int (*get_rxnfc)(struct net_device *, struct ethtool_rxnfc *, u32 *);
int (*set_rxnfc)(struct net_device *, struct ethtool_rxnfc *);
int (*flash_device)(struct net_device *, struct ethtool_flash *);
int (*reset)(struct net_device *, u32 *);
u32 (*get_rxfh_key_size)(struct net_device *);
u32 (*get_rxfh_indir_size)(struct net_device *);
int (*get_rxfh)(struct net_device *, u32 *, u8 *, u8 *);
int (*set_rxfh)(struct net_device *, const u32 *, const u8 *, const u8);
int (*get_rxfh_context)(struct net_device *, u32 *, u8 *, u8 *, u32);
int (*set_rxfh_context)(struct net_device *, const u32 *, const u8 *, const u8, u32 *, bool);
void (*get_channels)(struct net_device *, struct ethtool_channels *);
int (*set_channels)(struct net_device *, struct ethtool_channels *);
int (*get_dump_flag)(struct net_device *, struct ethtool_dump *);
int (*get_dump_data)(struct net_device *, struct ethtool_dump *, void *);
int (*set_dump)(struct net_device *, struct ethtool_dump *);
int (*get_ts_info)(struct net_device *, struct ethtool_ts_info *);
int (*get_module_info)(struct net_device *, struct ethtool_modinfo *);
int (*get_module_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *);
int (*get_eee)(struct net_device *, struct ethtool_eee *);
int (*set_eee)(struct net_device *, struct ethtool_eee *);
int (*get_tunable)(struct net_device *, const struct ethtool_tunable *, void *);
int (*set_tunable)(struct net_device *, const struct ethtool_tunable *, const void *);
int (*get_per_queue_coalesce)(struct net_device *, u32, struct ethtool_coalesce *);
int (*set_per_queue_coalesce)(struct net_device *, u32, struct ethtool_coalesce *);
int (*get_link_ksettings)(struct net_device *, struct ethtool_link_ksettings *);
int (*set_link_ksettings)(struct net_device *, const struct ethtool_link_ksettings *);
int (*get_fecparam)(struct net_device *, struct ethtool_fecparam *);
int (*set_fecparam)(struct net_device *, struct ethtool_fecparam *);
void (*get_ethtool_phy_stats)(struct net_device *, struct ethtool_stats *, u64 *);
int (*get_phy_tunable)(struct net_device *, const struct ethtool_tunable *, void *);
int (*set_phy_tunable)(struct net_device *, const struct ethtool_tunable *, const void *);
};
5.13: ✅struct ethtool_ops {
u32 cap_link_lanes_supported;
u32 supported_coalesce_params;
void (*get_drvinfo)(struct net_device *, struct ethtool_drvinfo *);
int (*get_regs_len)(struct net_device *);
void (*get_regs)(struct net_device *, struct ethtool_regs *, void *);
void (*get_wol)(struct net_device *, struct ethtool_wolinfo *);
int (*set_wol)(struct net_device *, struct ethtool_wolinfo *);
u32 (*get_msglevel)(struct net_device *);
void (*set_msglevel)(struct net_device *, u32);
int (*nway_reset)(struct net_device *);
u32 (*get_link)(struct net_device *);
int (*get_link_ext_state)(struct net_device *, struct ethtool_link_ext_state_info *);
int (*get_eeprom_len)(struct net_device *);
int (*get_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *);
int (*set_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *);
int (*get_coalesce)(struct net_device *, struct ethtool_coalesce *);
int (*set_coalesce)(struct net_device *, struct ethtool_coalesce *);
void (*get_ringparam)(struct net_device *, struct ethtool_ringparam *);
int (*set_ringparam)(struct net_device *, struct ethtool_ringparam *);
void (*get_pause_stats)(struct net_device *, struct ethtool_pause_stats *);
void (*get_pauseparam)(struct net_device *, struct ethtool_pauseparam *);
int (*set_pauseparam)(struct net_device *, struct ethtool_pauseparam *);
void (*self_test)(struct net_device *, struct ethtool_test *, u64 *);
void (*get_strings)(struct net_device *, u32, u8 *);
int (*set_phys_id)(struct net_device *, enum ethtool_phys_id_state);
void (*get_ethtool_stats)(struct net_device *, struct ethtool_stats *, u64 *);
int (*begin)(struct net_device *);
void (*complete)(struct net_device *);
u32 (*get_priv_flags)(struct net_device *);
int (*set_priv_flags)(struct net_device *, u32);
int (*get_sset_count)(struct net_device *, int);
int (*get_rxnfc)(struct net_device *, struct ethtool_rxnfc *, u32 *);
int (*set_rxnfc)(struct net_device *, struct ethtool_rxnfc *);
int (*flash_device)(struct net_device *, struct ethtool_flash *);
int (*reset)(struct net_device *, u32 *);
u32 (*get_rxfh_key_size)(struct net_device *);
u32 (*get_rxfh_indir_size)(struct net_device *);
int (*get_rxfh)(struct net_device *, u32 *, u8 *, u8 *);
int (*set_rxfh)(struct net_device *, const u32 *, const u8 *, const u8);
int (*get_rxfh_context)(struct net_device *, u32 *, u8 *, u8 *, u32);
int (*set_rxfh_context)(struct net_device *, const u32 *, const u8 *, const u8, u32 *, bool);
void (*get_channels)(struct net_device *, struct ethtool_channels *);
int (*set_channels)(struct net_device *, struct ethtool_channels *);
int (*get_dump_flag)(struct net_device *, struct ethtool_dump *);
int (*get_dump_data)(struct net_device *, struct ethtool_dump *, void *);
int (*set_dump)(struct net_device *, struct ethtool_dump *);
int (*get_ts_info)(struct net_device *, struct ethtool_ts_info *);
int (*get_module_info)(struct net_device *, struct ethtool_modinfo *);
int (*get_module_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *);
int (*get_eee)(struct net_device *, struct ethtool_eee *);
int (*set_eee)(struct net_device *, struct ethtool_eee *);
int (*get_tunable)(struct net_device *, const struct ethtool_tunable *, void *);
int (*set_tunable)(struct net_device *, const struct ethtool_tunable *, const void *);
int (*get_per_queue_coalesce)(struct net_device *, u32, struct ethtool_coalesce *);
int (*set_per_queue_coalesce)(struct net_device *, u32, struct ethtool_coalesce *);
int (*get_link_ksettings)(struct net_device *, struct ethtool_link_ksettings *);
int (*set_link_ksettings)(struct net_device *, const struct ethtool_link_ksettings *);
void (*get_fec_stats)(struct net_device *, struct ethtool_fec_stats *);
int (*get_fecparam)(struct net_device *, struct ethtool_fecparam *);
int (*set_fecparam)(struct net_device *, struct ethtool_fecparam *);
void (*get_ethtool_phy_stats)(struct net_device *, struct ethtool_stats *, u64 *);
int (*get_phy_tunable)(struct net_device *, const struct ethtool_tunable *, void *);
int (*set_phy_tunable)(struct net_device *, const struct ethtool_tunable *, const void *);
int (*get_module_eeprom_by_page)(struct net_device *, const struct ethtool_module_eeprom *, struct netlink_ext_ack *);
void (*get_eth_phy_stats)(struct net_device *, struct ethtool_eth_phy_stats *);
void (*get_eth_mac_stats)(struct net_device *, struct ethtool_eth_mac_stats *);
void (*get_eth_ctrl_stats)(struct net_device *, struct ethtool_eth_ctrl_stats *);
void (*get_rmon_stats)(struct net_device *, struct ethtool_rmon_stats *, const struct ethtool_rmon_hist_range **);
};
5.15: ✅struct ethtool_ops {
u32 cap_link_lanes_supported;
u32 supported_coalesce_params;
void (*get_drvinfo)(struct net_device *, struct ethtool_drvinfo *);
int (*get_regs_len)(struct net_device *);
void (*get_regs)(struct net_device *, struct ethtool_regs *, void *);
void (*get_wol)(struct net_device *, struct ethtool_wolinfo *);
int (*set_wol)(struct net_device *, struct ethtool_wolinfo *);
u32 (*get_msglevel)(struct net_device *);
void (*set_msglevel)(struct net_device *, u32);
int (*nway_reset)(struct net_device *);
u32 (*get_link)(struct net_device *);
int (*get_link_ext_state)(struct net_device *, struct ethtool_link_ext_state_info *);
int (*get_eeprom_len)(struct net_device *);
int (*get_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *);
int (*set_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *);
int (*get_coalesce)(struct net_device *, struct ethtool_coalesce *, struct kernel_ethtool_coalesce *, struct netlink_ext_ack *);
int (*set_coalesce)(struct net_device *, struct ethtool_coalesce *, struct kernel_ethtool_coalesce *, struct netlink_ext_ack *);
void (*get_ringparam)(struct net_device *, struct ethtool_ringparam *);
int (*set_ringparam)(struct net_device *, struct ethtool_ringparam *);
void (*get_pause_stats)(struct net_device *, struct ethtool_pause_stats *);
void (*get_pauseparam)(struct net_device *, struct ethtool_pauseparam *);
int (*set_pauseparam)(struct net_device *, struct ethtool_pauseparam *);
void (*self_test)(struct net_device *, struct ethtool_test *, u64 *);
void (*get_strings)(struct net_device *, u32, u8 *);
int (*set_phys_id)(struct net_device *, enum ethtool_phys_id_state);
void (*get_ethtool_stats)(struct net_device *, struct ethtool_stats *, u64 *);
int (*begin)(struct net_device *);
void (*complete)(struct net_device *);
u32 (*get_priv_flags)(struct net_device *);
int (*set_priv_flags)(struct net_device *, u32);
int (*get_sset_count)(struct net_device *, int);
int (*get_rxnfc)(struct net_device *, struct ethtool_rxnfc *, u32 *);
int (*set_rxnfc)(struct net_device *, struct ethtool_rxnfc *);
int (*flash_device)(struct net_device *, struct ethtool_flash *);
int (*reset)(struct net_device *, u32 *);
u32 (*get_rxfh_key_size)(struct net_device *);
u32 (*get_rxfh_indir_size)(struct net_device *);
int (*get_rxfh)(struct net_device *, u32 *, u8 *, u8 *);
int (*set_rxfh)(struct net_device *, const u32 *, const u8 *, const u8);
int (*get_rxfh_context)(struct net_device *, u32 *, u8 *, u8 *, u32);
int (*set_rxfh_context)(struct net_device *, const u32 *, const u8 *, const u8, u32 *, bool);
void (*get_channels)(struct net_device *, struct ethtool_channels *);
int (*set_channels)(struct net_device *, struct ethtool_channels *);
int (*get_dump_flag)(struct net_device *, struct ethtool_dump *);
int (*get_dump_data)(struct net_device *, struct ethtool_dump *, void *);
int (*set_dump)(struct net_device *, struct ethtool_dump *);
int (*get_ts_info)(struct net_device *, struct ethtool_ts_info *);
int (*get_module_info)(struct net_device *, struct ethtool_modinfo *);
int (*get_module_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *);
int (*get_eee)(struct net_device *, struct ethtool_eee *);
int (*set_eee)(struct net_device *, struct ethtool_eee *);
int (*get_tunable)(struct net_device *, const struct ethtool_tunable *, void *);
int (*set_tunable)(struct net_device *, const struct ethtool_tunable *, const void *);
int (*get_per_queue_coalesce)(struct net_device *, u32, struct ethtool_coalesce *);
int (*set_per_queue_coalesce)(struct net_device *, u32, struct ethtool_coalesce *);
int (*get_link_ksettings)(struct net_device *, struct ethtool_link_ksettings *);
int (*set_link_ksettings)(struct net_device *, const struct ethtool_link_ksettings *);
void (*get_fec_stats)(struct net_device *, struct ethtool_fec_stats *);
int (*get_fecparam)(struct net_device *, struct ethtool_fecparam *);
int (*set_fecparam)(struct net_device *, struct ethtool_fecparam *);
void (*get_ethtool_phy_stats)(struct net_device *, struct ethtool_stats *, u64 *);
int (*get_phy_tunable)(struct net_device *, const struct ethtool_tunable *, void *);
int (*set_phy_tunable)(struct net_device *, const struct ethtool_tunable *, const void *);
int (*get_module_eeprom_by_page)(struct net_device *, const struct ethtool_module_eeprom *, struct netlink_ext_ack *);
void (*get_eth_phy_stats)(struct net_device *, struct ethtool_eth_phy_stats *);
void (*get_eth_mac_stats)(struct net_device *, struct ethtool_eth_mac_stats *);
void (*get_eth_ctrl_stats)(struct net_device *, struct ethtool_eth_ctrl_stats *);
void (*get_rmon_stats)(struct net_device *, struct ethtool_rmon_stats *, const struct ethtool_rmon_hist_range **);
};
5.19: ✅struct ethtool_ops {
u32 cap_link_lanes_supported;
u32 supported_coalesce_params;
u32 supported_ring_params;
void (*get_drvinfo)(struct net_device *, struct ethtool_drvinfo *);
int (*get_regs_len)(struct net_device *);
void (*get_regs)(struct net_device *, struct ethtool_regs *, void *);
void (*get_wol)(struct net_device *, struct ethtool_wolinfo *);
int (*set_wol)(struct net_device *, struct ethtool_wolinfo *);
u32 (*get_msglevel)(struct net_device *);
void (*set_msglevel)(struct net_device *, u32);
int (*nway_reset)(struct net_device *);
u32 (*get_link)(struct net_device *);
int (*get_link_ext_state)(struct net_device *, struct ethtool_link_ext_state_info *);
int (*get_eeprom_len)(struct net_device *);
int (*get_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *);
int (*set_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *);
int (*get_coalesce)(struct net_device *, struct ethtool_coalesce *, struct kernel_ethtool_coalesce *, struct netlink_ext_ack *);
int (*set_coalesce)(struct net_device *, struct ethtool_coalesce *, struct kernel_ethtool_coalesce *, struct netlink_ext_ack *);
void (*get_ringparam)(struct net_device *, struct ethtool_ringparam *, struct kernel_ethtool_ringparam *, struct netlink_ext_ack *);
int (*set_ringparam)(struct net_device *, struct ethtool_ringparam *, struct kernel_ethtool_ringparam *, struct netlink_ext_ack *);
void (*get_pause_stats)(struct net_device *, struct ethtool_pause_stats *);
void (*get_pauseparam)(struct net_device *, struct ethtool_pauseparam *);
int (*set_pauseparam)(struct net_device *, struct ethtool_pauseparam *);
void (*self_test)(struct net_device *, struct ethtool_test *, u64 *);
void (*get_strings)(struct net_device *, u32, u8 *);
int (*set_phys_id)(struct net_device *, enum ethtool_phys_id_state);
void (*get_ethtool_stats)(struct net_device *, struct ethtool_stats *, u64 *);
int (*begin)(struct net_device *);
void (*complete)(struct net_device *);
u32 (*get_priv_flags)(struct net_device *);
int (*set_priv_flags)(struct net_device *, u32);
int (*get_sset_count)(struct net_device *, int);
int (*get_rxnfc)(struct net_device *, struct ethtool_rxnfc *, u32 *);
int (*set_rxnfc)(struct net_device *, struct ethtool_rxnfc *);
int (*flash_device)(struct net_device *, struct ethtool_flash *);
int (*reset)(struct net_device *, u32 *);
u32 (*get_rxfh_key_size)(struct net_device *);
u32 (*get_rxfh_indir_size)(struct net_device *);
int (*get_rxfh)(struct net_device *, u32 *, u8 *, u8 *);
int (*set_rxfh)(struct net_device *, const u32 *, const u8 *, const u8);
int (*get_rxfh_context)(struct net_device *, u32 *, u8 *, u8 *, u32);
int (*set_rxfh_context)(struct net_device *, const u32 *, const u8 *, const u8, u32 *, bool);
void (*get_channels)(struct net_device *, struct ethtool_channels *);
int (*set_channels)(struct net_device *, struct ethtool_channels *);
int (*get_dump_flag)(struct net_device *, struct ethtool_dump *);
int (*get_dump_data)(struct net_device *, struct ethtool_dump *, void *);
int (*set_dump)(struct net_device *, struct ethtool_dump *);
int (*get_ts_info)(struct net_device *, struct ethtool_ts_info *);
int (*get_module_info)(struct net_device *, struct ethtool_modinfo *);
int (*get_module_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *);
int (*get_eee)(struct net_device *, struct ethtool_eee *);
int (*set_eee)(struct net_device *, struct ethtool_eee *);
int (*get_tunable)(struct net_device *, const struct ethtool_tunable *, void *);
int (*set_tunable)(struct net_device *, const struct ethtool_tunable *, const void *);
int (*get_per_queue_coalesce)(struct net_device *, u32, struct ethtool_coalesce *);
int (*set_per_queue_coalesce)(struct net_device *, u32, struct ethtool_coalesce *);
int (*get_link_ksettings)(struct net_device *, struct ethtool_link_ksettings *);
int (*set_link_ksettings)(struct net_device *, const struct ethtool_link_ksettings *);
void (*get_fec_stats)(struct net_device *, struct ethtool_fec_stats *);
int (*get_fecparam)(struct net_device *, struct ethtool_fecparam *);
int (*set_fecparam)(struct net_device *, struct ethtool_fecparam *);
void (*get_ethtool_phy_stats)(struct net_device *, struct ethtool_stats *, u64 *);
int (*get_phy_tunable)(struct net_device *, const struct ethtool_tunable *, void *);
int (*set_phy_tunable)(struct net_device *, const struct ethtool_tunable *, const void *);
int (*get_module_eeprom_by_page)(struct net_device *, const struct ethtool_module_eeprom *, struct netlink_ext_ack *);
void (*get_eth_phy_stats)(struct net_device *, struct ethtool_eth_phy_stats *);
void (*get_eth_mac_stats)(struct net_device *, struct ethtool_eth_mac_stats *);
void (*get_eth_ctrl_stats)(struct net_device *, struct ethtool_eth_ctrl_stats *);
void (*get_rmon_stats)(struct net_device *, struct ethtool_rmon_stats *, const struct ethtool_rmon_hist_range **);
int (*get_module_power_mode)(struct net_device *, struct ethtool_module_power_mode_params *, struct netlink_ext_ack *);
int (*set_module_power_mode)(struct net_device *, const struct ethtool_module_power_mode_params *, struct netlink_ext_ack *);
};
6.2: ✅struct ethtool_ops {
u32 cap_link_lanes_supported;
u32 supported_coalesce_params;
u32 supported_ring_params;
void (*get_drvinfo)(struct net_device *, struct ethtool_drvinfo *);
int (*get_regs_len)(struct net_device *);
void (*get_regs)(struct net_device *, struct ethtool_regs *, void *);
void (*get_wol)(struct net_device *, struct ethtool_wolinfo *);
int (*set_wol)(struct net_device *, struct ethtool_wolinfo *);
u32 (*get_msglevel)(struct net_device *);
void (*set_msglevel)(struct net_device *, u32);
int (*nway_reset)(struct net_device *);
u32 (*get_link)(struct net_device *);
int (*get_link_ext_state)(struct net_device *, struct ethtool_link_ext_state_info *);
void (*get_link_ext_stats)(struct net_device *, struct ethtool_link_ext_stats *);
int (*get_eeprom_len)(struct net_device *);
int (*get_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *);
int (*set_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *);
int (*get_coalesce)(struct net_device *, struct ethtool_coalesce *, struct kernel_ethtool_coalesce *, struct netlink_ext_ack *);
int (*set_coalesce)(struct net_device *, struct ethtool_coalesce *, struct kernel_ethtool_coalesce *, struct netlink_ext_ack *);
void (*get_ringparam)(struct net_device *, struct ethtool_ringparam *, struct kernel_ethtool_ringparam *, struct netlink_ext_ack *);
int (*set_ringparam)(struct net_device *, struct ethtool_ringparam *, struct kernel_ethtool_ringparam *, struct netlink_ext_ack *);
void (*get_pause_stats)(struct net_device *, struct ethtool_pause_stats *);
void (*get_pauseparam)(struct net_device *, struct ethtool_pauseparam *);
int (*set_pauseparam)(struct net_device *, struct ethtool_pauseparam *);
void (*self_test)(struct net_device *, struct ethtool_test *, u64 *);
void (*get_strings)(struct net_device *, u32, u8 *);
int (*set_phys_id)(struct net_device *, enum ethtool_phys_id_state);
void (*get_ethtool_stats)(struct net_device *, struct ethtool_stats *, u64 *);
int (*begin)(struct net_device *);
void (*complete)(struct net_device *);
u32 (*get_priv_flags)(struct net_device *);
int (*set_priv_flags)(struct net_device *, u32);
int (*get_sset_count)(struct net_device *, int);
int (*get_rxnfc)(struct net_device *, struct ethtool_rxnfc *, u32 *);
int (*set_rxnfc)(struct net_device *, struct ethtool_rxnfc *);
int (*flash_device)(struct net_device *, struct ethtool_flash *);
int (*reset)(struct net_device *, u32 *);
u32 (*get_rxfh_key_size)(struct net_device *);
u32 (*get_rxfh_indir_size)(struct net_device *);
int (*get_rxfh)(struct net_device *, u32 *, u8 *, u8 *);
int (*set_rxfh)(struct net_device *, const u32 *, const u8 *, const u8);
int (*get_rxfh_context)(struct net_device *, u32 *, u8 *, u8 *, u32);
int (*set_rxfh_context)(struct net_device *, const u32 *, const u8 *, const u8, u32 *, bool);
void (*get_channels)(struct net_device *, struct ethtool_channels *);
int (*set_channels)(struct net_device *, struct ethtool_channels *);
int (*get_dump_flag)(struct net_device *, struct ethtool_dump *);
int (*get_dump_data)(struct net_device *, struct ethtool_dump *, void *);
int (*set_dump)(struct net_device *, struct ethtool_dump *);
int (*get_ts_info)(struct net_device *, struct ethtool_ts_info *);
int (*get_module_info)(struct net_device *, struct ethtool_modinfo *);
int (*get_module_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *);
int (*get_eee)(struct net_device *, struct ethtool_eee *);
int (*set_eee)(struct net_device *, struct ethtool_eee *);
int (*get_tunable)(struct net_device *, const struct ethtool_tunable *, void *);
int (*set_tunable)(struct net_device *, const struct ethtool_tunable *, const void *);
int (*get_per_queue_coalesce)(struct net_device *, u32, struct ethtool_coalesce *);
int (*set_per_queue_coalesce)(struct net_device *, u32, struct ethtool_coalesce *);
int (*get_link_ksettings)(struct net_device *, struct ethtool_link_ksettings *);
int (*set_link_ksettings)(struct net_device *, const struct ethtool_link_ksettings *);
void (*get_fec_stats)(struct net_device *, struct ethtool_fec_stats *);
int (*get_fecparam)(struct net_device *, struct ethtool_fecparam *);
int (*set_fecparam)(struct net_device *, struct ethtool_fecparam *);
void (*get_ethtool_phy_stats)(struct net_device *, struct ethtool_stats *, u64 *);
int (*get_phy_tunable)(struct net_device *, const struct ethtool_tunable *, void *);
int (*set_phy_tunable)(struct net_device *, const struct ethtool_tunable *, const void *);
int (*get_module_eeprom_by_page)(struct net_device *, const struct ethtool_module_eeprom *, struct netlink_ext_ack *);
void (*get_eth_phy_stats)(struct net_device *, struct ethtool_eth_phy_stats *);
void (*get_eth_mac_stats)(struct net_device *, struct ethtool_eth_mac_stats *);
void (*get_eth_ctrl_stats)(struct net_device *, struct ethtool_eth_ctrl_stats *);
void (*get_rmon_stats)(struct net_device *, struct ethtool_rmon_stats *, const struct ethtool_rmon_hist_range **);
int (*get_module_power_mode)(struct net_device *, struct ethtool_module_power_mode_params *, struct netlink_ext_ack *);
int (*set_module_power_mode)(struct net_device *, const struct ethtool_module_power_mode_params *, struct netlink_ext_ack *);
};
6.5: ✅struct ethtool_ops {
u32 cap_link_lanes_supported;
u32 supported_coalesce_params;
u32 supported_ring_params;
void (*get_drvinfo)(struct net_device *, struct ethtool_drvinfo *);
int (*get_regs_len)(struct net_device *);
void (*get_regs)(struct net_device *, struct ethtool_regs *, void *);
void (*get_wol)(struct net_device *, struct ethtool_wolinfo *);
int (*set_wol)(struct net_device *, struct ethtool_wolinfo *);
u32 (*get_msglevel)(struct net_device *);
void (*set_msglevel)(struct net_device *, u32);
int (*nway_reset)(struct net_device *);
u32 (*get_link)(struct net_device *);
int (*get_link_ext_state)(struct net_device *, struct ethtool_link_ext_state_info *);
void (*get_link_ext_stats)(struct net_device *, struct ethtool_link_ext_stats *);
int (*get_eeprom_len)(struct net_device *);
int (*get_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *);
int (*set_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *);
int (*get_coalesce)(struct net_device *, struct ethtool_coalesce *, struct kernel_ethtool_coalesce *, struct netlink_ext_ack *);
int (*set_coalesce)(struct net_device *, struct ethtool_coalesce *, struct kernel_ethtool_coalesce *, struct netlink_ext_ack *);
void (*get_ringparam)(struct net_device *, struct ethtool_ringparam *, struct kernel_ethtool_ringparam *, struct netlink_ext_ack *);
int (*set_ringparam)(struct net_device *, struct ethtool_ringparam *, struct kernel_ethtool_ringparam *, struct netlink_ext_ack *);
void (*get_pause_stats)(struct net_device *, struct ethtool_pause_stats *);
void (*get_pauseparam)(struct net_device *, struct ethtool_pauseparam *);
int (*set_pauseparam)(struct net_device *, struct ethtool_pauseparam *);
void (*self_test)(struct net_device *, struct ethtool_test *, u64 *);
void (*get_strings)(struct net_device *, u32, u8 *);
int (*set_phys_id)(struct net_device *, enum ethtool_phys_id_state);
void (*get_ethtool_stats)(struct net_device *, struct ethtool_stats *, u64 *);
int (*begin)(struct net_device *);
void (*complete)(struct net_device *);
u32 (*get_priv_flags)(struct net_device *);
int (*set_priv_flags)(struct net_device *, u32);
int (*get_sset_count)(struct net_device *, int);
int (*get_rxnfc)(struct net_device *, struct ethtool_rxnfc *, u32 *);
int (*set_rxnfc)(struct net_device *, struct ethtool_rxnfc *);
int (*flash_device)(struct net_device *, struct ethtool_flash *);
int (*reset)(struct net_device *, u32 *);
u32 (*get_rxfh_key_size)(struct net_device *);
u32 (*get_rxfh_indir_size)(struct net_device *);
int (*get_rxfh)(struct net_device *, u32 *, u8 *, u8 *);
int (*set_rxfh)(struct net_device *, const u32 *, const u8 *, const u8);
int (*get_rxfh_context)(struct net_device *, u32 *, u8 *, u8 *, u32);
int (*set_rxfh_context)(struct net_device *, const u32 *, const u8 *, const u8, u32 *, bool);
void (*get_channels)(struct net_device *, struct ethtool_channels *);
int (*set_channels)(struct net_device *, struct ethtool_channels *);
int (*get_dump_flag)(struct net_device *, struct ethtool_dump *);
int (*get_dump_data)(struct net_device *, struct ethtool_dump *, void *);
int (*set_dump)(struct net_device *, struct ethtool_dump *);
int (*get_ts_info)(struct net_device *, struct ethtool_ts_info *);
int (*get_module_info)(struct net_device *, struct ethtool_modinfo *);
int (*get_module_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *);
int (*get_eee)(struct net_device *, struct ethtool_eee *);
int (*set_eee)(struct net_device *, struct ethtool_eee *);
int (*get_tunable)(struct net_device *, const struct ethtool_tunable *, void *);
int (*set_tunable)(struct net_device *, const struct ethtool_tunable *, const void *);
int (*get_per_queue_coalesce)(struct net_device *, u32, struct ethtool_coalesce *);
int (*set_per_queue_coalesce)(struct net_device *, u32, struct ethtool_coalesce *);
int (*get_link_ksettings)(struct net_device *, struct ethtool_link_ksettings *);
int (*set_link_ksettings)(struct net_device *, const struct ethtool_link_ksettings *);
void (*get_fec_stats)(struct net_device *, struct ethtool_fec_stats *);
int (*get_fecparam)(struct net_device *, struct ethtool_fecparam *);
int (*set_fecparam)(struct net_device *, struct ethtool_fecparam *);
void (*get_ethtool_phy_stats)(struct net_device *, struct ethtool_stats *, u64 *);
int (*get_phy_tunable)(struct net_device *, const struct ethtool_tunable *, void *);
int (*set_phy_tunable)(struct net_device *, const struct ethtool_tunable *, const void *);
int (*get_module_eeprom_by_page)(struct net_device *, const struct ethtool_module_eeprom *, struct netlink_ext_ack *);
void (*get_eth_phy_stats)(struct net_device *, struct ethtool_eth_phy_stats *);
void (*get_eth_mac_stats)(struct net_device *, struct ethtool_eth_mac_stats *);
void (*get_eth_ctrl_stats)(struct net_device *, struct ethtool_eth_ctrl_stats *);
void (*get_rmon_stats)(struct net_device *, struct ethtool_rmon_stats *, const struct ethtool_rmon_hist_range **);
int (*get_module_power_mode)(struct net_device *, struct ethtool_module_power_mode_params *, struct netlink_ext_ack *);
int (*set_module_power_mode)(struct net_device *, const struct ethtool_module_power_mode_params *, struct netlink_ext_ack *);
int (*get_mm)(struct net_device *, struct ethtool_mm_state *);
int (*set_mm)(struct net_device *, struct ethtool_mm_cfg *, struct netlink_ext_ack *);
void (*get_mm_stats)(struct net_device *, struct ethtool_mm_stats *);
};
6.8: ✅struct ethtool_ops {
u32 cap_link_lanes_supported;
u32 cap_rss_ctx_supported;
u32 cap_rss_sym_xor_supported;
u32 supported_coalesce_params;
u32 supported_ring_params;
void (*get_drvinfo)(struct net_device *, struct ethtool_drvinfo *);
int (*get_regs_len)(struct net_device *);
void (*get_regs)(struct net_device *, struct ethtool_regs *, void *);
void (*get_wol)(struct net_device *, struct ethtool_wolinfo *);
int (*set_wol)(struct net_device *, struct ethtool_wolinfo *);
u32 (*get_msglevel)(struct net_device *);
void (*set_msglevel)(struct net_device *, u32);
int (*nway_reset)(struct net_device *);
u32 (*get_link)(struct net_device *);
int (*get_link_ext_state)(struct net_device *, struct ethtool_link_ext_state_info *);
void (*get_link_ext_stats)(struct net_device *, struct ethtool_link_ext_stats *);
int (*get_eeprom_len)(struct net_device *);
int (*get_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *);
int (*set_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *);
int (*get_coalesce)(struct net_device *, struct ethtool_coalesce *, struct kernel_ethtool_coalesce *, struct netlink_ext_ack *);
int (*set_coalesce)(struct net_device *, struct ethtool_coalesce *, struct kernel_ethtool_coalesce *, struct netlink_ext_ack *);
void (*get_ringparam)(struct net_device *, struct ethtool_ringparam *, struct kernel_ethtool_ringparam *, struct netlink_ext_ack *);
int (*set_ringparam)(struct net_device *, struct ethtool_ringparam *, struct kernel_ethtool_ringparam *, struct netlink_ext_ack *);
void (*get_pause_stats)(struct net_device *, struct ethtool_pause_stats *);
void (*get_pauseparam)(struct net_device *, struct ethtool_pauseparam *);
int (*set_pauseparam)(struct net_device *, struct ethtool_pauseparam *);
void (*self_test)(struct net_device *, struct ethtool_test *, u64 *);
void (*get_strings)(struct net_device *, u32, u8 *);
int (*set_phys_id)(struct net_device *, enum ethtool_phys_id_state);
void (*get_ethtool_stats)(struct net_device *, struct ethtool_stats *, u64 *);
int (*begin)(struct net_device *);
void (*complete)(struct net_device *);
u32 (*get_priv_flags)(struct net_device *);
int (*set_priv_flags)(struct net_device *, u32);
int (*get_sset_count)(struct net_device *, int);
int (*get_rxnfc)(struct net_device *, struct ethtool_rxnfc *, u32 *);
int (*set_rxnfc)(struct net_device *, struct ethtool_rxnfc *);
int (*flash_device)(struct net_device *, struct ethtool_flash *);
int (*reset)(struct net_device *, u32 *);
u32 (*get_rxfh_key_size)(struct net_device *);
u32 (*get_rxfh_indir_size)(struct net_device *);
int (*get_rxfh)(struct net_device *, struct ethtool_rxfh_param *);
int (*set_rxfh)(struct net_device *, struct ethtool_rxfh_param *, struct netlink_ext_ack *);
void (*get_channels)(struct net_device *, struct ethtool_channels *);
int (*set_channels)(struct net_device *, struct ethtool_channels *);
int (*get_dump_flag)(struct net_device *, struct ethtool_dump *);
int (*get_dump_data)(struct net_device *, struct ethtool_dump *, void *);
int (*set_dump)(struct net_device *, struct ethtool_dump *);
int (*get_ts_info)(struct net_device *, struct ethtool_ts_info *);
int (*get_module_info)(struct net_device *, struct ethtool_modinfo *);
int (*get_module_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *);
int (*get_eee)(struct net_device *, struct ethtool_eee *);
int (*set_eee)(struct net_device *, struct ethtool_eee *);
int (*get_tunable)(struct net_device *, const struct ethtool_tunable *, void *);
int (*set_tunable)(struct net_device *, const struct ethtool_tunable *, const void *);
int (*get_per_queue_coalesce)(struct net_device *, u32, struct ethtool_coalesce *);
int (*set_per_queue_coalesce)(struct net_device *, u32, struct ethtool_coalesce *);
int (*get_link_ksettings)(struct net_device *, struct ethtool_link_ksettings *);
int (*set_link_ksettings)(struct net_device *, const struct ethtool_link_ksettings *);
void (*get_fec_stats)(struct net_device *, struct ethtool_fec_stats *);
int (*get_fecparam)(struct net_device *, struct ethtool_fecparam *);
int (*set_fecparam)(struct net_device *, struct ethtool_fecparam *);
void (*get_ethtool_phy_stats)(struct net_device *, struct ethtool_stats *, u64 *);
int (*get_phy_tunable)(struct net_device *, const struct ethtool_tunable *, void *);
int (*set_phy_tunable)(struct net_device *, const struct ethtool_tunable *, const void *);
int (*get_module_eeprom_by_page)(struct net_device *, const struct ethtool_module_eeprom *, struct netlink_ext_ack *);
void (*get_eth_phy_stats)(struct net_device *, struct ethtool_eth_phy_stats *);
void (*get_eth_mac_stats)(struct net_device *, struct ethtool_eth_mac_stats *);
void (*get_eth_ctrl_stats)(struct net_device *, struct ethtool_eth_ctrl_stats *);
void (*get_rmon_stats)(struct net_device *, struct ethtool_rmon_stats *, const struct ethtool_rmon_hist_range **);
int (*get_module_power_mode)(struct net_device *, struct ethtool_module_power_mode_params *, struct netlink_ext_ack *);
int (*set_module_power_mode)(struct net_device *, const struct ethtool_module_power_mode_params *, struct netlink_ext_ack *);
int (*get_mm)(struct net_device *, struct ethtool_mm_state *);
int (*set_mm)(struct net_device *, struct ethtool_mm_cfg *, struct netlink_ext_ack *);
void (*get_mm_stats)(struct net_device *, struct ethtool_mm_stats *);
};
arm64: ✅struct ethtool_ops {
void (*get_drvinfo)(struct net_device *, struct ethtool_drvinfo *);
int (*get_regs_len)(struct net_device *);
void (*get_regs)(struct net_device *, struct ethtool_regs *, void *);
void (*get_wol)(struct net_device *, struct ethtool_wolinfo *);
int (*set_wol)(struct net_device *, struct ethtool_wolinfo *);
u32 (*get_msglevel)(struct net_device *);
void (*set_msglevel)(struct net_device *, u32);
int (*nway_reset)(struct net_device *);
u32 (*get_link)(struct net_device *);
int (*get_eeprom_len)(struct net_device *);
int (*get_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *);
int (*set_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *);
int (*get_coalesce)(struct net_device *, struct ethtool_coalesce *);
int (*set_coalesce)(struct net_device *, struct ethtool_coalesce *);
void (*get_ringparam)(struct net_device *, struct ethtool_ringparam *);
int (*set_ringparam)(struct net_device *, struct ethtool_ringparam *);
void (*get_pauseparam)(struct net_device *, struct ethtool_pauseparam *);
int (*set_pauseparam)(struct net_device *, struct ethtool_pauseparam *);
void (*self_test)(struct net_device *, struct ethtool_test *, u64 *);
void (*get_strings)(struct net_device *, u32, u8 *);
int (*set_phys_id)(struct net_device *, enum ethtool_phys_id_state);
void (*get_ethtool_stats)(struct net_device *, struct ethtool_stats *, u64 *);
int (*begin)(struct net_device *);
void (*complete)(struct net_device *);
u32 (*get_priv_flags)(struct net_device *);
int (*set_priv_flags)(struct net_device *, u32);
int (*get_sset_count)(struct net_device *, int);
int (*get_rxnfc)(struct net_device *, struct ethtool_rxnfc *, u32 *);
int (*set_rxnfc)(struct net_device *, struct ethtool_rxnfc *);
int (*flash_device)(struct net_device *, struct ethtool_flash *);
int (*reset)(struct net_device *, u32 *);
u32 (*get_rxfh_key_size)(struct net_device *);
u32 (*get_rxfh_indir_size)(struct net_device *);
int (*get_rxfh)(struct net_device *, u32 *, u8 *, u8 *);
int (*set_rxfh)(struct net_device *, const u32 *, const u8 *, const u8);
int (*get_rxfh_context)(struct net_device *, u32 *, u8 *, u8 *, u32);
int (*set_rxfh_context)(struct net_device *, const u32 *, const u8 *, const u8, u32 *, bool);
void (*get_channels)(struct net_device *, struct ethtool_channels *);
int (*set_channels)(struct net_device *, struct ethtool_channels *);
int (*get_dump_flag)(struct net_device *, struct ethtool_dump *);
int (*get_dump_data)(struct net_device *, struct ethtool_dump *, void *);
int (*set_dump)(struct net_device *, struct ethtool_dump *);
int (*get_ts_info)(struct net_device *, struct ethtool_ts_info *);
int (*get_module_info)(struct net_device *, struct ethtool_modinfo *);
int (*get_module_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *);
int (*get_eee)(struct net_device *, struct ethtool_eee *);
int (*set_eee)(struct net_device *, struct ethtool_eee *);
int (*get_tunable)(struct net_device *, const struct ethtool_tunable *, void *);
int (*set_tunable)(struct net_device *, const struct ethtool_tunable *, const void *);
int (*get_per_queue_coalesce)(struct net_device *, u32, struct ethtool_coalesce *);
int (*set_per_queue_coalesce)(struct net_device *, u32, struct ethtool_coalesce *);
int (*get_link_ksettings)(struct net_device *, struct ethtool_link_ksettings *);
int (*set_link_ksettings)(struct net_device *, const struct ethtool_link_ksettings *);
int (*get_fecparam)(struct net_device *, struct ethtool_fecparam *);
int (*set_fecparam)(struct net_device *, struct ethtool_fecparam *);
void (*get_ethtool_phy_stats)(struct net_device *, struct ethtool_stats *, u64 *);
};
armhf: ✅struct ethtool_ops {
void (*get_drvinfo)(struct net_device *, struct ethtool_drvinfo *);
int (*get_regs_len)(struct net_device *);
void (*get_regs)(struct net_device *, struct ethtool_regs *, void *);
void (*get_wol)(struct net_device *, struct ethtool_wolinfo *);
int (*set_wol)(struct net_device *, struct ethtool_wolinfo *);
u32 (*get_msglevel)(struct net_device *);
void (*set_msglevel)(struct net_device *, u32);
int (*nway_reset)(struct net_device *);
u32 (*get_link)(struct net_device *);
int (*get_eeprom_len)(struct net_device *);
int (*get_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *);
int (*set_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *);
int (*get_coalesce)(struct net_device *, struct ethtool_coalesce *);
int (*set_coalesce)(struct net_device *, struct ethtool_coalesce *);
void (*get_ringparam)(struct net_device *, struct ethtool_ringparam *);
int (*set_ringparam)(struct net_device *, struct ethtool_ringparam *);
void (*get_pauseparam)(struct net_device *, struct ethtool_pauseparam *);
int (*set_pauseparam)(struct net_device *, struct ethtool_pauseparam *);
void (*self_test)(struct net_device *, struct ethtool_test *, u64 *);
void (*get_strings)(struct net_device *, u32, u8 *);
int (*set_phys_id)(struct net_device *, enum ethtool_phys_id_state);
void (*get_ethtool_stats)(struct net_device *, struct ethtool_stats *, u64 *);
int (*begin)(struct net_device *);
void (*complete)(struct net_device *);
u32 (*get_priv_flags)(struct net_device *);
int (*set_priv_flags)(struct net_device *, u32);
int (*get_sset_count)(struct net_device *, int);
int (*get_rxnfc)(struct net_device *, struct ethtool_rxnfc *, u32 *);
int (*set_rxnfc)(struct net_device *, struct ethtool_rxnfc *);
int (*flash_device)(struct net_device *, struct ethtool_flash *);
int (*reset)(struct net_device *, u32 *);
u32 (*get_rxfh_key_size)(struct net_device *);
u32 (*get_rxfh_indir_size)(struct net_device *);
int (*get_rxfh)(struct net_device *, u32 *, u8 *, u8 *);
int (*set_rxfh)(struct net_device *, const u32 *, const u8 *, const u8);
int (*get_rxfh_context)(struct net_device *, u32 *, u8 *, u8 *, u32);
int (*set_rxfh_context)(struct net_device *, const u32 *, const u8 *, const u8, u32 *, bool);
void (*get_channels)(struct net_device *, struct ethtool_channels *);
int (*set_channels)(struct net_device *, struct ethtool_channels *);
int (*get_dump_flag)(struct net_device *, struct ethtool_dump *);
int (*get_dump_data)(struct net_device *, struct ethtool_dump *, void *);
int (*set_dump)(struct net_device *, struct ethtool_dump *);
int (*get_ts_info)(struct net_device *, struct ethtool_ts_info *);
int (*get_module_info)(struct net_device *, struct ethtool_modinfo *);
int (*get_module_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *);
int (*get_eee)(struct net_device *, struct ethtool_eee *);
int (*set_eee)(struct net_device *, struct ethtool_eee *);
int (*get_tunable)(struct net_device *, const struct ethtool_tunable *, void *);
int (*set_tunable)(struct net_device *, const struct ethtool_tunable *, const void *);
int (*get_per_queue_coalesce)(struct net_device *, u32, struct ethtool_coalesce *);
int (*set_per_queue_coalesce)(struct net_device *, u32, struct ethtool_coalesce *);
int (*get_link_ksettings)(struct net_device *, struct ethtool_link_ksettings *);
int (*set_link_ksettings)(struct net_device *, const struct ethtool_link_ksettings *);
int (*get_fecparam)(struct net_device *, struct ethtool_fecparam *);
int (*set_fecparam)(struct net_device *, struct ethtool_fecparam *);
void (*get_ethtool_phy_stats)(struct net_device *, struct ethtool_stats *, u64 *);
};
ppc64el: ✅struct ethtool_ops {
void (*get_drvinfo)(struct net_device *, struct ethtool_drvinfo *);
int (*get_regs_len)(struct net_device *);
void (*get_regs)(struct net_device *, struct ethtool_regs *, void *);
void (*get_wol)(struct net_device *, struct ethtool_wolinfo *);
int (*set_wol)(struct net_device *, struct ethtool_wolinfo *);
u32 (*get_msglevel)(struct net_device *);
void (*set_msglevel)(struct net_device *, u32);
int (*nway_reset)(struct net_device *);
u32 (*get_link)(struct net_device *);
int (*get_eeprom_len)(struct net_device *);
int (*get_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *);
int (*set_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *);
int (*get_coalesce)(struct net_device *, struct ethtool_coalesce *);
int (*set_coalesce)(struct net_device *, struct ethtool_coalesce *);
void (*get_ringparam)(struct net_device *, struct ethtool_ringparam *);
int (*set_ringparam)(struct net_device *, struct ethtool_ringparam *);
void (*get_pauseparam)(struct net_device *, struct ethtool_pauseparam *);
int (*set_pauseparam)(struct net_device *, struct ethtool_pauseparam *);
void (*self_test)(struct net_device *, struct ethtool_test *, u64 *);
void (*get_strings)(struct net_device *, u32, u8 *);
int (*set_phys_id)(struct net_device *, enum ethtool_phys_id_state);
void (*get_ethtool_stats)(struct net_device *, struct ethtool_stats *, u64 *);
int (*begin)(struct net_device *);
void (*complete)(struct net_device *);
u32 (*get_priv_flags)(struct net_device *);
int (*set_priv_flags)(struct net_device *, u32);
int (*get_sset_count)(struct net_device *, int);
int (*get_rxnfc)(struct net_device *, struct ethtool_rxnfc *, u32 *);
int (*set_rxnfc)(struct net_device *, struct ethtool_rxnfc *);
int (*flash_device)(struct net_device *, struct ethtool_flash *);
int (*reset)(struct net_device *, u32 *);
u32 (*get_rxfh_key_size)(struct net_device *);
u32 (*get_rxfh_indir_size)(struct net_device *);
int (*get_rxfh)(struct net_device *, u32 *, u8 *, u8 *);
int (*set_rxfh)(struct net_device *, const u32 *, const u8 *, const u8);
int (*get_rxfh_context)(struct net_device *, u32 *, u8 *, u8 *, u32);
int (*set_rxfh_context)(struct net_device *, const u32 *, const u8 *, const u8, u32 *, bool);
void (*get_channels)(struct net_device *, struct ethtool_channels *);
int (*set_channels)(struct net_device *, struct ethtool_channels *);
int (*get_dump_flag)(struct net_device *, struct ethtool_dump *);
int (*get_dump_data)(struct net_device *, struct ethtool_dump *, void *);
int (*set_dump)(struct net_device *, struct ethtool_dump *);
int (*get_ts_info)(struct net_device *, struct ethtool_ts_info *);
int (*get_module_info)(struct net_device *, struct ethtool_modinfo *);
int (*get_module_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *);
int (*get_eee)(struct net_device *, struct ethtool_eee *);
int (*set_eee)(struct net_device *, struct ethtool_eee *);
int (*get_tunable)(struct net_device *, const struct ethtool_tunable *, void *);
int (*set_tunable)(struct net_device *, const struct ethtool_tunable *, const void *);
int (*get_per_queue_coalesce)(struct net_device *, u32, struct ethtool_coalesce *);
int (*set_per_queue_coalesce)(struct net_device *, u32, struct ethtool_coalesce *);
int (*get_link_ksettings)(struct net_device *, struct ethtool_link_ksettings *);
int (*set_link_ksettings)(struct net_device *, const struct ethtool_link_ksettings *);
int (*get_fecparam)(struct net_device *, struct ethtool_fecparam *);
int (*set_fecparam)(struct net_device *, struct ethtool_fecparam *);
void (*get_ethtool_phy_stats)(struct net_device *, struct ethtool_stats *, u64 *);
};
riscv64: ✅struct ethtool_ops {
void (*get_drvinfo)(struct net_device *, struct ethtool_drvinfo *);
int (*get_regs_len)(struct net_device *);
void (*get_regs)(struct net_device *, struct ethtool_regs *, void *);
void (*get_wol)(struct net_device *, struct ethtool_wolinfo *);
int (*set_wol)(struct net_device *, struct ethtool_wolinfo *);
u32 (*get_msglevel)(struct net_device *);
void (*set_msglevel)(struct net_device *, u32);
int (*nway_reset)(struct net_device *);
u32 (*get_link)(struct net_device *);
int (*get_eeprom_len)(struct net_device *);
int (*get_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *);
int (*set_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *);
int (*get_coalesce)(struct net_device *, struct ethtool_coalesce *);
int (*set_coalesce)(struct net_device *, struct ethtool_coalesce *);
void (*get_ringparam)(struct net_device *, struct ethtool_ringparam *);
int (*set_ringparam)(struct net_device *, struct ethtool_ringparam *);
void (*get_pauseparam)(struct net_device *, struct ethtool_pauseparam *);
int (*set_pauseparam)(struct net_device *, struct ethtool_pauseparam *);
void (*self_test)(struct net_device *, struct ethtool_test *, u64 *);
void (*get_strings)(struct net_device *, u32, u8 *);
int (*set_phys_id)(struct net_device *, enum ethtool_phys_id_state);
void (*get_ethtool_stats)(struct net_device *, struct ethtool_stats *, u64 *);
int (*begin)(struct net_device *);
void (*complete)(struct net_device *);
u32 (*get_priv_flags)(struct net_device *);
int (*set_priv_flags)(struct net_device *, u32);
int (*get_sset_count)(struct net_device *, int);
int (*get_rxnfc)(struct net_device *, struct ethtool_rxnfc *, u32 *);
int (*set_rxnfc)(struct net_device *, struct ethtool_rxnfc *);
int (*flash_device)(struct net_device *, struct ethtool_flash *);
int (*reset)(struct net_device *, u32 *);
u32 (*get_rxfh_key_size)(struct net_device *);
u32 (*get_rxfh_indir_size)(struct net_device *);
int (*get_rxfh)(struct net_device *, u32 *, u8 *, u8 *);
int (*set_rxfh)(struct net_device *, const u32 *, const u8 *, const u8);
int (*get_rxfh_context)(struct net_device *, u32 *, u8 *, u8 *, u32);
int (*set_rxfh_context)(struct net_device *, const u32 *, const u8 *, const u8, u32 *, bool);
void (*get_channels)(struct net_device *, struct ethtool_channels *);
int (*set_channels)(struct net_device *, struct ethtool_channels *);
int (*get_dump_flag)(struct net_device *, struct ethtool_dump *);
int (*get_dump_data)(struct net_device *, struct ethtool_dump *, void *);
int (*set_dump)(struct net_device *, struct ethtool_dump *);
int (*get_ts_info)(struct net_device *, struct ethtool_ts_info *);
int (*get_module_info)(struct net_device *, struct ethtool_modinfo *);
int (*get_module_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *);
int (*get_eee)(struct net_device *, struct ethtool_eee *);
int (*set_eee)(struct net_device *, struct ethtool_eee *);
int (*get_tunable)(struct net_device *, const struct ethtool_tunable *, void *);
int (*set_tunable)(struct net_device *, const struct ethtool_tunable *, const void *);
int (*get_per_queue_coalesce)(struct net_device *, u32, struct ethtool_coalesce *);
int (*set_per_queue_coalesce)(struct net_device *, u32, struct ethtool_coalesce *);
int (*get_link_ksettings)(struct net_device *, struct ethtool_link_ksettings *);
int (*set_link_ksettings)(struct net_device *, const struct ethtool_link_ksettings *);
int (*get_fecparam)(struct net_device *, struct ethtool_fecparam *);
int (*set_fecparam)(struct net_device *, struct ethtool_fecparam *);
void (*get_ethtool_phy_stats)(struct net_device *, struct ethtool_stats *, u64 *);
};
aws: ✅struct ethtool_ops {
void (*get_drvinfo)(struct net_device *, struct ethtool_drvinfo *);
int (*get_regs_len)(struct net_device *);
void (*get_regs)(struct net_device *, struct ethtool_regs *, void *);
void (*get_wol)(struct net_device *, struct ethtool_wolinfo *);
int (*set_wol)(struct net_device *, struct ethtool_wolinfo *);
u32 (*get_msglevel)(struct net_device *);
void (*set_msglevel)(struct net_device *, u32);
int (*nway_reset)(struct net_device *);
u32 (*get_link)(struct net_device *);
int (*get_eeprom_len)(struct net_device *);
int (*get_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *);
int (*set_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *);
int (*get_coalesce)(struct net_device *, struct ethtool_coalesce *);
int (*set_coalesce)(struct net_device *, struct ethtool_coalesce *);
void (*get_ringparam)(struct net_device *, struct ethtool_ringparam *);
int (*set_ringparam)(struct net_device *, struct ethtool_ringparam *);
void (*get_pauseparam)(struct net_device *, struct ethtool_pauseparam *);
int (*set_pauseparam)(struct net_device *, struct ethtool_pauseparam *);
void (*self_test)(struct net_device *, struct ethtool_test *, u64 *);
void (*get_strings)(struct net_device *, u32, u8 *);
int (*set_phys_id)(struct net_device *, enum ethtool_phys_id_state);
void (*get_ethtool_stats)(struct net_device *, struct ethtool_stats *, u64 *);
int (*begin)(struct net_device *);
void (*complete)(struct net_device *);
u32 (*get_priv_flags)(struct net_device *);
int (*set_priv_flags)(struct net_device *, u32);
int (*get_sset_count)(struct net_device *, int);
int (*get_rxnfc)(struct net_device *, struct ethtool_rxnfc *, u32 *);
int (*set_rxnfc)(struct net_device *, struct ethtool_rxnfc *);
int (*flash_device)(struct net_device *, struct ethtool_flash *);
int (*reset)(struct net_device *, u32 *);
u32 (*get_rxfh_key_size)(struct net_device *);
u32 (*get_rxfh_indir_size)(struct net_device *);
int (*get_rxfh)(struct net_device *, u32 *, u8 *, u8 *);
int (*set_rxfh)(struct net_device *, const u32 *, const u8 *, const u8);
int (*get_rxfh_context)(struct net_device *, u32 *, u8 *, u8 *, u32);
int (*set_rxfh_context)(struct net_device *, const u32 *, const u8 *, const u8, u32 *, bool);
void (*get_channels)(struct net_device *, struct ethtool_channels *);
int (*set_channels)(struct net_device *, struct ethtool_channels *);
int (*get_dump_flag)(struct net_device *, struct ethtool_dump *);
int (*get_dump_data)(struct net_device *, struct ethtool_dump *, void *);
int (*set_dump)(struct net_device *, struct ethtool_dump *);
int (*get_ts_info)(struct net_device *, struct ethtool_ts_info *);
int (*get_module_info)(struct net_device *, struct ethtool_modinfo *);
int (*get_module_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *);
int (*get_eee)(struct net_device *, struct ethtool_eee *);
int (*set_eee)(struct net_device *, struct ethtool_eee *);
int (*get_tunable)(struct net_device *, const struct ethtool_tunable *, void *);
int (*set_tunable)(struct net_device *, const struct ethtool_tunable *, const void *);
int (*get_per_queue_coalesce)(struct net_device *, u32, struct ethtool_coalesce *);
int (*set_per_queue_coalesce)(struct net_device *, u32, struct ethtool_coalesce *);
int (*get_link_ksettings)(struct net_device *, struct ethtool_link_ksettings *);
int (*set_link_ksettings)(struct net_device *, const struct ethtool_link_ksettings *);
int (*get_fecparam)(struct net_device *, struct ethtool_fecparam *);
int (*set_fecparam)(struct net_device *, struct ethtool_fecparam *);
void (*get_ethtool_phy_stats)(struct net_device *, struct ethtool_stats *, u64 *);
};
azure: ✅struct ethtool_ops {
void (*get_drvinfo)(struct net_device *, struct ethtool_drvinfo *);
int (*get_regs_len)(struct net_device *);
void (*get_regs)(struct net_device *, struct ethtool_regs *, void *);
void (*get_wol)(struct net_device *, struct ethtool_wolinfo *);
int (*set_wol)(struct net_device *, struct ethtool_wolinfo *);
u32 (*get_msglevel)(struct net_device *);
void (*set_msglevel)(struct net_device *, u32);
int (*nway_reset)(struct net_device *);
u32 (*get_link)(struct net_device *);
int (*get_eeprom_len)(struct net_device *);
int (*get_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *);
int (*set_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *);
int (*get_coalesce)(struct net_device *, struct ethtool_coalesce *);
int (*set_coalesce)(struct net_device *, struct ethtool_coalesce *);
void (*get_ringparam)(struct net_device *, struct ethtool_ringparam *);
int (*set_ringparam)(struct net_device *, struct ethtool_ringparam *);
void (*get_pauseparam)(struct net_device *, struct ethtool_pauseparam *);
int (*set_pauseparam)(struct net_device *, struct ethtool_pauseparam *);
void (*self_test)(struct net_device *, struct ethtool_test *, u64 *);
void (*get_strings)(struct net_device *, u32, u8 *);
int (*set_phys_id)(struct net_device *, enum ethtool_phys_id_state);
void (*get_ethtool_stats)(struct net_device *, struct ethtool_stats *, u64 *);
int (*begin)(struct net_device *);
void (*complete)(struct net_device *);
u32 (*get_priv_flags)(struct net_device *);
int (*set_priv_flags)(struct net_device *, u32);
int (*get_sset_count)(struct net_device *, int);
int (*get_rxnfc)(struct net_device *, struct ethtool_rxnfc *, u32 *);
int (*set_rxnfc)(struct net_device *, struct ethtool_rxnfc *);
int (*flash_device)(struct net_device *, struct ethtool_flash *);
int (*reset)(struct net_device *, u32 *);
u32 (*get_rxfh_key_size)(struct net_device *);
u32 (*get_rxfh_indir_size)(struct net_device *);
int (*get_rxfh)(struct net_device *, u32 *, u8 *, u8 *);
int (*set_rxfh)(struct net_device *, const u32 *, const u8 *, const u8);
int (*get_rxfh_context)(struct net_device *, u32 *, u8 *, u8 *, u32);
int (*set_rxfh_context)(struct net_device *, const u32 *, const u8 *, const u8, u32 *, bool);
void (*get_channels)(struct net_device *, struct ethtool_channels *);
int (*set_channels)(struct net_device *, struct ethtool_channels *);
int (*get_dump_flag)(struct net_device *, struct ethtool_dump *);
int (*get_dump_data)(struct net_device *, struct ethtool_dump *, void *);
int (*set_dump)(struct net_device *, struct ethtool_dump *);
int (*get_ts_info)(struct net_device *, struct ethtool_ts_info *);
int (*get_module_info)(struct net_device *, struct ethtool_modinfo *);
int (*get_module_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *);
int (*get_eee)(struct net_device *, struct ethtool_eee *);
int (*set_eee)(struct net_device *, struct ethtool_eee *);
int (*get_tunable)(struct net_device *, const struct ethtool_tunable *, void *);
int (*set_tunable)(struct net_device *, const struct ethtool_tunable *, const void *);
int (*get_per_queue_coalesce)(struct net_device *, u32, struct ethtool_coalesce *);
int (*set_per_queue_coalesce)(struct net_device *, u32, struct ethtool_coalesce *);
int (*get_link_ksettings)(struct net_device *, struct ethtool_link_ksettings *);
int (*set_link_ksettings)(struct net_device *, const struct ethtool_link_ksettings *);
int (*get_fecparam)(struct net_device *, struct ethtool_fecparam *);
int (*set_fecparam)(struct net_device *, struct ethtool_fecparam *);
void (*get_ethtool_phy_stats)(struct net_device *, struct ethtool_stats *, u64 *);
};
gcp: ✅struct ethtool_ops {
void (*get_drvinfo)(struct net_device *, struct ethtool_drvinfo *);
int (*get_regs_len)(struct net_device *);
void (*get_regs)(struct net_device *, struct ethtool_regs *, void *);
void (*get_wol)(struct net_device *, struct ethtool_wolinfo *);
int (*set_wol)(struct net_device *, struct ethtool_wolinfo *);
u32 (*get_msglevel)(struct net_device *);
void (*set_msglevel)(struct net_device *, u32);
int (*nway_reset)(struct net_device *);
u32 (*get_link)(struct net_device *);
int (*get_eeprom_len)(struct net_device *);
int (*get_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *);
int (*set_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *);
int (*get_coalesce)(struct net_device *, struct ethtool_coalesce *);
int (*set_coalesce)(struct net_device *, struct ethtool_coalesce *);
void (*get_ringparam)(struct net_device *, struct ethtool_ringparam *);
int (*set_ringparam)(struct net_device *, struct ethtool_ringparam *);
void (*get_pauseparam)(struct net_device *, struct ethtool_pauseparam *);
int (*set_pauseparam)(struct net_device *, struct ethtool_pauseparam *);
void (*self_test)(struct net_device *, struct ethtool_test *, u64 *);
void (*get_strings)(struct net_device *, u32, u8 *);
int (*set_phys_id)(struct net_device *, enum ethtool_phys_id_state);
void (*get_ethtool_stats)(struct net_device *, struct ethtool_stats *, u64 *);
int (*begin)(struct net_device *);
void (*complete)(struct net_device *);
u32 (*get_priv_flags)(struct net_device *);
int (*set_priv_flags)(struct net_device *, u32);
int (*get_sset_count)(struct net_device *, int);
int (*get_rxnfc)(struct net_device *, struct ethtool_rxnfc *, u32 *);
int (*set_rxnfc)(struct net_device *, struct ethtool_rxnfc *);
int (*flash_device)(struct net_device *, struct ethtool_flash *);
int (*reset)(struct net_device *, u32 *);
u32 (*get_rxfh_key_size)(struct net_device *);
u32 (*get_rxfh_indir_size)(struct net_device *);
int (*get_rxfh)(struct net_device *, u32 *, u8 *, u8 *);
int (*set_rxfh)(struct net_device *, const u32 *, const u8 *, const u8);
int (*get_rxfh_context)(struct net_device *, u32 *, u8 *, u8 *, u32);
int (*set_rxfh_context)(struct net_device *, const u32 *, const u8 *, const u8, u32 *, bool);
void (*get_channels)(struct net_device *, struct ethtool_channels *);
int (*set_channels)(struct net_device *, struct ethtool_channels *);
int (*get_dump_flag)(struct net_device *, struct ethtool_dump *);
int (*get_dump_data)(struct net_device *, struct ethtool_dump *, void *);
int (*set_dump)(struct net_device *, struct ethtool_dump *);
int (*get_ts_info)(struct net_device *, struct ethtool_ts_info *);
int (*get_module_info)(struct net_device *, struct ethtool_modinfo *);
int (*get_module_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *);
int (*get_eee)(struct net_device *, struct ethtool_eee *);
int (*set_eee)(struct net_device *, struct ethtool_eee *);
int (*get_tunable)(struct net_device *, const struct ethtool_tunable *, void *);
int (*set_tunable)(struct net_device *, const struct ethtool_tunable *, const void *);
int (*get_per_queue_coalesce)(struct net_device *, u32, struct ethtool_coalesce *);
int (*set_per_queue_coalesce)(struct net_device *, u32, struct ethtool_coalesce *);
int (*get_link_ksettings)(struct net_device *, struct ethtool_link_ksettings *);
int (*set_link_ksettings)(struct net_device *, const struct ethtool_link_ksettings *);
int (*get_fecparam)(struct net_device *, struct ethtool_fecparam *);
int (*set_fecparam)(struct net_device *, struct ethtool_fecparam *);
void (*get_ethtool_phy_stats)(struct net_device *, struct ethtool_stats *, u64 *);
};
lowlatency: ✅struct ethtool_ops {
void (*get_drvinfo)(struct net_device *, struct ethtool_drvinfo *);
int (*get_regs_len)(struct net_device *);
void (*get_regs)(struct net_device *, struct ethtool_regs *, void *);
void (*get_wol)(struct net_device *, struct ethtool_wolinfo *);
int (*set_wol)(struct net_device *, struct ethtool_wolinfo *);
u32 (*get_msglevel)(struct net_device *);
void (*set_msglevel)(struct net_device *, u32);
int (*nway_reset)(struct net_device *);
u32 (*get_link)(struct net_device *);
int (*get_eeprom_len)(struct net_device *);
int (*get_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *);
int (*set_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *);
int (*get_coalesce)(struct net_device *, struct ethtool_coalesce *);
int (*set_coalesce)(struct net_device *, struct ethtool_coalesce *);
void (*get_ringparam)(struct net_device *, struct ethtool_ringparam *);
int (*set_ringparam)(struct net_device *, struct ethtool_ringparam *);
void (*get_pauseparam)(struct net_device *, struct ethtool_pauseparam *);
int (*set_pauseparam)(struct net_device *, struct ethtool_pauseparam *);
void (*self_test)(struct net_device *, struct ethtool_test *, u64 *);
void (*get_strings)(struct net_device *, u32, u8 *);
int (*set_phys_id)(struct net_device *, enum ethtool_phys_id_state);
void (*get_ethtool_stats)(struct net_device *, struct ethtool_stats *, u64 *);
int (*begin)(struct net_device *);
void (*complete)(struct net_device *);
u32 (*get_priv_flags)(struct net_device *);
int (*set_priv_flags)(struct net_device *, u32);
int (*get_sset_count)(struct net_device *, int);
int (*get_rxnfc)(struct net_device *, struct ethtool_rxnfc *, u32 *);
int (*set_rxnfc)(struct net_device *, struct ethtool_rxnfc *);
int (*flash_device)(struct net_device *, struct ethtool_flash *);
int (*reset)(struct net_device *, u32 *);
u32 (*get_rxfh_key_size)(struct net_device *);
u32 (*get_rxfh_indir_size)(struct net_device *);
int (*get_rxfh)(struct net_device *, u32 *, u8 *, u8 *);
int (*set_rxfh)(struct net_device *, const u32 *, const u8 *, const u8);
int (*get_rxfh_context)(struct net_device *, u32 *, u8 *, u8 *, u32);
int (*set_rxfh_context)(struct net_device *, const u32 *, const u8 *, const u8, u32 *, bool);
void (*get_channels)(struct net_device *, struct ethtool_channels *);
int (*set_channels)(struct net_device *, struct ethtool_channels *);
int (*get_dump_flag)(struct net_device *, struct ethtool_dump *);
int (*get_dump_data)(struct net_device *, struct ethtool_dump *, void *);
int (*set_dump)(struct net_device *, struct ethtool_dump *);
int (*get_ts_info)(struct net_device *, struct ethtool_ts_info *);
int (*get_module_info)(struct net_device *, struct ethtool_modinfo *);
int (*get_module_eeprom)(struct net_device *, struct ethtool_eeprom *, u8 *);
int (*get_eee)(struct net_device *, struct ethtool_eee *);
int (*set_eee)(struct net_device *, struct ethtool_eee *);
int (*get_tunable)(struct net_device *, const struct ethtool_tunable *, void *);
int (*set_tunable)(struct net_device *, const struct ethtool_tunable *, const void *);
int (*get_per_queue_coalesce)(struct net_device *, u32, struct ethtool_coalesce *);
int (*set_per_queue_coalesce)(struct net_device *, u32, struct ethtool_coalesce *);
int (*get_link_ksettings)(struct net_device *, struct ethtool_link_ksettings *);
int (*set_link_ksettings)(struct net_device *, const struct ethtool_link_ksettings *);
int (*get_fecparam)(struct net_device *, struct ethtool_fecparam *);
int (*set_fecparam)(struct net_device *, struct ethtool_fecparam *);
void (*get_ethtool_phy_stats)(struct net_device *, struct ethtool_stats *, u64 *);
};
Regular
4.4 and 4.8 ⚠️int (*get_per_queue_coalesce)(struct net_device *, u32, struct ethtool_coalesce *)
int (*set_per_queue_coalesce)(struct net_device *, u32, struct ethtool_coalesce *)
int (*get_link_ksettings)(struct net_device *, struct ethtool_link_ksettings *)
int (*set_link_ksettings)(struct net_device *, const struct ethtool_link_ksettings *)
4.8 and 4.10 ✅
4.10 and 4.13 ✅
4.13 and 4.15 ⚠️int (*get_fecparam)(struct net_device *, struct ethtool_fecparam *)
int (*set_fecparam)(struct net_device *, struct ethtool_fecparam *)
4.15 and 4.18 ⚠️int (*get_rxfh_context)(struct net_device *, u32 *, u8 *, u8 *, u32)
int (*set_rxfh_context)(struct net_device *, const u32 *, const u8 *, const u8, u32 *, bool)
void (*get_ethtool_phy_stats)(struct net_device *, struct ethtool_stats *, u64 *)
4.18 and 5.0 ⚠️int (*get_settings)(struct net_device *, struct ethtool_cmd *)
int (*set_settings)(struct net_device *, struct ethtool_cmd *)
5.0 and 5.3 ✅
5.3 and 5.4 ✅
5.4 and 5.8 ⚠️u32 supported_coalesce_params
5.8 and 5.11 ⚠️int (*get_link_ext_state)(struct net_device *, struct ethtool_link_ext_state_info *)
void (*get_pause_stats)(struct net_device *, struct ethtool_pause_stats *)
int (*get_phy_tunable)(struct net_device *, const struct ethtool_tunable *, void *)
int (*set_phy_tunable)(struct net_device *, const struct ethtool_tunable *, const void *)
5.11 and 5.13 ⚠️u32 cap_link_lanes_supported
void (*get_fec_stats)(struct net_device *, struct ethtool_fec_stats *)
int (*get_module_eeprom_by_page)(struct net_device *, const struct ethtool_module_eeprom *, struct netlink_ext_ack *)
void (*get_eth_phy_stats)(struct net_device *, struct ethtool_eth_phy_stats *)
void (*get_eth_mac_stats)(struct net_device *, struct ethtool_eth_mac_stats *)
void (*get_eth_ctrl_stats)(struct net_device *, struct ethtool_eth_ctrl_stats *)
void (*get_rmon_stats)(struct net_device *, struct ethtool_rmon_stats *, const struct ethtool_rmon_hist_range **)
5.13 and 5.15 ⚠️int (*get_coalesce)(struct net_device *, struct ethtool_coalesce *) ➡️ int (*get_coalesce)(struct net_device *, struct ethtool_coalesce *, struct kernel_ethtool_coalesce *, struct netlink_ext_ack *)
int (*set_coalesce)(struct net_device *, struct ethtool_coalesce *) ➡️ int (*set_coalesce)(struct net_device *, struct ethtool_coalesce *, struct kernel_ethtool_coalesce *, struct netlink_ext_ack *)
5.15 and 5.19 ⚠️u32 supported_ring_params
int (*get_module_power_mode)(struct net_device *, struct ethtool_module_power_mode_params *, struct netlink_ext_ack *)
int (*set_module_power_mode)(struct net_device *, const struct ethtool_module_power_mode_params *, struct netlink_ext_ack *)
void (*get_ringparam)(struct net_device *, struct ethtool_ringparam *) ➡️ void (*get_ringparam)(struct net_device *, struct ethtool_ringparam *, struct kernel_ethtool_ringparam *, struct netlink_ext_ack *)
int (*set_ringparam)(struct net_device *, struct ethtool_ringparam *) ➡️ int (*set_ringparam)(struct net_device *, struct ethtool_ringparam *, struct kernel_ethtool_ringparam *, struct netlink_ext_ack *)
5.19 and 6.2 ⚠️void (*get_link_ext_stats)(struct net_device *, struct ethtool_link_ext_stats *)
6.2 and 6.5 ⚠️int (*get_mm)(struct net_device *, struct ethtool_mm_state *)
int (*set_mm)(struct net_device *, struct ethtool_mm_cfg *, struct netlink_ext_ack *)
void (*get_mm_stats)(struct net_device *, struct ethtool_mm_stats *)
6.5 and 6.8 ⚠️u32 cap_rss_ctx_supported
u32 cap_rss_sym_xor_supported
int (*get_rxfh_context)(struct net_device *, u32 *, u8 *, u8 *, u32)
int (*set_rxfh_context)(struct net_device *, const u32 *, const u8 *, const u8, u32 *, bool)
int (*get_rxfh)(struct net_device *, u32 *, u8 *, u8 *) ➡️ int (*get_rxfh)(struct net_device *, struct ethtool_rxfh_param *)
int (*set_rxfh)(struct net_device *, const u32 *, const u8 *, const u8) ➡️ int (*set_rxfh)(struct net_device *, struct ethtool_rxfh_param *, struct netlink_ext_ack *)
amd64 and arm64 ✅
amd64 and armhf ✅
amd64 and ppc64el ✅
amd64 and riscv64 ✅
generic and aws ✅
generic and azure ✅
generic and gcp ✅
generic and lowlatency ✅