diff mbox

[infiniband-diags] ibdiag_common.c: In is_port_info_extended_supported, query PortInfo for port 0 when node is a switch

Message ID 831b3d02-ecc9-b394-88ea-4e371f3a7e72@dev.mellanox.co.il (mailing list archive)
State Accepted, archived
Delegated to: Ira Weiny
Headers show

Commit Message

Hal Rosenstock Oct. 20, 2017, 3:22 p.m. UTC
to be able to obtain CapabilityMask and CapabilityMask2
as these fields are not used on switch external ports
(only on switch port 0)

Signed-off-by: Hal Rosenstock <hal@mellanox.com>
---
 src/ibdiag_common.c | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

Comments

Ira Weiny Nov. 9, 2017, 2:13 a.m. UTC | #1
> 

> 

> to be able to obtain CapabilityMask and CapabilityMask2 as these fields are not

> used on switch external ports (only on switch port 0)

> 

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


Thanks!

This and 

	Add support for QP1Dropped counter in PortCounters attribute

accepted,
Ira


> ---

>  src/ibdiag_common.c | 12 +++++++++++-

>  1 file changed, 11 insertions(+), 1 deletion(-)

> 

> diff --git a/src/ibdiag_common.c b/src/ibdiag_common.c index 9245146..c33cacc

> 100644

> --- a/src/ibdiag_common.c

> +++ b/src/ibdiag_common.c

> @@ -506,8 +506,18 @@ int is_port_info_extended_supported(ib_portid_t *

> dest, int port,

>  	uint8_t data[IB_SMP_DATA_SIZE] = { 0 };

>  	uint32_t cap_mask;

>  	uint16_t cap_mask2;

> +	int type, portnum;

> 

> -	if (!smp_query_via(data, dest, IB_ATTR_PORT_INFO, port, 0, srcport))

> +	if (!smp_query_via(data, dest, IB_ATTR_NODE_INFO, 0, 0, srcport))

> +		IBEXIT("node info query failed");

> +

> +	mad_decode_field(data, IB_NODE_TYPE_F, &type);

> +	if (type == IB_NODE_SWITCH)

> +		portnum = 0;

> +	else

> +		portnum = port;

> +

> +	if (!smp_query_via(data, dest, IB_ATTR_PORT_INFO, portnum, 0,

> +srcport))

>  		IBEXIT("port info query failed");

> 

>  	mad_decode_field(data, IB_PORT_CAPMASK_F, &cap_mask);

> --

> 2.8.4

> 

> --

> 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/src/ibdiag_common.c b/src/ibdiag_common.c
index 9245146..c33cacc 100644
--- a/src/ibdiag_common.c
+++ b/src/ibdiag_common.c
@@ -506,8 +506,18 @@  int is_port_info_extended_supported(ib_portid_t * dest, int port,
 	uint8_t data[IB_SMP_DATA_SIZE] = { 0 };
 	uint32_t cap_mask;
 	uint16_t cap_mask2;
+	int type, portnum;
 
-	if (!smp_query_via(data, dest, IB_ATTR_PORT_INFO, port, 0, srcport))
+	if (!smp_query_via(data, dest, IB_ATTR_NODE_INFO, 0, 0, srcport))
+		IBEXIT("node info query failed");
+
+	mad_decode_field(data, IB_NODE_TYPE_F, &type);
+	if (type == IB_NODE_SWITCH)
+		portnum = 0;
+	else
+		portnum = port;
+
+	if (!smp_query_via(data, dest, IB_ATTR_PORT_INFO, portnum, 0, srcport))
 		IBEXIT("port info query failed");
 
 	mad_decode_field(data, IB_PORT_CAPMASK_F, &cap_mask);