--- a/components/open-fabrics/qperf/patches/base.patch Wed Sep 30 09:48:41 2015 -0700
+++ b/components/open-fabrics/qperf/patches/base.patch Wed Sep 30 09:48:41 2015 -0700
@@ -1,3 +1,6 @@
+# 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
+#
diff -r -u /tmp/730054/qperf-0.4.6/src/socket.c qperf-0.4.6/src/socket.c
--- /tmp/730054/qperf-0.4.6/src/socket.c Mon Aug 31 00:00:40 2009
+++ qperf-0.4.6/src/socket.c Mon Nov 8 11:10:20 2010
@@ -563,6 +566,36 @@
cm_expect_event(dev, RDMA_CM_EVENT_CONNECT_REQUEST);
rd_create_qp(dev, cm->event->id->verbs, cm->event->id);
+@@ -2012,7 +2071,7 @@
+ char *p = index(Req.id, ':');
+
+ if (p) {
+- *p++ = '\0';
++ p++;
+ port = atoi(p);
+ if (port < 1)
+ error(0, "bad IB port: %d; must be at least 1", port);
+@@ -2050,10 +2109,18 @@
+ device = *dev->ib.devlist;
+ else {
+ struct ibv_device **d = dev->ib.devlist;
+- while ((device = *d++))
+- if (streq(ibv_get_device_name(device), name))
++ size_t n = strlen(name);
++ char *p = index(Req.id, ':');
++ if (p) {
++ n = p - Req.id;
++ }
++ while ((device = *d++)) {
++ if (streqn(ibv_get_device_name(device), name, n)) {
+ break;
++ }
++ }
+ }
++
+ if (!device)
+ error(SYS, "failed to find InfiniBand device");
+ dev->ib.context = ibv_open_device(device);
diff -r -u /tmp/730054/qperf-0.4.6/src/rds.c qperf-0.4.6/src/rds.c
--- /tmp/730054/qperf-0.4.6/src/rds.c Mon Aug 31 00:00:40 2009
+++ qperf-0.4.6/src/rds.c Mon Nov 8 11:10:19 2010
@@ -649,7 +682,15 @@
diff -r -u /tmp/730054/qperf-0.4.6/src/qperf.h qperf-0.4.6/src/qperf.h
--- /tmp/730054/qperf-0.4.6/src/qperf.h Mon Aug 31 00:00:40 2009
+++ qperf-0.4.6/src/qperf.h Tue Oct 18 16:40:59 2011
-@@ -193,6 +193,7 @@
+@@ -49,6 +49,7 @@
+ #define cardof(a) (sizeof(a)/sizeof(*a))
+ #define endof(a) (&a[cardof(a)])
+ #define streq(a, b) (strcmp(a, b) == 0)
++#define streqn(a, b, n) (strncmp(a, b, n) == 0)
+ #define offset(t, e) ((long)&((t *)0)->e)
+ #define is_client() (ServerName != 0)
+ #define is_sender() (Req.flip ? !is_client() : is_client())
+@@ -193,6 +194,7 @@
uint32_t no_cpus; /* Number of processors */
uint32_t no_ticks; /* Ticks per second */
uint32_t max_cqes; /* Maximum CQ entries */