From 3605872e4360aa8726721ba6f5c0eb8f602b6208 Mon Sep 17 00:00:00 2001 From: Ivan Kluchnikov Date: Mon, 30 Jun 2014 20:36:51 +0400 Subject: 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. --- Transceiver52M/UHDDevice.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Transceiver52M/UHDDevice.cpp b/Transceiver52M/UHDDevice.cpp index bdeb1b5..72cad4d 100644 --- a/Transceiver52M/UHDDevice.cpp +++ b/Transceiver52M/UHDDevice.cpp @@ -823,6 +823,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); @@ -830,6 +831,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: -- cgit v1.2.3