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 /doc | |
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 'doc')
-rw-r--r-- | doc/assignment-fsm.dot | 1 | ||||
-rw-r--r-- | doc/assignment.msc | 8 | ||||
-rw-r--r-- | doc/lchan-fsm.dot | 6 | ||||
-rw-r--r-- | doc/lchan.msc | 20 |
4 files changed, 35 insertions, 0 deletions
diff --git a/doc/assignment-fsm.dot b/doc/assignment-fsm.dot index 5a3a2b91f..c2181535b 100644 --- a/doc/assignment-fsm.dot +++ b/doc/assignment-fsm.dot @@ -22,6 +22,7 @@ labelloc=t; label="Assignment FSM" bssap -> gscon [label="GSCON_EV_ASSIGNMENT_START\ndata=struct assignment_request",style=dotted] gscon -> WAIT_LCHAN_ACTIVE [label="assignment_fsm_start()",style=dotted] + gscon -> WAIT_LCHAN_ESTABLISHED [label="assignment_fsm_start()\n(mode modify)",style=dotted] WAIT_LCHAN_ACTIVE -> lchan [label="lchan_activate()\nFOR_ASSIGNMENT",style=dotted] lchan -> WAIT_LCHAN_ACTIVE [label="ASSIGNMENT_EV_\nLCHAN_\nACTIVE,ERROR",style=dotted] lchan -> WAIT_LCHAN_ESTABLISHED [label="ASSIGNMENT_EV_\nLCHAN_\nESTABLISHED,ERROR",style=dotted] diff --git a/doc/assignment.msc b/doc/assignment.msc index 4e690a811..fae088f23 100644 --- a/doc/assignment.msc +++ b/doc/assignment.msc @@ -9,6 +9,14 @@ msc { gscon note gscon [label="GSCON_EV_ASSIGNMENT_START\n data=struct assignment_request"]; gscon abox gscon [label="ST_ASSIGNMENT"]; ass <- gscon [label="assignment_fsm_start()"]; + |||; + --- [label="IF current lchan supports requested channel mode (re-use)"]; + lchan <- ass [label="LCHAN_EV_REQUEST_MODE_MODIFY"]; + ass abox ass [label="ASSIGNMENT_ST_\nWAIT_LCHAN_ESTABLISHED"]; + ass rbox ass [label="see below"]; + + |||; + --- [label="ELSE: if current lchan does not support requested channel mode (establish new lchan)"]; ass abox ass [label="ASSIGNMENT_ST_\nWAIT_LCHAN_ACTIVE"]; |||; diff --git a/doc/lchan-fsm.dot b/doc/lchan-fsm.dot index b726b0c87..fe35903f7 100644 --- a/doc/lchan-fsm.dot +++ b/doc/lchan-fsm.dot @@ -38,4 +38,10 @@ labelloc=t; label="lchan FSM" rtp -> WAIT_RLL_RTP_ESTABLISH [label="LCHAN_EV_RTP_READY",style=dotted] rtp -> ESTABLISHED [label="LCHAN_EV_RTP_RELEASED",style=dotted] + ESTABLISHED -> WAIT_RR_CHAN_MODE_MODIFY_ACK [label="LCHAN_EV_REQUEST_MODE_MODIFY"] + WAIT_RR_CHAN_MODE_MODIFY_ACK -> WAIT_RSL_CHAN_MODE_MODIFY_ACK [label="LCHAN_EV_RR_CHAN_MODE_MODIFY_ACK"] + WAIT_RSL_CHAN_MODE_MODIFY_ACK -> WAIT_RLL_RTP_ESTABLISH [label="LCHAN_EV_RSL_CHAN_MODE_MODIFY_ACK\nwhen adding RTP"] + WAIT_RSL_CHAN_MODE_MODIFY_ACK -> ESTABLISHED [label="LCHAN_EV_RSL_CHAN_MODE_MODIFY_ACK\nno change to RTP"] + WAIT_RR_CHAN_MODE_MODIFY_ACK -> BORKEN [label="error/timeout",style=dashed] + WAIT_RSL_CHAN_MODE_MODIFY_ACK -> BORKEN [label="error/timeout",style=dashed] } diff --git a/doc/lchan.msc b/doc/lchan.msc index e2caa4875..b0e32d684 100644 --- a/doc/lchan.msc +++ b/doc/lchan.msc @@ -129,6 +129,26 @@ msc { ...; ...; + ms rbox mgwep [label="On Mode Modify (e.g. change a TCH lchan from signalling to voice)"]; + lchan abox lchan [label="LCHAN_ST_\nWAIT_RR_CHAN_\nMODE_MODIFY_ACK"]; + ms <= lchan [label="RR Chan Mode Modif"]; + ...; + ms => lchan [label="RR Chan Mode Modif Ack"]; + lchan abox lchan [label="LCHAN_ST_\nWAIT_RSL_CHAN_\nMODE_MODIFY_ACK"]; + ms <= lchan [label="RSL MT Mode Modify Req"]; + ...; + ms => lchan [label="RSL MT Mode Modify Ack"]; + --- [label="IF adding RTP stream"]; + lchan abox lchan [label="LCHAN_ST_WAIT_\nRLL_RTP_ESTABLISH\nT3101"]; + lchan rbox rtp [label="See above at 'LCHAN_RTP_EV_LCHAN_READY'"]; + --- [label="IF not adding RTP stream"]; + lchan abox lchan [label="LCHAN_ST_\nESTABLISHED"]; + --- [label="END: whether adding voice stream"]; + + ...; + ...; + ...; + ms rbox mgwep [label="When the MS or BTS release the lchan"]; lchan abox lchan [label="LCHAN_ST_\nESTABLISHED"]; ms -> lchan [label="RLL Release Ind for SAPI=0"]; |