aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/osmo-bts/gsm_data.h1
-rw-r--r--src/common/l1sap.c10
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;