diff options
Diffstat (limited to 'drivers/infiniband/hw/mlx4/main.c')
| -rw-r--r-- | drivers/infiniband/hw/mlx4/main.c | 7 | 
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/infiniband/hw/mlx4/main.c b/drivers/infiniband/hw/mlx4/main.c index 75d30562930..b948b6dd5d5 100644 --- a/drivers/infiniband/hw/mlx4/main.c +++ b/drivers/infiniband/hw/mlx4/main.c @@ -247,12 +247,17 @@ static int ib_link_query_port(struct ib_device *ibdev, u8 port,  		err = mlx4_MAD_IFC(to_mdev(ibdev), 1, 1, port,  				   NULL, NULL, in_mad, out_mad);  		if (err) -			return err; +			goto out;  		/* Checking LinkSpeedActive for FDR-10 */  		if (out_mad->data[15] & 0x1)  			props->active_speed = IB_SPEED_FDR10;  	} + +	/* Avoid wrong speed value returned by FW if the IB link is down. */ +	if (props->state == IB_PORT_DOWN) +		 props->active_speed = IB_SPEED_SDR; +  out:  	kfree(in_mad);  	kfree(out_mad);  |