libibumad/umad.c: In get_port, ignore sysctl get rate errors
This can cause ibpanic in ibstat when width is not set properly as can occur when Ethernet port is connected to InfiniBand fabric. ibpanic: [8167] main: stat of IB device 'mlx5_0' failed: m With this change, Rate is displayed as 0 with ibstat for this scenario. MFC after: 3 days Approved by: hselasky (mentor), kib (mentor) Sponsored by: Mellanox Technologies
This commit is contained in:
parent
4535e8046f
commit
37e576b25e
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=333115
@ -138,6 +138,7 @@ static int get_port(const char *ca_name, const char *dir, int portnum, umad_port
|
||||
strncpy(port->ca_name, ca_name, sizeof port->ca_name - 1);
|
||||
port->portnum = portnum;
|
||||
port->pkeys = NULL;
|
||||
port->rate = 0;
|
||||
|
||||
len = snprintf(port_dir, sizeof(port_dir), "%s/%d", dir, portnum);
|
||||
if (len < 0 || len > sizeof(port_dir))
|
||||
@ -155,8 +156,12 @@ 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;
|
||||
/*
|
||||
* If width was not set properly this read may fail.
|
||||
* Instead of failing everything, we will just skip the check
|
||||
* and it will be set to 0.
|
||||
*/
|
||||
sys_read_uint(port_dir, SYS_PORT_RATE, &port->rate);
|
||||
if (sys_read_uint(port_dir, SYS_PORT_CAPMASK, &capmask) < 0)
|
||||
goto clean;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user