diff mbox

[rdma-core] libibumad/umad.c: In get_port, ignore sysfs rate file errors

Message ID f4ae658c-0e2a-c264-e0b6-f1ed639237eb@dev.mellanox.co.il (mailing list archive)
State Accepted
Headers show

Commit Message

Hal Rosenstock Oct. 31, 2017, 12:14 p.m. UTC
This can cause ibpanic in ibstat when width is not set properly
as can occur when QSPF is not plugged into port.

ibpanic: [7851] main: stat of IB device 'mlx5_1' failed: Invalid argument

It's caused by kernel sysfs.c:show_rate returning -EINVAL
and that error being treated as failure in umad.c:get_port.
With this change, Rate is displayed as 0 with ibstat for this scenario.

Signed-off-by: Hal Rosenstock <hal@mellanox.com>
---
 libibumad/umad.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

Comments

Parav Pandit Oct. 31, 2017, 1:59 p.m. UTC | #1
> -----Original Message-----

> From: linux-rdma-owner@vger.kernel.org [mailto:linux-rdma-

> owner@vger.kernel.org] On Behalf Of Hal Rosenstock

> Sent: Tuesday, October 31, 2017 7:15 AM

> To: linux-rdma@vger.kernel.org

> Cc: Ghazale Hosseinabadi <ghazale.hosseinabadi@oracle.com>

> Subject: [PATCH rdma-core] libibumad/umad.c: In get_port, ignore sysfs rate file

> errors

> 

> 

> This can cause ibpanic in ibstat when width is not set properly as can occur when

> QSPF is not plugged into port.

> 

> ibpanic: [7851] main: stat of IB device 'mlx5_1' failed: Invalid argument

> 

> It's caused by kernel sysfs.c:show_rate returning -EINVAL and that error being

> treated as failure in umad.c:get_port.

> With this change, Rate is displayed as 0 with ibstat for this scenario.

> 

> Signed-off-by: Hal Rosenstock <hal@mellanox.com>

> ---

>  libibumad/umad.c | 3 +--

>  1 file changed, 1 insertion(+), 2 deletions(-)

> 

> diff --git a/libibumad/umad.c b/libibumad/umad.c index 535256e..dcb2c68

> 100644

> --- a/libibumad/umad.c

> +++ b/libibumad/umad.c

> @@ -150,8 +150,7 @@ static int get_port(const char *ca_name, const char

> *dir, int portnum, umad_port

>  		goto clean;

>  	if (sys_read_uint(port_dir, SYS_PORT_PHY_STATE, &port->phys_state) <

> 0)

>  		goto clean;

> -	if (sys_read_uint(port_dir, SYS_PORT_RATE, &port->rate) < 0)

> -		goto clean;

> +	sys_read_uint(port_dir, SYS_PORT_RATE, &port->rate);

>  	if (sys_read_uint(port_dir, SYS_PORT_CAPMASK, &capmask) < 0)

>  		goto clean;

> 

Looks good to me.
Leon Romanovsky Oct. 31, 2017, 5:21 p.m. UTC | #2
On Tue, Oct 31, 2017 at 08:14:58AM -0400, Hal Rosenstock wrote:
>
> This can cause ibpanic in ibstat when width is not set properly
> as can occur when QSPF is not plugged into port.
>
> ibpanic: [7851] main: stat of IB device 'mlx5_1' failed: Invalid argument
>
> It's caused by kernel sysfs.c:show_rate returning -EINVAL
> and that error being treated as failure in umad.c:get_port.
> With this change, Rate is displayed as 0 with ibstat for this scenario.
>
> Signed-off-by: Hal Rosenstock <hal@mellanox.com>
> ---
>  libibumad/umad.c | 3 +--
>  1 file changed, 1 insertion(+), 2 deletions(-)
>

Thanks, applied.
Ghazale Hosseinabadi Oct. 31, 2017, 6:09 p.m. UTC | #3
On 10/31/2017 05:14 AM, Hal Rosenstock wrote:
> This can cause ibpanic in ibstat when width is not set properly
> as can occur when QSPF is not plugged into port.
>
> ibpanic: [7851] main: stat of IB device 'mlx5_1' failed: Invalid argument
>
> It's caused by kernel sysfs.c:show_rate returning -EINVAL
> and that error being treated as failure in umad.c:get_port.
> With this change, Rate is displayed as 0 with ibstat for this scenario.
>
> Signed-off-by: Hal Rosenstock <hal@mellanox.com>
Tested by: Ghazale Hosseinabadi <ghazale.hosseinabadi@oracle.com>
> ---
>   libibumad/umad.c | 3 +--
>   1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/libibumad/umad.c b/libibumad/umad.c
> index 535256e..dcb2c68 100644
> --- a/libibumad/umad.c
> +++ b/libibumad/umad.c
> @@ -150,8 +150,7 @@ static int get_port(const char *ca_name, const char *dir, int portnum, umad_port
>   		goto clean;
>   	if (sys_read_uint(port_dir, SYS_PORT_PHY_STATE, &port->phys_state) < 0)
>   		goto clean;
> -	if (sys_read_uint(port_dir, SYS_PORT_RATE, &port->rate) < 0)
> -		goto clean;
> +	sys_read_uint(port_dir, SYS_PORT_RATE, &port->rate);
>   	if (sys_read_uint(port_dir, SYS_PORT_CAPMASK, &capmask) < 0)
>   		goto clean;
>   

--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/libibumad/umad.c b/libibumad/umad.c
index 535256e..dcb2c68 100644
--- a/libibumad/umad.c
+++ b/libibumad/umad.c
@@ -150,8 +150,7 @@  static int get_port(const char *ca_name, const char *dir, int portnum, umad_port
 		goto clean;
 	if (sys_read_uint(port_dir, SYS_PORT_PHY_STATE, &port->phys_state) < 0)
 		goto clean;
-	if (sys_read_uint(port_dir, SYS_PORT_RATE, &port->rate) < 0)
-		goto clean;
+	sys_read_uint(port_dir, SYS_PORT_RATE, &port->rate);
 	if (sys_read_uint(port_dir, SYS_PORT_CAPMASK, &capmask) < 0)
 		goto clean;