aboutsummaryrefslogtreecommitdiffstats
path: root/doc
diff options
context:
space:
mode:
authorPhilipp Maier <pmaier@sysmocom.de>2020-08-21 20:47:49 +0200
committerPhilipp Maier <pmaier@sysmocom.de>2020-09-03 21:35:25 +0200
commit92eed41a99743b07c9961aa450297a3fb28261d8 (patch)
tree9742fa1574ab423312c7b4f069ec30baec66710d /doc
parent7e9ac64ba0ffbde52434f095e805a6f4b59ccd13 (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.dot1
-rw-r--r--doc/assignment.msc8
-rw-r--r--doc/lchan-fsm.dot6
-rw-r--r--doc/lchan.msc20
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"];