diff options
Diffstat (limited to 'host')
| -rw-r--r-- | host/lib/usrp/x300/x300_impl.cpp | 9 | ||||
| -rw-r--r-- | host/lib/usrp/x300/x300_impl.hpp | 4 | 
2 files changed, 12 insertions, 1 deletions
| diff --git a/host/lib/usrp/x300/x300_impl.cpp b/host/lib/usrp/x300/x300_impl.cpp index e492b2238..f5e53678c 100644 --- a/host/lib/usrp/x300/x300_impl.cpp +++ b/host/lib/usrp/x300/x300_impl.cpp @@ -392,6 +392,8 @@ void x300_impl::setup_mb(const size_t mb_i, const uhd::device_addr_t &dev_addr)          //Tell the quirks object which FIFOs carry TX stream data          const uint32_t tx_data_fifos[2] = {X300_RADIO_DEST_PREFIX_TX, X300_RADIO_DEST_PREFIX_TX + 3};          mb.rio_fpga_interface->get_kernel_proxy().get_rio_quirks().register_tx_streams(tx_data_fifos); + +        _tree->create<double>(mb_path / "link_max_rate").set(X300_MAX_RATE_PCIE);      }      BOOST_FOREACH(const std::string &key, dev_addr.keys()) @@ -456,6 +458,8 @@ void x300_impl::setup_mb(const size_t mb_i, const uhd::device_addr_t &dev_addr)                  << "UHD will use the auto-detected max frame size for this connection."                  << std::endl;          } + +        _tree->create<double>(mb_path / "link_max_rate").set(X300_MAX_RATE_10GIGE);      }      //create basic communication @@ -1133,11 +1137,14 @@ x300_impl::both_xports_t x300_impl::make_transport(          if (mb.loaded_fpga_image == "HGS") {              if (mb.router_dst_here == X300_XB_DST_E0) {                  eth_data_rec_frame_size = X300_1GE_DATA_FRAME_MAX_SIZE; +                _tree->access<double>("/mboards/"+boost::lexical_cast<std::string>(mb_index) / "link_max_rate").set(X300_MAX_RATE_1GIGE);              } else if (mb.router_dst_here == X300_XB_DST_E1) {                  eth_data_rec_frame_size = X300_10GE_DATA_FRAME_MAX_SIZE; +                _tree->access<double>("/mboards/"+boost::lexical_cast<std::string>(mb_index) / "link_max_rate").set(X300_MAX_RATE_10GIGE);              }          } else if (mb.loaded_fpga_image == "XGS") { -                eth_data_rec_frame_size = X300_10GE_DATA_FRAME_MAX_SIZE; +            eth_data_rec_frame_size = X300_10GE_DATA_FRAME_MAX_SIZE; +            _tree->access<double>("/mboards/"+boost::lexical_cast<std::string>(mb_index) / "link_max_rate").set(X300_MAX_RATE_10GIGE);          }          if (eth_data_rec_frame_size == 0) { diff --git a/host/lib/usrp/x300/x300_impl.hpp b/host/lib/usrp/x300/x300_impl.hpp index 692427f31..4b3efc845 100644 --- a/host/lib/usrp/x300/x300_impl.hpp +++ b/host/lib/usrp/x300/x300_impl.hpp @@ -85,6 +85,10 @@ static const size_t X300_RX_MAX_HDR_LEN             =           // bytes      + sizeof(uhd::transport::vrt::if_packet_info_t().sid)  // SID      + sizeof(uhd::transport::vrt::if_packet_info_t().tsf); // Timestamp +static const size_t X300_MAX_RATE_PCIE              = 800000000; // bytes/s +static const size_t X300_MAX_RATE_10GIGE            = 800000000; // bytes/s +static const size_t X300_MAX_RATE_1GIGE             = 100000000; // bytes/s +  #define X300_RADIO_DEST_PREFIX_TX 0  #define X300_RADIO_DEST_PREFIX_CTRL 1  #define X300_RADIO_DEST_PREFIX_RX 2 | 
