4 #include <linux/ethtool.h>
12 void (*modes
)(const struct sfp_eeprom_id
*id
, unsigned long *modes
,
13 unsigned long *interfaces
);
14 void (*fixup
)(struct sfp
*sfp
);
17 struct sfp_socket_ops
{
18 void (*attach
)(struct sfp
*sfp
);
19 void (*detach
)(struct sfp
*sfp
);
20 void (*start
)(struct sfp
*sfp
);
21 void (*stop
)(struct sfp
*sfp
);
22 void (*set_signal_rate
)(struct sfp
*sfp
, unsigned int rate_kbd
);
23 int (*module_info
)(struct sfp
*sfp
, struct ethtool_modinfo
*modinfo
);
24 int (*module_eeprom
)(struct sfp
*sfp
, struct ethtool_eeprom
*ee
,
26 int (*module_eeprom_by_page
)(struct sfp
*sfp
,
27 const struct ethtool_module_eeprom
*page
,
28 struct netlink_ext_ack
*extack
);
31 int sfp_add_phy(struct sfp_bus
*bus
, struct phy_device
*phydev
);
32 void sfp_remove_phy(struct sfp_bus
*bus
);
33 void sfp_link_up(struct sfp_bus
*bus
);
34 void sfp_link_down(struct sfp_bus
*bus
);
35 int sfp_module_insert(struct sfp_bus
*bus
, const struct sfp_eeprom_id
*id
,
36 const struct sfp_quirk
*quirk
);
37 void sfp_module_remove(struct sfp_bus
*bus
);
38 int sfp_module_start(struct sfp_bus
*bus
);
39 void sfp_module_stop(struct sfp_bus
*bus
);
40 struct sfp_bus
*sfp_register_socket(struct device
*dev
, struct sfp
*sfp
,
41 const struct sfp_socket_ops
*ops
);
42 void sfp_unregister_socket(struct sfp_bus
*bus
);