aboutsummaryrefslogtreecommitdiffstats
path: root/src/common/bts.c
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 /src/common/bts.c
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
Diffstat (limited to 'src/common/bts.c')
-rw-r--r--src/common/bts.c2
1 files changed, 1 insertions, 1 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) {