24/04/2018 12:17, Zijie Pan: > +/** > + * Placeholder for accessing plugin module eeprom > + */ > +struct rte_dev_module_info { > + uint32_t type; /**< Type of plugin module eeprom */ > + uint32_t eeprom_len; /**< Length of plugin module eeprom */ > +};
I am not sure "plugin module" is descriptive enough. And I think the structure name should be rte_eth_dev_module_info to make clear that we are talking about NIC modules. Any better idea? > + > +/* EEPROM Standards for plug in modules */ > +#define RTE_ETH_MODULE_SFF_8079 0x1 > +#define RTE_ETH_MODULE_SFF_8079_LEN 256 > +#define RTE_ETH_MODULE_SFF_8472 0x2 > +#define RTE_ETH_MODULE_SFF_8472_LEN 512 > +#define RTE_ETH_MODULE_SFF_8636 0x3 > +#define RTE_ETH_MODULE_SFF_8636_LEN 256 > +#define RTE_ETH_MODULE_SFF_8436 0x4 > +#define RTE_ETH_MODULE_SFF_8436_LEN 256 > --- a/lib/librte_ether/rte_ethdev.c > +++ b/lib/librte_ether/rte_ethdev.c > @@ -3947,6 +3947,32 @@ int rte_eth_set_queue_rate_limit(uint16_t port_id, > uint16_t queue_idx, > return eth_err(port_id, (*dev->dev_ops->set_eeprom)(dev, info)); > } > > +int __rte_experimental > +rte_eth_dev_get_module_info(uint16_t port_id, > + struct rte_dev_module_info *modinfo) > +{ > + struct rte_eth_dev *dev; > + > + RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -ENODEV); > + > + dev = &rte_eth_devices[port_id]; > + RTE_FUNC_PTR_OR_ERR_RET(*dev->dev_ops->get_module_info, -ENOTSUP); > + return (*dev->dev_ops->get_module_info)(dev, modinfo); > +} > + > +int __rte_experimental > +rte_eth_dev_get_module_eeprom(uint16_t port_id, > + struct rte_dev_eeprom_info *info) > +{ > + struct rte_eth_dev *dev; > + > + RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -ENODEV); > + > + dev = &rte_eth_devices[port_id]; > + RTE_FUNC_PTR_OR_ERR_RET(*dev->dev_ops->get_module_eeprom, -ENOTSUP); > + return (*dev->dev_ops->get_module_eeprom)(dev, info); > +} > + > int > rte_eth_dev_get_dcb_info(uint16_t port_id, Please move this code after other EEPROM related functions. > --- a/lib/librte_ether/rte_ethdev_version.map > +++ b/lib/librte_ether/rte_ethdev_version.map > @@ -229,5 +229,7 @@ EXPERIMENTAL { > rte_mtr_policer_actions_update; > rte_mtr_stats_read; > rte_mtr_stats_update; > + rte_eth_dev_get_module_info; > + rte_eth_dev_get_module_eeprom; This must be inserted in alphabetical order. Thanks