From d7c64eb4b13670dbc5728f994e70dca60616af63 Mon Sep 17 00:00:00 2001 From: michael-west Date: Tue, 7 Jul 2020 13:37:25 -0700 Subject: RFNoC: Add xport disconnect callbacks Transports were not disconnecting their links from the I/O service upon destruction, leaving behind inaccessible send and recv links used by nothing. This led to I/O errors after creating several transports. Added callbacks to transports to automatically disconnect their links from the I/O service when the transport is destroyed. Updated all callers to supply a disconnect callback. Signed-off-by: michael-west --- host/tests/streamer_benchmark.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'host/tests') diff --git a/host/tests/streamer_benchmark.cpp b/host/tests/streamer_benchmark.cpp index 706ecee10..88dd9665b 100644 --- a/host/tests/streamer_benchmark.cpp +++ b/host/tests/streamer_benchmark.cpp @@ -302,7 +302,11 @@ static std::shared_ptr make_rx_streamer_mock_link( pkt_factory, epids, send_link->get_num_send_frames(), - fc_params); + fc_params, + [io_srv = io_srv, recv_link, send_link]() { + io_srv->detach_recv_link(recv_link); + io_srv->detach_send_link(send_link); + }); streamer->connect_channel(0, std::move(xport)); return streamer; @@ -341,7 +345,11 @@ static std::shared_ptr make_tx_streamer_mock_link( pkt_factory, epids, send_link->get_num_send_frames(), - fc_params); + fc_params, + [io_srv = io_srv, recv_link, send_link]() { + io_srv->detach_recv_link(recv_link); + io_srv->detach_send_link(send_link); + }); streamer->connect_channel(0, std::move(xport)); return streamer; -- cgit v1.2.3