diff options
author | Jacob Erlbeck <jerlbeck@sysmocom.de> | 2015-07-07 09:33:29 +0200 |
---|---|---|
committer | Jacob Erlbeck <jerlbeck@sysmocom.de> | 2015-07-07 09:33:29 +0200 |
commit | c91c18e6ef9ee5fca3d10b57ebddf211d3655a8d (patch) | |
tree | fc3486b62928b9534320ca8502eb88a43c72a51c /src/tbf.cpp | |
parent | e0c734dcfe6501198e56bd3a89ad03ce5cfd5129 (diff) |
tbf: Add Poll Timeout counters
This commits adds three poll timeout counters
- RLC Assign Timeout
- RLC Ack Timeout
- RLC Release Timeout
to help diagnosing to cause for these events. There seems to be an
increased rate of these when a PDCH is shared by multiple TBFs.
Sponsored-by: On-Waves ehf
Diffstat (limited to 'src/tbf.cpp')
-rw-r--r-- | src/tbf.cpp | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/tbf.cpp b/src/tbf.cpp index 1d72ffcd..4a8fd337 100644 --- a/src/tbf.cpp +++ b/src/tbf.cpp @@ -356,6 +356,7 @@ void gprs_rlcmac_tbf::poll_timeout() state_flags |= (1 << GPRS_RLCMAC_FLAG_TO_UL_ACK); } ul_ack_state = GPRS_RLCMAC_UL_ACK_NONE; + bts->rlc_ack_timedout(); if (state_is(GPRS_RLCMAC_FINISHED)) { gprs_rlcmac_ul_tbf *ul_tbf = static_cast<gprs_rlcmac_ul_tbf *>(this); ul_tbf->m_n3103++; @@ -369,6 +370,7 @@ void gprs_rlcmac_tbf::poll_timeout() /* reschedule UL ack */ ul_tbf->ul_ack_state = GPRS_RLCMAC_UL_ACK_SEND_ACK; } + } else if (ul_ass_state == GPRS_RLCMAC_UL_ASS_WAIT_ACK) { if (!(state_flags & (1 << GPRS_RLCMAC_FLAG_TO_UL_ASS))) { LOGP(DRLCMAC, LOGL_NOTICE, "- Timeout for polling " @@ -379,6 +381,7 @@ void gprs_rlcmac_tbf::poll_timeout() } ul_ass_state = GPRS_RLCMAC_UL_ASS_NONE; n3105++; + bts->rlc_ass_timedout(); if (n3105 == bts_data()->n3105) { LOGP(DRLCMAC, LOGL_NOTICE, "- N3105 exceeded\n"); set_state(GPRS_RLCMAC_RELEASING); @@ -397,6 +400,7 @@ void gprs_rlcmac_tbf::poll_timeout() } dl_ass_state = GPRS_RLCMAC_DL_ASS_NONE; n3105++; + bts->rlc_ass_timedout(); if (n3105 == bts->bts_data()->n3105) { LOGP(DRLCMAC, LOGL_NOTICE, "- N3105 exceeded\n"); set_state(GPRS_RLCMAC_RELEASING); @@ -415,6 +419,10 @@ void gprs_rlcmac_tbf::poll_timeout() dl_tbf->state_flags |= (1 << GPRS_RLCMAC_FLAG_TO_DL_ACK); } dl_tbf->n3105++; + if (dl_tbf->state_is(GPRS_RLCMAC_RELEASING)) + bts->rlc_rel_timedout(); + else + bts->rlc_ack_timedout(); if (dl_tbf->n3105 == dl_tbf->bts->bts_data()->n3105) { LOGP(DRLCMAC, LOGL_NOTICE, "- N3105 exceeded\n"); dl_tbf->set_state(GPRS_RLCMAC_RELEASING); |