diff options
author | Ciro Nishiguchi <ciro.nishiguchi@ni.com> | 2019-09-11 16:50:11 -0500 |
---|---|---|
committer | Martin Braun <martin.braun@ettus.com> | 2019-11-26 11:49:45 -0800 |
commit | f312d827602fafa21625106dafe2f209e10a22b3 (patch) | |
tree | fc805bebde263da87da3d7ceeb133014156cba3f /host/lib/rfnoc/mgmt_portal.cpp | |
parent | 1a6368331bf441290b0d08ac233c9e5050021493 (diff) | |
download | uhd-f312d827602fafa21625106dafe2f209e10a22b3.tar.gz uhd-f312d827602fafa21625106dafe2f209e10a22b3.tar.bz2 uhd-f312d827602fafa21625106dafe2f209e10a22b3.zip |
rfnoc: Fix transport buffer reservations
Change transports to reserve the number of frame buffers they actually
need from the I/O service. Previously some I/O service clients reserved
0 buffers since they shared frame buffers with other clients, as we know
the two clients do not use the links simultaneously. This is possible
with the inline_io_service but not with a multithreaded I/O service
which queues buffer for clients before they are requested.
Diffstat (limited to 'host/lib/rfnoc/mgmt_portal.cpp')
-rw-r--r-- | host/lib/rfnoc/mgmt_portal.cpp | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/host/lib/rfnoc/mgmt_portal.cpp b/host/lib/rfnoc/mgmt_portal.cpp index 0e0997a36..1c6e2c608 100644 --- a/host/lib/rfnoc/mgmt_portal.cpp +++ b/host/lib/rfnoc/mgmt_portal.cpp @@ -1050,15 +1050,15 @@ private: // Functions // Send the transaction over the wire _send_mgmt_transaction(xport, send); - auto recv_buff = xport.get_mgmt_buff(timeout * 1000); - if (not recv_buff) { + auto mgmt_buff = xport.get_mgmt_buff(timeout * 1000); + if (not mgmt_buff) { throw uhd::io_error("Timed out getting recv buff for management transaction"); } - _recv_pkt->refresh(recv_buff->data()); + _recv_pkt->refresh(mgmt_buff->data()); mgmt_payload recv; recv.set_header(my_epid, _protover, _chdr_w); _recv_pkt->fill_payload(recv); - xport.release_recv_buff(std::move(recv_buff)); + xport.release_mgmt_buff(std::move(mgmt_buff)); return recv; } |