diff options
Diffstat (limited to 'src/plugins/rdma/input.c')
-rw-r--r-- | src/plugins/rdma/input.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/src/plugins/rdma/input.c b/src/plugins/rdma/input.c index 7ced1ec66d4..f5091db4719 100644 --- a/src/plugins/rdma/input.c +++ b/src/plugins/rdma/input.c @@ -128,12 +128,12 @@ rdma_device_input_refill (vlib_main_t * vm, rdma_device_t * rd, w[-1].next = 0; /* fix next pointer in WR linked-list last item */ - w = wr; - ibv_post_wq_recv (rxq->wq, wr, &w); - n = wr == w ? n_alloc : (uintptr_t) (w - wr); - - if (PREDICT_FALSE (n != n_alloc)) - vlib_buffer_free (vm, buffers + n, n_alloc - n); + n = n_alloc; + if (ibv_post_wq_recv (rxq->wq, wr, &w) != 0) + { + n = w - wr; + vlib_buffer_free (vm, buffers + n, n_alloc - n); + } rxq->n_enq += n; } |