diff options
-rw-r--r-- | include/osmo-bts/gsm_data.h | 1 | ||||
-rw-r--r-- | src/common/l1sap.c | 10 |
2 files changed, 9 insertions, 2 deletions
diff --git a/include/osmo-bts/gsm_data.h b/include/osmo-bts/gsm_data.h index 6caad14c..ff0c89cb 100644 --- a/include/osmo-bts/gsm_data.h +++ b/include/osmo-bts/gsm_data.h @@ -406,6 +406,7 @@ struct gsm_lchan { struct abis_rsl_osmo_rep_acch_cap repeated_acch_capability; bool repeated_dl_facch_active; bool repeated_ul_sacch_active; + bool repeated_dl_sacch_active; /* Message buffer to store DL-SACCH repeation candidate */ struct msgb *rep_sacch; diff --git a/src/common/l1sap.c b/src/common/l1sap.c index 0a46b23c..1d80a84c 100644 --- a/src/common/l1sap.c +++ b/src/common/l1sap.c @@ -1138,10 +1138,16 @@ static int l1sap_ph_rts_ind(struct gsm_bts_trx *trx, p[0] |= 0x40; /* See also: 3GPP TS 44.004, section 7.1 */ p[1] = lchan->rqd_ta; le = &lchan->lapdm_ch.lapdm_acch; - if (lchan->repeated_acch_capability.dl_sacch) + if (lchan->repeated_acch_capability.dl_sacch) { + /* Check if MS requests SACCH repetition and update state accordingly */ + if (lchan->meas.l1_info.srr_sro) + lchan->repeated_dl_sacch_active = true; + else + lchan->repeated_dl_sacch_active = false; pp_msg = lapdm_phsap_dequeue_msg_sacch(lchan, le); - else + } else { pp_msg = lapdm_phsap_dequeue_msg(le); + } } else { if (lchan->ts->trx->bts->dtxd) dtxd_facch = true; |