diff options
author | Andreas Eversberg <jolly@eversberg.eu> | 2013-09-17 08:21:43 +0200 |
---|---|---|
committer | Andreas Eversberg <jolly@eversberg.eu> | 2014-01-21 15:54:57 +0100 |
commit | 1135c5ae928cf4b78aa72a4d2710b3e8615e3bbf (patch) | |
tree | 4348af503874e40f6dc8208d8ed5afc5b21fd589 | |
parent | e74d202d4d5b9a14f14df0f1f69a0be85f2873ba (diff) |
HACK: Limit AGCH queue
-rw-r--r-- | include/osmo-bts/gsm_data.h | 1 | ||||
-rw-r--r-- | src/common/bts.c | 10 | ||||
-rw-r--r-- | src/osmo-bts-trx/scheduler.c | 2 |
3 files changed, 10 insertions, 3 deletions
diff --git a/include/osmo-bts/gsm_data.h b/include/osmo-bts/gsm_data.h index 42c14401..a5ac9e2c 100644 --- a/include/osmo-bts/gsm_data.h +++ b/include/osmo-bts/gsm_data.h @@ -49,6 +49,7 @@ struct gsm_bts_role_bts { uint8_t ny1; uint8_t max_ta; struct llist_head agch_queue; + int agch_queue_count; struct paging_state *paging_state; char *bsc_oml_host; unsigned int rtp_jitter_buf_ms; diff --git a/src/common/bts.c b/src/common/bts.c index 47339230..08a5e24e 100644 --- a/src/common/bts.c +++ b/src/common/bts.c @@ -216,8 +216,11 @@ int bts_agch_enqueue(struct gsm_bts *bts, struct msgb *msg) { struct gsm_bts_role_bts *btsb = bts_role_bts(bts); - /* FIXME: implement max queue length */ + if (btsb->agch_queue_count >= 30) + return -ENOMEM; + msgb_enqueue(&btsb->agch_queue, msg); + btsb->agch_queue_count++; return 0; } @@ -225,8 +228,11 @@ int bts_agch_enqueue(struct gsm_bts *bts, struct msgb *msg) struct msgb *bts_agch_dequeue(struct gsm_bts *bts) { struct gsm_bts_role_bts *btsb = bts_role_bts(bts); + struct msgb *msg = msgb_dequeue(&btsb->agch_queue); - return msgb_dequeue(&btsb->agch_queue); + if (msg) + btsb->agch_queue_count--; + return msg; } int bts_supports_cipher(struct gsm_bts_role_bts *bts, int rsl_cipher) diff --git a/src/osmo-bts-trx/scheduler.c b/src/osmo-bts-trx/scheduler.c index f4b0d9cc..4163322c 100644 --- a/src/osmo-bts-trx/scheduler.c +++ b/src/osmo-bts-trx/scheduler.c @@ -1189,7 +1189,7 @@ static int rx_rach_fn(struct trx_l1h *l1h, uint8_t tn, uint32_t fn, if (rc) { LOGP(DL1C, LOGL_NOTICE, "Received bad AB frame at fn=%u " "(%u/51)\n", fn, fn % 51); - return 0; +// return 0; } /* compose primitive */ |