[PATCH v7 1/1] ethdev: add support to provide link type
Stephen Hemminger
stephen at networkplumber.org
Wed Aug 20 20:58:18 CEST 2025
On Wed, 20 Aug 2025 23:22:31 +0530
<skori at marvell.com> wrote:
Patch does not apply cleanly to next-net, there is fuzz.
> diff --git a/lib/ethdev/ethdev_trace.h b/lib/ethdev/ethdev_trace.h
> index 482befc209..bc6c3a4a02 100644
> --- a/lib/ethdev/ethdev_trace.h
> +++ b/lib/ethdev/ethdev_trace.h
> @@ -2110,6 +2110,13 @@ RTE_TRACE_POINT_FP(
> rte_trace_point_emit_string(ret);
> )
>
> +RTE_TRACE_POINT_FP(
> + rte_eth_trace_link_connector_to_str,
> + RTE_TRACE_POINT_ARGS(uint8_t link_connector, const char *ret),
> + rte_trace_point_emit_u8(link_connector);
> + rte_trace_point_emit_string(ret);
> +);
> +
IMHO adding a trace point to a helper function like this is just
extra clutter, remove it.
> +RTE_EXPORT_EXPERIMENTAL_SYMBOL(rte_eth_link_connector_to_str, 25.11)
> +const char *
> +rte_eth_link_connector_to_str(enum rte_eth_link_connector link_connector)
> +{
> + static const char * const link_connector_str[] = {
> + [RTE_ETH_LINK_CONNECTOR_NONE] = "None",
> + [RTE_ETH_LINK_CONNECTOR_TP] = "Twisted Pair",
> + [RTE_ETH_LINK_CONNECTOR_AUI] = "Attachment Unit Interface",
> + [RTE_ETH_LINK_CONNECTOR_MII] = "Media Independent Interface",
> + [RTE_ETH_LINK_CONNECTOR_FIBER] = "Fiber",
> + [RTE_ETH_LINK_CONNECTOR_BNC] = "BNC",
> + [RTE_ETH_LINK_CONNECTOR_DAC] = "Direct Attach Copper",
> + [RTE_ETH_LINK_CONNECTOR_SGMII] = "SGMII",
> + [RTE_ETH_LINK_CONNECTOR_QSGMII] = "QSGMII",
> + [RTE_ETH_LINK_CONNECTOR_XFI] = "XFI",
> + [RTE_ETH_LINK_CONNECTOR_SFI] = "SFI",
> + [RTE_ETH_LINK_CONNECTOR_XLAUI] = "XLAUI",
> + [RTE_ETH_LINK_CONNECTOR_GAUI] = "GAUI",
> + [RTE_ETH_LINK_CONNECTOR_XAUI] = "XAUI",
> + [RTE_ETH_LINK_CONNECTOR_CAUI] = "CAUI",
> + [RTE_ETH_LINK_CONNECTOR_LAUI] = "LAUI",
> + [RTE_ETH_LINK_CONNECTOR_SFP] = "SFP",
> + [RTE_ETH_LINK_CONNECTOR_SFP_DD] = "SFP-DD",
> + [RTE_ETH_LINK_CONNECTOR_SFP_PLUS] = "SFP+",
> + [RTE_ETH_LINK_CONNECTOR_SFP28] = "SFP28",
> + [RTE_ETH_LINK_CONNECTOR_QSFP] = "QSFP",
> + [RTE_ETH_LINK_CONNECTOR_QSFP_PLUS] = "QSFP+",
> + [RTE_ETH_LINK_CONNECTOR_QSFP28] = "QSFP28",
> + [RTE_ETH_LINK_CONNECTOR_QSFP56] = "QSFP56",
> + [RTE_ETH_LINK_CONNECTOR_QSFP_DD] = "QSFP-DD",
> + [RTE_ETH_LINK_CONNECTOR_OTHER] = "Other",
> + };
> + const char *str = NULL;
> +
> + if ((link_connector < ((enum rte_eth_link_connector)RTE_DIM(link_connector_str))) &&
> + link_connector_str[link_connector])
> + str = link_connector_str[link_connector];
This can be simplified to:
if (link_connector < RTE_DIM(link_connector_str))
str = link_connector_str[link_connector];
Since enum's act like int in C, no need for all that casting.
> +/**
> + * @warning
> + * @b EXPERIMENTAL: this API may change without prior notice.
> + *
> + * This function converts an Ethernet link type to a string.
> + *
> + * @param link_connector
> + * The link type to convert.
> + * @return
> + * The string representation of the link type.
> + */
> +__rte_experimental
> +const char *rte_eth_link_connector_to_str(enum rte_eth_link_connector link_connector);
Need to document that it returns NULL for invalid link_connector values.
More information about the dev
mailing list