[PATCH v8 1/5] ethdev: add telemetry command for module EEPROM

Andrew Rybchenko andrew.rybchenko at oktetlabs.ru
Wed May 25 11:24:07 CEST 2022


On 5/25/22 06:14, Robin Zhang wrote:
> Add a new telemetry command /ethdev/module_eeprom to dump the module
> EEPROM of each port. The format of module EEPROM information follows
> the SFF(Small Form Factor) Committee specifications.

Please, add SFF to devtools/words-case.txt

> 
> Signed-off-by: Robin Zhang <robinx.zhang at intel.com>
> ---
>   lib/ethdev/ethdev_sff_telemetry.c | 138 ++++++++++++++++++++++++++++++
>   lib/ethdev/ethdev_sff_telemetry.h |  27 ++++++

I think we should be consistent with naming. Other patches
name added files as sff_*.[ch]. I see no strong reason to
have ethdev_ prefix here. sff_ prefix should be sufficient.

>   lib/ethdev/meson.build            |   1 +
>   lib/ethdev/rte_ethdev.c           |   3 +
>   4 files changed, 169 insertions(+)
>   create mode 100644 lib/ethdev/ethdev_sff_telemetry.c
>   create mode 100644 lib/ethdev/ethdev_sff_telemetry.h
> 
> diff --git a/lib/ethdev/ethdev_sff_telemetry.c b/lib/ethdev/ethdev_sff_telemetry.c
> new file mode 100644
> index 0000000000..f756b9643f
> --- /dev/null
> +++ b/lib/ethdev/ethdev_sff_telemetry.c
> @@ -0,0 +1,138 @@
> +/* SPDX-License-Identifier: BSD-3-Clause
> + * Copyright(c) 2022 Intel Corporation
> + */
> +
> +#include <errno.h>
> +
> +#include <rte_ethdev.h>

Other C files in ethdev use double-quotes to include headers
provided by the library itself. Also it should go after headers
provided by other DPDK libraries.

> +#include <rte_common.h>
> +#include "ethdev_sff_telemetry.h"
> +#include "telemetry_data.h"

Why are double quotes used for the include?
It is a header from other DPDK library similar to rte_common.h.

> +
> +static void
> +sff_port_module_eeprom_parse(uint16_t port_id, struct rte_tel_data *d)
> +{
> +	struct rte_eth_dev_module_info minfo;
> +	struct rte_dev_eeprom_info einfo;
> +	int ret;
> +
> +	if (d == NULL) {
> +		RTE_ETHDEV_LOG(ERR, "Dict invalid\n");
> +		return;
> +	}
> +
> +	ret = rte_eth_dev_get_module_info(port_id, &minfo);
> +	if (ret != 0) {
> +		switch (ret) {
> +		case -ENODEV:
> +			RTE_ETHDEV_LOG(ERR, "port index %d invalid\n", port_id);

The majority of ethdev logs start from capital letter. Please,
be consistent.

> +			break;
> +		case -ENOTSUP:
> +			RTE_ETHDEV_LOG(ERR, "operation not supported by device\n");

same here

> +			break;
> +		case -EIO:
> +			RTE_ETHDEV_LOG(ERR, "device is removed\n");

same here

> +			break;
> +		default:
> +			RTE_ETHDEV_LOG(ERR, "Unable to get port module info, %d\n", ret);
> +			break;
> +		}
> +		return;
> +	}
> +
> +	einfo.offset = 0;
> +	einfo.length = minfo.eeprom_len;
> +	einfo.data = calloc(1, minfo.eeprom_len);
> +	if (einfo.data == NULL) {
> +		RTE_ETHDEV_LOG(ERR, "Allocation of port %u eeprom data failed\n", port_id);

Please, be consistent in logging: eeprom -> EEPROM as below

> +	errno = 0;
> +	port_id = strtoul(params, &end_param, 0);
> +
> +	if (errno != 0) {
> +		RTE_ETHDEV_LOG(ERR, "Invalid argument\n");

Please, log the invalid argument (params).

> +		return -1;
> +	}
> +
> +	if (*end_param != '\0')
> +		RTE_ETHDEV_LOG(NOTICE,
> +			"Extra parameters passed to ethdev telemetry command, ignoring\n");

I think it would be very useful to log these extra parameters.

> +
> +	rte_tel_data_start_dict(d);
> +
> +	sff_port_module_eeprom_parse(port_id, d);
> +
> +	return 0;
> +}

[snip]



More information about the dev mailing list