tbf: Drop pending polls during free also on states != ASSIGN

The situation holds true as long as the assignment is resolved. Hence,
it can also happen that the TBF is in RELEASE state, because it was
unable to do the assignment (and after retrying, MAX_N3105 moved it into
RELEASING).
Let's not explicitly check states, the other conditions should be
enough.

Related: SYS#5647
Change-Id: I05fb0ea44aeb3fbda9e8e1c449e9366efaa2c511
This commit is contained in:
Pau Espin 2021-10-14 19:27:49 +02:00
parent b3291bc0e3
commit b0aba59143
1 changed files with 6 additions and 5 deletions

View File

@ -245,11 +245,12 @@ static void tbf_unlink_pdch(struct gprs_rlcmac_tbf *tbf)
/* During assignment (state=ASSIGN), tbf may be temporarily using
* tbf->control_ts from a previous TBF/SBA to transmit the UL/DL
* Assignment, which may not be necessarly be a TS where the current TBF
* is attached to. Hence, we may have ULC pollings ongoing and we need
* to make sure we drop all reserved nodes there: */
if (tbf_state(tbf) == TBF_ST_ASSIGN &&
tbf->control_ts != TBF_CONTROL_TS_UNSET && !tbf->pdch[tbf->control_ts])
* Assignment, which may not be necessarily be a TS where the current TBF
* is attached to. This will be the case until a TBF receives proper
* confirmation from the MS and goes through the FLOW state. Hence, we
* may have ULC pollings ongoing and we need to make sure we drop all
* reserved nodes there: */
if (tbf->control_ts != TBF_CONTROL_TS_UNSET && !tbf->pdch[tbf->control_ts])
pdch_ulc_release_tbf(tbf->trx->pdch[tbf->control_ts].ulc, tbf);
/* Now simply detach from all attached PDCHs */