RE: [PATCH] IB/mlx5: give back valid speed/width even without plugged in SFP module

From: Parav Pandit
Date: Fri Oct 27 2017 - 14:33:06 EST




> -----Original Message-----
> From: linux-rdma-owner@xxxxxxxxxxxxxxx [mailto:linux-rdma-
> owner@xxxxxxxxxxxxxxx] On Behalf Of Thomas Bogendoerfer
> Sent: Friday, October 27, 2017 7:30 AM
> To: Matan Barak <matanb@xxxxxxxxxxxx>; Leon Romanovsky
> <leonro@xxxxxxxxxxxx>; Doug Ledford <dledford@xxxxxxxxxx>; linux-
> rdma@xxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx
> Subject: [PATCH] IB/mlx5: give back valid speed/width even without plugged in
> SFP module
>
> If there is no SFP module plugged into a port of mlx5 cards 'cat
> /sys/class/infniband/mlx5_X/ports/1/rate' returns Invalid argument.
> This causes tools like 'ibstat' to malfunction. This change adjusts mlx5 to all
> other RoCE/iWarp drivers, which always return valid speed/width.
>
> Signed-off-by: Thomas Bogendoerfer <tbogendoerfer@xxxxxxx>
> ---
> drivers/infiniband/hw/mlx5/main.c | 5 ++++-
> 1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/infiniband/hw/mlx5/main.c
> b/drivers/infiniband/hw/mlx5/main.c
> index 260f8be1d0ed..4388618e3434 100644
> --- a/drivers/infiniband/hw/mlx5/main.c
> +++ b/drivers/infiniband/hw/mlx5/main.c
> @@ -246,7 +246,10 @@ static int translate_eth_proto_oper(u32
> eth_proto_oper, u8 *active_speed,
> *active_speed = IB_SPEED_EDR;
> break;
> default:
> - return -EINVAL;
> + /* Unknown */
> + *active_width = IB_WIDTH_1X;
> + *active_speed = IB_SPEED_SDR;
> + break;
> }
>
> return 0;
> --
> 2.12.3

Similar issue was reported by Ghazale in offline email and she also provided similar patch.
I added her in this mail thread.
Please add below reported-by tag if you find it appropriate.
Reported-by: Ghazale Hosseinabadi <ghazale.hosseinabadi@xxxxxxxxxx>

Thanks for the short term fix.
However I believe that ibstat tool should be enhanced to report unknown port speed instead of expecting drivers to supply some random number like this.
Similar tools such as ethtool does report unknown port speed as unknown like below output which doesn't have SFP.

ethtool ens2f0
<....>
Speed: Unknown!
Duplex: Unknown! (255)
<....>
Link detected: no