From 1f189093358fd87b11cd2e83a43b719fc6858e3e Mon Sep 17 00:00:00 2001 From: Minh-Quang Nguyen Date: Wed, 16 Aug 2017 09:50:06 -0400 Subject: EDGE: Fix UL link adaptation. We have seen that UL MCS5- MCS9 link adaptation has not been implemented in current PCU implementation. If the MS slowly moves far away from the BTS, the UL MCS will always stick at MCS9 no matter UL link quality values leading to poor data service experience. The UL MCS is expected to adapt from MCS9 -> MCSx due to bad UL quality. Below PCU traces indicate that UL MCS is quickly increasing to MCS9 (max MCS 9 was used in this test) and it never changes to other UL MCS due zero thresholds. <0004> gprs_ms.cpp:670 MS (IMSI ): Link quality 23dB (23dB) left window [0, 0], modifying uplink CS level: MCS-6 -> MCS-7 <0004> gprs_ms.cpp:670 MS (IMSI 000): Link quality 23dB (23dB) left window [0, 0], modifying uplink CS level: MCS-7 -> MCS-8 <0004> gprs_ms.cpp:670 MS (IMSI 000): Link quality 23dB (23dB) left window [0, 0], modifying uplink CS level: MCS-8 -> MCS-9 Change-Id: I9272c337ad6399da4a47cc6e2736e25f24e099d8 --- src/pcu_main.cpp | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'src/pcu_main.cpp') diff --git a/src/pcu_main.cpp b/src/pcu_main.cpp index 8e7cde80..e909b754 100644 --- a/src/pcu_main.cpp +++ b/src/pcu_main.cpp @@ -200,6 +200,28 @@ int main(int argc, char *argv[]) bts->cs_lqual_ranges[2].high = 13; bts->cs_lqual_ranges[3].low = 12; bts->cs_lqual_ranges[3].high = 256; + + /* MCS-1 to MCS-9 */ + /* Default thresholds are referenced from literature */ + /* Fig. 2.3, Chapter 2, Optimizing Wireless Communication Systems, Springer (2009) */ + bts->mcs_lqual_ranges[0].low = -256; + bts->mcs_lqual_ranges[0].high = 6; + bts->mcs_lqual_ranges[1].low = 5; + bts->mcs_lqual_ranges[1].high = 8; + bts->mcs_lqual_ranges[2].low = 7; + bts->mcs_lqual_ranges[2].high = 13; + bts->mcs_lqual_ranges[3].low = 12; + bts->mcs_lqual_ranges[3].high = 15; + bts->mcs_lqual_ranges[4].low = 14; + bts->mcs_lqual_ranges[4].high = 17; + bts->mcs_lqual_ranges[5].low = 16; + bts->mcs_lqual_ranges[5].high = 18; + bts->mcs_lqual_ranges[6].low = 17; + bts->mcs_lqual_ranges[6].high = 20; + bts->mcs_lqual_ranges[7].low = 19; + bts->mcs_lqual_ranges[7].high = 24; + bts->mcs_lqual_ranges[8].low = 23; + bts->mcs_lqual_ranges[8].high = 256; bts->cs_downgrade_threshold = 200; /* TODO: increase them when CRBB decoding is implemented */ -- cgit v1.2.3