diff options
author | Philipp Maier <pmaier@sysmocom.de> | 2020-08-21 22:40:23 +0200 |
---|---|---|
committer | Daniel Willmann <dwillmann@sysmocom.de> | 2020-08-31 09:36:55 +0200 |
commit | be027ad003625b01a731333d2acd78c01295cdcb (patch) | |
tree | d4c866c8aeab2bc10f01e8ba36b8dfe956c39f88 /tests/acc/acc_test.c | |
parent | 43a00c945ba47a32264dbfe292275bc7bdfe7490 (diff) |
abis_rsl: prioritize emergency calls over regular callsdaniel/emerg
when an emergency call arrives while all TCH are busy, the BSC should
pick an arbitrary (preferably the longest lasting) call / lchan and
release it in favor of the incoming emergancy call.
The release of the existing call is a process that can not be done
synchronously while the ChanRQD is handled sonce multiple messages are
exchanged between BTS and MSC and multiple FSMs need to do their work.
To be able to release one lchan while handling a ChanRQD a queue is
implemented in which the incomming channel requests are collected. The
queue is checked regulary for incoming requests. If one of the requests
is for an emergency call and if all channels are busy one channel is
picked and released. It is also made sure that the incoming emergency
call directly gets the TCH that was just released.
Change-Id: If8651265928797dbda9f528b544931dcfa4a0b36
Related: OS#4549
Diffstat (limited to 'tests/acc/acc_test.c')
-rw-r--r-- | tests/acc/acc_test.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/tests/acc/acc_test.c b/tests/acc/acc_test.c index 72d3212f1..e92972d1e 100644 --- a/tests/acc/acc_test.c +++ b/tests/acc/acc_test.c @@ -65,6 +65,8 @@ static inline void _bts_del(struct gsm_bts *bts, const char *msg) osmo_timer_del(&bts->acc_mgr.rotate_timer); if (osmo_timer_pending(&bts->acc_ramp.step_timer)) osmo_timer_del(&bts->acc_ramp.step_timer); + if (osmo_timer_pending(&bts->chan_rqd_queue_timer)) + osmo_timer_del(&bts->chan_rqd_queue_timer); /* no need to llist_del(&bts->list), we never registered the bts there. */ talloc_free(bts); fprintf(stderr, "BTS deallocated OK in %s()\n", msg); @@ -531,3 +533,4 @@ int rsl_sacch_filling(struct gsm_bts_trx *trx, uint8_t type, const uint8_t *data int rsl_bcch_info(const struct gsm_bts_trx *trx, enum osmo_sysinfo_type si_type, const uint8_t *data, int len) { return 0; } int gsm_generate_si(struct gsm_bts *bts, enum osmo_sysinfo_type si_type) { return 0; } +int abis_rsl_chan_rqd_queue_poll(struct gsm_bts *bts) { return 0; } |