aboutsummaryrefslogtreecommitdiffstats
path: root/Transceiver52M
diff options
context:
space:
mode:
authorIvan Kluchnikov <kluchnikovi@gmail.com>2014-06-30 20:36:51 +0400
committerIvan Kluchnikov <kluchnikovi@gmail.com>2014-09-22 17:38:16 +0400
commit50fc8a1e9e81eaa735d288cf0383afa9f2b32c77 (patch)
tree0372e0188329aed36929020f22518bfffdce269f /Transceiver52M
parent79ca9ae69450142abf51c8cbd4d4a39e33169c92 (diff)
Transceiver52M: UHD: Exit on receive more than 100 timeout errors
Receiving timeout is not a fatal error and should be recoverable on network devices. But for some reasons these errors are not always recoverable, in this case osmo-trx should be restarted.
Diffstat (limited to 'Transceiver52M')
-rw-r--r--Transceiver52M/UHDDevice.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/Transceiver52M/UHDDevice.cpp b/Transceiver52M/UHDDevice.cpp
index 48b89d6..3159dde 100644
--- a/Transceiver52M/UHDDevice.cpp
+++ b/Transceiver52M/UHDDevice.cpp
@@ -857,6 +857,7 @@ void uhd_device::setPriority(float prio)
int uhd_device::check_rx_md_err(uhd::rx_metadata_t &md, ssize_t num_smpls)
{
uhd::time_spec_t ts;
+ static int err_count = 0;
if (!num_smpls) {
LOG(ERR) << str_code(md);
@@ -864,6 +865,11 @@ int uhd_device::check_rx_md_err(uhd::rx_metadata_t &md, ssize_t num_smpls)
switch (md.error_code) {
case uhd::rx_metadata_t::ERROR_CODE_TIMEOUT:
LOG(ALERT) << "UHD: Receive timed out";
+ if (err_count > 100) {
+ err_count = 0;
+ return ERROR_UNRECOVERABLE;
+ }
+ err_count++;
case uhd::rx_metadata_t::ERROR_CODE_OVERFLOW:
case uhd::rx_metadata_t::ERROR_CODE_LATE_COMMAND:
case uhd::rx_metadata_t::ERROR_CODE_BROKEN_CHAIN: