aboutsummaryrefslogtreecommitdiffstats
path: root/src/common/l1sap.c
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2016-06-27 18:56:01 +0200
committerHarald Welte <laforge@gnumonks.org>2018-02-27 17:27:46 +0100
commitb3a2a3e24f44adcc6660d33cc9684a8f24271e2e (patch)
treecd0993648158ad2c050553a6e99dc72d21e4a95a /src/common/l1sap.c
parentc2b4c668f3510b7b0baace749c5a310959010e90 (diff)
RACH decoding: Use BER threshold for RACH ghost detection
When decoding RACH bursts, we should use a BER threshold in order to help distinguish 'ghost' RACH bursts from real RACH bursts. The theoretical ideal threshold according to some papers is 7 out of 41 bits qhich aquals to Eb/N0 of 0 dB = 0.1707 (17.07%) We add a new 'ber10k' parameter to the RACH indication l1sap primitive (needs separate change for libosmocore), and then fill this value from osmo-bts-{sysmo,lc15,trx,octphy}. The common part above L1SAP then applies the threshold, which can be changed from vty using the "max-ber10k-rach <0-10000>" command available at the BTS node. The unit is BER in 1/10000, i.e. a value of 100 equals 1% bit error rate. Change-Id: Ic41c11f6312a36baa2738547e8dcec80829457f8
Diffstat (limited to 'src/common/l1sap.c')
-rw-r--r--src/common/l1sap.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/common/l1sap.c b/src/common/l1sap.c
index 90f045a2..50bd612d 100644
--- a/src/common/l1sap.c
+++ b/src/common/l1sap.c
@@ -1203,7 +1203,12 @@ static int l1sap_ph_rach_ind(struct gsm_bts_trx *trx,
if (rach_ind->rssi >= btsb->load.rach.busy_thresh)
btsb->load.rach.busy++;
- /* FIXME: RACH filtering due to BER limit */
+ /* check for RACH exceeding BER threshold (ghost RACH) */
+ if (rach_ind->ber10k > btsb->max_ber10k_rach) {
+ DEBUGPFN(DL1C, rach_ind->fn, "ignoring RACH request: %u > %u (max BER)\n",
+ rach_ind->ber10k, btsb->max_ber10k_rach);
+ return 0;
+ }
/* increment number of RACH slots with valid non-handover RACH burst */
btsb->load.rach.access++;