aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPau Espin Pedrol <pespin@sysmocom.de>2018-06-08 15:48:01 +0200
committerPau Espin Pedrol <pespin@sysmocom.de>2018-06-08 17:00:53 +0200
commita1a2556c2ae56399a0d24ff19c521c2a182cd31c (patch)
tree62f5badfe1d7ab12c3b798194c938a634315ca9b
parentef1356c06ccfde74ceeeed4fd9df16d6e09fdf32 (diff)
bts_agch_enqueue: Decrease queue len hard_limit from 1000 to 100
In a prod setup, complete channel saturation at the bsc was detected, and Immediate Assignments were not being answered by the MS once sent by the BTS. Further investigation showed that the BTS was all the time printing messages like this: "bts.c:540 AGCH: too many messages in queue, refusing message type 0x3f, length = 1001/10" So it seems the AGCH queue was becoming incredibly full (1000, hard limit triggered the log), while acgch_queue.max_length was set to 10. As a result, most probably the Immediate Assignments being sent to the MS are super old in time, and the MS doesn't known about them anymore once they are receivied, so no answer is sent back. Let's try to avoid that by decreasing the hard limit so we never reach that big queue_len scenario. The number 100 is selected from data gatherered in agch_test.c which prints a table of max_length values based on different setups. Some values can reach around 80 messages, so let's use a slightly bigger hard limit. Related: SYS#2695 Change-Id: I272798c959abec123776d2fa8dad5685ec512fbd
-rw-r--r--src/common/bts.c2
-rw-r--r--tests/agch/agch_test.ok4
2 files changed, 3 insertions, 3 deletions
diff --git a/src/common/bts.c b/src/common/bts.c
index 55f4b945..4fa916ce 100644
--- a/src/common/bts.c
+++ b/src/common/bts.c
@@ -533,7 +533,7 @@ static int try_merge_imm_ass_rej(struct gsm48_imm_ass_rej *old_rej,
int bts_agch_enqueue(struct gsm_bts *bts, struct msgb *msg)
{
- int hard_limit = 1000;
+ int hard_limit = 100;
struct gsm48_imm_ass_rej *imm_ass_cmd = msgb_l3(msg);
if (bts->agch_queue.length > hard_limit) {
diff --git a/tests/agch/agch_test.ok b/tests/agch/agch_test.ok
index 49173a30..4e0a9e13 100644
--- a/tests/agch/agch_test.ok
+++ b/tests/agch/agch_test.ok
@@ -18,6 +18,6 @@ T BCCH slots
32 83 28 83 83 83
50 28 14 28 28 28
Testing AGCH messages queue handling.
-AGCH filled: count 720, imm.ass 80, imm.ass.rej 640 (refs 640), queue limit 32, occupied 240, dropped 0, merged 480, rejected 0, ag-res 0, non-res 0
-AGCH drained: multiframes 32, imm.ass 80, imm.ass.rej 12 (refs 48), queue limit 32, occupied 0, dropped 148, merged 480, rejected 0, ag-res 31, non-res 61
+AGCH filled: count 720, imm.ass 80, imm.ass.rej 640 (refs 640), queue limit 32, occupied 101, dropped 0, merged 198, rejected 421, ag-res 0, non-res 0
+AGCH drained: multiframes 16, imm.ass 34, imm.ass.rej 12 (refs 42), queue limit 32, occupied 0, dropped 56, merged 198, rejected 421, ag-res 15, non-res 30
Success