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.
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 @@
{ "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 @@
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 @@
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_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 @@
|| ((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);