Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 17 Mar 2008 16:09:19 GMT
From:      Steve Wise <swise@FreeBSD.org>
To:        Perforce Change Reviews <perforce@FreeBSD.org>
Subject:   PERFORCE change 137922 for review
Message-ID:  <200803171609.m2HG9J14001389@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=137922

Change 137922 by swise@swise:vic10:iwarp on 2008/03/17 16:09:03

	blocking support for krping rlat.

Affected files ...

.. //depot/projects/iwarp/sys/contrib/rdma/krping/krping.c#13 edit
.. //depot/projects/iwarp/sys/contrib/rdma/krping/krping.h#6 edit

Differences ...

==== //depot/projects/iwarp/sys/contrib/rdma/krping/krping.c#13 (text+ko) ====

@@ -80,6 +80,7 @@
 	{"rlat", OPT_NOPARAM, 'L'},
 	{"bw", OPT_NOPARAM, 'B'},
 	{"tx-depth", OPT_INT, 't'},
+  	{"poll", OPT_NOPARAM, 'P'},
 	{NULL, 0, 0}
 };
 
@@ -841,8 +842,13 @@
 	cb->rdma_sq_wr.sg_list->length = cb->size;
 
 	microtime(&start_tv);
+ 	if (!cb->poll) {
+ 		cb->state = RDMA_READ_ADV;
+ 		ib_req_notify_cq(cb->cq, IB_CQ_NEXT_COMP);
+ 	}
 	while (scnt < iters) {
 
+ 		cb->state = RDMA_READ_ADV;
 		ret = ib_post_send(cb->qp, &cb->rdma_sq_wr, &bad_wr);
 		if (ret) {
 			printf(PFX  
@@ -852,7 +858,16 @@
 		}
 
 		do {
-			ne = ib_poll_cq(cb->cq, 1, &wc);
+			if (!cb->poll) {
+				krping_wait(cb, RDMA_READ_COMPLETE);
+				if (cb->state == RDMA_READ_COMPLETE) {
+					ne = 1;
+					ib_req_notify_cq(cb->cq, IB_CQ_NEXT_COMP);
+				} else {
+					ne = -1;
+				}
+			} else
+				ne = ib_poll_cq(cb->cq, 1, &wc);
 			if (cb->state == ERROR) {
 				printf(PFX 
 				       "state == ERROR...bailing scnt %d\n", scnt);
@@ -864,7 +879,7 @@
 			printf(PFX "poll CQ failed %d\n", ne);
 			return;
 		}
-		if (wc.status != IB_WC_SUCCESS) {
+ 		if (cb->poll && wc.status != IB_WC_SUCCESS) {
 			printf(PFX "Completion wth error at %s:\n",
 				cb->server ? "server" : "client");
 			printf(PFX "Failed status %d: wr_id %d\n",
@@ -1740,6 +1755,10 @@
 			cb->port = htons(optint);
 			DEBUG_LOG(PFX "port %d\n", (int)optint);
 			break;
+		case 'P':
+			cb->poll = 1;
+			DEBUG_LOG("server\n");
+			break;
 		case 's':
 			cb->server = 1;
 			DEBUG_LOG(PFX "server\n");

==== //depot/projects/iwarp/sys/contrib/rdma/krping/krping.h#6 (text+ko) ====

@@ -106,6 +106,7 @@
 	int wlat;			/* run write latency test */
 	int bw;				/* run write bw test */
 	int duplex;			/* run write bw full duplex test */
+	int poll;			/* poll vs block in rlat */
 	int txdepth;
 };
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200803171609.m2HG9J14001389>