diff options
22 files changed, 109 insertions, 55 deletions
| diff --git a/host/include/uhd/rfnoc/CMakeLists.txt b/host/include/uhd/rfnoc/CMakeLists.txt index 33d324a4d..805a59a4f 100644 --- a/host/include/uhd/rfnoc/CMakeLists.txt +++ b/host/include/uhd/rfnoc/CMakeLists.txt @@ -12,6 +12,7 @@ UHD_INSTALL(FILES      block_id.hpp      blockdef.hpp      constants.hpp +    chdr_types.hpp      defaults.hpp      dirtifier.hpp      filter_node.hpp @@ -28,6 +29,7 @@ UHD_INSTALL(FILES      register_iface_holder.hpp      registry.hpp      res_source_info.hpp +    rfnoc_types.hpp      traffic_counter.hpp      # Block controllers      addsub_block_control.hpp diff --git a/host/lib/include/uhdlib/rfnoc/chdr_types.hpp b/host/include/uhd/rfnoc/chdr_types.hpp index 3eea40850..2f6c27c84 100644 --- a/host/lib/include/uhdlib/rfnoc/chdr_types.hpp +++ b/host/include/uhd/rfnoc/chdr_types.hpp @@ -6,9 +6,9 @@  #pragma once +#include <uhd/rfnoc/rfnoc_types.hpp>  #include <uhd/types/endianness.hpp>  #include <uhd/utils/byteswap.hpp> -#include <uhdlib/rfnoc/rfnoc_common.hpp>  #include <boost/optional.hpp>  #include <list>  #include <memory> @@ -685,8 +685,8 @@ public:      }  private: -    const op_code_t _op_code; -    const payload_t _op_payload; +    op_code_t _op_code; +    payload_t _op_payload;  };  //! A class that represents a single management hop @@ -755,10 +755,9 @@ public:      inline void set_header(sep_id_t src_epid, uint16_t protover, chdr_w_t chdr_w)      { -        _src_epid     = src_epid; -        _chdr_w       = chdr_w; -        _protover     = protover; -        _padding_size = (chdr_w_to_bits(_chdr_w) / 64) - 1; +        set_src_epid(src_epid); +        set_chdr_w(chdr_w); +        set_proto_ver(protover);      }      //! Add a management hop to this transaction @@ -833,9 +832,40 @@ public:          return _src_epid;      } +    //! Set the source EPID for this transaction +    inline void set_src_epid(sep_id_t src_epid) +    { +        _src_epid = src_epid; +    } +      //! Comparison operator (==)      bool operator==(const mgmt_payload& rhs) const; +    //! Return the CHDR_W for this transaction +    inline chdr_w_t get_chdr_w() const +    { +        return _chdr_w; +    } + +    //! Set the CHDR_W for this transaction +    inline void set_chdr_w(chdr_w_t chdr_w) +    { +        _chdr_w       = chdr_w; +        _padding_size = (chdr_w_to_bits(_chdr_w) / 64) - 1; +    } + +    //! Return the protocol version for this transaction +    inline uint16_t get_proto_ver() const +    { +        return _protover; +    } + +    //! Set the protocol version for this transaction +    inline void set_proto_ver(uint16_t proto_ver) +    { +        _protover = proto_ver; +    } +  private:      sep_id_t _src_epid = 0;      uint16_t _protover = 0; diff --git a/host/include/uhd/rfnoc/constants.hpp b/host/include/uhd/rfnoc/constants.hpp index 5029206a0..c27911549 100644 --- a/host/include/uhd/rfnoc/constants.hpp +++ b/host/include/uhd/rfnoc/constants.hpp @@ -15,6 +15,8 @@  namespace uhd { namespace rfnoc { +constexpr uint16_t RFNOC_PROTO_VER = 0x0100; +  static const size_t NOC_SHELL_COMPAT_MAJOR = 5;  static const size_t NOC_SHELL_COMPAT_MINOR = 1; diff --git a/host/include/uhd/rfnoc/rfnoc_types.hpp b/host/include/uhd/rfnoc/rfnoc_types.hpp new file mode 100644 index 000000000..beb79324f --- /dev/null +++ b/host/include/uhd/rfnoc/rfnoc_types.hpp @@ -0,0 +1,39 @@ +// +// Copyright 2019 Ettus Research, a National Instruments Brand +// +// SPDX-License-Identifier: GPL-3.0-or-later +// + +#pragma once + +#include <memory> + +namespace uhd { namespace rfnoc { + +//---------------------------------------------- +// Types +//---------------------------------------------- + +//! Type that indicates the CHDR Width in bits +enum chdr_w_t { CHDR_W_64 = 0, CHDR_W_128 = 1, CHDR_W_256 = 2, CHDR_W_512 = 3 }; +//! Conversion from chdr_w_t to a number of bits +constexpr size_t chdr_w_to_bits(chdr_w_t chdr_w) +{ +    switch (chdr_w) { +        case CHDR_W_64: +            return 64; +        case CHDR_W_128: +            return 128; +        case CHDR_W_256: +            return 256; +        case CHDR_W_512: +            return 512; +        default: +            return 0; +    } +} + +//! Stream Endpoint ID Type +using sep_id_t = uint16_t; + +}} // namespace uhd::rfnoc diff --git a/host/lib/include/uhdlib/rfnoc/chdr_ctrl_xport.hpp b/host/lib/include/uhdlib/rfnoc/chdr_ctrl_xport.hpp index 471a7bc11..38acd7a34 100644 --- a/host/lib/include/uhdlib/rfnoc/chdr_ctrl_xport.hpp +++ b/host/lib/include/uhdlib/rfnoc/chdr_ctrl_xport.hpp @@ -6,8 +6,8 @@  #pragma once +#include <uhd/rfnoc/chdr_types.hpp>  #include <uhdlib/rfnoc/chdr_packet_writer.hpp> -#include <uhdlib/rfnoc/chdr_types.hpp>  #include <uhdlib/transport/io_service.hpp>  #include <mutex> diff --git a/host/lib/include/uhdlib/rfnoc/chdr_packet_writer.hpp b/host/lib/include/uhdlib/rfnoc/chdr_packet_writer.hpp index 6f1c264dd..b8d0c9ef4 100644 --- a/host/lib/include/uhdlib/rfnoc/chdr_packet_writer.hpp +++ b/host/lib/include/uhdlib/rfnoc/chdr_packet_writer.hpp @@ -6,9 +6,10 @@  #pragma once +#include <uhd/rfnoc/chdr_types.hpp> +#include <uhd/rfnoc/constants.hpp>  #include <uhd/types/endianness.hpp>  #include <uhd/utils/byteswap.hpp> -#include <uhdlib/rfnoc/chdr_types.hpp>  #include <limits>  namespace uhd { namespace rfnoc { namespace chdr { diff --git a/host/lib/include/uhdlib/rfnoc/chdr_rx_data_xport.hpp b/host/lib/include/uhdlib/rfnoc/chdr_rx_data_xport.hpp index d041f37c6..d6a2e6628 100644 --- a/host/lib/include/uhdlib/rfnoc/chdr_rx_data_xport.hpp +++ b/host/lib/include/uhdlib/rfnoc/chdr_rx_data_xport.hpp @@ -8,8 +8,8 @@  #include <uhd/config.hpp>  #include <uhd/exception.hpp> +#include <uhd/rfnoc/chdr_types.hpp>  #include <uhdlib/rfnoc/chdr_packet_writer.hpp> -#include <uhdlib/rfnoc/chdr_types.hpp>  #include <uhdlib/rfnoc/rfnoc_common.hpp>  #include <uhdlib/rfnoc/rx_flow_ctrl_state.hpp>  #include <uhdlib/transport/io_service.hpp> diff --git a/host/lib/include/uhdlib/rfnoc/chdr_tx_data_xport.hpp b/host/lib/include/uhdlib/rfnoc/chdr_tx_data_xport.hpp index 4394adaea..ed008c1db 100644 --- a/host/lib/include/uhdlib/rfnoc/chdr_tx_data_xport.hpp +++ b/host/lib/include/uhdlib/rfnoc/chdr_tx_data_xport.hpp @@ -7,10 +7,10 @@  #pragma once  #include <uhd/exception.hpp> +#include <uhd/rfnoc/chdr_types.hpp>  #include <uhd/types/metadata.hpp>  #include <uhd/utils/log.hpp>  #include <uhdlib/rfnoc/chdr_packet_writer.hpp> -#include <uhdlib/rfnoc/chdr_types.hpp>  #include <uhdlib/rfnoc/rfnoc_common.hpp>  #include <uhdlib/rfnoc/tx_flow_ctrl_state.hpp>  #include <uhdlib/transport/io_service.hpp> diff --git a/host/lib/include/uhdlib/rfnoc/ctrlport_endpoint.hpp b/host/lib/include/uhdlib/rfnoc/ctrlport_endpoint.hpp index bf81ededd..ecedd09ca 100644 --- a/host/lib/include/uhdlib/rfnoc/ctrlport_endpoint.hpp +++ b/host/lib/include/uhdlib/rfnoc/ctrlport_endpoint.hpp @@ -6,8 +6,8 @@  #pragma once +#include <uhd/rfnoc/chdr_types.hpp>  #include <uhd/rfnoc/register_iface.hpp> -#include <uhdlib/rfnoc/chdr_types.hpp>  #include <uhdlib/rfnoc/clock_iface.hpp>  #include <memory> diff --git a/host/lib/include/uhdlib/rfnoc/epid_allocator.hpp b/host/lib/include/uhdlib/rfnoc/epid_allocator.hpp index 40d761548..6c13157f4 100644 --- a/host/lib/include/uhdlib/rfnoc/epid_allocator.hpp +++ b/host/lib/include/uhdlib/rfnoc/epid_allocator.hpp @@ -6,6 +6,7 @@  #pragma once +#include <uhd/rfnoc/rfnoc_types.hpp>  #include <uhdlib/rfnoc/mgmt_portal.hpp>  #include <uhdlib/rfnoc/rfnoc_common.hpp>  #include <map> diff --git a/host/lib/include/uhdlib/rfnoc/mb_iface.hpp b/host/lib/include/uhdlib/rfnoc/mb_iface.hpp index 40bbc7ee4..3752e8b87 100644 --- a/host/lib/include/uhdlib/rfnoc/mb_iface.hpp +++ b/host/lib/include/uhdlib/rfnoc/mb_iface.hpp @@ -7,6 +7,7 @@  #pragma once  #include <uhd/exception.hpp> +#include <uhd/rfnoc/rfnoc_types.hpp>  #include <uhd/transport/adapter_id.hpp>  #include <uhd/types/endianness.hpp>  #include <uhdlib/rfnoc/chdr_ctrl_xport.hpp> diff --git a/host/lib/include/uhdlib/rfnoc/mgmt_portal.hpp b/host/lib/include/uhdlib/rfnoc/mgmt_portal.hpp index 223783170..afe438140 100644 --- a/host/lib/include/uhdlib/rfnoc/mgmt_portal.hpp +++ b/host/lib/include/uhdlib/rfnoc/mgmt_portal.hpp @@ -6,9 +6,10 @@  #pragma once +#include <uhd/rfnoc/chdr_types.hpp>  #include <uhdlib/rfnoc/chdr_ctrl_xport.hpp>  #include <uhdlib/rfnoc/chdr_packet_writer.hpp> -#include <uhdlib/rfnoc/chdr_types.hpp> +#include <uhdlib/rfnoc/rfnoc_common.hpp>  #include <memory>  #include <set> diff --git a/host/lib/include/uhdlib/rfnoc/rfnoc_common.hpp b/host/lib/include/uhdlib/rfnoc/rfnoc_common.hpp index 9c4944fe2..7b2900832 100644 --- a/host/lib/include/uhdlib/rfnoc/rfnoc_common.hpp +++ b/host/lib/include/uhdlib/rfnoc/rfnoc_common.hpp @@ -7,7 +7,7 @@  #pragma once  #include <uhd/rfnoc/defaults.hpp> -#include <uhdlib/transport/link_if.hpp> +#include <uhd/rfnoc/rfnoc_types.hpp>  #include <memory>  namespace uhd { namespace rfnoc { @@ -16,25 +16,6 @@ namespace uhd { namespace rfnoc {  // Types  //---------------------------------------------- -//! Type that indicates the CHDR Width in bits -enum chdr_w_t { CHDR_W_64 = 0, CHDR_W_128 = 1, CHDR_W_256 = 2, CHDR_W_512 = 3 }; -//! Conversion from chdr_w_t to a number of bits -constexpr size_t chdr_w_to_bits(chdr_w_t chdr_w) -{ -    switch (chdr_w) { -        case CHDR_W_64: -            return 64; -        case CHDR_W_128: -            return 128; -        case CHDR_W_256: -            return 256; -        case CHDR_W_512: -            return 512; -        default: -            return 0; -    } -} -  //! Device ID Type  using device_id_t = uint16_t;  //! Stream Endpoint Instance Number Type @@ -43,8 +24,6 @@ using sep_inst_t = uint16_t;  using sep_addr_t = std::pair<device_id_t, sep_inst_t>;  //! Stream Endpoint Physical Address Type (first = source, second = destination)  using sep_addr_pair_t = std::pair<sep_addr_t, sep_addr_t>; -//! Stream Endpoint ID Type -using sep_id_t = uint16_t;  //! Stream Endpoint pair Type (first = source, second = destination)  using sep_id_pair_t = std::pair<sep_id_t, sep_id_t>;  //! Stream Endpoint Virtual Channel Type @@ -85,8 +64,6 @@ constexpr sw_buff_t bits_to_sw_buff(size_t bits)  // Constants  //---------------------------------------------- -constexpr uint16_t RFNOC_PROTO_VER = 0x0100; -  constexpr uint64_t MAX_FC_CAPACITY_BYTES = (uint64_t(1) << 40) - 1;  constexpr uint32_t MAX_FC_CAPACITY_PKTS  = (uint32_t(1) << 24) - 1;  constexpr uint64_t MAX_FC_FREQ_BYTES     = (uint64_t(1) << 40) - 1; diff --git a/host/lib/rfnoc/chdr_ctrl_endpoint.cpp b/host/lib/rfnoc/chdr_ctrl_endpoint.cpp index 3b2865c73..8fe6a8856 100644 --- a/host/lib/rfnoc/chdr_ctrl_endpoint.cpp +++ b/host/lib/rfnoc/chdr_ctrl_endpoint.cpp @@ -5,12 +5,12 @@  //  #include <uhd/exception.hpp> +#include <uhd/rfnoc/chdr_types.hpp>  #include <uhd/utils/log.hpp>  #include <uhd/utils/safe_call.hpp>  #include <uhd/utils/thread.hpp>  #include <uhdlib/rfnoc/chdr_ctrl_endpoint.hpp>  #include <uhdlib/rfnoc/chdr_packet_writer.hpp> -#include <uhdlib/rfnoc/chdr_types.hpp>  #include <boost/format.hpp>  #include <atomic>  #include <mutex> diff --git a/host/lib/rfnoc/chdr_ctrl_xport.cpp b/host/lib/rfnoc/chdr_ctrl_xport.cpp index a59d56b30..8946a3b08 100644 --- a/host/lib/rfnoc/chdr_ctrl_xport.cpp +++ b/host/lib/rfnoc/chdr_ctrl_xport.cpp @@ -4,9 +4,9 @@  // SPDX-License-Identifier: GPL-3.0-or-later  // +#include <uhd/rfnoc/chdr_types.hpp>  #include <uhd/utils/log.hpp>  #include <uhdlib/rfnoc/chdr_ctrl_xport.hpp> -#include <uhdlib/rfnoc/chdr_types.hpp>  using namespace uhd;  using namespace uhd::rfnoc; diff --git a/host/lib/rfnoc/chdr_rx_data_xport.cpp b/host/lib/rfnoc/chdr_rx_data_xport.cpp index ebfcda2b8..d4476d54f 100644 --- a/host/lib/rfnoc/chdr_rx_data_xport.cpp +++ b/host/lib/rfnoc/chdr_rx_data_xport.cpp @@ -4,8 +4,8 @@  // SPDX-License-Identifier: GPL-3.0-or-later  // +#include <uhd/rfnoc/chdr_types.hpp>  #include <uhdlib/rfnoc/chdr_rx_data_xport.hpp> -#include <uhdlib/rfnoc/chdr_types.hpp>  #include <uhdlib/rfnoc/mgmt_portal.hpp>  #include <uhdlib/rfnoc/rfnoc_common.hpp>  #include <uhdlib/transport/io_service.hpp> diff --git a/host/lib/rfnoc/chdr_tx_data_xport.cpp b/host/lib/rfnoc/chdr_tx_data_xport.cpp index a51835a07..530da5a47 100644 --- a/host/lib/rfnoc/chdr_tx_data_xport.cpp +++ b/host/lib/rfnoc/chdr_tx_data_xport.cpp @@ -4,8 +4,8 @@  // SPDX-License-Identifier: GPL-3.0-or-later  // +#include <uhd/rfnoc/chdr_types.hpp>  #include <uhdlib/rfnoc/chdr_tx_data_xport.hpp> -#include <uhdlib/rfnoc/chdr_types.hpp>  #include <uhdlib/rfnoc/mgmt_portal.hpp>  #include <uhdlib/rfnoc/rfnoc_common.hpp>  #include <uhdlib/transport/io_service.hpp> diff --git a/host/lib/rfnoc/chdr_types.cpp b/host/lib/rfnoc/chdr_types.cpp index cb4642f3a..3cb68ff9a 100644 --- a/host/lib/rfnoc/chdr_types.cpp +++ b/host/lib/rfnoc/chdr_types.cpp @@ -5,8 +5,8 @@  //  #include <uhd/exception.hpp> +#include <uhd/rfnoc/chdr_types.hpp>  #include <uhd/types/endianness.hpp> -#include <uhdlib/rfnoc/chdr_types.hpp>  #include <boost/format.hpp>  #include <cassert> @@ -53,16 +53,16 @@ size_t ctrl_payload::serialize(uint64_t* buff,      buff[ptr++] = conv_byte_order(          ((static_cast<uint64_t>(dst_port) & mask_u64(DST_PORT_WIDTH)) << DST_PORT_OFFSET)          | ((static_cast<uint64_t>(src_port) & mask_u64(SRC_PORT_WIDTH)) -              << SRC_PORT_OFFSET) +            << SRC_PORT_OFFSET)          | ((static_cast<uint64_t>(data_vtr.size()) & mask_u64(NUM_DATA_WIDTH)) -              << NUM_DATA_OFFSET) +            << NUM_DATA_OFFSET)          | ((static_cast<uint64_t>(seq_num) & mask_u64(SEQ_NUM_WIDTH)) << SEQ_NUM_OFFSET)          | ((static_cast<uint64_t>(timestamp.is_initialized() ? 1 : 0)                 & mask_u64(HAS_TIME_WIDTH)) -              << HAS_TIME_OFFSET) +            << HAS_TIME_OFFSET)          | ((static_cast<uint64_t>(is_ack) & mask_u64(IS_ACK_WIDTH)) << IS_ACK_OFFSET)          | ((static_cast<uint64_t>(src_epid) & mask_u64(SRC_EPID_WIDTH)) -              << SRC_EPID_OFFSET)); +            << SRC_EPID_OFFSET));      // Populate optional timestamp      if (timestamp.is_initialized()) { @@ -73,7 +73,7 @@ size_t ctrl_payload::serialize(uint64_t* buff,      buff[ptr++] = conv_byte_order(          ((static_cast<uint64_t>(address) & mask_u64(ADDRESS_WIDTH)) << ADDRESS_OFFSET)          | ((static_cast<uint64_t>(byte_enable) & mask_u64(BYTE_ENABLE_WIDTH)) -              << BYTE_ENABLE_OFFSET) +            << BYTE_ENABLE_OFFSET)          | ((static_cast<uint64_t>(op_code) & mask_u64(OPCODE_WIDTH)) << OPCODE_OFFSET)          | ((static_cast<uint64_t>(status) & mask_u64(STATUS_WIDTH)) << STATUS_OFFSET)          | (static_cast<uint64_t>(data_vtr[0]) << HI_DATA_OFFSET)); @@ -189,14 +189,14 @@ size_t strs_payload::serialize(uint64_t* buff,          ((static_cast<uint64_t>(src_epid) & mask_u64(SRC_EPID_WIDTH)) << SRC_EPID_OFFSET)          | ((static_cast<uint64_t>(status) & mask_u64(STATUS_WIDTH)) << STATUS_OFFSET)          | ((static_cast<uint64_t>(capacity_bytes) & mask_u64(CAPACITY_BYTES_WIDTH)) -              << CAPACITY_BYTES_OFFSET)); +            << CAPACITY_BYTES_OFFSET));      // Populate second word      buff[1] = conv_byte_order(          ((static_cast<uint64_t>(capacity_pkts) & mask_u64(CAPACITY_PKTS_WIDTH))              << CAPACITY_PKTS_OFFSET)          | ((static_cast<uint64_t>(xfer_count_pkts) & mask_u64(XFER_COUNT_PKTS_WIDTH)) -              << XFER_COUNT_PKTS_OFFSET)); +            << XFER_COUNT_PKTS_OFFSET));      // Populate third word      buff[2] = conv_byte_order(xfer_count_bytes); @@ -206,7 +206,7 @@ size_t strs_payload::serialize(uint64_t* buff,          ((static_cast<uint64_t>(buff_info) & mask_u64(BUFF_INFO_WIDTH))              << BUFF_INFO_OFFSET)          | ((static_cast<uint64_t>(status_info) & mask_u64(STATUS_INFO_WIDTH)) -              << STATUS_INFO_OFFSET)); +            << STATUS_INFO_OFFSET));      // Return bytes written      return (4 * sizeof(uint64_t)); @@ -285,7 +285,7 @@ size_t strc_payload::serialize(uint64_t* buff,          | ((static_cast<uint64_t>(op_code) & mask_u64(OP_CODE_WIDTH)) << OP_CODE_OFFSET)          | ((static_cast<uint64_t>(op_data) & mask_u64(OP_DATA_WIDTH)) << OP_DATA_OFFSET)          | ((static_cast<uint64_t>(num_pkts) & mask_u64(NUM_PKTS_WIDTH)) -              << NUM_PKTS_OFFSET)); +            << NUM_PKTS_OFFSET));      // Populate second word      buff[1] = conv_byte_order(num_bytes); diff --git a/host/lib/rfnoc/ctrlport_endpoint.cpp b/host/lib/rfnoc/ctrlport_endpoint.cpp index 5afb3919e..e4f256d91 100644 --- a/host/lib/rfnoc/ctrlport_endpoint.cpp +++ b/host/lib/rfnoc/ctrlport_endpoint.cpp @@ -5,9 +5,9 @@  //  #include <uhd/exception.hpp> +#include <uhd/rfnoc/chdr_types.hpp>  #include <uhd/utils/log.hpp>  #include <uhdlib/rfnoc/chdr_packet_writer.hpp> -#include <uhdlib/rfnoc/chdr_types.hpp>  #include <uhdlib/rfnoc/ctrlport_endpoint.hpp>  #include <condition_variable>  #include <boost/format.hpp> diff --git a/host/lib/usrp/x300/x300_impl.hpp b/host/lib/usrp/x300/x300_impl.hpp index a493d4e8c..c506fcf28 100644 --- a/host/lib/usrp/x300/x300_impl.hpp +++ b/host/lib/usrp/x300/x300_impl.hpp @@ -18,12 +18,12 @@  #include "x300_mboard_type.hpp"  #include "x300_regs.hpp"  #include <uhd/property_tree.hpp> +#include <uhd/rfnoc/chdr_types.hpp>  #include <uhd/types/device_addr.hpp>  #include <uhd/types/sensors.hpp>  #include <uhd/types/wb_iface.hpp>  #include <uhd/usrp/subdev_spec.hpp>  #include <uhd/utils/tasks.hpp> -#include <uhdlib/rfnoc/chdr_types.hpp>  #include <uhdlib/rfnoc/clock_iface.hpp>  #include <uhdlib/rfnoc/mb_iface.hpp>  #include <uhdlib/rfnoc/mgmt_portal.hpp> diff --git a/host/tests/rfnoc_chdr_test.cpp b/host/tests/rfnoc_chdr_test.cpp index 31640325c..0d8d05612 100644 --- a/host/tests/rfnoc_chdr_test.cpp +++ b/host/tests/rfnoc_chdr_test.cpp @@ -4,10 +4,10 @@  // SPDX-License-Identifier: GPL-3.0-or-later  // +#include <uhd/rfnoc/chdr_types.hpp>  #include <uhd/types/endianness.hpp>  #include <uhd/utils/byteswap.hpp>  #include <uhdlib/rfnoc/chdr_packet_writer.hpp> -#include <uhdlib/rfnoc/chdr_types.hpp>  #include <boost/format.hpp>  #include <boost/test/unit_test.hpp>  #include <iostream> diff --git a/host/tests/streamer_benchmark.cpp b/host/tests/streamer_benchmark.cpp index 9479d9be6..706ecee10 100644 --- a/host/tests/streamer_benchmark.cpp +++ b/host/tests/streamer_benchmark.cpp @@ -5,10 +5,10 @@  //  #include "../common/mock_link.hpp" +#include <uhd/rfnoc/chdr_types.hpp>  #include <uhd/utils/safe_main.hpp>  #include <uhdlib/rfnoc/chdr_rx_data_xport.hpp>  #include <uhdlib/rfnoc/chdr_tx_data_xport.hpp> -#include <uhdlib/rfnoc/chdr_types.hpp>  #include <uhdlib/transport/inline_io_service.hpp>  #include <uhdlib/transport/rx_streamer_impl.hpp>  #include <uhdlib/transport/tx_streamer_impl.hpp> | 
