aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPhilipp Maier <pmaier@sysmocom.de>2021-01-12 22:08:53 +0100
committerPhilipp Maier <pmaier@sysmocom.de>2021-01-12 22:35:56 +0100
commitb327c9598c2978baa3cf5ed1cfcf65eca8cf136e (patch)
treeb6c881ae4a41551e614b5e3d4b220f55a90e9e27
parentef53ffe8bbc5a70518bb6bc9072655ec3a4d83c2 (diff)
l1sap: acch_repetition fix hysthereis threshold table
The table in repeated_ul_sacch_active_decision() is derived from the second table in GSM 05.08 8.2.4 but the first table would be correct. Also the lower threshold is not properly choosen. A lower threshold, that derives from upper threshold shifted by 2 makes sense (BER must improved by 2 RXQUAL steps before repetition is turned off.) Change-Id: I1d9b5c8abb79938cdecdafed84ed2e5d47e0bd3a Related: SYS#5114
-rw-r--r--src/common/l1sap.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/common/l1sap.c b/src/common/l1sap.c
index 48773f1e..2757d709 100644
--- a/src/common/l1sap.c
+++ b/src/common/l1sap.c
@@ -1414,12 +1414,16 @@ static void repeated_ul_sacch_active_decision(struct gsm_lchan *lchan,
return;
}
- /* convert from RXQUAL value to ber10k vale,
- * see also GSM 05.08, section 8.2.4 */
+ /* convert from RXQUAL value to ber10k value.
+ * see also GSM 05.08, section 8.2.4 (first table, without frame */
static const uint16_t ber10k_by_rxqual_upper[] =
- { 0, 26, 51, 100, 190, 380, 760, 1500 };
+ { 0, 20, 40, 80, 160, 320, 640, 1280 };
static const uint16_t ber10k_by_rxqual_lower[] =
- { 0, 10, 10, 30, 64, 130, 270, 540 };
+ { 0, 0, 0, 20, 40, 80, 160, 320 };
+ /* Note: The values in the upper vector are taken from the left side
+ * of the table in GSM 05.08, section 8.2.4. The lower vector is just
+ * the upper vector shifted by 2. */
+
upper = ber10k_by_rxqual_upper[lchan->repeated_acch_capability.rxqual];
lower = ber10k_by_rxqual_lower[lchan->repeated_acch_capability.rxqual];