aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/bts.cpp1
-rw-r--r--src/bts.h3
-rw-r--r--src/tbf.cpp4
3 files changed, 7 insertions, 1 deletions
diff --git a/src/bts.cpp b/src/bts.cpp
index b261ea45..818530b0 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.stalled", "RLC Stalled "},
{ "decode.errors", "Decode Errors "},
{ "sba.allocated", "SBA Allocated "},
{ "sba.freed", "SBA Freed "},
diff --git a/src/bts.h b/src/bts.h
index 0a18b7e8..178be3d8 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_STALLED,
CTR_DECODE_ERRORS,
CTR_SBA_ALLOCATED,
CTR_SBA_FREED,
@@ -208,6 +209,7 @@ public:
void tbf_reused();
void rlc_sent();
void rlc_resent();
+ void rlc_stalled();
void decode_error();
void sba_allocated();
void sba_freed();
@@ -273,6 +275,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_stalled, CTR_RLC_STALLED)
CREATE_COUNT_INLINE(decode_error, CTR_DECODE_ERRORS)
CREATE_COUNT_INLINE(sba_allocated, CTR_SBA_ALLOCATED)
CREATE_COUNT_INLINE(sba_freed, CTR_SBA_FREED)
diff --git a/src/tbf.cpp b/src/tbf.cpp
index 14e6e2ae..5c6c15f6 100644
--- a/src/tbf.cpp
+++ b/src/tbf.cpp
@@ -918,10 +918,12 @@ do_resend:
LOGP(DRLCMACDL, LOGL_DEBUG, "- Restarting at BSN %d, "
"because all blocks have been transmitted.\n",
dir.dl.v_a);
- else
+ else {
LOGP(DRLCMACDL, LOGL_NOTICE, "- Restarting at BSN %d, "
"because all window is stalled.\n",
dir.dl.v_a);
+ bts->rlc_stalled();
+ }
/* If V(S) == V(A) and finished state, we would have received
* acknowledgement of all transmitted block. In this case we
* would have transmitted the final block, and received ack