From 11a3a41a0f0207c3fc1f83e8192423d9b4da65a6 Mon Sep 17 00:00:00 2001 From: Dennis Klein Date: Fri, 1 Mar 2019 15:51:28 +0100 Subject: [PATCH] Add missing memory registration case --- fairmq/ofi/Socket.cxx | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/fairmq/ofi/Socket.cxx b/fairmq/ofi/Socket.cxx index 810037d6..87c6638a 100644 --- a/fairmq/ofi/Socket.cxx +++ b/fairmq/ofi/Socket.cxx @@ -434,10 +434,20 @@ auto Socket::RecvControlQueueReader() -> void auto ctrl = MakeControlMessageWithPmr(&fControlMemPool); auto ctrl_msg = boost::asio::mutable_buffer(ctrl.get(), sizeof(PostBuffer)); - fControlEndpoint->recv( - ctrl_msg, [&, ctrl2 = std::move(ctrl)](boost::asio::mutable_buffer) mutable { - OnRecvControl(std::move(ctrl2)); - }); + if (fNeedOfiMemoryRegistration) { + asiofi::memory_region mr(*fOfiDomain, ctrl_msg, asiofi::mr::access::recv); + auto desc = mr.desc(); + + fControlEndpoint->recv( + ctrl_msg, desc, [&, ctrl2 = std::move(ctrl), mr2 = std::move(mr)](boost::asio::mutable_buffer) mutable { + OnRecvControl(std::move(ctrl2)); + }); + } else { + fControlEndpoint->recv( + ctrl_msg, [&, ctrl2 = std::move(ctrl)](boost::asio::mutable_buffer) mutable { + OnRecvControl(std::move(ctrl2)); + }); + } } }); }