phy_driver
Regular
4.4
: ✅struct phy_driver {
u32 phy_id;
char *name;
unsigned int phy_id_mask;
u32 features;
u32 flags;
const void *driver_data;
int (*soft_reset)(struct phy_device *);
int (*config_init)(struct phy_device *);
int (*probe)(struct phy_device *);
int (*suspend)(struct phy_device *);
int (*resume)(struct phy_device *);
int (*config_aneg)(struct phy_device *);
int (*aneg_done)(struct phy_device *);
int (*read_status)(struct phy_device *);
int (*ack_interrupt)(struct phy_device *);
int (*config_intr)(struct phy_device *);
int (*did_interrupt)(struct phy_device *);
void (*remove)(struct phy_device *);
int (*match_phy_device)(struct phy_device *);
int (*ts_info)(struct phy_device *, struct ethtool_ts_info *);
int (*hwtstamp)(struct phy_device *, struct ifreq *);
bool (*rxtstamp)(struct phy_device *, struct sk_buff *, int);
void (*txtstamp)(struct phy_device *, struct sk_buff *, int);
int (*set_wol)(struct phy_device *, struct ethtool_wolinfo *);
void (*get_wol)(struct phy_device *, struct ethtool_wolinfo *);
void (*link_change_notify)(struct phy_device *);
int (*read_mmd_indirect)(struct phy_device *, int, int, int);
void (*write_mmd_indirect)(struct phy_device *, int, int, int, u32);
int (*module_info)(struct phy_device *, struct ethtool_modinfo *);
int (*module_eeprom)(struct phy_device *, struct ethtool_eeprom *, u8 *);
struct device_driver driver;
};
4.8
: ✅struct phy_driver {
struct mdio_driver_common mdiodrv;
u32 phy_id;
char *name;
unsigned int phy_id_mask;
u32 features;
u32 flags;
const void *driver_data;
int (*soft_reset)(struct phy_device *);
int (*config_init)(struct phy_device *);
int (*probe)(struct phy_device *);
int (*suspend)(struct phy_device *);
int (*resume)(struct phy_device *);
int (*config_aneg)(struct phy_device *);
int (*aneg_done)(struct phy_device *);
int (*read_status)(struct phy_device *);
int (*ack_interrupt)(struct phy_device *);
int (*config_intr)(struct phy_device *);
int (*did_interrupt)(struct phy_device *);
void (*remove)(struct phy_device *);
int (*match_phy_device)(struct phy_device *);
int (*ts_info)(struct phy_device *, struct ethtool_ts_info *);
int (*hwtstamp)(struct phy_device *, struct ifreq *);
bool (*rxtstamp)(struct phy_device *, struct sk_buff *, int);
void (*txtstamp)(struct phy_device *, struct sk_buff *, int);
int (*set_wol)(struct phy_device *, struct ethtool_wolinfo *);
void (*get_wol)(struct phy_device *, struct ethtool_wolinfo *);
void (*link_change_notify)(struct phy_device *);
int (*read_mmd_indirect)(struct phy_device *, int, int, int);
void (*write_mmd_indirect)(struct phy_device *, int, int, int, u32);
int (*module_info)(struct phy_device *, struct ethtool_modinfo *);
int (*module_eeprom)(struct phy_device *, struct ethtool_eeprom *, u8 *);
int (*get_sset_count)(struct phy_device *);
void (*get_strings)(struct phy_device *, u8 *);
void (*get_stats)(struct phy_device *, struct ethtool_stats *, u64 *);
};
4.10
: ✅struct phy_driver {
struct mdio_driver_common mdiodrv;
u32 phy_id;
char *name;
unsigned int phy_id_mask;
u32 features;
u32 flags;
const void *driver_data;
int (*soft_reset)(struct phy_device *);
int (*config_init)(struct phy_device *);
int (*probe)(struct phy_device *);
int (*suspend)(struct phy_device *);
int (*resume)(struct phy_device *);
int (*config_aneg)(struct phy_device *);
int (*aneg_done)(struct phy_device *);
int (*read_status)(struct phy_device *);
int (*ack_interrupt)(struct phy_device *);
int (*config_intr)(struct phy_device *);
int (*did_interrupt)(struct phy_device *);
void (*remove)(struct phy_device *);
int (*match_phy_device)(struct phy_device *);
int (*ts_info)(struct phy_device *, struct ethtool_ts_info *);
int (*hwtstamp)(struct phy_device *, struct ifreq *);
bool (*rxtstamp)(struct phy_device *, struct sk_buff *, int);
void (*txtstamp)(struct phy_device *, struct sk_buff *, int);
int (*set_wol)(struct phy_device *, struct ethtool_wolinfo *);
void (*get_wol)(struct phy_device *, struct ethtool_wolinfo *);
void (*link_change_notify)(struct phy_device *);
int (*read_mmd_indirect)(struct phy_device *, int, int, int);
void (*write_mmd_indirect)(struct phy_device *, int, int, int, u32);
int (*module_info)(struct phy_device *, struct ethtool_modinfo *);
int (*module_eeprom)(struct phy_device *, struct ethtool_eeprom *, u8 *);
int (*get_sset_count)(struct phy_device *);
void (*get_strings)(struct phy_device *, u8 *);
void (*get_stats)(struct phy_device *, struct ethtool_stats *, u64 *);
int (*get_tunable)(struct phy_device *, struct ethtool_tunable *, void *);
int (*set_tunable)(struct phy_device *, struct ethtool_tunable *, const void *);
};
4.13
: ✅struct phy_driver {
struct mdio_driver_common mdiodrv;
u32 phy_id;
char *name;
unsigned int phy_id_mask;
u32 features;
u32 flags;
const void *driver_data;
int (*soft_reset)(struct phy_device *);
int (*config_init)(struct phy_device *);
int (*probe)(struct phy_device *);
int (*suspend)(struct phy_device *);
int (*resume)(struct phy_device *);
int (*config_aneg)(struct phy_device *);
int (*aneg_done)(struct phy_device *);
int (*read_status)(struct phy_device *);
int (*ack_interrupt)(struct phy_device *);
int (*config_intr)(struct phy_device *);
int (*did_interrupt)(struct phy_device *);
void (*remove)(struct phy_device *);
int (*match_phy_device)(struct phy_device *);
int (*ts_info)(struct phy_device *, struct ethtool_ts_info *);
int (*hwtstamp)(struct phy_device *, struct ifreq *);
bool (*rxtstamp)(struct phy_device *, struct sk_buff *, int);
void (*txtstamp)(struct phy_device *, struct sk_buff *, int);
int (*set_wol)(struct phy_device *, struct ethtool_wolinfo *);
void (*get_wol)(struct phy_device *, struct ethtool_wolinfo *);
void (*link_change_notify)(struct phy_device *);
int (*read_mmd)(struct phy_device *, int, u16);
int (*write_mmd)(struct phy_device *, int, u16, u16);
int (*module_info)(struct phy_device *, struct ethtool_modinfo *);
int (*module_eeprom)(struct phy_device *, struct ethtool_eeprom *, u8 *);
int (*get_sset_count)(struct phy_device *);
void (*get_strings)(struct phy_device *, u8 *);
void (*get_stats)(struct phy_device *, struct ethtool_stats *, u64 *);
int (*get_tunable)(struct phy_device *, struct ethtool_tunable *, void *);
int (*set_tunable)(struct phy_device *, struct ethtool_tunable *, const void *);
int (*set_loopback)(struct phy_device *, bool);
};
4.15
: ✅struct phy_driver {
struct mdio_driver_common mdiodrv;
u32 phy_id;
char *name;
unsigned int phy_id_mask;
u32 features;
u32 flags;
const void *driver_data;
int (*soft_reset)(struct phy_device *);
int (*config_init)(struct phy_device *);
int (*probe)(struct phy_device *);
int (*suspend)(struct phy_device *);
int (*resume)(struct phy_device *);
int (*config_aneg)(struct phy_device *);
int (*aneg_done)(struct phy_device *);
int (*read_status)(struct phy_device *);
int (*ack_interrupt)(struct phy_device *);
int (*config_intr)(struct phy_device *);
int (*did_interrupt)(struct phy_device *);
void (*remove)(struct phy_device *);
int (*match_phy_device)(struct phy_device *);
int (*ts_info)(struct phy_device *, struct ethtool_ts_info *);
int (*hwtstamp)(struct phy_device *, struct ifreq *);
bool (*rxtstamp)(struct phy_device *, struct sk_buff *, int);
void (*txtstamp)(struct phy_device *, struct sk_buff *, int);
int (*set_wol)(struct phy_device *, struct ethtool_wolinfo *);
void (*get_wol)(struct phy_device *, struct ethtool_wolinfo *);
void (*link_change_notify)(struct phy_device *);
int (*read_mmd)(struct phy_device *, int, u16);
int (*write_mmd)(struct phy_device *, int, u16, u16);
int (*module_info)(struct phy_device *, struct ethtool_modinfo *);
int (*module_eeprom)(struct phy_device *, struct ethtool_eeprom *, u8 *);
int (*get_sset_count)(struct phy_device *);
void (*get_strings)(struct phy_device *, u8 *);
void (*get_stats)(struct phy_device *, struct ethtool_stats *, u64 *);
int (*get_tunable)(struct phy_device *, struct ethtool_tunable *, void *);
int (*set_tunable)(struct phy_device *, struct ethtool_tunable *, const void *);
int (*set_loopback)(struct phy_device *, bool);
};
4.18
: ✅struct phy_driver {
struct mdio_driver_common mdiodrv;
u32 phy_id;
char *name;
u32 phy_id_mask;
u32 features;
u32 flags;
const void *driver_data;
int (*soft_reset)(struct phy_device *);
int (*config_init)(struct phy_device *);
int (*probe)(struct phy_device *);
int (*suspend)(struct phy_device *);
int (*resume)(struct phy_device *);
int (*config_aneg)(struct phy_device *);
int (*aneg_done)(struct phy_device *);
int (*read_status)(struct phy_device *);
int (*ack_interrupt)(struct phy_device *);
int (*config_intr)(struct phy_device *);
int (*did_interrupt)(struct phy_device *);
void (*remove)(struct phy_device *);
int (*match_phy_device)(struct phy_device *);
int (*ts_info)(struct phy_device *, struct ethtool_ts_info *);
int (*hwtstamp)(struct phy_device *, struct ifreq *);
bool (*rxtstamp)(struct phy_device *, struct sk_buff *, int);
void (*txtstamp)(struct phy_device *, struct sk_buff *, int);
int (*set_wol)(struct phy_device *, struct ethtool_wolinfo *);
void (*get_wol)(struct phy_device *, struct ethtool_wolinfo *);
void (*link_change_notify)(struct phy_device *);
int (*read_mmd)(struct phy_device *, int, u16);
int (*write_mmd)(struct phy_device *, int, u16, u16);
int (*read_page)(struct phy_device *);
int (*write_page)(struct phy_device *, int);
int (*module_info)(struct phy_device *, struct ethtool_modinfo *);
int (*module_eeprom)(struct phy_device *, struct ethtool_eeprom *, u8 *);
int (*get_sset_count)(struct phy_device *);
void (*get_strings)(struct phy_device *, u8 *);
void (*get_stats)(struct phy_device *, struct ethtool_stats *, u64 *);
int (*get_tunable)(struct phy_device *, struct ethtool_tunable *, void *);
int (*set_tunable)(struct phy_device *, struct ethtool_tunable *, const void *);
int (*set_loopback)(struct phy_device *, bool);
};
5.0
: ✅struct phy_driver {
struct mdio_driver_common mdiodrv;
u32 phy_id;
char *name;
u32 phy_id_mask;
const const long unsigned int * features;
u32 flags;
const void *driver_data;
int (*soft_reset)(struct phy_device *);
int (*config_init)(struct phy_device *);
int (*probe)(struct phy_device *);
int (*suspend)(struct phy_device *);
int (*resume)(struct phy_device *);
int (*config_aneg)(struct phy_device *);
int (*aneg_done)(struct phy_device *);
int (*read_status)(struct phy_device *);
int (*ack_interrupt)(struct phy_device *);
int (*config_intr)(struct phy_device *);
int (*did_interrupt)(struct phy_device *);
void (*remove)(struct phy_device *);
int (*match_phy_device)(struct phy_device *);
int (*ts_info)(struct phy_device *, struct ethtool_ts_info *);
int (*hwtstamp)(struct phy_device *, struct ifreq *);
bool (*rxtstamp)(struct phy_device *, struct sk_buff *, int);
void (*txtstamp)(struct phy_device *, struct sk_buff *, int);
int (*set_wol)(struct phy_device *, struct ethtool_wolinfo *);
void (*get_wol)(struct phy_device *, struct ethtool_wolinfo *);
void (*link_change_notify)(struct phy_device *);
int (*read_mmd)(struct phy_device *, int, u16);
int (*write_mmd)(struct phy_device *, int, u16, u16);
int (*read_page)(struct phy_device *);
int (*write_page)(struct phy_device *, int);
int (*module_info)(struct phy_device *, struct ethtool_modinfo *);
int (*module_eeprom)(struct phy_device *, struct ethtool_eeprom *, u8 *);
int (*get_sset_count)(struct phy_device *);
void (*get_strings)(struct phy_device *, u8 *);
void (*get_stats)(struct phy_device *, struct ethtool_stats *, u64 *);
int (*get_tunable)(struct phy_device *, struct ethtool_tunable *, void *);
int (*set_tunable)(struct phy_device *, struct ethtool_tunable *, const void *);
int (*set_loopback)(struct phy_device *, bool);
};
5.3
: ✅struct phy_driver {
struct mdio_driver_common mdiodrv;
u32 phy_id;
char *name;
u32 phy_id_mask;
const const long unsigned int * features;
u32 flags;
const void *driver_data;
int (*soft_reset)(struct phy_device *);
int (*config_init)(struct phy_device *);
int (*probe)(struct phy_device *);
int (*get_features)(struct phy_device *);
int (*suspend)(struct phy_device *);
int (*resume)(struct phy_device *);
int (*config_aneg)(struct phy_device *);
int (*aneg_done)(struct phy_device *);
int (*read_status)(struct phy_device *);
int (*ack_interrupt)(struct phy_device *);
int (*config_intr)(struct phy_device *);
int (*did_interrupt)(struct phy_device *);
int (*handle_interrupt)(struct phy_device *);
void (*remove)(struct phy_device *);
int (*match_phy_device)(struct phy_device *);
int (*ts_info)(struct phy_device *, struct ethtool_ts_info *);
int (*hwtstamp)(struct phy_device *, struct ifreq *);
bool (*rxtstamp)(struct phy_device *, struct sk_buff *, int);
void (*txtstamp)(struct phy_device *, struct sk_buff *, int);
int (*set_wol)(struct phy_device *, struct ethtool_wolinfo *);
void (*get_wol)(struct phy_device *, struct ethtool_wolinfo *);
void (*link_change_notify)(struct phy_device *);
int (*read_mmd)(struct phy_device *, int, u16);
int (*write_mmd)(struct phy_device *, int, u16, u16);
int (*read_page)(struct phy_device *);
int (*write_page)(struct phy_device *, int);
int (*module_info)(struct phy_device *, struct ethtool_modinfo *);
int (*module_eeprom)(struct phy_device *, struct ethtool_eeprom *, u8 *);
int (*get_sset_count)(struct phy_device *);
void (*get_strings)(struct phy_device *, u8 *);
void (*get_stats)(struct phy_device *, struct ethtool_stats *, u64 *);
int (*get_tunable)(struct phy_device *, struct ethtool_tunable *, void *);
int (*set_tunable)(struct phy_device *, struct ethtool_tunable *, const void *);
int (*set_loopback)(struct phy_device *, bool);
};
5.4
: ✅struct phy_driver {
struct mdio_driver_common mdiodrv;
u32 phy_id;
char *name;
u32 phy_id_mask;
const const long unsigned int * features;
u32 flags;
const void *driver_data;
int (*soft_reset)(struct phy_device *);
int (*config_init)(struct phy_device *);
int (*probe)(struct phy_device *);
int (*get_features)(struct phy_device *);
int (*suspend)(struct phy_device *);
int (*resume)(struct phy_device *);
int (*config_aneg)(struct phy_device *);
int (*aneg_done)(struct phy_device *);
int (*read_status)(struct phy_device *);
int (*ack_interrupt)(struct phy_device *);
int (*config_intr)(struct phy_device *);
int (*did_interrupt)(struct phy_device *);
int (*handle_interrupt)(struct phy_device *);
void (*remove)(struct phy_device *);
int (*match_phy_device)(struct phy_device *);
int (*ts_info)(struct phy_device *, struct ethtool_ts_info *);
int (*hwtstamp)(struct phy_device *, struct ifreq *);
bool (*rxtstamp)(struct phy_device *, struct sk_buff *, int);
void (*txtstamp)(struct phy_device *, struct sk_buff *, int);
int (*set_wol)(struct phy_device *, struct ethtool_wolinfo *);
void (*get_wol)(struct phy_device *, struct ethtool_wolinfo *);
void (*link_change_notify)(struct phy_device *);
int (*read_mmd)(struct phy_device *, int, u16);
int (*write_mmd)(struct phy_device *, int, u16, u16);
int (*read_page)(struct phy_device *);
int (*write_page)(struct phy_device *, int);
int (*module_info)(struct phy_device *, struct ethtool_modinfo *);
int (*module_eeprom)(struct phy_device *, struct ethtool_eeprom *, u8 *);
int (*get_sset_count)(struct phy_device *);
void (*get_strings)(struct phy_device *, u8 *);
void (*get_stats)(struct phy_device *, struct ethtool_stats *, u64 *);
int (*get_tunable)(struct phy_device *, struct ethtool_tunable *, void *);
int (*set_tunable)(struct phy_device *, struct ethtool_tunable *, const void *);
int (*set_loopback)(struct phy_device *, bool);
};
5.8
: ✅struct phy_driver {
struct mdio_driver_common mdiodrv;
u32 phy_id;
char *name;
u32 phy_id_mask;
const const long unsigned int * features;
u32 flags;
const void *driver_data;
int (*soft_reset)(struct phy_device *);
int (*config_init)(struct phy_device *);
int (*probe)(struct phy_device *);
int (*get_features)(struct phy_device *);
int (*suspend)(struct phy_device *);
int (*resume)(struct phy_device *);
int (*config_aneg)(struct phy_device *);
int (*aneg_done)(struct phy_device *);
int (*read_status)(struct phy_device *);
int (*ack_interrupt)(struct phy_device *);
int (*config_intr)(struct phy_device *);
int (*did_interrupt)(struct phy_device *);
irqreturn_t (*handle_interrupt)(struct phy_device *);
void (*remove)(struct phy_device *);
int (*match_phy_device)(struct phy_device *);
int (*set_wol)(struct phy_device *, struct ethtool_wolinfo *);
void (*get_wol)(struct phy_device *, struct ethtool_wolinfo *);
void (*link_change_notify)(struct phy_device *);
int (*read_mmd)(struct phy_device *, int, u16);
int (*write_mmd)(struct phy_device *, int, u16, u16);
int (*read_page)(struct phy_device *);
int (*write_page)(struct phy_device *, int);
int (*module_info)(struct phy_device *, struct ethtool_modinfo *);
int (*module_eeprom)(struct phy_device *, struct ethtool_eeprom *, u8 *);
int (*cable_test_start)(struct phy_device *);
int (*cable_test_tdr_start)(struct phy_device *, const struct phy_tdr_config *);
int (*cable_test_get_status)(struct phy_device *, bool *);
int (*get_sset_count)(struct phy_device *);
void (*get_strings)(struct phy_device *, u8 *);
void (*get_stats)(struct phy_device *, struct ethtool_stats *, u64 *);
int (*get_tunable)(struct phy_device *, struct ethtool_tunable *, void *);
int (*set_tunable)(struct phy_device *, struct ethtool_tunable *, const void *);
int (*set_loopback)(struct phy_device *, bool);
int (*get_sqi)(struct phy_device *);
int (*get_sqi_max)(struct phy_device *);
};
5.11
: ✅struct phy_driver {
struct mdio_driver_common mdiodrv;
u32 phy_id;
char *name;
u32 phy_id_mask;
const const long unsigned int * features;
u32 flags;
const void *driver_data;
int (*soft_reset)(struct phy_device *);
int (*config_init)(struct phy_device *);
int (*probe)(struct phy_device *);
int (*get_features)(struct phy_device *);
int (*suspend)(struct phy_device *);
int (*resume)(struct phy_device *);
int (*config_aneg)(struct phy_device *);
int (*aneg_done)(struct phy_device *);
int (*read_status)(struct phy_device *);
int (*config_intr)(struct phy_device *);
irqreturn_t (*handle_interrupt)(struct phy_device *);
void (*remove)(struct phy_device *);
int (*match_phy_device)(struct phy_device *);
int (*set_wol)(struct phy_device *, struct ethtool_wolinfo *);
void (*get_wol)(struct phy_device *, struct ethtool_wolinfo *);
void (*link_change_notify)(struct phy_device *);
int (*read_mmd)(struct phy_device *, int, u16);
int (*write_mmd)(struct phy_device *, int, u16, u16);
int (*read_page)(struct phy_device *);
int (*write_page)(struct phy_device *, int);
int (*module_info)(struct phy_device *, struct ethtool_modinfo *);
int (*module_eeprom)(struct phy_device *, struct ethtool_eeprom *, u8 *);
int (*cable_test_start)(struct phy_device *);
int (*cable_test_tdr_start)(struct phy_device *, const struct phy_tdr_config *);
int (*cable_test_get_status)(struct phy_device *, bool *);
int (*get_sset_count)(struct phy_device *);
void (*get_strings)(struct phy_device *, u8 *);
void (*get_stats)(struct phy_device *, struct ethtool_stats *, u64 *);
int (*get_tunable)(struct phy_device *, struct ethtool_tunable *, void *);
int (*set_tunable)(struct phy_device *, struct ethtool_tunable *, const void *);
int (*set_loopback)(struct phy_device *, bool);
int (*get_sqi)(struct phy_device *);
int (*get_sqi_max)(struct phy_device *);
};
5.13
: ✅struct phy_driver {
struct mdio_driver_common mdiodrv;
u32 phy_id;
char *name;
u32 phy_id_mask;
const const long unsigned int * features;
u32 flags;
const void *driver_data;
int (*soft_reset)(struct phy_device *);
int (*config_init)(struct phy_device *);
int (*probe)(struct phy_device *);
int (*get_features)(struct phy_device *);
int (*suspend)(struct phy_device *);
int (*resume)(struct phy_device *);
int (*config_aneg)(struct phy_device *);
int (*aneg_done)(struct phy_device *);
int (*read_status)(struct phy_device *);
int (*config_intr)(struct phy_device *);
irqreturn_t (*handle_interrupt)(struct phy_device *);
void (*remove)(struct phy_device *);
int (*match_phy_device)(struct phy_device *);
int (*set_wol)(struct phy_device *, struct ethtool_wolinfo *);
void (*get_wol)(struct phy_device *, struct ethtool_wolinfo *);
void (*link_change_notify)(struct phy_device *);
int (*read_mmd)(struct phy_device *, int, u16);
int (*write_mmd)(struct phy_device *, int, u16, u16);
int (*read_page)(struct phy_device *);
int (*write_page)(struct phy_device *, int);
int (*module_info)(struct phy_device *, struct ethtool_modinfo *);
int (*module_eeprom)(struct phy_device *, struct ethtool_eeprom *, u8 *);
int (*cable_test_start)(struct phy_device *);
int (*cable_test_tdr_start)(struct phy_device *, const struct phy_tdr_config *);
int (*cable_test_get_status)(struct phy_device *, bool *);
int (*get_sset_count)(struct phy_device *);
void (*get_strings)(struct phy_device *, u8 *);
void (*get_stats)(struct phy_device *, struct ethtool_stats *, u64 *);
int (*get_tunable)(struct phy_device *, struct ethtool_tunable *, void *);
int (*set_tunable)(struct phy_device *, struct ethtool_tunable *, const void *);
int (*set_loopback)(struct phy_device *, bool);
int (*get_sqi)(struct phy_device *);
int (*get_sqi_max)(struct phy_device *);
};
5.15
: ✅struct phy_driver {
struct mdio_driver_common mdiodrv;
u32 phy_id;
char *name;
u32 phy_id_mask;
const const long unsigned int * features;
u32 flags;
const void *driver_data;
int (*soft_reset)(struct phy_device *);
int (*config_init)(struct phy_device *);
int (*probe)(struct phy_device *);
int (*get_features)(struct phy_device *);
int (*suspend)(struct phy_device *);
int (*resume)(struct phy_device *);
int (*config_aneg)(struct phy_device *);
int (*aneg_done)(struct phy_device *);
int (*read_status)(struct phy_device *);
int (*config_intr)(struct phy_device *);
irqreturn_t (*handle_interrupt)(struct phy_device *);
void (*remove)(struct phy_device *);
int (*match_phy_device)(struct phy_device *);
int (*set_wol)(struct phy_device *, struct ethtool_wolinfo *);
void (*get_wol)(struct phy_device *, struct ethtool_wolinfo *);
void (*link_change_notify)(struct phy_device *);
int (*read_mmd)(struct phy_device *, int, u16);
int (*write_mmd)(struct phy_device *, int, u16, u16);
int (*read_page)(struct phy_device *);
int (*write_page)(struct phy_device *, int);
int (*module_info)(struct phy_device *, struct ethtool_modinfo *);
int (*module_eeprom)(struct phy_device *, struct ethtool_eeprom *, u8 *);
int (*cable_test_start)(struct phy_device *);
int (*cable_test_tdr_start)(struct phy_device *, const struct phy_tdr_config *);
int (*cable_test_get_status)(struct phy_device *, bool *);
int (*get_sset_count)(struct phy_device *);
void (*get_strings)(struct phy_device *, u8 *);
void (*get_stats)(struct phy_device *, struct ethtool_stats *, u64 *);
int (*get_tunable)(struct phy_device *, struct ethtool_tunable *, void *);
int (*set_tunable)(struct phy_device *, struct ethtool_tunable *, const void *);
int (*set_loopback)(struct phy_device *, bool);
int (*get_sqi)(struct phy_device *);
int (*get_sqi_max)(struct phy_device *);
};
5.19
: ✅struct phy_driver {
struct mdio_driver_common mdiodrv;
u32 phy_id;
char *name;
u32 phy_id_mask;
const const long unsigned int * features;
u32 flags;
const void *driver_data;
int (*soft_reset)(struct phy_device *);
int (*config_init)(struct phy_device *);
int (*probe)(struct phy_device *);
int (*get_features)(struct phy_device *);
int (*suspend)(struct phy_device *);
int (*resume)(struct phy_device *);
int (*config_aneg)(struct phy_device *);
int (*aneg_done)(struct phy_device *);
int (*read_status)(struct phy_device *);
int (*config_intr)(struct phy_device *);
irqreturn_t (*handle_interrupt)(struct phy_device *);
void (*remove)(struct phy_device *);
int (*match_phy_device)(struct phy_device *);
int (*set_wol)(struct phy_device *, struct ethtool_wolinfo *);
void (*get_wol)(struct phy_device *, struct ethtool_wolinfo *);
void (*link_change_notify)(struct phy_device *);
int (*read_mmd)(struct phy_device *, int, u16);
int (*write_mmd)(struct phy_device *, int, u16, u16);
int (*read_page)(struct phy_device *);
int (*write_page)(struct phy_device *, int);
int (*module_info)(struct phy_device *, struct ethtool_modinfo *);
int (*module_eeprom)(struct phy_device *, struct ethtool_eeprom *, u8 *);
int (*cable_test_start)(struct phy_device *);
int (*cable_test_tdr_start)(struct phy_device *, const struct phy_tdr_config *);
int (*cable_test_get_status)(struct phy_device *, bool *);
int (*get_sset_count)(struct phy_device *);
void (*get_strings)(struct phy_device *, u8 *);
void (*get_stats)(struct phy_device *, struct ethtool_stats *, u64 *);
int (*get_tunable)(struct phy_device *, struct ethtool_tunable *, void *);
int (*set_tunable)(struct phy_device *, struct ethtool_tunable *, const void *);
int (*set_loopback)(struct phy_device *, bool);
int (*get_sqi)(struct phy_device *);
int (*get_sqi_max)(struct phy_device *);
};
6.2
: ✅struct phy_driver {
struct mdio_driver_common mdiodrv;
u32 phy_id;
char *name;
u32 phy_id_mask;
const const long unsigned int * features;
u32 flags;
const void *driver_data;
int (*soft_reset)(struct phy_device *);
int (*config_init)(struct phy_device *);
int (*probe)(struct phy_device *);
int (*get_features)(struct phy_device *);
int (*get_rate_matching)(struct phy_device *, phy_interface_t);
int (*suspend)(struct phy_device *);
int (*resume)(struct phy_device *);
int (*config_aneg)(struct phy_device *);
int (*aneg_done)(struct phy_device *);
int (*read_status)(struct phy_device *);
int (*config_intr)(struct phy_device *);
irqreturn_t (*handle_interrupt)(struct phy_device *);
void (*remove)(struct phy_device *);
int (*match_phy_device)(struct phy_device *);
int (*set_wol)(struct phy_device *, struct ethtool_wolinfo *);
void (*get_wol)(struct phy_device *, struct ethtool_wolinfo *);
void (*link_change_notify)(struct phy_device *);
int (*read_mmd)(struct phy_device *, int, u16);
int (*write_mmd)(struct phy_device *, int, u16, u16);
int (*read_page)(struct phy_device *);
int (*write_page)(struct phy_device *, int);
int (*module_info)(struct phy_device *, struct ethtool_modinfo *);
int (*module_eeprom)(struct phy_device *, struct ethtool_eeprom *, u8 *);
int (*cable_test_start)(struct phy_device *);
int (*cable_test_tdr_start)(struct phy_device *, const struct phy_tdr_config *);
int (*cable_test_get_status)(struct phy_device *, bool *);
int (*get_sset_count)(struct phy_device *);
void (*get_strings)(struct phy_device *, u8 *);
void (*get_stats)(struct phy_device *, struct ethtool_stats *, u64 *);
int (*get_tunable)(struct phy_device *, struct ethtool_tunable *, void *);
int (*set_tunable)(struct phy_device *, struct ethtool_tunable *, const void *);
int (*set_loopback)(struct phy_device *, bool);
int (*get_sqi)(struct phy_device *);
int (*get_sqi_max)(struct phy_device *);
};
6.5
: ✅struct phy_driver {
struct mdio_driver_common mdiodrv;
u32 phy_id;
char *name;
u32 phy_id_mask;
const const long unsigned int * features;
u32 flags;
const void *driver_data;
int (*soft_reset)(struct phy_device *);
int (*config_init)(struct phy_device *);
int (*probe)(struct phy_device *);
int (*get_features)(struct phy_device *);
int (*get_rate_matching)(struct phy_device *, phy_interface_t);
int (*suspend)(struct phy_device *);
int (*resume)(struct phy_device *);
int (*config_aneg)(struct phy_device *);
int (*aneg_done)(struct phy_device *);
int (*read_status)(struct phy_device *);
int (*config_intr)(struct phy_device *);
irqreturn_t (*handle_interrupt)(struct phy_device *);
void (*remove)(struct phy_device *);
int (*match_phy_device)(struct phy_device *);
int (*set_wol)(struct phy_device *, struct ethtool_wolinfo *);
void (*get_wol)(struct phy_device *, struct ethtool_wolinfo *);
void (*link_change_notify)(struct phy_device *);
int (*read_mmd)(struct phy_device *, int, u16);
int (*write_mmd)(struct phy_device *, int, u16, u16);
int (*read_page)(struct phy_device *);
int (*write_page)(struct phy_device *, int);
int (*module_info)(struct phy_device *, struct ethtool_modinfo *);
int (*module_eeprom)(struct phy_device *, struct ethtool_eeprom *, u8 *);
int (*cable_test_start)(struct phy_device *);
int (*cable_test_tdr_start)(struct phy_device *, const struct phy_tdr_config *);
int (*cable_test_get_status)(struct phy_device *, bool *);
int (*get_sset_count)(struct phy_device *);
void (*get_strings)(struct phy_device *, u8 *);
void (*get_stats)(struct phy_device *, struct ethtool_stats *, u64 *);
int (*get_tunable)(struct phy_device *, struct ethtool_tunable *, void *);
int (*set_tunable)(struct phy_device *, struct ethtool_tunable *, const void *);
int (*set_loopback)(struct phy_device *, bool);
int (*get_sqi)(struct phy_device *);
int (*get_sqi_max)(struct phy_device *);
int (*get_plca_cfg)(struct phy_device *, struct phy_plca_cfg *);
int (*set_plca_cfg)(struct phy_device *, const struct phy_plca_cfg *);
int (*get_plca_status)(struct phy_device *, struct phy_plca_status *);
int (*led_brightness_set)(struct phy_device *, u8, enum led_brightness);
int (*led_blink_set)(struct phy_device *, u8, long unsigned int *, long unsigned int *);
};
6.8
: ✅struct phy_driver {
struct mdio_driver_common mdiodrv;
u32 phy_id;
char *name;
u32 phy_id_mask;
const const long unsigned int * features;
u32 flags;
const void *driver_data;
int (*soft_reset)(struct phy_device *);
int (*config_init)(struct phy_device *);
int (*probe)(struct phy_device *);
int (*get_features)(struct phy_device *);
int (*get_rate_matching)(struct phy_device *, phy_interface_t);
int (*suspend)(struct phy_device *);
int (*resume)(struct phy_device *);
int (*config_aneg)(struct phy_device *);
int (*aneg_done)(struct phy_device *);
int (*read_status)(struct phy_device *);
int (*config_intr)(struct phy_device *);
irqreturn_t (*handle_interrupt)(struct phy_device *);
void (*remove)(struct phy_device *);
int (*match_phy_device)(struct phy_device *);
int (*set_wol)(struct phy_device *, struct ethtool_wolinfo *);
void (*get_wol)(struct phy_device *, struct ethtool_wolinfo *);
void (*link_change_notify)(struct phy_device *);
int (*read_mmd)(struct phy_device *, int, u16);
int (*write_mmd)(struct phy_device *, int, u16, u16);
int (*read_page)(struct phy_device *);
int (*write_page)(struct phy_device *, int);
int (*module_info)(struct phy_device *, struct ethtool_modinfo *);
int (*module_eeprom)(struct phy_device *, struct ethtool_eeprom *, u8 *);
int (*cable_test_start)(struct phy_device *);
int (*cable_test_tdr_start)(struct phy_device *, const struct phy_tdr_config *);
int (*cable_test_get_status)(struct phy_device *, bool *);
int (*get_sset_count)(struct phy_device *);
void (*get_strings)(struct phy_device *, u8 *);
void (*get_stats)(struct phy_device *, struct ethtool_stats *, u64 *);
int (*get_tunable)(struct phy_device *, struct ethtool_tunable *, void *);
int (*set_tunable)(struct phy_device *, struct ethtool_tunable *, const void *);
int (*set_loopback)(struct phy_device *, bool);
int (*get_sqi)(struct phy_device *);
int (*get_sqi_max)(struct phy_device *);
int (*get_plca_cfg)(struct phy_device *, struct phy_plca_cfg *);
int (*set_plca_cfg)(struct phy_device *, const struct phy_plca_cfg *);
int (*get_plca_status)(struct phy_device *, struct phy_plca_status *);
int (*led_brightness_set)(struct phy_device *, u8, enum led_brightness);
int (*led_blink_set)(struct phy_device *, u8, long unsigned int *, long unsigned int *);
int (*led_hw_is_supported)(struct phy_device *, u8, long unsigned int);
int (*led_hw_control_set)(struct phy_device *, u8, long unsigned int);
int (*led_hw_control_get)(struct phy_device *, u8, long unsigned int *);
};
arm64
: ✅struct phy_driver {
struct mdio_driver_common mdiodrv;
u32 phy_id;
char *name;
u32 phy_id_mask;
const const long unsigned int * features;
u32 flags;
const void *driver_data;
int (*soft_reset)(struct phy_device *);
int (*config_init)(struct phy_device *);
int (*probe)(struct phy_device *);
int (*get_features)(struct phy_device *);
int (*suspend)(struct phy_device *);
int (*resume)(struct phy_device *);
int (*config_aneg)(struct phy_device *);
int (*aneg_done)(struct phy_device *);
int (*read_status)(struct phy_device *);
int (*ack_interrupt)(struct phy_device *);
int (*config_intr)(struct phy_device *);
int (*did_interrupt)(struct phy_device *);
int (*handle_interrupt)(struct phy_device *);
void (*remove)(struct phy_device *);
int (*match_phy_device)(struct phy_device *);
int (*ts_info)(struct phy_device *, struct ethtool_ts_info *);
int (*hwtstamp)(struct phy_device *, struct ifreq *);
bool (*rxtstamp)(struct phy_device *, struct sk_buff *, int);
void (*txtstamp)(struct phy_device *, struct sk_buff *, int);
int (*set_wol)(struct phy_device *, struct ethtool_wolinfo *);
void (*get_wol)(struct phy_device *, struct ethtool_wolinfo *);
void (*link_change_notify)(struct phy_device *);
int (*read_mmd)(struct phy_device *, int, u16);
int (*write_mmd)(struct phy_device *, int, u16, u16);
int (*read_page)(struct phy_device *);
int (*write_page)(struct phy_device *, int);
int (*module_info)(struct phy_device *, struct ethtool_modinfo *);
int (*module_eeprom)(struct phy_device *, struct ethtool_eeprom *, u8 *);
int (*get_sset_count)(struct phy_device *);
void (*get_strings)(struct phy_device *, u8 *);
void (*get_stats)(struct phy_device *, struct ethtool_stats *, u64 *);
int (*get_tunable)(struct phy_device *, struct ethtool_tunable *, void *);
int (*set_tunable)(struct phy_device *, struct ethtool_tunable *, const void *);
int (*set_loopback)(struct phy_device *, bool);
};
armhf
: ✅struct phy_driver {
struct mdio_driver_common mdiodrv;
u32 phy_id;
char *name;
u32 phy_id_mask;
const const long unsigned int * features;
u32 flags;
const void *driver_data;
int (*soft_reset)(struct phy_device *);
int (*config_init)(struct phy_device *);
int (*probe)(struct phy_device *);
int (*get_features)(struct phy_device *);
int (*suspend)(struct phy_device *);
int (*resume)(struct phy_device *);
int (*config_aneg)(struct phy_device *);
int (*aneg_done)(struct phy_device *);
int (*read_status)(struct phy_device *);
int (*ack_interrupt)(struct phy_device *);
int (*config_intr)(struct phy_device *);
int (*did_interrupt)(struct phy_device *);
int (*handle_interrupt)(struct phy_device *);
void (*remove)(struct phy_device *);
int (*match_phy_device)(struct phy_device *);
int (*ts_info)(struct phy_device *, struct ethtool_ts_info *);
int (*hwtstamp)(struct phy_device *, struct ifreq *);
bool (*rxtstamp)(struct phy_device *, struct sk_buff *, int);
void (*txtstamp)(struct phy_device *, struct sk_buff *, int);
int (*set_wol)(struct phy_device *, struct ethtool_wolinfo *);
void (*get_wol)(struct phy_device *, struct ethtool_wolinfo *);
void (*link_change_notify)(struct phy_device *);
int (*read_mmd)(struct phy_device *, int, u16);
int (*write_mmd)(struct phy_device *, int, u16, u16);
int (*read_page)(struct phy_device *);
int (*write_page)(struct phy_device *, int);
int (*module_info)(struct phy_device *, struct ethtool_modinfo *);
int (*module_eeprom)(struct phy_device *, struct ethtool_eeprom *, u8 *);
int (*get_sset_count)(struct phy_device *);
void (*get_strings)(struct phy_device *, u8 *);
void (*get_stats)(struct phy_device *, struct ethtool_stats *, u64 *);
int (*get_tunable)(struct phy_device *, struct ethtool_tunable *, void *);
int (*set_tunable)(struct phy_device *, struct ethtool_tunable *, const void *);
int (*set_loopback)(struct phy_device *, bool);
};
ppc64el
: ✅struct phy_driver {
struct mdio_driver_common mdiodrv;
u32 phy_id;
char *name;
u32 phy_id_mask;
const const long unsigned int * features;
u32 flags;
const void *driver_data;
int (*soft_reset)(struct phy_device *);
int (*config_init)(struct phy_device *);
int (*probe)(struct phy_device *);
int (*get_features)(struct phy_device *);
int (*suspend)(struct phy_device *);
int (*resume)(struct phy_device *);
int (*config_aneg)(struct phy_device *);
int (*aneg_done)(struct phy_device *);
int (*read_status)(struct phy_device *);
int (*ack_interrupt)(struct phy_device *);
int (*config_intr)(struct phy_device *);
int (*did_interrupt)(struct phy_device *);
int (*handle_interrupt)(struct phy_device *);
void (*remove)(struct phy_device *);
int (*match_phy_device)(struct phy_device *);
int (*ts_info)(struct phy_device *, struct ethtool_ts_info *);
int (*hwtstamp)(struct phy_device *, struct ifreq *);
bool (*rxtstamp)(struct phy_device *, struct sk_buff *, int);
void (*txtstamp)(struct phy_device *, struct sk_buff *, int);
int (*set_wol)(struct phy_device *, struct ethtool_wolinfo *);
void (*get_wol)(struct phy_device *, struct ethtool_wolinfo *);
void (*link_change_notify)(struct phy_device *);
int (*read_mmd)(struct phy_device *, int, u16);
int (*write_mmd)(struct phy_device *, int, u16, u16);
int (*read_page)(struct phy_device *);
int (*write_page)(struct phy_device *, int);
int (*module_info)(struct phy_device *, struct ethtool_modinfo *);
int (*module_eeprom)(struct phy_device *, struct ethtool_eeprom *, u8 *);
int (*get_sset_count)(struct phy_device *);
void (*get_strings)(struct phy_device *, u8 *);
void (*get_stats)(struct phy_device *, struct ethtool_stats *, u64 *);
int (*get_tunable)(struct phy_device *, struct ethtool_tunable *, void *);
int (*set_tunable)(struct phy_device *, struct ethtool_tunable *, const void *);
int (*set_loopback)(struct phy_device *, bool);
};
riscv64
: ✅struct phy_driver {
struct mdio_driver_common mdiodrv;
u32 phy_id;
char *name;
u32 phy_id_mask;
const const long unsigned int * features;
u32 flags;
const void *driver_data;
int (*soft_reset)(struct phy_device *);
int (*config_init)(struct phy_device *);
int (*probe)(struct phy_device *);
int (*get_features)(struct phy_device *);
int (*suspend)(struct phy_device *);
int (*resume)(struct phy_device *);
int (*config_aneg)(struct phy_device *);
int (*aneg_done)(struct phy_device *);
int (*read_status)(struct phy_device *);
int (*ack_interrupt)(struct phy_device *);
int (*config_intr)(struct phy_device *);
int (*did_interrupt)(struct phy_device *);
int (*handle_interrupt)(struct phy_device *);
void (*remove)(struct phy_device *);
int (*match_phy_device)(struct phy_device *);
int (*ts_info)(struct phy_device *, struct ethtool_ts_info *);
int (*hwtstamp)(struct phy_device *, struct ifreq *);
bool (*rxtstamp)(struct phy_device *, struct sk_buff *, int);
void (*txtstamp)(struct phy_device *, struct sk_buff *, int);
int (*set_wol)(struct phy_device *, struct ethtool_wolinfo *);
void (*get_wol)(struct phy_device *, struct ethtool_wolinfo *);
void (*link_change_notify)(struct phy_device *);
int (*read_mmd)(struct phy_device *, int, u16);
int (*write_mmd)(struct phy_device *, int, u16, u16);
int (*read_page)(struct phy_device *);
int (*write_page)(struct phy_device *, int);
int (*module_info)(struct phy_device *, struct ethtool_modinfo *);
int (*module_eeprom)(struct phy_device *, struct ethtool_eeprom *, u8 *);
int (*get_sset_count)(struct phy_device *);
void (*get_strings)(struct phy_device *, u8 *);
void (*get_stats)(struct phy_device *, struct ethtool_stats *, u64 *);
int (*get_tunable)(struct phy_device *, struct ethtool_tunable *, void *);
int (*set_tunable)(struct phy_device *, struct ethtool_tunable *, const void *);
int (*set_loopback)(struct phy_device *, bool);
};
aws
: ✅struct phy_driver {
struct mdio_driver_common mdiodrv;
u32 phy_id;
char *name;
u32 phy_id_mask;
const const long unsigned int * features;
u32 flags;
const void *driver_data;
int (*soft_reset)(struct phy_device *);
int (*config_init)(struct phy_device *);
int (*probe)(struct phy_device *);
int (*get_features)(struct phy_device *);
int (*suspend)(struct phy_device *);
int (*resume)(struct phy_device *);
int (*config_aneg)(struct phy_device *);
int (*aneg_done)(struct phy_device *);
int (*read_status)(struct phy_device *);
int (*ack_interrupt)(struct phy_device *);
int (*config_intr)(struct phy_device *);
int (*did_interrupt)(struct phy_device *);
int (*handle_interrupt)(struct phy_device *);
void (*remove)(struct phy_device *);
int (*match_phy_device)(struct phy_device *);
int (*ts_info)(struct phy_device *, struct ethtool_ts_info *);
int (*hwtstamp)(struct phy_device *, struct ifreq *);
bool (*rxtstamp)(struct phy_device *, struct sk_buff *, int);
void (*txtstamp)(struct phy_device *, struct sk_buff *, int);
int (*set_wol)(struct phy_device *, struct ethtool_wolinfo *);
void (*get_wol)(struct phy_device *, struct ethtool_wolinfo *);
void (*link_change_notify)(struct phy_device *);
int (*read_mmd)(struct phy_device *, int, u16);
int (*write_mmd)(struct phy_device *, int, u16, u16);
int (*read_page)(struct phy_device *);
int (*write_page)(struct phy_device *, int);
int (*module_info)(struct phy_device *, struct ethtool_modinfo *);
int (*module_eeprom)(struct phy_device *, struct ethtool_eeprom *, u8 *);
int (*get_sset_count)(struct phy_device *);
void (*get_strings)(struct phy_device *, u8 *);
void (*get_stats)(struct phy_device *, struct ethtool_stats *, u64 *);
int (*get_tunable)(struct phy_device *, struct ethtool_tunable *, void *);
int (*set_tunable)(struct phy_device *, struct ethtool_tunable *, const void *);
int (*set_loopback)(struct phy_device *, bool);
};
azure
: ✅struct phy_driver {
struct mdio_driver_common mdiodrv;
u32 phy_id;
char *name;
u32 phy_id_mask;
const const long unsigned int * features;
u32 flags;
const void *driver_data;
int (*soft_reset)(struct phy_device *);
int (*config_init)(struct phy_device *);
int (*probe)(struct phy_device *);
int (*get_features)(struct phy_device *);
int (*suspend)(struct phy_device *);
int (*resume)(struct phy_device *);
int (*config_aneg)(struct phy_device *);
int (*aneg_done)(struct phy_device *);
int (*read_status)(struct phy_device *);
int (*ack_interrupt)(struct phy_device *);
int (*config_intr)(struct phy_device *);
int (*did_interrupt)(struct phy_device *);
int (*handle_interrupt)(struct phy_device *);
void (*remove)(struct phy_device *);
int (*match_phy_device)(struct phy_device *);
int (*ts_info)(struct phy_device *, struct ethtool_ts_info *);
int (*hwtstamp)(struct phy_device *, struct ifreq *);
bool (*rxtstamp)(struct phy_device *, struct sk_buff *, int);
void (*txtstamp)(struct phy_device *, struct sk_buff *, int);
int (*set_wol)(struct phy_device *, struct ethtool_wolinfo *);
void (*get_wol)(struct phy_device *, struct ethtool_wolinfo *);
void (*link_change_notify)(struct phy_device *);
int (*read_mmd)(struct phy_device *, int, u16);
int (*write_mmd)(struct phy_device *, int, u16, u16);
int (*read_page)(struct phy_device *);
int (*write_page)(struct phy_device *, int);
int (*module_info)(struct phy_device *, struct ethtool_modinfo *);
int (*module_eeprom)(struct phy_device *, struct ethtool_eeprom *, u8 *);
int (*get_sset_count)(struct phy_device *);
void (*get_strings)(struct phy_device *, u8 *);
void (*get_stats)(struct phy_device *, struct ethtool_stats *, u64 *);
int (*get_tunable)(struct phy_device *, struct ethtool_tunable *, void *);
int (*set_tunable)(struct phy_device *, struct ethtool_tunable *, const void *);
int (*set_loopback)(struct phy_device *, bool);
};
gcp
: ✅struct phy_driver {
struct mdio_driver_common mdiodrv;
u32 phy_id;
char *name;
u32 phy_id_mask;
const const long unsigned int * features;
u32 flags;
const void *driver_data;
int (*soft_reset)(struct phy_device *);
int (*config_init)(struct phy_device *);
int (*probe)(struct phy_device *);
int (*get_features)(struct phy_device *);
int (*suspend)(struct phy_device *);
int (*resume)(struct phy_device *);
int (*config_aneg)(struct phy_device *);
int (*aneg_done)(struct phy_device *);
int (*read_status)(struct phy_device *);
int (*ack_interrupt)(struct phy_device *);
int (*config_intr)(struct phy_device *);
int (*did_interrupt)(struct phy_device *);
int (*handle_interrupt)(struct phy_device *);
void (*remove)(struct phy_device *);
int (*match_phy_device)(struct phy_device *);
int (*ts_info)(struct phy_device *, struct ethtool_ts_info *);
int (*hwtstamp)(struct phy_device *, struct ifreq *);
bool (*rxtstamp)(struct phy_device *, struct sk_buff *, int);
void (*txtstamp)(struct phy_device *, struct sk_buff *, int);
int (*set_wol)(struct phy_device *, struct ethtool_wolinfo *);
void (*get_wol)(struct phy_device *, struct ethtool_wolinfo *);
void (*link_change_notify)(struct phy_device *);
int (*read_mmd)(struct phy_device *, int, u16);
int (*write_mmd)(struct phy_device *, int, u16, u16);
int (*read_page)(struct phy_device *);
int (*write_page)(struct phy_device *, int);
int (*module_info)(struct phy_device *, struct ethtool_modinfo *);
int (*module_eeprom)(struct phy_device *, struct ethtool_eeprom *, u8 *);
int (*get_sset_count)(struct phy_device *);
void (*get_strings)(struct phy_device *, u8 *);
void (*get_stats)(struct phy_device *, struct ethtool_stats *, u64 *);
int (*get_tunable)(struct phy_device *, struct ethtool_tunable *, void *);
int (*set_tunable)(struct phy_device *, struct ethtool_tunable *, const void *);
int (*set_loopback)(struct phy_device *, bool);
};
lowlatency
: ✅struct phy_driver {
struct mdio_driver_common mdiodrv;
u32 phy_id;
char *name;
u32 phy_id_mask;
const const long unsigned int * features;
u32 flags;
const void *driver_data;
int (*soft_reset)(struct phy_device *);
int (*config_init)(struct phy_device *);
int (*probe)(struct phy_device *);
int (*get_features)(struct phy_device *);
int (*suspend)(struct phy_device *);
int (*resume)(struct phy_device *);
int (*config_aneg)(struct phy_device *);
int (*aneg_done)(struct phy_device *);
int (*read_status)(struct phy_device *);
int (*ack_interrupt)(struct phy_device *);
int (*config_intr)(struct phy_device *);
int (*did_interrupt)(struct phy_device *);
int (*handle_interrupt)(struct phy_device *);
void (*remove)(struct phy_device *);
int (*match_phy_device)(struct phy_device *);
int (*ts_info)(struct phy_device *, struct ethtool_ts_info *);
int (*hwtstamp)(struct phy_device *, struct ifreq *);
bool (*rxtstamp)(struct phy_device *, struct sk_buff *, int);
void (*txtstamp)(struct phy_device *, struct sk_buff *, int);
int (*set_wol)(struct phy_device *, struct ethtool_wolinfo *);
void (*get_wol)(struct phy_device *, struct ethtool_wolinfo *);
void (*link_change_notify)(struct phy_device *);
int (*read_mmd)(struct phy_device *, int, u16);
int (*write_mmd)(struct phy_device *, int, u16, u16);
int (*read_page)(struct phy_device *);
int (*write_page)(struct phy_device *, int);
int (*module_info)(struct phy_device *, struct ethtool_modinfo *);
int (*module_eeprom)(struct phy_device *, struct ethtool_eeprom *, u8 *);
int (*get_sset_count)(struct phy_device *);
void (*get_strings)(struct phy_device *, u8 *);
void (*get_stats)(struct phy_device *, struct ethtool_stats *, u64 *);
int (*get_tunable)(struct phy_device *, struct ethtool_tunable *, void *);
int (*set_tunable)(struct phy_device *, struct ethtool_tunable *, const void *);
int (*set_loopback)(struct phy_device *, bool);
};
Regular
4.4
and 4.8
⚠️struct mdio_driver_common mdiodrv
int (*get_sset_count)(struct phy_device *)
void (*get_strings)(struct phy_device *, u8 *)
void (*get_stats)(struct phy_device *, struct ethtool_stats *, u64 *)
struct device_driver driver
4.8
and 4.10
⚠️int (*get_tunable)(struct phy_device *, struct ethtool_tunable *, void *)
int (*set_tunable)(struct phy_device *, struct ethtool_tunable *, const void *)
4.10
and 4.13
⚠️int (*read_mmd)(struct phy_device *, int, u16)
int (*write_mmd)(struct phy_device *, int, u16, u16)
int (*set_loopback)(struct phy_device *, bool)
int (*read_mmd_indirect)(struct phy_device *, int, int, int)
void (*write_mmd_indirect)(struct phy_device *, int, int, int, u32)
4.13
and 4.15
✅
4.15
and 4.18
⚠️int (*read_page)(struct phy_device *)
int (*write_page)(struct phy_device *, int)
unsigned int phy_id_mask
➡️ u32 phy_id_mask
4.18
and 5.0
⚠️u32 features
➡️ const const long unsigned int * features
5.0
and 5.3
⚠️int (*get_features)(struct phy_device *)
int (*handle_interrupt)(struct phy_device *)
5.3
and 5.4
✅
5.4
and 5.8
⚠️int (*cable_test_start)(struct phy_device *)
int (*cable_test_tdr_start)(struct phy_device *, const struct phy_tdr_config *)
int (*cable_test_get_status)(struct phy_device *, bool *)
int (*get_sqi)(struct phy_device *)
int (*get_sqi_max)(struct phy_device *)
int (*ts_info)(struct phy_device *, struct ethtool_ts_info *)
int (*hwtstamp)(struct phy_device *, struct ifreq *)
bool (*rxtstamp)(struct phy_device *, struct sk_buff *, int)
void (*txtstamp)(struct phy_device *, struct sk_buff *, int)
int (*handle_interrupt)(struct phy_device *)
➡️ irqreturn_t (*handle_interrupt)(struct phy_device *)
5.8
and 5.11
⚠️int (*ack_interrupt)(struct phy_device *)
int (*did_interrupt)(struct phy_device *)
5.11
and 5.13
✅
5.13
and 5.15
✅
5.15
and 5.19
✅
5.19
and 6.2
⚠️int (*get_rate_matching)(struct phy_device *, phy_interface_t)
6.2
and 6.5
⚠️int (*get_plca_cfg)(struct phy_device *, struct phy_plca_cfg *)
int (*set_plca_cfg)(struct phy_device *, const struct phy_plca_cfg *)
int (*get_plca_status)(struct phy_device *, struct phy_plca_status *)
int (*led_brightness_set)(struct phy_device *, u8, enum led_brightness)
int (*led_blink_set)(struct phy_device *, u8, long unsigned int *, long unsigned int *)
6.5
and 6.8
⚠️int (*led_hw_is_supported)(struct phy_device *, u8, long unsigned int)
int (*led_hw_control_set)(struct phy_device *, u8, long unsigned int)
int (*led_hw_control_get)(struct phy_device *, u8, long unsigned int *)
amd64
and arm64
✅
amd64
and armhf
✅
amd64
and ppc64el
✅
amd64
and riscv64
✅
generic
and aws
✅
generic
and azure
✅
generic
and gcp
✅
generic
and lowlatency
✅