From 15c23179dcf95d55b10ceb27e92976a54e5dd80f Mon Sep 17 00:00:00 2001 From: Pau Espin Pedrol Date: Wed, 6 Oct 2021 18:51:01 +0200 Subject: [PATCH] nm_channel_fsm: Release lchans after BTS shutdown This fixes some TTCN3 tests where some lchan resources were kept from previous tests. Change-Id: I78dca32cd061fba86cc88c4c4f323b33d51c58d0 --- include/osmo-bts/gsm_data.h | 2 ++ src/common/gsm_data.c | 10 ++++++++++ src/common/nm_channel_fsm.c | 3 +++ 3 files changed, 15 insertions(+) diff --git a/include/osmo-bts/gsm_data.h b/include/osmo-bts/gsm_data.h index 85f908920..ad0f78d45 100644 --- a/include/osmo-bts/gsm_data.h +++ b/include/osmo-bts/gsm_data.h @@ -194,4 +194,6 @@ int conf_lchans_as_pchan(struct gsm_bts_trx_ts *ts, bool ts_is_pdch(const struct gsm_bts_trx_ts *ts); +void gsm_ts_release(struct gsm_bts_trx_ts *ts); + #endif /* _GSM_DATA_H */ diff --git a/src/common/gsm_data.c b/src/common/gsm_data.c index 2edeb4dc5..44469589b 100644 --- a/src/common/gsm_data.c +++ b/src/common/gsm_data.c @@ -305,3 +305,13 @@ bool ts_is_pdch(const struct gsm_bts_trx_ts *ts) return false; } } + +void gsm_ts_release(struct gsm_bts_trx_ts *ts) +{ + unsigned int ln; + + for (ln = 0; ln < ARRAY_SIZE(ts->lchan); ln++) { + struct gsm_lchan *lchan = &ts->lchan[ln]; + gsm_lchan_release(lchan, LCHAN_REL_ACT_OML); + } +} diff --git a/src/common/nm_channel_fsm.c b/src/common/nm_channel_fsm.c index f933a1630..645600521 100644 --- a/src/common/nm_channel_fsm.c +++ b/src/common/nm_channel_fsm.c @@ -193,6 +193,9 @@ static void nm_chan_allstate(struct osmo_fsm_inst *fi, uint32_t event, void *dat oml_mo_state_chg(&ts->mo, -1, -1, NM_STATE_SHUTDOWN); break; case NM_EV_SHUTDOWN_FINISH: + gsm_ts_release(ts); + if (ts->vamos.peer) + gsm_ts_release(ts->vamos.peer); nm_chan_fsm_state_chg(fi, NM_CHAN_ST_OP_DISABLED_NOTINSTALLED); break; default: