Stop abusing T3169

Now that we finally handle N3101 and N3103 correctly, we can fix abuse
of T3169 we were doing to make sure TBFs were freed.

According to 3GPP TS 44.060, T3169 should be armed:
* N3101_MAX reached
* N3103_MAX reached

Furthermore, when T3169 is enabled, the tbf should be in state
RELEASING so that its USF is not used.

See full description: https://osmocom.org/issues/5033#note-2

Related: OS#5033
Change-Id: I2cec531e2633281b88f69ba065c0105580c81076
This commit is contained in:
Pau Espin 2021-04-22 20:40:10 +02:00
parent 710e0e9ad8
commit 846fd248dc
3 changed files with 8 additions and 247 deletions

View File

@ -876,7 +876,6 @@ int bts_rcv_rach(struct gprs_rlcmac_bts *bts, const struct rach_ind_params *rip)
tbf->set_ta(ta); tbf->set_ta(ta);
TBF_SET_STATE(tbf, GPRS_RLCMAC_FLOW); TBF_SET_STATE(tbf, GPRS_RLCMAC_FLOW);
TBF_ASS_TYPE_SET(tbf, GPRS_RLCMAC_FLAG_CCCH); TBF_ASS_TYPE_SET(tbf, GPRS_RLCMAC_FLAG_CCCH);
T_START(tbf, T3169, 3169, "RACH (new UL-TBF)", true);
trx_no = tbf->trx->trx_no; trx_no = tbf->trx->trx_no;
ts_no = tbf->first_ts; ts_no = tbf->first_ts;
usf = tbf->m_usf[ts_no]; usf = tbf->m_usf[ts_no];

View File

@ -156,7 +156,6 @@ gprs_rlcmac_ul_tbf *tbf_alloc_ul(struct gprs_rlcmac_bts *bts, GprsMs *ms, int8_t
} }
tbf->m_contention_resolution_done = 1; tbf->m_contention_resolution_done = 1;
TBF_SET_ASS_ON(tbf, GPRS_RLCMAC_FLAG_PACCH, false); TBF_SET_ASS_ON(tbf, GPRS_RLCMAC_FLAG_PACCH, false);
T_START(tbf, T3169, 3169, "allocation (UL-TBF)", true);
tbf->update_ms(tlli, GPRS_RLCMAC_UL_TBF); tbf->update_ms(tlli, GPRS_RLCMAC_UL_TBF);
OSMO_ASSERT(tbf->ms()); OSMO_ASSERT(tbf->ms());
@ -361,9 +360,6 @@ int gprs_rlcmac_ul_tbf::rcv_data_block_acknowledged(
uint32_t new_tlli = GSM_RESERVED_TMSI; uint32_t new_tlli = GSM_RESERVED_TMSI;
unsigned int block_idx; unsigned int block_idx;
/* restart T3169 */
T_START(this, T3169, 3169, "acked (data)", true);
/* Increment RX-counter */ /* Increment RX-counter */
this->m_rx_counter++; this->m_rx_counter++;
update_coding_scheme_counter_ul(rlc->cs); update_coding_scheme_counter_ul(rlc->cs);

File diff suppressed because it is too large Load Diff