From nobody Wed Apr 09 04:56:05 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4ZXVyZ0pK3z5sWmN; Wed, 09 Apr 2025 04:56:06 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4ZXVyY5BtYz3hb5; Wed, 09 Apr 2025 04:56:05 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1744174565; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=0AFGURUSL/3yyJ1mpALxeNMM/oC5i+SAsjlmqSvs4Qo=; b=UhT/WcmwrxZX1qKI7iQi+lYfY2CsVJ8GCIJO/5ygk17qW85tYoExGhk7AuyZ8edFqcv/aK dEWqSj5l73eH2J/Q3cCW+tg7hs2DaiF0C/8lJfU88/+JjMXEhaUOhMDpzc5nwmB9eqgtos 3G4HjD3rt7xmGTl7NVfZ7S3YPh1iydXA4oc/dPNvqvP4BiUOvaQ40t1P95Ix1svoUpQXDC u+3rpyVKT1bmXOWkM7QfNMVL2vM1I7Oiu89lfI9LGjw3VXqq4gdtnX0T9Lswv279kRP966 lMYjMKjwpYmqyWHr/oaOuZBnQ1rs0NBgoqUA8heQeZH8HnbgljAFjAnqbBxlNg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1744174565; a=rsa-sha256; cv=none; b=FMt89Z6gH6ydgwMVlKP9iDrZa3ODxqfVclyJS0lV4NY7WMxLtQegjgVpfThCCkcDR2SDu2 68V9X5Ra3BXqEajzPf8tA6JMXPVtWyNK/uLHbjz60yHfT5BbO0Lmr9MJ00/S2Icll4iUBs XqIToMi4POyFucRAfwxn3VbvldHyxZDcqCJejjY++GjSaZEX56bGQ+/DY8SrH6hZHV1a1w iY8X6VhLG+yOncw5zK8K/gV5wRPpZitaFbZ277itRxS96T0uixDOGGmaUnhYzoPzPdFfA1 lxj04j4nTjaFfYl/IclBtfNNRdRZeKQjwpD6Ai51LxbMlxJ3Puintcx9qXI6Qg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1744174565; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=0AFGURUSL/3yyJ1mpALxeNMM/oC5i+SAsjlmqSvs4Qo=; b=XlvB9h9LUTyvqat2Ake4B7qVBcnTGf1OPuLWk157ReeT0Sbm8vxZm8Lx9aoiJgVsEiRsso jLuYR0QyUyyHgbSSeQ9eiSJ46sBPD23YcitWVNxLH6JasG8IRrVC5wjtpY280obb2YmEFp D9zTlmEBHRwJNStPnuXqxsWIf0NpJBVh85F2POX+aoIV/5/7WFvRHRRfXpzujR9aRHlIDx yRvnaU+upzdJmWPM5y16cbQ1CU2LCiQUG2sLZzAmp6bkla2/rCdRnt/4t6emRLHzGXaGgl O9ImznrFh/O6aMrLY6WTjPFW//q941Tcn919khU21P3hLLfaaHkfJb7FExcXvA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4ZXVyY4fX8z12tW; Wed, 09 Apr 2025 04:56:05 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 5394u5bx037789; Wed, 9 Apr 2025 04:56:05 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 5394u5wx037786; Wed, 9 Apr 2025 04:56:05 GMT (envelope-from git) Date: Wed, 9 Apr 2025 04:56:05 GMT Message-Id: <202504090456.5394u5wx037786@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Konstantin Belousov Subject: git: 89e0e3814e8c - main - mlx5en: Use connector type instead of cable type for media detection List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kib X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 89e0e3814e8ca205db7523f6ce6c63cebe4bfb0d Auto-Submitted: auto-generated The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=89e0e3814e8ca205db7523f6ce6c63cebe4bfb0d commit 89e0e3814e8ca205db7523f6ce6c63cebe4bfb0d Author: Ariel Ehrenberg AuthorDate: 2025-03-25 12:40:58 +0000 Commit: Konstantin Belousov 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,