ASCI: Ignore LAPD frames from MS, while the uplink is not active

Do not forward any message that is received on the uplink to LAPD while
the uplink is not active. If the MS did not recognize (fast enough) that
the uplink is free, it may continue to transmit LAPD messages. A
response by LAPD to these messages is not desired and not required. If
LAPD would respond, it would cause stopping transmission of UPLINK FREE
messages. No MS could access the uplink anymore.

Note: UPLINK FREE messages are repeated automatically until a different
      message is transmitted.

Related: OS#5781
Change-Id: I5075115123055b2997481f56ddf473430a1dc9e3
(cherry picked from commit f5c1cd3889)
This commit is contained in:
Andreas Eversberg 2023-09-14 16:13:54 +02:00 committed by Oliver Smith
parent 65ffbbfea1
commit 5c70c93bc6
1 changed files with 14 additions and 3 deletions

View File

@ -1810,9 +1810,20 @@ static int l1sap_ph_data_ind(struct gsm_bts_trx *trx,
if (lchan->ho.active == HANDOVER_WAIT_FRAME)
handover_frame(lchan);
/* report first valid received frame to VGCS talker process */
if (rsl_chan_rt_is_asci(lchan->rsl_chan_rt) && lchan->asci.talker_active == VGCS_TALKER_WAIT_FRAME)
vgcs_talker_frame(lchan);
if (rsl_chan_rt_is_asci(lchan->rsl_chan_rt)) {
/* report first valid received frame to VGCS talker process */
if (lchan->asci.talker_active == VGCS_TALKER_WAIT_FRAME)
vgcs_talker_frame(lchan);
/* Do not forward any message that is received on the uplink to LAPD while
* the uplink is not active. If the MS did not recognize (fast enough) that
* the uplink is free, it may continue to transmit LAPD messages. A
* response by LAPD to these messages is not desired and not required. If
* LAPD would respond, it would cause stopping transmission of UPLINK FREE
* messages. No MS could access the uplink anymore.
*/
if (lchan->asci.talker_active != VGCS_TALKER_ACTIVE)
return 0;
}
if (L1SAP_IS_LINK_SACCH(link_id))
le = &lchan->lapdm_ch.lapdm_acch;