Version: 1
-Previous: 56d3282b7d3622aea2cbb532cb972bc08dd9a5bd
+Previous: 00b6b05770e17d5927b6ab5a424200a1773682ce
Head: 612eae1f6fe3320a9a657b99b130a9dc6db53858
Applied:
- 1-2-rping-fixes-race-where-ibv: 5ae36aba6f9507324048d1d6d5536bed6f5fe92c
- 2-2-rping-ignore-flushed-compl: 612eae1f6fe3320a9a657b99b130a9dc6db53858
Unapplied:
old-af-ib: aaa0d9ca917c8c361a978e5a116963c2cceac5ba
old-seterr: 47eb0c419687c2690292c1910acae83a46e5388c
+++ /dev/null
-Bottom: 3a5465fc0dd6fab228caae1b22e6cb5944432c10
-Top: 73c08fe429da75bf6b776073b2c05e6dcdb752b9
-Author: Hariprasad S <hariprasad@chelsio.com>
-Date: 2014-11-06 14:42:56 +0530
-
-rping: Fixes race, where ibv context was getting freed before memory was deregistered
-
-While running rping as a client without server on the other end,
-rping_test_client fails and the ibv context was getting freed
-before memory was deregistered. This patch fixes it.
-
-Signed-off-by: Hariprasad Shenai <hariprasad@chelsio.com>
-Signed-off-by: Sean Hefty <sean.hefty@intel.com>
-
-
----
-
-diff --git a/examples/rping.c b/examples/rping.c
-index 949cbe6..f0414de 100644
---- a/examples/rping.c
-+++ b/examples/rping.c
-@@ -1055,18 +1055,19 @@ static int rping_run_client(struct rping_cb *cb)
- ret = rping_connect_client(cb);
- if (ret) {
- fprintf(stderr, "connect error %d\n", ret);
-- goto err2;
-+ goto err3;
- }
-
- ret = rping_test_client(cb);
- if (ret) {
- fprintf(stderr, "rping client failed: %d\n", ret);
-- goto err3;
-+ goto err4;
- }
-
- ret = 0;
--err3:
-+err4:
- rdma_disconnect(cb->cm_id);
-+err3:
- pthread_join(cb->cqthread, NULL);
- err2:
- rping_free_buffers(cb);
+++ /dev/null
-Bottom: 73c08fe429da75bf6b776073b2c05e6dcdb752b9
-Top: e95f5275d89440ba116805743d8bef291d058c93
-Author: Hariprasad S <hariprasad@chelsio.com>
-Date: 2014-11-06 14:42:57 +0530
-
-rping: ignore flushed completions
-
-Based on original work by Steve Wise <steve@opengridcomputing.com>
-
-Signed-off-by: Hariprasad Shenai <hariprasad@chelsio.com>
-Signed-off-by: Sean Hefty <sean.hefty@intel.com>
-
-
----
-
-diff --git a/examples/rping.c b/examples/rping.c
-index f0414de..58b642e 100644
---- a/examples/rping.c
-+++ b/examples/rping.c
-@@ -277,15 +277,20 @@ static int rping_cq_event_handler(struct rping_cb *cb)
- struct ibv_wc wc;
- struct ibv_recv_wr *bad_wr;
- int ret;
-+ int flushed = 0;
-
- while ((ret = ibv_poll_cq(cb->cq, 1, &wc)) == 1) {
- ret = 0;
-
- if (wc.status) {
-- if (wc.status != IBV_WC_WR_FLUSH_ERR)
-- fprintf(stderr,
-- "cq completion failed status %d\n",
-- wc.status);
-+ if (wc.status == IBV_WC_WR_FLUSH_ERR) {
-+ flushed = 1;
-+ continue;
-+
-+ }
-+ fprintf(stderr,
-+ "cq completion failed status %d\n",
-+ wc.status);
- ret = -1;
- goto error;
- }
-@@ -334,7 +339,7 @@ static int rping_cq_event_handler(struct rping_cb *cb)
- fprintf(stderr, "poll error %d\n", ret);
- goto error;
- }
-- return 0;
-+ return flushed;
-
- error:
- cb->state = ERROR;