pdch: Drop previous UL TBF from MS who sent PktResReq through SBA

If the MS has a pending UL TBF but we just received a PktResReq on an
allocated SBA from it (same TLLI, hence same MS), then it means it
allocated the SBA through RACH req and hence it was on CCCH. That means
it was not active on any PDCH, hence for sure the previous UL TBF can be
dropped.

Related: OS#5293

Change-Id: I1f20dba56f46ea15cbb9b03bdc5b79d923491a3c
This commit is contained in:
Pau Espin 2021-11-10 16:11:17 +01:00
parent 54a126f6d4
commit ace3b1bdc1
1 changed files with 10 additions and 0 deletions

View File

@ -680,6 +680,16 @@ void gprs_rlcmac_pdch::rcv_resource_request(Packet_Resource_Request_t *request,
"MS requests UL TBF throguh SBA\n", fn);
ms_set_ta(ms, sba->ta);
sba_free(sba);
/* If MS identified by TLLI sent us a PktResReq through SBA, it means it came
* from CCCH, so it's for sure not using previous UL
* TBF; drop it if it still exits on our end: */
if ((ul_tbf = ms_ul_tbf(ms))) {
/* Get rid of previous finished UL TBF before providing a new one */
LOGPTBFUL(ul_tbf, LOGL_NOTICE,
"Got PACKET RESOURCE REQ while TBF not finished, killing pending UL TBF\n");
tbf_free(ul_tbf);
ul_tbf = NULL;
}
/* MS seized the PDCH answering on the SBA: */
bts_do_rate_ctr_inc(bts, CTR_IMMEDIATE_ASSIGN_UL_TBF_CONTENTION_RESOLUTION_SUCCESS);
break;