diff options
author | Philipp Maier <pmaier@sysmocom.de> | 2021-01-12 22:08:53 +0100 |
---|---|---|
committer | Philipp Maier <pmaier@sysmocom.de> | 2021-01-12 22:35:56 +0100 |
commit | b327c9598c2978baa3cf5ed1cfcf65eca8cf136e (patch) | |
tree | b6c881ae4a41551e614b5e3d4b220f55a90e9e27 | |
parent | ef53ffe8bbc5a70518bb6bc9072655ec3a4d83c2 (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.c | 12 |
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]; |