aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPau Espin Pedrol <pespin@sysmocom.de>2021-01-25 15:08:35 +0100
committerPau Espin Pedrol <pespin@sysmocom.de>2021-01-25 16:19:37 +0100
commit7bb8cd683ca317726b26e79caf2b54008a853fbb (patch)
treee5dce94a4ef14bc8430386ca5989e9cc78f1a45f
parent7963edba09dc5b342a1a8073addde6eb9bcefd3b (diff)
ms: Set proper initial MCS values setting mode EGPRS_GMSK
Before this patch, shared logic with EGPRS case would allow keeping MCS>4. Change-Id: I94cbf0c120fd37deb2dfd077d35b3811c7da0675
-rw-r--r--src/gprs_ms.c13
-rw-r--r--tests/ms/MsTest.ok4
2 files changed, 15 insertions, 2 deletions
diff --git a/src/gprs_ms.c b/src/gprs_ms.c
index daa3223a..f157d131 100644
--- a/src/gprs_ms.c
+++ b/src/gprs_ms.c
@@ -259,6 +259,19 @@ void ms_set_mode(struct GprsMs *ms, enum mcs_kind mode)
break;
case EGPRS_GMSK:
+ if (!mcs_is_edge_gmsk(ms->current_cs_ul)) {
+ ms->current_cs_ul = mcs_get_egprs_by_num(
+ ms->bts->initial_mcs_ul);
+ if (!mcs_is_valid(ms->current_cs_ul))
+ ms->current_cs_ul = MCS1;
+ }
+ if (!mcs_is_edge_gmsk(ms->current_cs_dl)) {
+ ms->current_cs_dl = mcs_get_egprs_by_num(
+ ms->bts->initial_mcs_dl);
+ if (!mcs_is_valid(ms->current_cs_dl))
+ ms->current_cs_dl = MCS1;
+ }
+ break;
case EGPRS:
if (!mcs_is_edge(ms->current_cs_ul)) {
ms->current_cs_ul = mcs_get_egprs_by_num(
diff --git a/tests/ms/MsTest.ok b/tests/ms/MsTest.ok
index 11766b8a..3e5cdabb 100644
--- a/tests/ms/MsTest.ok
+++ b/tests/ms/MsTest.ok
@@ -26,8 +26,8 @@
2: after mode set MS DL MCS-1/MCS-9, UL MCS-1/MCS-9, mode EGPRS, <ACTIVE>
1: after MCS set MS DL MCS-7/MCS-9, UL MCS-1/MCS-9, mode EGPRS, <IDLE>
2: after MCS set MS DL MCS-8/MCS-9, UL MCS-1/MCS-9, mode EGPRS, <ACTIVE>
-1: after mode set MS DL MCS-7/MCS-9, UL MCS-1/MCS-9, mode EGPRS_GMSK-only, <IDLE>
-2: after mode set MS DL MCS-8/MCS-9, UL MCS-1/MCS-9, mode EGPRS_GMSK-only, <ACTIVE>
+1: after mode set MS DL MCS-1/MCS-9, UL MCS-1/MCS-9, mode EGPRS_GMSK-only, <IDLE>
+2: after mode set MS DL MCS-1/MCS-9, UL MCS-1/MCS-9, mode EGPRS_GMSK-only, <ACTIVE>
1: after mode set MS DL CS-4/CS-4, UL CS-1/CS-4, mode GPRS, <IDLE>
2: after mode set MS DL CS-4/CS-4, UL CS-1/CS-4, mode GPRS, <ACTIVE>
=== end test_ms_mcs_mode ===