aboutsummaryrefslogtreecommitdiffstats
path: root/host
diff options
context:
space:
mode:
authorBen Hilburn <ben.hilburn@ettus.com>2014-03-14 11:12:01 -0700
committerBen Hilburn <ben.hilburn@ettus.com>2014-03-14 11:12:01 -0700
commit012e71cad30c663b186a903dc5c48018f544a507 (patch)
tree94180c4dadadbc6b70767e83361152a9b4aa6cea /host
parentbb90f235d65700aa6019a8f6cd38e67e984740f3 (diff)
parent00da85f96a4c51fbf4c7b65a95d2a75c17a3278d (diff)
downloaduhd-012e71cad30c663b186a903dc5c48018f544a507.tar.gz
uhd-012e71cad30c663b186a903dc5c48018f544a507.tar.bz2
uhd-012e71cad30c663b186a903dc5c48018f544a507.zip
Merge Ethernet, MTU, and frame size fixes.
Diffstat (limited to 'host')
-rw-r--r--host/docs/usrp_x3x0_config.rst7
-rw-r--r--host/lib/usrp/x300/x300_impl.cpp25
-rw-r--r--host/lib/usrp/x300/x300_impl.hpp2
3 files changed, 17 insertions, 17 deletions
diff --git a/host/docs/usrp_x3x0_config.rst b/host/docs/usrp_x3x0_config.rst
index 9cb000275..22ef8c595 100644
--- a/host/docs/usrp_x3x0_config.rst
+++ b/host/docs/usrp_x3x0_config.rst
@@ -69,19 +69,20 @@ Configuring the MTU
-------------------------------------
In order to achieve maximum performance, we recommend setting the MTU size to
9000 for 10 GigE and 1500 for 1 GigE. It is possible to use smaller MTUs, but this
-can affect performance. With some NICs, setting the MTU too high can also cause issues,
-though. To set the MTU to 9000, you can use the following command:
+can affect performance. With some NICs, setting the MTU too high can also cause issues.
+To set the MTU to 9000, you can use the following command:
::
sudo ifconfig <interface> mtu 9000 # For 10 GigE
+ sudo ifconfig <interface> mtu 1500 # For 1 GigE
Using these MTUs will set the frame sizes for UHD communication to 8000 and 1472,
respectively.
In some cases, specifying the frame size manually by adding the argument
"<send/recv>_frame_size=1472" can solve issues. Note that a frame size of 1472 will limit
-the available sampling rate, although this is likely not a problem issue on 1 GigE.
+the available sampling rate, although this is not a problem on 1 GigE.
Configuring the Firewall
diff --git a/host/lib/usrp/x300/x300_impl.cpp b/host/lib/usrp/x300/x300_impl.cpp
index 466827380..48b9e9bd4 100644
--- a/host/lib/usrp/x300/x300_impl.cpp
+++ b/host/lib/usrp/x300/x300_impl.cpp
@@ -430,16 +430,16 @@ void x300_impl::setup_mb(const size_t mb_i, const uhd::device_addr_t &dev_addr)
// Detect the frame size on the path to the USRP
try {
- max_frame_sizes = determine_max_frame_size(mb.addr, req_max_frame_size);
+ _max_frame_sizes = determine_max_frame_size(mb.addr, req_max_frame_size);
} catch(std::exception &e) {
UHD_MSG(error) << e.what() << std::endl;
}
if ((mb.recv_args.has_key("recv_frame_size"))
- && (req_max_frame_size.recv_frame_size < max_frame_sizes.recv_frame_size)) {
+ && (req_max_frame_size.recv_frame_size < _max_frame_sizes.recv_frame_size)) {
UHD_MSG(warning)
<< boost::format("You requested a receive frame size of (%lu) but your NIC's max frame size is (%lu).")
- % req_max_frame_size.recv_frame_size << max_frame_sizes.recv_frame_size << std::endl
+ % req_max_frame_size.recv_frame_size << _max_frame_sizes.recv_frame_size << std::endl
<< boost::format("Please verify your NIC's MTU setting using '%s' or set the recv_frame_size argument appropriately.")
% mtu_tool << std::endl
<< "UHD will use the auto-detected max frame size for this connection."
@@ -447,10 +447,10 @@ void x300_impl::setup_mb(const size_t mb_i, const uhd::device_addr_t &dev_addr)
}
if ((mb.recv_args.has_key("send_frame_size"))
- && (req_max_frame_size.send_frame_size < max_frame_sizes.send_frame_size)) {
+ && (req_max_frame_size.send_frame_size < _max_frame_sizes.send_frame_size)) {
UHD_MSG(warning)
<< boost::format("You requested a send frame size of (%lu) but your NIC's max frame size is (%lu).")
- % req_max_frame_size.send_frame_size << max_frame_sizes.send_frame_size << std::endl
+ % req_max_frame_size.send_frame_size << _max_frame_sizes.send_frame_size << std::endl
<< boost::format("Please verify your NIC's MTU setting using '%s' or set the send_frame_size argument appropriately.")
% mtu_tool << std::endl
<< "UHD will use the auto-detected max frame size for this connection."
@@ -1122,29 +1122,28 @@ x300_impl::both_xports_t x300_impl::make_transport(
/* Print a warning if the system's max available frame size is less than the most optimal
* frame size for this type of connection. */
- if (max_frame_sizes.send_frame_size < eth_data_rec_frame_size) {
+ if (_max_frame_sizes.send_frame_size < eth_data_rec_frame_size) {
UHD_MSG(warning)
<< boost::format("For this connection, UHD recommends a send frame size of at least %lu for best\nperformance, but your system's MTU will only allow %lu.")
% eth_data_rec_frame_size
- % max_frame_sizes.send_frame_size
+ % _max_frame_sizes.send_frame_size
<< std::endl
<< "This will negatively impact your maximum achievable sample rate."
<< std::endl;
}
- if (max_frame_sizes.recv_frame_size < eth_data_rec_frame_size) {
+ if (_max_frame_sizes.recv_frame_size < eth_data_rec_frame_size) {
UHD_MSG(warning)
<< boost::format("For this connection, UHD recommends a receive frame size of at least %lu for best\nperformance, but your system's MTU will only allow %lu.")
% eth_data_rec_frame_size
- % max_frame_sizes.recv_frame_size
+ % _max_frame_sizes.recv_frame_size
<< std::endl
<< "This will negatively impact your maximum achievable sample rate."
<< std::endl;
}
- // Account for headers
- size_t system_max_send_frame_size = (size_t) max_frame_sizes.send_frame_size - 64;
- size_t system_max_recv_frame_size = (size_t) max_frame_sizes.recv_frame_size - 64;
+ size_t system_max_send_frame_size = (size_t) _max_frame_sizes.send_frame_size;
+ size_t system_max_recv_frame_size = (size_t) _max_frame_sizes.recv_frame_size;
// Make sure frame sizes do not exceed the max available value supported by UHD
default_buff_args.send_frame_size =
@@ -1167,7 +1166,7 @@ x300_impl::both_xports_t x300_impl::make_transport(
? X300_ETH_DATA_NUM_FRAMES
: X300_ETH_MSG_NUM_FRAMES;
- //make a new transport - fpga has no idea how to talk to use on this yet
+ //make a new transport - fpga has no idea how to talk to us on this yet
udp_zero_copy::buff_params buff_params;
xports.recv = udp_zero_copy::make(mb.addr,
BOOST_STRINGIZE(X300_VITA_UDP_PORT),
diff --git a/host/lib/usrp/x300/x300_impl.hpp b/host/lib/usrp/x300/x300_impl.hpp
index 0fe63e4a5..1e159ef38 100644
--- a/host/lib/usrp/x300/x300_impl.hpp
+++ b/host/lib/usrp/x300/x300_impl.hpp
@@ -267,7 +267,7 @@ private:
size_t recv_frame_size;
size_t send_frame_size;
};
- frame_size_t max_frame_sizes;
+ frame_size_t _max_frame_sizes;
/*!
* Automatically determine the maximum frame size available by sending a UDP packet