[PATCH v10 1/1] ethdev: add support to provide link type
Thomas Monjalon
thomas at monjalon.net
Mon Sep 8 11:23:07 CEST 2025
Hello,
The title can be simply "ethdev: add link type".
08/09/2025 10:51, skori at marvell.com:
> +* **Added ethdev API in library.*
Please be more specific, we don't need to group all ethdev changes together.
Each new API feature deserves a separate bullet.
> +
> + * Added API to report type of link connection for a port.
> + By default, it reports ``RTE_ETH_LINK_CONNECTOR_NONE``
> + unless driver specifies it.
I think you need to explain what is a type (copper, fiber, etc).
[...]
> +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)))
> + str = link_connector_str[link_connector];
> +
> + return str;
> +}
So we say link connector, not link type as in the title and descriptions?
[...]
> +enum rte_eth_link_connector {
> + RTE_ETH_LINK_CONNECTOR_NONE = 0, /**< Not defined */
> + 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, /**< Optical Fiber Link */
> + RTE_ETH_LINK_CONNECTOR_BNC, /**< BNC Link type for RF connection */
> + RTE_ETH_LINK_CONNECTOR_DAC, /**< Direct Attach copper */
> + RTE_ETH_LINK_CONNECTOR_SGMII, /**< Serial Gigabit Media Independent Interface */
> + RTE_ETH_LINK_CONNECTOR_QSGMII, /**< Link to multiplex 4 SGMII over one serial link */
> + RTE_ETH_LINK_CONNECTOR_XFI, /**< 10 Gigabit Attachment Unit Interface */
> + RTE_ETH_LINK_CONNECTOR_SFI, /**< 10 Gigabit Serial Interface for optical network */
> + RTE_ETH_LINK_CONNECTOR_XLAUI, /**< 40 Gigabit Attachment Unit Interface */
> + RTE_ETH_LINK_CONNECTOR_GAUI, /**< Gigabit Interface for 50/100/200 Gbps */
> + RTE_ETH_LINK_CONNECTOR_XAUI, /**< 10 Gigabit Attachment Unit Interface */
> + RTE_ETH_LINK_CONNECTOR_CAUI, /**< 100 Gigabit Attachment Unit Interface */
> + RTE_ETH_LINK_CONNECTOR_LAUI, /**< 50 Gigabit Attachment Unit Interface */
> + RTE_ETH_LINK_CONNECTOR_SFP, /**< Pluggable module for 1 Gigabit */
> + RTE_ETH_LINK_CONNECTOR_SFP_PLUS, /**< Pluggable module for 10 Gigabit */
> + RTE_ETH_LINK_CONNECTOR_SFP28, /**< Pluggable module for 25 Gigabit */
> + RTE_ETH_LINK_CONNECTOR_SFP_DD, /**< Pluggable module for 100 Gigabit */
> + RTE_ETH_LINK_CONNECTOR_QSFP, /**< Module to mutiplex 4 SFP i.e. 4*1=4 Gbps */
> + RTE_ETH_LINK_CONNECTOR_QSFP_PLUS, /**< Module to mutiplex 4 SFP_PLUS i.e. 4*10=40 Gbps */
> + RTE_ETH_LINK_CONNECTOR_QSFP28, /**< Module to mutiplex 4 SFP28 i.e. 4*25=100 Gbps */
> + RTE_ETH_LINK_CONNECTOR_QSFP56, /**< Module to mutiplex 4 SFP56 i.e. 4*50=200 Gbps */
> + RTE_ETH_LINK_CONNECTOR_QSFP_DD, /**< Module to mutiplex 4 SFP_DD i.e. 4*100=400 Gbps */
> + RTE_ETH_LINK_CONNECTOR_OTHER = 31, /**< non-physical interfaces like virtio, ring etc.
> + * It also includes unknown connector types,
> + * i.e. physical connectors not yet defined in this
> + * list of connector types.
It is confusing whether we use NONE or OTHER for unknown types.
More information about the dev
mailing list