diff options
author | Steven Koo <steven.koo@ni.com> | 2020-08-26 11:33:40 -0500 |
---|---|---|
committer | Aaron Rossetto <aaron.rossetto@ni.com> | 2020-09-03 11:44:06 -0500 |
commit | 6d414a4f2276da455e77dc1a436827349e596d79 (patch) | |
tree | e2a00123c60dc2e4aeff7cea31cdd514571de940 /host/lib | |
parent | 73421ba19dd12f255de6fcd1a62a464b37eb51f7 (diff) | |
download | uhd-6d414a4f2276da455e77dc1a436827349e596d79.tar.gz uhd-6d414a4f2276da455e77dc1a436827349e596d79.tar.bz2 uhd-6d414a4f2276da455e77dc1a436827349e596d79.zip |
x300,mpmd: Increase recv frames for dpdk streaming
With the default 32 frames, high rate DPDK streaming would overrun or
drop samples. This defaults num_recv_frames to 512 for DPDK, which has
shown to resolve these issues.
Signed-off-by: Steven Koo <steven.koo@ni.com>
Diffstat (limited to 'host/lib')
-rw-r--r-- | host/lib/usrp/mpmd/mpmd_link_if_ctrl_udp.cpp | 10 | ||||
-rw-r--r-- | host/lib/usrp/x300/x300_eth_mgr.cpp | 7 |
2 files changed, 16 insertions, 1 deletions
diff --git a/host/lib/usrp/mpmd/mpmd_link_if_ctrl_udp.cpp b/host/lib/usrp/mpmd/mpmd_link_if_ctrl_udp.cpp index a2fadd813..62c4a8ecc 100644 --- a/host/lib/usrp/mpmd/mpmd_link_if_ctrl_udp.cpp +++ b/host/lib/usrp/mpmd/mpmd_link_if_ctrl_udp.cpp @@ -286,6 +286,7 @@ uhd::transport::both_links_t mpmd_link_if_ctrl_udp::get_link(const size_t link_i const std::string udp_port = _udp_info.at(ip_addr).udp_port; const size_t link_rate = get_link_rate(link_idx); + const bool use_dpdk = _mb_args.has_key("use_dpdk"); // FIXME use constrained device args link_params_t default_link_params; default_link_params.num_send_frames = MPMD_ETH_NUM_FRAMES; default_link_params.num_recv_frames = MPMD_ETH_NUM_FRAMES; @@ -302,6 +303,13 @@ uhd::transport::both_links_t mpmd_link_if_ctrl_udp::get_link(const size_t link_i default_link_params.send_buff_size = get_link_rate(link_idx) * MPMD_BUFFER_DEPTH; default_link_params.recv_buff_size = get_link_rate(link_idx) * MPMD_BUFFER_DEPTH; +#ifdef HAVE_DPDK + if(use_dpdk) { + default_link_params.num_recv_frames = default_link_params.recv_buff_size / + default_link_params.recv_frame_size; + } +#endif + link_params_t link_params = calculate_udp_link_params(link_type, get_mtu(uhd::TX_DIRECTION), get_mtu(uhd::RX_DIRECTION), @@ -315,7 +323,7 @@ uhd::transport::both_links_t mpmd_link_if_ctrl_udp::get_link(const size_t link_i link_params.num_recv_frames = std::max(uhd::rfnoc::MIN_NUM_FRAMES, link_params.num_recv_frames); - if (_mb_args.has_key("use_dpdk")) { // FIXME use constrained device args + if (use_dpdk) { #ifdef HAVE_DPDK auto link = uhd::transport::udp_dpdk_link::make(ip_addr, udp_port, link_params); return std::make_tuple(link, diff --git a/host/lib/usrp/x300/x300_eth_mgr.cpp b/host/lib/usrp/x300/x300_eth_mgr.cpp index 879b553fd..8cdba38cc 100644 --- a/host/lib/usrp/x300/x300_eth_mgr.cpp +++ b/host/lib/usrp/x300/x300_eth_mgr.cpp @@ -251,6 +251,13 @@ both_links_t eth_manager::get_links(link_type_t link_type, ETH_MSG_NUM_FRAMES * ETH_MSG_FRAME_SIZE); // enough to hold greater of 20 ms or // number of msg frames +#ifdef HAVE_DPDK + if(_args.get_use_dpdk()) { + default_link_params.num_recv_frames = default_link_params.recv_buff_size / + default_link_params.recv_frame_size; + } +#endif + link_params_t link_params = calculate_udp_link_params(link_type, get_mtu(uhd::TX_DIRECTION), get_mtu(uhd::RX_DIRECTION), |