aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCiro Nishiguchi <ciro.nishiguchi@ni.com>2019-08-27 16:19:15 -0500
committerMartin Braun <martin.braun@ettus.com>2019-11-26 11:49:45 -0800
commit98209df92ea2a6abf6ed41af03bc3909b8e152b9 (patch)
treeb794f5def785ea46304ea8ea4d95ea814adb422b
parent745fbf19bc22e98cee42acac04cda28c5f9bcbd4 (diff)
downloaduhd-98209df92ea2a6abf6ed41af03bc3909b8e152b9.tar.gz
uhd-98209df92ea2a6abf6ed41af03bc3909b8e152b9.tar.bz2
uhd-98209df92ea2a6abf6ed41af03bc3909b8e152b9.zip
streamer: Add option to ignore sequence errors
Add template parameter to ignore sequence errors, used for testing.
-rw-r--r--host/lib/include/uhdlib/transport/get_aligned_buffs.hpp5
-rw-r--r--host/lib/include/uhdlib/transport/rx_streamer_impl.hpp4
-rw-r--r--host/lib/include/uhdlib/transport/rx_streamer_zero_copy.hpp8
3 files changed, 9 insertions, 8 deletions
diff --git a/host/lib/include/uhdlib/transport/get_aligned_buffs.hpp b/host/lib/include/uhdlib/transport/get_aligned_buffs.hpp
index 662be6d2d..d0f5682ca 100644
--- a/host/lib/include/uhdlib/transport/get_aligned_buffs.hpp
+++ b/host/lib/include/uhdlib/transport/get_aligned_buffs.hpp
@@ -27,7 +27,7 @@ constexpr size_t ALIGNMENT_FAILURE_THRESHOLD = 1000;
* match those of other channels due to dropped packets. Packets that do not
* have a tsf are not checked for alignment and never dropped.
*/
-template <typename transport_t>
+template <typename transport_t, bool ignore_seq_err = false>
class get_aligned_buffs
{
public:
@@ -144,7 +144,8 @@ public:
// If this packet had a sequence error, stop to return the error.
// Keep the packet for the next call to get_aligned_buffs.
- if (seq_error) {
+ if (seq_error && !ignore_seq_err) {
+ UHD_LOG_FASTPATH("D");
return SEQUENCE_ERROR;
}
}
diff --git a/host/lib/include/uhdlib/transport/rx_streamer_impl.hpp b/host/lib/include/uhdlib/transport/rx_streamer_impl.hpp
index c57a8e0d1..0691138e6 100644
--- a/host/lib/include/uhdlib/transport/rx_streamer_impl.hpp
+++ b/host/lib/include/uhdlib/transport/rx_streamer_impl.hpp
@@ -69,7 +69,7 @@ private:
/*!
* Implementation of rx streamer API
*/
-template <typename transport_t>
+template <typename transport_t, bool ignore_seq_err = false>
class rx_streamer_impl : public rx_streamer
{
public:
@@ -352,7 +352,7 @@ private:
std::vector<uhd::convert::converter::sptr> _converters;
// Implementation of frame buffer management and packet info
- rx_streamer_zero_copy<transport_t> _zero_copy_streamer;
+ rx_streamer_zero_copy<transport_t, ignore_seq_err> _zero_copy_streamer;
// Container for buffer pointers used in recv method
std::vector<const void*> _in_buffs;
diff --git a/host/lib/include/uhdlib/transport/rx_streamer_zero_copy.hpp b/host/lib/include/uhdlib/transport/rx_streamer_zero_copy.hpp
index 27b7eaf7d..4da925062 100644
--- a/host/lib/include/uhdlib/transport/rx_streamer_zero_copy.hpp
+++ b/host/lib/include/uhdlib/transport/rx_streamer_zero_copy.hpp
@@ -13,8 +13,8 @@
#include <uhd/utils/log.hpp>
#include <uhdlib/transport/get_aligned_buffs.hpp>
#include <boost/format.hpp>
-#include <vector>
#include <atomic>
+#include <vector>
namespace uhd { namespace transport {
@@ -23,7 +23,7 @@ namespace uhd { namespace transport {
* This class is part of rx_streamer_impl, split into a separate unit as it is
* a mostly self-contained portion of the streamer logic.
*/
-template <typename transport_t>
+template <typename transport_t, bool ignore_seq_err = false>
class rx_streamer_zero_copy
{
public:
@@ -219,7 +219,7 @@ public:
}
private:
- using get_aligned_buffs_t = get_aligned_buffs<transport_t>;
+ using get_aligned_buffs_t = get_aligned_buffs<transport_t, ignore_seq_err>;
void _handle_overrun()
{
@@ -232,7 +232,7 @@ private:
_frame_buffs[chan] = nullptr;
}
- frame_buff::uptr buff;
+ typename transport_t::buff_t::uptr buff;
while (true) {
std::tie(buff, std::ignore, std::ignore) =
_xports[chan]->get_recv_buff(0);