24516419 umad_get_ca() should pass the PF node_guid for CX3
authorPramod Gunjikar <pramod.gunjikar@oracle.com>
Tue, 20 Sep 2016 22:58:42 -0700
changeset 6941 be16d495c39b
parent 6940 0dcd942c928f
child 6942 d4c5b8626f38
24516419 umad_get_ca() should pass the PF node_guid for CX3
components/open-fabrics/libibumad/patches/002-libibumad_to_use_node_guid_ext.patch
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/open-fabrics/libibumad/patches/002-libibumad_to_use_node_guid_ext.patch	Tue Sep 20 22:58:42 2016 -0700
@@ -0,0 +1,42 @@
+#This patch was developed both in-house and from outside. We plan to submit it
+#upstream, but do not yet have a target date for doing so
+#
+# HG changeset patch
+# Parent  c1b4449a11e307550ee85b73baed3cd69e1b87cf
+24516419 umad_get_ca() should pass the PF node_guid for CX3
+
+diff -r c1b4449a11e3 include/infiniband/umad.h
+--- a/include/infiniband/umad.h	Thu Aug 18 00:00:48 2016 -0700
++++ b/include/infiniband/umad.h	Sun Aug 21 22:33:49 2016 -0700
+@@ -129,6 +129,8 @@
+ #define SYS_CA_HW_VERS		"hw_rev"
+ #define SYS_CA_TYPE		"hca_type"
+ #define SYS_CA_NODE_GUID	"node_guid"
++#define SYS_CA_NODE_GUID_EXTERNAL \
++				"node_guid_external"
+ #define SYS_CA_SYS_GUID		"sys_image_guid"
+ 
+ #define SYS_PORT_LMC		"lid_mask_count"
+diff -r c1b4449a11e3 src/umad.c
+--- a/src/umad.c	Thu Aug 18 00:00:48 2016 -0700
++++ b/src/umad.c	Sun Aug 21 22:33:49 2016 -0700
+@@ -456,7 +456,19 @@
+ 	if ((r = sys_read_string(dir_name, SYS_CA_TYPE, ca->ca_type,
+ 				 sizeof ca->ca_type)) < 0)
+ 		ca->ca_type[0] = '\0';
++#if defined(__SVR4) && defined(__sun)
++	/*
++	 * Get "node_guid_external" for the device. If it does not exist,
++	 * or if the value node_guid_external is 0, use "node_guid"
++	 */
++	r = sys_read_guid(dir_name, SYS_CA_NODE_GUID_EXTERNAL,
++	    &ca->node_guid);
++	if (((r < 0) || (ca->node_guid == 0)) &&
++	    ((r = sys_read_guid(dir_name, SYS_CA_NODE_GUID,
++	    &ca->node_guid)) < 0))
++#else
+ 	if ((r = sys_read_guid(dir_name, SYS_CA_NODE_GUID, &ca->node_guid)) < 0)
++#endif
+ 		return r;
+ 	if ((r =
+ 	     sys_read_guid(dir_name, SYS_CA_SYS_GUID, &ca->system_guid)) < 0)