IB/mlx5: Expose XDR speed through MAD
authorOr Har-Toov <ohartoov@nvidia.com>
Wed, 20 Sep 2023 10:07:41 +0000 (13:07 +0300)
committerLeon Romanovsky <leon@kernel.org>
Tue, 26 Sep 2023 09:38:43 +0000 (12:38 +0300)
Under MAD query port, Report NDR speed when NDR is supported in the port
capability mask.

Signed-off-by: Or Har-Toov <ohartoov@nvidia.com>
Reviewed-by: Mark Zhang <markzhang@nvidia.com>
Link: https://lore.kernel.org/r/d30bdec2a66a8a2edd1d84ee61453c58cf346b43.1695204156.git.leon@kernel.org
Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
Signed-off-by: Leon Romanovsky <leon@kernel.org>
drivers/infiniband/hw/mlx5/mad.c
include/rdma/ib_mad.h

index 8102ef113b7e08332d317fa43ca21097a27b0120..0c3c4e64812c58cf8457dbaffeb7a28e31cebad1 100644 (file)
@@ -619,6 +619,19 @@ int mlx5_query_mad_ifc_port(struct ib_device *ibdev, u32 port,
                }
        }
 
+       /* Check if extended speeds 2 (XDR/...) are supported */
+       if (props->port_cap_flags & IB_PORT_CAP_MASK2_SUP &&
+           props->port_cap_flags2 & IB_PORT_EXTENDED_SPEEDS2_SUP) {
+               ext_active_speed = (out_mad->data[56] >> 4) & 0x6;
+
+               switch (ext_active_speed) {
+               case 2:
+                       if (props->port_cap_flags2 & IB_PORT_LINK_SPEED_XDR_SUP)
+                               props->active_speed = IB_SPEED_XDR;
+                       break;
+               }
+       }
+
        /* If reported active speed is QDR, check if is FDR-10 */
        if (props->active_speed == 4) {
                if (dev->port_caps[port - 1].ext_port_cap &
index 2e3843b761e8908d98cc2449181ce7e0d5bb6cb9..3f1b58d8b4bf4fbcdc10c92849fe822ee97e9782 100644 (file)
@@ -277,6 +277,8 @@ enum ib_port_capability_mask2_bits {
        IB_PORT_LINK_WIDTH_2X_SUP               = 1 << 4,
        IB_PORT_LINK_SPEED_HDR_SUP              = 1 << 5,
        IB_PORT_LINK_SPEED_NDR_SUP              = 1 << 10,
+       IB_PORT_EXTENDED_SPEEDS2_SUP            = 1 << 11,
+       IB_PORT_LINK_SPEED_XDR_SUP              = 1 << 12,
 };
 
 #define OPA_CLASS_PORT_INFO_PR_SUPPORT BIT(26)