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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxxxxxx>
---
 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@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Photo]     [Yosemite News]     [Yosemite Photos]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux