[dpdk-dev] [PATCH v3 1/5] ethdev: add access to eeprom

Thomas Monjalon thomas at monjalon.net
Sun Apr 22 23:13:19 CEST 2018


Hi Zijie,

21/03/2018 12:06, Zijie Pan:
> +/*
> + * Placeholder for accessing plugin module eeprom
> + */

I think you missed a "*" to make it a doxygen comment.

> +struct rte_dev_module_info {
> +	uint32_t type; /**< Type of plugin module eeprom */
> +	uint32_t eeprom_len; /**< Length of plugin module eeprom */
> +};
> +
> +/* EEPROM Standards for plug in modules */
> +#define ETH_MODULE_SFF_8079             0x1
> +#define ETH_MODULE_SFF_8079_LEN         256
> +#define ETH_MODULE_SFF_8472             0x2
> +#define ETH_MODULE_SFF_8472_LEN         512
> +#define ETH_MODULE_SFF_8636             0x3
> +#define ETH_MODULE_SFF_8636_LEN         256
> +#define ETH_MODULE_SFF_8436             0x4
> +#define ETH_MODULE_SFF_8436_LEN         256

Can you add a RTE_ prefix please?

> --- a/lib/librte_ether/rte_ethdev.c
> +++ b/lib/librte_ether/rte_ethdev.c
> @@ -4044,6 +4044,32 @@ int rte_eth_set_queue_rate_limit(uint16_t port_id, uint16_t queue_idx,
>  }
>  
>  int
> +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_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 these new functions after other eeprom functions.

> --- a/lib/librte_ether/rte_ethdev.h
> +++ b/lib/librte_ether/rte_ethdev.h
>  /**
> + * Retrieve the type and size of plugin module EEPROM
> + *
> + * @param port_id
> + *   The port identifier of the Ethernet device.
> + * @param modinfo
> + *   The type and size of plugin module EEPROM.
> + * @return
> + *   - (0) if successful.
> + *   - (-ENOTSUP) if hardware doesn't support.
> + *   - (-ENODEV) if *port_id* invalid.
> + *   - (-EIO) if device is removed.
> + *   - others depends on the specific operations implementation.
> + */
> +int rte_eth_dev_get_module_info(uint16_t port_id,
> +				struct rte_dev_module_info *modinfo);
> +
> +/**
> + * Retrieve the data of plugin module EEPROM
> + *
> + * @param port_id
> + *   The port identifier of the Ethernet device.
> + * @param info
> + *   The template includes the plugin module EEPROM attributes, and the
> + *   buffer for return plugin module EEPROM data.
> + * @return
> + *   - (0) if successful.
> + *   - (-ENOTSUP) if hardware doesn't support.
> + *   - (-ENODEV) if *port_id* invalid.
> + *   - (-EIO) if device is removed.
> + *   - others depends on the specific operations implementation.
> + */
> +int rte_eth_dev_get_module_eeprom(uint16_t port_id,
> +				  struct rte_dev_eeprom_info *info);

Please add the usual EXPERIMENTAL warnings for the new functions.

> --- a/lib/librte_ether/rte_ethdev_version.map
> +++ b/lib/librte_ether/rte_ethdev_version.map
> @@ -201,6 +201,8 @@ DPDK_18.02 {
>  	global:
>  
>  	rte_eth_dev_filter_ctrl;
> +	rte_eth_dev_get_module_info;
> +	rte_eth_dev_get_module_eeprom;

As noticed by Ferruh, they should be experimental.




More information about the dev mailing list