Review at https://gerrit.osmocom.org/5180
TBF: use independent T3169
Previously T3169 was handled using generic timer which means pending
T3169 was automatically cancelled by any new timer scheduled which used
the same timer on that TBF. Make it independent so it can be explicitly
scheduled and stopped regardless of other timers. Additionally this
allows us to control whether it should be restarted if it's already
pending.
Change-Id: I7ba28b8771b12a4a924ac05937051ade47622e51
Related: OS#2407
---
M src/bts.cpp
M src/tbf.cpp
M src/tbf_ul.cpp
M tests/tbf/TbfTest.err
4 files changed, 11 insertions(+), 9 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-pcu refs/changes/80/5180/1
diff --git a/src/bts.cpp b/src/bts.cpp
index 341c9d4..6f76d84 100644
--- a/src/bts.cpp
+++ b/src/bts.cpp
@@ -681,7 +681,7 @@
tbf->set_ta(ta);
tbf->set_state(GPRS_RLCMAC_FLOW);
tbf->state_flags |= (1 << GPRS_RLCMAC_FLAG_CCCH);
- tbf_timer_start(tbf, 3169, m_bts.t3169, 0, "RACH (new
UL-TBF)");
+ tbf->start_t3169(m_bts.t3169, 0, "RACH (new UL-TBF)",
true);
LOGP(DRLCMAC, LOGL_DEBUG, "%s [UPLINK] START\n",
tbf_name(tbf));
LOGP(DRLCMAC, LOGL_DEBUG, "%s RX: [PCU <- BTS] RACH "
diff --git a/src/tbf.cpp b/src/tbf.cpp
index b349d5e..e7635f2 100644
--- a/src/tbf.cpp
+++ b/src/tbf.cpp
@@ -407,7 +407,7 @@
tbf->m_contention_resolution_done = 1;
tbf->set_state(GPRS_RLCMAC_ASSIGN);
tbf->state_flags |= (1 << GPRS_RLCMAC_FLAG_PACCH);
- tbf_timer_start(tbf, 3169, bts->t3169, 0, "allocation (UL-TBF)");
+ tbf->start_t3169(bts->t3169, 0, "allocation (UL-TBF)", true);
tbf->update_ms(tlli, GPRS_RLCMAC_UL_TBF);
OSMO_ASSERT(tbf->ms());
@@ -754,7 +754,7 @@
"- N3103 exceeded\n");
bts->pkt_ul_ack_nack_poll_failed();
ul_tbf->set_state(GPRS_RLCMAC_RELEASING);
- tbf_timer_start(ul_tbf, 3169,
ul_tbf->bts->bts_data()->t3169, 0, "MAX N3103 reached");
+
ul_tbf->start_t3169(ul_tbf->bts->bts_data()->t3169, 0, "MAX N3103 reached",
false);
return;
}
/* reschedule UL ack */
@@ -1144,11 +1144,6 @@
"IMM.ASS confirm\n", tbf_name(dl_tbf));
}
break;
- case 3169:
- LOGP(DRLCMAC, LOGL_NOTICE, "%s T%d timeout during "
- "transsmission\n", tbf_name(this), T);
- rlcmac_diag();
- /* fall through */
case 3193: /* FIXME: remove once issue with start_t3193() is resolved */
LOGP(DRLCMAC, LOGL_DEBUG,
"%s will be freed due to timeout\n", tbf_name(this));
diff --git a/src/tbf_ul.cpp b/src/tbf_ul.cpp
index 0bbb817..b63988b 100644
--- a/src/tbf_ul.cpp
+++ b/src/tbf_ul.cpp
@@ -193,7 +193,7 @@
unsigned int block_idx;
/* restart T3169 */
- tbf_timer_start(this, 3169, bts_data()->t3169, 0, "acked (data)");
+ start_t3169(bts_data()->t3169, 0, "acked (data)", true);
/* Increment RX-counter */
this->m_rx_counter++;
diff --git a/tests/tbf/TbfTest.err b/tests/tbf/TbfTest.err
index f534c54..f09f732 100644
--- a/tests/tbf/TbfTest.err
+++ b/tests/tbf/TbfTest.err
@@ -1897,8 +1897,15 @@
TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=FINISHED) IMSI 0011223344: moving DL
TBF to new MS object
Detaching TBF from MS object, TLLI = 0xf1223344, TBF = TBF(TFI=0
TLLI=0xf1223344 DIR=DL STATE=FINISHED)
Attaching TBF to MS object, TLLI = 0xf5667788, TBF = TBF(TFI=0 TLLI=0xf5667788
DIR=DL STATE=FINISHED)
+UL RSSI of TLLI=0xf1223344: 31 dBm
+TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) free
+TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) stopping timer T3169 [freeing TBF]
+PDCH(TS 7, TRX 0): Detaching TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW), 1
TBFs, USFs = 02, TFIs = 00000002.
+Detaching TBF from MS object, TLLI = 0xf1223344, TBF = TBF(TFI=0
TLLI=0xf1223344 DIR=UL STATE=FLOW)
+********** TBF ends here **********
Modifying MS object, TLLI = 0xf5667788, IMSI '' -> '0011223344'
Clearing MS object, TLLI: 0xf1223344, IMSI: '0011223344'
+Destroying MS object, TLLI = 0x00000000
TBF(TFI=0 TLLI=0xf5667788 DIR=DL STATE=FINISHED) append
Modifying MS object, TLLI: 0xf5667788 confirmed
New MS: TLLI = 0xf5667788, TA = 7, IMSI = 0011223344, LLC = 1
--
To view, visit https://gerrit.osmocom.org/5180
To unsubscribe, visit https://gerrit.osmocom.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I7ba28b8771b12a4a924ac05937051ade47622e51
Gerrit-PatchSet: 1
Gerrit-Project: osmo-pcu
Gerrit-Branch: master
Gerrit-Owner: Max <[email protected]>