[openib-general] minor bug in pingpong programs

Ralph Campbell ralphc at pathscale.com
Wed Dec 28 14:14:52 PST 2005


The pingpong test programs don't check the return value from
ibv_pool_cq() properly.  Here is a patch to fix them.


Index: rc_pingpong.c
===================================================================
--- rc_pingpong.c	(revision 4412)
+++ rc_pingpong.c	(working copy)
@@ -644,13 +644,12 @@
 
 			do {
 				ne = ibv_poll_cq(ctx->cq, 2, wc);
+				if (ne < 0) {
+					fprintf(stderr, "poll CQ failed %d\n", ne);
+					return 1;
+				}
 			} while (!use_event && ne < 1);
 
-			if (ne < 0) {
-				fprintf(stderr, "poll CQ failed %d\n", ne);
-				return 1;
-			}
-
 			for (i = 0; i < ne; ++i) {
 				if (wc[i].status != IBV_WC_SUCCESS) {
 					fprintf(stderr, "Failed status %d for wr_id %d\n",
Index: srq_pingpong.c
===================================================================
--- srq_pingpong.c	(revision 4412)
+++ srq_pingpong.c	(working copy)
@@ -720,13 +720,12 @@
 
 			do {
 				ne = ibv_poll_cq(ctx->cq, 2, wc);
+				if (ne < 0) {
+					fprintf(stderr, "poll CQ failed %d\n", ne);
+					return 1;
+				}
 			} while (!use_event && ne < 1);
 
-			if (ne < 0) {
-				fprintf(stderr, "poll CQ failed %d\n", ne);
-				return 1;
-			}
-
 			for (i = 0; i < ne; ++i) {
 				if (wc[i].status != IBV_WC_SUCCESS) {
 					fprintf(stderr, "Failed status %d for wr_id %d\n",
Index: uc_pingpong.c
===================================================================
--- uc_pingpong.c	(revision 4412)
+++ uc_pingpong.c	(working copy)
@@ -632,13 +632,12 @@
 
 			do {
 				ne = ibv_poll_cq(ctx->cq, 2, wc);
+				if (ne < 0) {
+					fprintf(stderr, "poll CQ failed %d\n", ne);
+					return 1;
+				}
 			} while (!use_event && ne < 1);
 
-			if (ne < 0) {
-				fprintf(stderr, "poll CQ failed %d\n", ne);
-				return 1;
-			}
-
 			for (i = 0; i < ne; ++i) {
 				if (wc[i].status != IBV_WC_SUCCESS) {
 					fprintf(stderr, "Failed status %d for wr_id %d\n",
Index: ud_pingpong.c
===================================================================
--- ud_pingpong.c	(revision 4412)
+++ ud_pingpong.c	(working copy)
@@ -640,13 +640,12 @@
 
 			do {
 				ne = ibv_poll_cq(ctx->cq, 2, wc);
+				if (ne < 0) {
+					fprintf(stderr, "poll CQ failed %d\n", ne);
+					return 1;
+				}
 			} while (!use_event && ne < 1);
 
-			if (ne < 0) {
-				fprintf(stderr, "poll CQ failed %d\n", ne);
-				return 1;
-			}
-
 			for (i = 0; i < ne; ++i) {
 				if (wc[i].status != IBV_WC_SUCCESS) {
 					fprintf(stderr, "Failed status %d for wr_id %d\n",

-- 
Ralph Campbell <ralphc at pathscale.com>




More information about the general mailing list