The branch main has been updated by kib:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=89e0e3814e8ca205db7523f6ce6c63cebe4bfb0d

commit 89e0e3814e8ca205db7523f6ce6c63cebe4bfb0d
Author:     Ariel Ehrenberg <aehrenb...@nvidia.com>
AuthorDate: 2025-03-25 12:40:58 +0000
Commit:     Konstantin Belousov <k...@freebsd.org>
CommitDate: 2025-04-09 04:55:27 +0000

    mlx5en: Use connector type instead of cable type for media detection
    
    Replace cable type detection with connector type for more accurate media
    type selection. The connector type is queried directly from the PTYS
    register and provides more reliable information about the physical port
    type compared to cable type.
    
    Reviewed by:    slavash
    Sponsored by:   NVidia networking
    MFC after:      1 week
---
 sys/dev/mlx5/mlx5_en/mlx5_en_main.c | 98 +++++++++++++++++--------------------
 sys/dev/mlx5/port.h                 | 13 +++++
 2 files changed, 57 insertions(+), 54 deletions(-)

diff --git a/sys/dev/mlx5/mlx5_en/mlx5_en_main.c 
b/sys/dev/mlx5/mlx5_en/mlx5_en_main.c
index c3539cf8b8f2..f83506bda1aa 100644
--- a/sys/dev/mlx5/mlx5_en/mlx5_en_main.c
+++ b/sys/dev/mlx5/mlx5_en/mlx5_en_main.c
@@ -169,186 +169,186 @@ static const struct media 
mlx5e_mode_table[MLX5E_LINK_SPEEDS_NUMBER] =
        },
 };
 
-static const struct media 
mlx5e_ext_mode_table[MLX5E_EXT_LINK_SPEEDS_NUMBER][MLX5E_CABLE_TYPE_NUMBER] =
+static const struct media 
mlx5e_ext_mode_table[MLX5E_EXT_LINK_SPEEDS_NUMBER][MLX5E_CONNECTOR_TYPE_NUMBER] 
=
 {
        /**/
-       [MLX5E_SGMII_100M][MLX5E_CABLE_TYPE_UNKNOWN] = {
+       [MLX5E_SGMII_100M][MLX5E_PORT_UNKNOWN] = {
                .subtype = IFM_100_SGMII,
                .baudrate = IF_Mbps(100),
        },
 
        /**/
-       [MLX5E_1000BASE_X_SGMII][MLX5E_CABLE_TYPE_UNKNOWN] = {
+       [MLX5E_1000BASE_X_SGMII][MLX5E_PORT_UNKNOWN] = {
                .subtype = IFM_1000_CX,
                .baudrate = IF_Mbps(1000),
        },
-       [MLX5E_1000BASE_X_SGMII][MLX5E_CABLE_TYPE_OPTICAL_MODULE] = {
+       [MLX5E_1000BASE_X_SGMII][MLX5E_PORT_FIBRE] = {
                .subtype = IFM_1000_SX,
                .baudrate = IF_Mbps(1000),
        },
 
        /**/
-       [MLX5E_5GBASE_R][MLX5E_CABLE_TYPE_UNKNOWN] = {
+       [MLX5E_5GBASE_R][MLX5E_PORT_UNKNOWN] = {
                .subtype = IFM_5000_KR,
                .baudrate = IF_Mbps(5000),
        },
-       [MLX5E_5GBASE_R][MLX5E_CABLE_TYPE_TWISTED_PAIR] = {
+       [MLX5E_5GBASE_R][MLX5E_PORT_TP] = {
                .subtype = IFM_5000_T,
                .baudrate = IF_Mbps(5000),
        },
 
        /**/
-       [MLX5E_10GBASE_XFI_XAUI_1][MLX5E_CABLE_TYPE_UNKNOWN] = {
+       [MLX5E_10GBASE_XFI_XAUI_1][MLX5E_PORT_UNKNOWN] = {
                .subtype = IFM_10G_KR,
                .baudrate = IF_Gbps(10ULL),
        },
-       [MLX5E_10GBASE_XFI_XAUI_1][MLX5E_CABLE_TYPE_PASSIVE_COPPER] = {
+       [MLX5E_10GBASE_XFI_XAUI_1][MLX5E_PORT_DA] = {
                .subtype = IFM_10G_CR1,
                .baudrate = IF_Gbps(10ULL),
        },
-       [MLX5E_10GBASE_XFI_XAUI_1][MLX5E_CABLE_TYPE_OPTICAL_MODULE] = {
+       [MLX5E_10GBASE_XFI_XAUI_1][MLX5E_PORT_FIBRE] = {
                .subtype = IFM_10G_SR,
                .baudrate = IF_Gbps(10ULL),
        },
 
        /**/
-       [MLX5E_40GBASE_XLAUI_4_XLPPI_4][MLX5E_CABLE_TYPE_UNKNOWN] = {
+       [MLX5E_40GBASE_XLAUI_4_XLPPI_4][MLX5E_PORT_UNKNOWN] = {
                .subtype = IFM_40G_KR4,
                .baudrate = IF_Gbps(40ULL),
        },
-       [MLX5E_40GBASE_XLAUI_4_XLPPI_4][MLX5E_CABLE_TYPE_PASSIVE_COPPER] = {
+       [MLX5E_40GBASE_XLAUI_4_XLPPI_4][MLX5E_PORT_DA] = {
                .subtype = IFM_40G_CR4,
                .baudrate = IF_Gbps(40ULL),
        },
-       [MLX5E_40GBASE_XLAUI_4_XLPPI_4][MLX5E_CABLE_TYPE_OPTICAL_MODULE] = {
+       [MLX5E_40GBASE_XLAUI_4_XLPPI_4][MLX5E_PORT_FIBRE] = {
                .subtype = IFM_40G_SR4,
                .baudrate = IF_Gbps(40ULL),
        },
 
        /**/
-       [MLX5E_25GAUI_1_25GBASE_CR_KR][MLX5E_CABLE_TYPE_UNKNOWN] = {
+       [MLX5E_25GAUI_1_25GBASE_CR_KR][MLX5E_PORT_UNKNOWN] = {
                .subtype = IFM_25G_KR,
                .baudrate = IF_Gbps(25ULL),
        },
-       [MLX5E_25GAUI_1_25GBASE_CR_KR][MLX5E_CABLE_TYPE_PASSIVE_COPPER] = {
+       [MLX5E_25GAUI_1_25GBASE_CR_KR][MLX5E_PORT_DA] = {
                .subtype = IFM_25G_CR,
                .baudrate = IF_Gbps(25ULL),
        },
-       [MLX5E_25GAUI_1_25GBASE_CR_KR][MLX5E_CABLE_TYPE_OPTICAL_MODULE] = {
+       [MLX5E_25GAUI_1_25GBASE_CR_KR][MLX5E_PORT_FIBRE] = {
                .subtype = IFM_25G_SR,
                .baudrate = IF_Gbps(25ULL),
        },
-       [MLX5E_25GAUI_1_25GBASE_CR_KR][MLX5E_CABLE_TYPE_TWISTED_PAIR] = {
+       [MLX5E_25GAUI_1_25GBASE_CR_KR][MLX5E_PORT_TP] = {
                .subtype = IFM_25G_T,
                .baudrate = IF_Gbps(25ULL),
        },
 
        /**/
-       [MLX5E_50GAUI_2_LAUI_2_50GBASE_CR2_KR2][MLX5E_CABLE_TYPE_UNKNOWN] = {
+       [MLX5E_50GAUI_2_LAUI_2_50GBASE_CR2_KR2][MLX5E_PORT_UNKNOWN] = {
                .subtype = IFM_50G_KR2,
                .baudrate = IF_Gbps(50ULL),
        },
-       
[MLX5E_50GAUI_2_LAUI_2_50GBASE_CR2_KR2][MLX5E_CABLE_TYPE_PASSIVE_COPPER] = {
+       [MLX5E_50GAUI_2_LAUI_2_50GBASE_CR2_KR2][MLX5E_PORT_DA] = {
                .subtype = IFM_50G_CR2,
                .baudrate = IF_Gbps(50ULL),
        },
-       
[MLX5E_50GAUI_2_LAUI_2_50GBASE_CR2_KR2][MLX5E_CABLE_TYPE_OPTICAL_MODULE] = {
+       [MLX5E_50GAUI_2_LAUI_2_50GBASE_CR2_KR2][MLX5E_PORT_FIBRE] = {
                .subtype = IFM_50G_SR2,
                .baudrate = IF_Gbps(50ULL),
        },
 
        /**/
-       [MLX5E_50GAUI_1_LAUI_1_50GBASE_CR_KR][MLX5E_CABLE_TYPE_UNKNOWN] = {
+       [MLX5E_50GAUI_1_LAUI_1_50GBASE_CR_KR][MLX5E_PORT_UNKNOWN] = {
                .subtype = IFM_50G_KR_PAM4,
                .baudrate = IF_Gbps(50ULL),
        },
-       [MLX5E_50GAUI_1_LAUI_1_50GBASE_CR_KR][MLX5E_CABLE_TYPE_PASSIVE_COPPER] 
= {
+       [MLX5E_50GAUI_1_LAUI_1_50GBASE_CR_KR][MLX5E_PORT_DA] = {
                .subtype = IFM_50G_CP,
                .baudrate = IF_Gbps(50ULL),
        },
-       [MLX5E_50GAUI_1_LAUI_1_50GBASE_CR_KR][MLX5E_CABLE_TYPE_OPTICAL_MODULE] 
= {
+       [MLX5E_50GAUI_1_LAUI_1_50GBASE_CR_KR][MLX5E_PORT_FIBRE] = {
                .subtype = IFM_50G_SR,
                .baudrate = IF_Gbps(50ULL),
        },
 
        /**/
-       [MLX5E_CAUI_4_100GBASE_CR4_KR4][MLX5E_CABLE_TYPE_UNKNOWN] = {
+       [MLX5E_CAUI_4_100GBASE_CR4_KR4][MLX5E_PORT_UNKNOWN] = {
                .subtype = IFM_100G_KR4,
                .baudrate = IF_Gbps(100ULL),
        },
-       [MLX5E_CAUI_4_100GBASE_CR4_KR4][MLX5E_CABLE_TYPE_PASSIVE_COPPER] = {
+       [MLX5E_CAUI_4_100GBASE_CR4_KR4][MLX5E_PORT_DA] = {
                .subtype = IFM_100G_CR4,
                .baudrate = IF_Gbps(100ULL),
        },
-       [MLX5E_CAUI_4_100GBASE_CR4_KR4][MLX5E_CABLE_TYPE_OPTICAL_MODULE] = {
+       [MLX5E_CAUI_4_100GBASE_CR4_KR4][MLX5E_PORT_FIBRE] = {
                .subtype = IFM_100G_SR4,
                .baudrate = IF_Gbps(100ULL),
        },
 
        /**/
-       [MLX5E_100GAUI_1_100GBASE_CR_KR][MLX5E_CABLE_TYPE_UNKNOWN] = {
+       [MLX5E_100GAUI_1_100GBASE_CR_KR][MLX5E_PORT_UNKNOWN] = {
                .subtype = IFM_100G_KR_PAM4,
                .baudrate = IF_Gbps(100ULL),
        },
-       [MLX5E_100GAUI_1_100GBASE_CR_KR][MLX5E_CABLE_TYPE_PASSIVE_COPPER] = {
+       [MLX5E_100GAUI_1_100GBASE_CR_KR][MLX5E_PORT_DA] = {
                .subtype = IFM_100G_CR_PAM4,
                .baudrate = IF_Gbps(100ULL),
        },
-       [MLX5E_100GAUI_1_100GBASE_CR_KR][MLX5E_CABLE_TYPE_OPTICAL_MODULE] = {
+       [MLX5E_100GAUI_1_100GBASE_CR_KR][MLX5E_PORT_FIBRE] = {
                .subtype = IFM_100G_SR2,        /* XXX */
                .baudrate = IF_Gbps(100ULL),
        },
 
        /**/
-       [MLX5E_100GAUI_2_100GBASE_CR2_KR2][MLX5E_CABLE_TYPE_UNKNOWN] = {
+       [MLX5E_100GAUI_2_100GBASE_CR2_KR2][MLX5E_PORT_UNKNOWN] = {
                .subtype = IFM_100G_KR4,
                .baudrate = IF_Gbps(100ULL),
        },
-       [MLX5E_100GAUI_2_100GBASE_CR2_KR2][MLX5E_CABLE_TYPE_PASSIVE_COPPER] = {
+       [MLX5E_100GAUI_2_100GBASE_CR2_KR2][MLX5E_PORT_DA] = {
                .subtype = IFM_100G_CP2,
                .baudrate = IF_Gbps(100ULL),
        },
-       [MLX5E_100GAUI_2_100GBASE_CR2_KR2][MLX5E_CABLE_TYPE_OPTICAL_MODULE] = {
+       [MLX5E_100GAUI_2_100GBASE_CR2_KR2][MLX5E_PORT_FIBRE] = {
                .subtype = IFM_100G_SR2,
                .baudrate = IF_Gbps(100ULL),
        },
 
        /**/
-       [MLX5E_200GAUI_2_200GBASE_CR2_KR2][MLX5E_CABLE_TYPE_UNKNOWN] = {
+       [MLX5E_200GAUI_2_200GBASE_CR2_KR2][MLX5E_PORT_UNKNOWN] = {
                .subtype = IFM_200G_KR4_PAM4,   /* XXX */
                .baudrate = IF_Gbps(200ULL),
        },
-       [MLX5E_200GAUI_2_200GBASE_CR2_KR2][MLX5E_CABLE_TYPE_PASSIVE_COPPER] = {
+       [MLX5E_200GAUI_2_200GBASE_CR2_KR2][MLX5E_PORT_DA] = {
                .subtype = IFM_200G_CR4_PAM4,   /* XXX */
                .baudrate = IF_Gbps(200ULL),
        },
-       [MLX5E_200GAUI_2_200GBASE_CR2_KR2][MLX5E_CABLE_TYPE_OPTICAL_MODULE] = {
+       [MLX5E_200GAUI_2_200GBASE_CR2_KR2][MLX5E_PORT_FIBRE] = {
                .subtype = IFM_200G_SR4,        /* XXX */
                .baudrate = IF_Gbps(200ULL),
        },
 
        /**/
-       [MLX5E_200GAUI_4_200GBASE_CR4_KR4][MLX5E_CABLE_TYPE_UNKNOWN] = {
+       [MLX5E_200GAUI_4_200GBASE_CR4_KR4][MLX5E_PORT_UNKNOWN] = {
                .subtype = IFM_200G_KR4_PAM4,
                .baudrate = IF_Gbps(200ULL),
        },
-       [MLX5E_200GAUI_4_200GBASE_CR4_KR4][MLX5E_CABLE_TYPE_PASSIVE_COPPER] = {
+       [MLX5E_200GAUI_4_200GBASE_CR4_KR4][MLX5E_PORT_DA] = {
                .subtype = IFM_200G_CR4_PAM4,
                .baudrate = IF_Gbps(200ULL),
        },
-       [MLX5E_200GAUI_4_200GBASE_CR4_KR4][MLX5E_CABLE_TYPE_OPTICAL_MODULE] = {
+       [MLX5E_200GAUI_4_200GBASE_CR4_KR4][MLX5E_PORT_FIBRE] = {
                .subtype = IFM_200G_SR4,
                .baudrate = IF_Gbps(200ULL),
        },
 
        /**/
-       [MLX5E_400GAUI_8][MLX5E_CABLE_TYPE_UNKNOWN] = {
+       [MLX5E_400GAUI_8][MLX5E_PORT_UNKNOWN] = {
                .subtype = IFM_400G_LR8,        /* XXX */
                .baudrate = IF_Gbps(400ULL),
        },
 
        /**/
-       [MLX5E_400GAUI_4_400GBASE_CR4_KR4][MLX5E_CABLE_TYPE_UNKNOWN] = {
+       [MLX5E_400GAUI_4_400GBASE_CR4_KR4][MLX5E_PORT_UNKNOWN] = {
                .subtype = IFM_400G_LR8,        /* XXX */
                .baudrate = IF_Gbps(400ULL),
        },
@@ -372,7 +372,7 @@ mlx5e_update_carrier(struct mlx5e_priv *priv)
        u32 eth_proto_oper;
        int error;
        u8 i;
-       u8 cable_type;
+       u8 connector_type;
        u8 port_state;
        u8 is_er_type;
        bool ext;
@@ -403,24 +403,14 @@ mlx5e_update_carrier(struct mlx5e_priv *priv)
        ext = MLX5_CAP_PCAM_FEATURE(mdev, ptys_extended_ethernet);
        eth_proto_oper = MLX5_GET_ETH_PROTO(ptys_reg, out, ext,
            eth_proto_oper);
-
+       connector_type = MLX5_GET(ptys_reg, out, connector_type);
        i = ilog2(eth_proto_oper);
 
        if (ext) {
-               error = mlx5_query_pddr_cable_type(mdev, 1, &cable_type);
-               if (error != 0) {
-                       /* use fallback entry */
-                       media_entry = 
mlx5e_ext_mode_table[i][MLX5E_CABLE_TYPE_UNKNOWN];
-
-                       mlx5_en_err(priv->ifp,
-                           "query port pddr failed: %d\n", error);
-               } else {
-                       media_entry = mlx5e_ext_mode_table[i][cable_type];
-
+               media_entry = mlx5e_ext_mode_table[i][connector_type];
                        /* check if we should use fallback entry */
-                       if (media_entry.subtype == 0)
-                               media_entry = 
mlx5e_ext_mode_table[i][MLX5E_CABLE_TYPE_UNKNOWN];
-               }
+               if (media_entry.subtype == 0)
+                       media_entry = 
mlx5e_ext_mode_table[i][MLX5E_PORT_UNKNOWN];
        } else {
                media_entry = mlx5e_mode_table[i];
        }
diff --git a/sys/dev/mlx5/port.h b/sys/dev/mlx5/port.h
index bfbc721139d3..a35265852ae4 100644
--- a/sys/dev/mlx5/port.h
+++ b/sys/dev/mlx5/port.h
@@ -128,6 +128,19 @@ enum mlx5e_ext_link_speed {
        MLX5E_EXT_LINK_SPEEDS_NUMBER            = 32,
 };
 
+enum mlx5e_connector_type {
+       MLX5E_PORT_UNKNOWN                      = 0,
+       MLX5E_PORT_NONE                         = 1,
+       MLX5E_PORT_TP                           = 2,
+       MLX5E_PORT_AUI                          = 3,
+       MLX5E_PORT_BNC                          = 4,
+       MLX5E_PORT_MII                          = 5,
+       MLX5E_PORT_FIBRE                        = 6,
+       MLX5E_PORT_DA                           = 7,
+       MLX5E_PORT_OTHER                        = 8,
+       MLX5E_CONNECTOR_TYPE_NUMBER = 9,
+};
+
 enum mlx5e_cable_type {
        MLX5E_CABLE_TYPE_UNKNOWN                = 0,
        MLX5E_CABLE_TYPE_ACTIVE_CABLE           = 1,

Reply via email to