path: root/tests
diff options
authorPau Espin Pedrol <pespin@sysmocom.de>2021-01-25 12:05:32 +0100
committerPau Espin Pedrol <pespin@sysmocom.de>2021-01-25 16:56:59 +0100
commitfc464935a451346a24150d60e62f84d42022f910 (patch)
tree2c932decf47cfaca1212b2f6d4698c6640095b6c /tests
parent201da4e5b2b430d4a63bdf62b47e28065cceb8f4 (diff)
Fix Dl EGPRS data blocks being generated occasionally on GPRS TBFs
Under some circumstances, it could happen that a DL TBF is created as a GPRS TBF due to not yet having enough information of the MS, and only after the TBF is created the PCU gains that information and upgrades the MS mode to "EGPRS". Hence, there's the possibility to run into a situation where a GPRS TBF is attached to a EGPRS MS. It may also happen sometimes that despite the TBF and the MS be EGPRS, there's need to further limit the DL MCS to use, eg. MCS1-4 (GMSK). As a result, when asking for the current DL (M)CS to use, we must tell the MS which kind of limitations we want to apply. The later reasoning was already implemented when GPRS+EGPRS multiplexing was added, but the former was not being checked. Hence, by further spreading through the call stack the "req_kind_mode" we match both cases. Related: OS#4973 Change-Id: Ic0276ce045660713129f0c72f1158a3321c5977f
Diffstat (limited to 'tests')
1 files changed, 3 insertions, 3 deletions
diff --git a/tests/ms/MsTest.cpp b/tests/ms/MsTest.cpp
index f459e99..677c695 100644
--- a/tests/ms/MsTest.cpp
+++ b/tests/ms/MsTest.cpp
@@ -522,11 +522,11 @@ static void test_ms_cs_selection()
- OSMO_ASSERT(mcs_chan_code(ms_current_cs_dl(ms)) == 3);
+ OSMO_ASSERT(mcs_chan_code(ms_current_cs_dl(ms, ms_mode(ms))) == 3);
the_pcu->vty.cs_downgrade_threshold = 200;
- OSMO_ASSERT(mcs_chan_code(ms_current_cs_dl(ms)) == 2);
+ OSMO_ASSERT(mcs_chan_code(ms_current_cs_dl(ms, ms_mode(ms))) == 2);
@@ -536,7 +536,7 @@ static void test_ms_cs_selection()
static void dump_ms(const GprsMs *ms, const char *pref)
printf("%s MS DL %s/%s, UL %s/%s, mode %s, <%s>\n", pref,
- mcs_name(ms_current_cs_dl(ms)), mcs_name(ms_max_cs_dl(ms)),
+ mcs_name(ms_current_cs_dl(ms, ms_mode(ms))), mcs_name(ms_max_cs_dl(ms)),
mcs_name(ms_current_cs_ul(ms)), mcs_name(ms_max_cs_ul(ms)),
ms_is_idle(ms) ? "IDLE" : "ACTIVE");