diff options
author | Michael West <michael.west@ettus.com> | 2019-02-13 16:29:18 -0800 |
---|---|---|
committer | Brent Stapleton <brent.stapleton@ettus.com> | 2019-02-18 11:04:13 -0800 |
commit | c24901bdcb66d1224e0822ba88c762def193d2fe (patch) | |
tree | f6e85235fc253524f1254c383c2e606e34ef24e9 /host/lib/rfnoc/graph_impl.cpp | |
parent | 4e4dde96a137b00d59e711e79dbefa707bda74d6 (diff) | |
download | uhd-c24901bdcb66d1224e0822ba88c762def193d2fe.tar.gz uhd-c24901bdcb66d1224e0822ba88c762def193d2fe.tar.bz2 uhd-c24901bdcb66d1224e0822ba88c762def193d2fe.zip |
RFNoC: Disable FC ACK packets for lossless links
FC ACK packets are unnecessary on lossless links and degrade overall
performance. This change disables those packets on all lossless links.
Signed-off-by: Michael West <michael.west@ettus.com>
Diffstat (limited to 'host/lib/rfnoc/graph_impl.cpp')
-rw-r--r-- | host/lib/rfnoc/graph_impl.cpp | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/host/lib/rfnoc/graph_impl.cpp b/host/lib/rfnoc/graph_impl.cpp index 989bcb0c4..326e9205d 100644 --- a/host/lib/rfnoc/graph_impl.cpp +++ b/host/lib/rfnoc/graph_impl.cpp @@ -120,17 +120,17 @@ void graph_impl::connect(const block_id_t& src_block, % dst->get_block_id().get() % (dst->get_fifo_size(dst_block_port) / 1024) % (pkt_size / 1024) % src->get_block_id().get())); } + const bool same_xbar = sid.get_src_addr() == sid.get_dst_addr(); src->configure_flow_control_out(true, /* enable output */ + same_xbar, // Lossless link if on same crossbar buf_size_bytes, 0, /* no packet limit. We need to revisit this at some point. */ src_block_port); // On the same crossbar, use lots of FC packets - size_t bytes_per_response = - buf_size_bytes / uhd::rfnoc::DEFAULT_FC_XBAR_RESPONSE_FREQ; // Over the network, use less or we'd flood the transport - if (sid.get_src_addr() != sid.get_dst_addr()) { - bytes_per_response = buf_size_bytes / uhd::rfnoc::DEFAULT_FC_TX_RESPONSE_FREQ; - } + const size_t bytes_per_response = + same_xbar ? buf_size_bytes / uhd::rfnoc::DEFAULT_FC_XBAR_RESPONSE_FREQ + : buf_size_bytes / uhd::rfnoc::DEFAULT_FC_TX_RESPONSE_FREQ; UHD_ASSERT_THROW(bytes_per_response != 0); dst->configure_flow_control_in(bytes_per_response, dst_block_port); @@ -189,7 +189,12 @@ void graph_impl::connect_src(const block_id_t& src_block, % (buf_size_dst_bytes / 1024) % (pkt_size / 1024) % src->get_block_id().get())); } - src->configure_flow_control_out(buf_size_pkts, src_block_port); + + src->configure_flow_control_out(true, /* enable output */ + (dst_sid.get_src_addr() == dst_sid.get_dst_addr()), + buf_size_dst_bytes, + 0, /* no packet limit. We need to revisit this at some point. */ + src_block_port); } void graph_impl::connect_sink( |