diff options
author | Philipp Maier <pmaier@sysmocom.de> | 2020-08-21 20:47:49 +0200 |
---|---|---|
committer | Philipp Maier <pmaier@sysmocom.de> | 2020-09-03 21:35:25 +0200 |
commit | 92eed41a99743b07c9961aa450297a3fb28261d8 (patch) | |
tree | 9742fa1574ab423312c7b4f069ec30baec66710d /include | |
parent | 7e9ac64ba0ffbde52434f095e805a6f4b59ccd13 (diff) |
lchan_fsm: make rsl mode-modify working again
osmo-nitb supports the modification of an lchan if the lchan is
compatible but in the wrong mode. This feature was dropped in the
transition to AoIP/bsc-split. However, osmo-bsc still has code to
generate and parse the messeages, but the FSMs do not support a mode
modify yetm
Lets add handling for mode-modify to the lchan_fsm and assignment_fsm in
order to support mode modify again
Change-Id: I2c5a283b1ee33745cc1fcfcc09a0f9382224e2eb
Related: OS#4549
Diffstat (limited to 'include')
-rw-r--r-- | include/osmocom/bsc/bts.h | 4 | ||||
-rw-r--r-- | include/osmocom/bsc/lchan_fsm.h | 11 |
2 files changed, 11 insertions, 4 deletions
diff --git a/include/osmocom/bsc/bts.h b/include/osmocom/bsc/bts.h index 5506a86eb..a50c70e64 100644 --- a/include/osmocom/bsc/bts.h +++ b/include/osmocom/bsc/bts.h @@ -50,6 +50,8 @@ enum bts_counter_id { BTS_CTR_LCHAN_BORKEN_EV_RF_CHAN_REL_ACK, BTS_CTR_LCHAN_BORKEN_EV_VTY, BTS_CTR_LCHAN_BORKEN_EV_TEARDOWN, + BTS_CTR_LCHAN_BORKEN_FROM_WAIT_RR_CHAN_MODE_MODIFY_ACK, + BTS_CTR_LCHAN_BORKEN_FROM_WAIT_RSL_CHAN_MODE_MODIFY_ACK, BTS_CTR_TS_BORKEN_FROM_NOT_INITIALIZED, BTS_CTR_TS_BORKEN_FROM_UNUSED, BTS_CTR_TS_BORKEN_FROM_WAIT_PDCH_ACT, @@ -136,6 +138,8 @@ static const struct rate_ctr_desc bts_ctr_description[] = { [BTS_CTR_LCHAN_BORKEN_FROM_WAIT_ACTIV_ACK] = {"lchan_borken:from_state:wait_activ_ack", "Transitions from lchan WAIT_ACTIV_ACK state to BORKEN state"}, [BTS_CTR_LCHAN_BORKEN_FROM_WAIT_RF_RELEASE_ACK] = {"lchan_borken:from_state:wait_rf_release_ack", "Transitions from lchan WAIT_RF_RELEASE_ACK state to BORKEN state"}, [BTS_CTR_LCHAN_BORKEN_FROM_BORKEN] = {"lchan_borken:from_state:borken", "Transitions from lchan BORKEN state to BORKEN state"}, + [BTS_CTR_LCHAN_BORKEN_FROM_WAIT_RR_CHAN_MODE_MODIFY_ACK] = {"lchan_borken:from_state:wait_rr_chan_mode_modify_ack", "Transitions from lchan WAIT_RR_CHAN_MODE_MODIFY_ACK state to BORKEN state"}, + [BTS_CTR_LCHAN_BORKEN_FROM_WAIT_RSL_CHAN_MODE_MODIFY_ACK] = {"lchan_borken:from_state:wait_rsl_chan_mode_modify_ack", "Transitions from lchan RSL_CHAN_MODE_MODIFY_ACK state to BORKEN state"}, [BTS_CTR_LCHAN_BORKEN_FROM_UNKNOWN] = {"lchan_borken:from_state:unknown", "Transitions from an unknown lchan state to BORKEN state"}, [BTS_CTR_LCHAN_BORKEN_EV_CHAN_ACTIV_ACK] = {"lchan_borken:event:chan_activ_ack", "CHAN_ACTIV_ACK received in the lchan BORKEN state"}, [BTS_CTR_LCHAN_BORKEN_EV_CHAN_ACTIV_NACK] = {"lchan_borken:event:chan_activ_nack", "CHAN_ACTIV_NACK received in the lchan BORKEN state"}, diff --git a/include/osmocom/bsc/lchan_fsm.h b/include/osmocom/bsc/lchan_fsm.h index 55ab02400..df3ed2212 100644 --- a/include/osmocom/bsc/lchan_fsm.h +++ b/include/osmocom/bsc/lchan_fsm.h @@ -18,6 +18,8 @@ enum lchan_fsm_state { LCHAN_ST_WAIT_TS_READY, LCHAN_ST_WAIT_ACTIV_ACK, /*< After RSL Chan Act Ack, lchan is active but RTP not configured. */ LCHAN_ST_WAIT_RLL_RTP_ESTABLISH, + LCHAN_ST_WAIT_RR_CHAN_MODE_MODIFY_ACK, + LCHAN_ST_WAIT_RSL_CHAN_MODE_MODIFY_ACK, LCHAN_ST_ESTABLISHED, /*< Active and RTP is fully configured. */ LCHAN_ST_WAIT_RLL_RTP_RELEASED, LCHAN_ST_WAIT_BEFORE_RF_RELEASE, @@ -40,10 +42,11 @@ enum lchan_fsm_event { LCHAN_EV_RLL_REL_CONF, LCHAN_EV_RSL_RF_CHAN_REL_ACK, LCHAN_EV_RLL_ERR_IND, - - /* FIXME: not yet implemented: Chan Mode Modify, see assignment_fsm_start(). */ - LCHAN_EV_CHAN_MODE_MODIF_ACK, - LCHAN_EV_CHAN_MODE_MODIF_ERROR, + LCHAN_EV_RR_CHAN_MODE_MODIFY_ACK, + LCHAN_EV_RR_CHAN_MODE_MODIFY_ERROR, + LCHAN_EV_RSL_CHAN_MODE_MODIFY_ACK, + LCHAN_EV_RSL_CHAN_MODE_MODIFY_NACK, + LCHAN_EV_REQUEST_MODE_MODIFY, }; void lchan_fsm_init(); |