aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHolger Hans Peter Freyther <holger@moiji-mobile.com>2013-11-24 00:01:50 +0100
committerHolger Hans Peter Freyther <holger@moiji-mobile.com>2013-11-24 00:01:50 +0100
commitef93bdb19b8ff93ef1ed6e858029df44da82982e (patch)
treee214b1711d3c5293943609704087567b6fddff0e
parent64b49bc3cea46207cbfd651ff9cc21c9122525bf (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.cpp1
-rw-r--r--src/bts.h3
-rw-r--r--src/tbf.cpp5
3 files changed, 7 insertions, 2 deletions
diff --git a/src/bts.cpp b/src/bts.cpp
index 43098c1..edec6a7 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 "},
diff --git a/src/bts.h b/src/bts.h
index a28d6be..924e2e1 100644
--- a/src/bts.h
+++ b/src/bts.h
@@ -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 b76a5ec..54eb3cb 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);