IB/mlx4: Fix port query for 56Gb Ethernet links
authorSaeed Mahameed <saeedm@mellanox.com>
Thu, 10 Nov 2016 09:30:59 +0000 (11:30 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 26 Jan 2017 07:23:46 +0000 (08:23 +0100)
commit 6fa26208206c406fa529cd73f7ae6bf4181e270b upstream.

Report the correct speed in the port attributes when using a 56Gbps
ethernet link.  Without this change the field is incorrectly set to 10.

Fixes: a9c766bb75ee ('IB/mlx4: Fix info returned when querying IBoE ports')
Fixes: 2e96691c31ec ('IB: Use central enum for speed instead of hard-coded values')
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
Signed-off-by: Yishai Hadas <yishaih@mellanox.com>
Signed-off-by: Daniel Jurgens <danielj@mellanox.com>
Signed-off-by: Leon Romanovsky <leon@kernel.org>
Signed-off-by: Doug Ledford <dledford@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/infiniband/hw/mlx4/main.c

index 97d6878f993828085a0f26f941572674ce68b967..9ecfa0d3ff22ccc3a03ef968cd0b03f252d77dfc 100644 (file)
@@ -630,9 +630,11 @@ static int eth_link_query_port(struct ib_device *ibdev, u8 port,
        if (err)
                goto out;
 
-       props->active_width     =  (((u8 *)mailbox->buf)[5] == 0x40) ?
-                                               IB_WIDTH_4X : IB_WIDTH_1X;
-       props->active_speed     = IB_SPEED_QDR;
+       props->active_width     =  (((u8 *)mailbox->buf)[5] == 0x40) ||
+                                  (((u8 *)mailbox->buf)[5] == 0x20 /*56Gb*/) ?
+                                          IB_WIDTH_4X : IB_WIDTH_1X;
+       props->active_speed     =  (((u8 *)mailbox->buf)[5] == 0x20 /*56Gb*/) ?
+                                          IB_SPEED_FDR : IB_SPEED_QDR;
        props->port_cap_flags   = IB_PORT_CM_SUP | IB_PORT_IP_BASED_GIDS;
        props->gid_tbl_len      = mdev->dev->caps.gid_table_len[port];
        props->max_msg_sz       = mdev->dev->caps.max_msg_sz;