diff options
author | Holger Hans Peter Freyther <holger@moiji-mobile.com> | 2013-11-24 00:01:50 +0100 |
---|---|---|
committer | Holger Hans Peter Freyther <holger@moiji-mobile.com> | 2013-11-24 00:01:50 +0100 |
commit | ef93bdb19b8ff93ef1ed6e858029df44da82982e (patch) | |
tree | e214b1711d3c5293943609704087567b6fddff0e | |
parent | 64b49bc3cea46207cbfd651ff9cc21c9122525bf (diff) |
tbf: Count how often we re-start a BSN in the send routine
There appears to be a scheduling issue. Even without any NACKs
we are re-transmitting a lot of frames. It might be because of
this.
-rw-r--r-- | src/bts.cpp | 1 | ||||
-rw-r--r-- | src/bts.h | 3 | ||||
-rw-r--r-- | src/tbf.cpp | 5 |
3 files changed, 7 insertions, 2 deletions
diff --git a/src/bts.cpp b/src/bts.cpp index 43098c1f..edec6a7d 100644 --- a/src/bts.cpp +++ b/src/bts.cpp @@ -56,6 +56,7 @@ static const struct rate_ctr_desc bts_ctr_description[] = { { "tbf.reused", "TBF Reused "}, { "rlc.sent", "RLC Sent "}, { "rlc.resent", "RLC Resent "}, + { "rlc.restarted", "RLC Restarted "}, { "rlc.stalled", "RLC Stalled "}, { "rlc.nacked", "RLC Nacked "}, { "decode.errors", "Decode Errors "}, @@ -160,6 +160,7 @@ public: CTR_TBF_REUSED, CTR_RLC_SENT, CTR_RLC_RESENT, + CTR_RLC_RESTARTED, CTR_RLC_STALLED, CTR_RLC_NACKED, CTR_DECODE_ERRORS, @@ -210,6 +211,7 @@ public: void tbf_reused(); void rlc_sent(); void rlc_resent(); + void rlc_restarted(); void rlc_stalled(); void rlc_nacked(); void decode_error(); @@ -277,6 +279,7 @@ CREATE_COUNT_INLINE(tbf_ul_freed, CTR_TBF_UL_FREED) CREATE_COUNT_INLINE(tbf_reused, CTR_TBF_REUSED) CREATE_COUNT_INLINE(rlc_sent, CTR_RLC_SENT) CREATE_COUNT_INLINE(rlc_resent, CTR_RLC_RESENT) +CREATE_COUNT_INLINE(rlc_restarted, CTR_RLC_RESTARTED) CREATE_COUNT_INLINE(rlc_stalled, CTR_RLC_STALLED) CREATE_COUNT_INLINE(rlc_nacked, CTR_RLC_NACKED) CREATE_COUNT_INLINE(decode_error, CTR_DECODE_ERRORS) diff --git a/src/tbf.cpp b/src/tbf.cpp index b76a5ecd..54eb3cb6 100644 --- a/src/tbf.cpp +++ b/src/tbf.cpp @@ -911,11 +911,12 @@ do_resend: || ((dir.dl.v_s - dir.dl.v_a) & mod_sns) == m_ws) { int resend = 0; - if (state_is(GPRS_RLCMAC_FINISHED)) + if (state_is(GPRS_RLCMAC_FINISHED)) { LOGP(DRLCMACDL, LOGL_DEBUG, "- Restarting at BSN %d, " "because all blocks have been transmitted.\n", dir.dl.v_a); - else { + bts->rlc_restarted(); + } else { LOGP(DRLCMACDL, LOGL_NOTICE, "- Restarting at BSN %d, " "because all window is stalled.\n", dir.dl.v_a); |