fixeria has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmocom-bb/+/38724?usp=email )
Change subject: trxcon/l1sched: fix decoding of DL FACCH/H for TCH/H4.8 and TCH/H2.4 ......................................................................
trxcon/l1sched: fix decoding of DL FACCH/H for TCH/H4.8 and TCH/H2.4
The mapping sched_tchh_dl_csd_map[] is valid for DL TCH/H4.8 and TCH/H2.4, but not for DL FACCH/H. We need to use a separate lookup table sched_tchh_dl_facch_map[] for DL FACCH/H.
Change-Id: I17df806185dc620999c4c2b9ed83a18cc8b2e0bf Fixes: a93785bf4 ("trxcon/l1sched: implement CSD scheduling support") Related: OS#4396, OS#6618 --- M src/host/trxcon/src/sched_lchan_tchh.c 1 file changed, 8 insertions(+), 4 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmocom-bb refs/changes/24/38724/1
diff --git a/src/host/trxcon/src/sched_lchan_tchh.c b/src/host/trxcon/src/sched_lchan_tchh.c index d684976..ecd9847 100644 --- a/src/host/trxcon/src/sched_lchan_tchh.c +++ b/src/host/trxcon/src/sched_lchan_tchh.c @@ -310,8 +310,6 @@ /* Data (CSD) is interleaved over 22 bursts */ if ((*mask & 0x3fffff) != 0x3fffff) return 0; - if (!sched_tchh_dl_csd_map[bi->fn % 26]) - return 0; /* CSD: skip decoding attempt, need 2 more bursts */ break; default: /* Speech is interleaved over 4 bursts */ @@ -372,14 +370,20 @@ /* CSD (TCH/H4.8): 6.0 kbit/s radio interface rate */ case GSM48_CMODE_DATA_6k0: /* FACCH/H does not steal TCH/H4.8 frames, but only disturbs some bits */ - decode_hr_facch(lchan); + if (sched_tchh_dl_facch_map[bi->fn % 26]) + decode_hr_facch(lchan); + if (!sched_tchh_dl_csd_map[bi->fn % 26]) + return 0; rc = gsm0503_tch_hr48_decode(&tch_data[0], BUFPOS(bursts_p, 0), &n_errors, &n_bits_total); break; /* CSD (TCH/H2.4): 3.6 kbit/s radio interface rate */ case GSM48_CMODE_DATA_3k6: /* FACCH/H does not steal TCH/H2.4 frames, but only disturbs some bits */ - decode_hr_facch(lchan); + if (sched_tchh_dl_facch_map[bi->fn % 26]) + decode_hr_facch(lchan); + if (!sched_tchh_dl_csd_map[bi->fn % 26]) + return 0; rc = gsm0503_tch_hr24_decode(&tch_data[0], BUFPOS(bursts_p, 0), &n_errors, &n_bits_total); break;