Change in osmo-bsc[master]: doc: update/fix FSM charts

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.

Neels Hofmeyr gerrit-no-reply at lists.osmocom.org
Mon Jun 18 07:13:16 UTC 2018


Neels Hofmeyr has uploaded this change for review. ( https://gerrit.osmocom.org/9667


Change subject: doc: update/fix FSM charts
......................................................................

doc: update/fix FSM charts

Change-Id: I29e31b753e23a4207662e0e385a337e7df836f45
---
M doc/Makefile.am
A doc/assignment-fsm.dot
M doc/assignment.msc
A doc/handover-inter-bsc-mo-fsm.dot
A doc/handover-inter-bsc-mt-fsm.dot
M doc/handover-inter-bsc-mt.msc
A doc/handover-intra-bsc-fsm.dot
M doc/handover.msc
M doc/lchan-fsm.dot
M doc/lchan.msc
A doc/mgw-endpoint-fsm.dot
M doc/ms-channel-request.msc
12 files changed, 185 insertions(+), 26 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/67/9667/1

diff --git a/doc/Makefile.am b/doc/Makefile.am
index ca0470d..2a855eb 100644
--- a/doc/Makefile.am
+++ b/doc/Makefile.am
@@ -15,8 +15,13 @@
 	$(NULL)
 
 dot: \
+	$(builddir)/assignment-fsm.png \
 	$(builddir)/timeslot-fsm.png \
 	$(builddir)/lchan-fsm.png \
+	$(builddir)/mgw-endpoint-fsm.png \
+	$(builddir)/handover-intra-bsc-fsm.png \
+	$(builddir)/handover-inter-bsc-mo-fsm.png \
+	$(builddir)/handover-inter-bsc-mt-fsm.png \
 	$(NULL)
 
 $(builddir)/%.png: $(srcdir)/%.msc
diff --git a/doc/assignment-fsm.dot b/doc/assignment-fsm.dot
new file mode 100644
index 0000000..90f7621
--- /dev/null
+++ b/doc/assignment-fsm.dot
@@ -0,0 +1,35 @@
+digraph G {
+rankdir=TB;
+	
+	WAIT_LCHAN_ACTIVE
+	WAIT_RR_ASS_COMPLETE
+	WAIT_LCHAN_ESTABLISHED
+	WAIT_MGW_ENDPOINT_TO_MSC
+	terminate [shape=box]
+	
+	gscon [label="conn FSM",shape=box3d];
+	gscon2 [label="conn FSM",shape=box3d];
+	lchan [label="lchan FSM",shape=box3d];
+	old_lchan [label="old lchan",shape=box3d];
+
+	invisible [style="invisible"]
+	invisible -> gscon [label="GSCON_EV_A_ASSIGNMENT_CMD",style=dashed]
+	invisible -> old_lchan [style=invisible,arrowhead=none]
+
+	gscon -> WAIT_LCHAN_ACTIVE [label="assignment_fsm_start()",style=dashed]
+        WAIT_LCHAN_ACTIVE -> lchan [label="lchan_activate()\nFOR_ASSIGNMENT",style=dashed]
+	lchan -> WAIT_LCHAN_ACTIVE [label="ASSIGNMENT_EV_\nLCHAN_\nACTIVE,ERROR",style=dashed]
+	lchan -> WAIT_LCHAN_ESTABLISHED [label="ASSIGNMENT_EV_\nLCHAN_\nESTABLISHED,ERROR",style=dashed]
+
+	WAIT_LCHAN_ACTIVE -> WAIT_RR_ASS_COMPLETE
+
+	WAIT_RR_ASS_COMPLETE -> old_lchan [label="RR Assignment\nCommand",style=dashed,constraint=false]
+	lchan -> WAIT_RR_ASS_COMPLETE [label="RR Assignment\nComplete",style=dashed]
+
+	WAIT_RR_ASS_COMPLETE -> WAIT_LCHAN_ESTABLISHED
+
+	WAIT_LCHAN_ESTABLISHED -> WAIT_MGW_ENDPOINT_TO_MSC [label="TCH"]
+	WAIT_LCHAN_ESTABLISHED -> terminate [label="non-TCH"]
+	WAIT_MGW_ENDPOINT_TO_MSC -> terminate
+	terminate -> gscon2 [label="GSCON_EV_\nASSIGNMENT_END",style=dashed]
+}
diff --git a/doc/assignment.msc b/doc/assignment.msc
index 9f10ea1..872161f 100644
--- a/doc/assignment.msc
+++ b/doc/assignment.msc
@@ -6,7 +6,7 @@
 	ms note mgw_msc [label="lchan allocation sequence for BSSMAP Assignment Request"];
 
 	bsc_gscon <= mgw_msc [label="BSSMAP Assignment Request"];
-	bsc_gscon abox bsc_gscon [label="ST_ASSIGNMENT_\nWAIT_LCHAN"];
+	bsc_gscon abox bsc_gscon [label="ST_ASSIGNMENT_\nWAIT_LCHAN\nT10?"];
 
 	bsc_lchan <- bsc_gscon [label="lchan_select_by_chan_mode(chan_mode)"];
 	|||;
@@ -15,13 +15,13 @@
 	bsc_gscon abox bsc_gscon [label="ST_ACTIVE"];
 	---;
 	|||;
-	bsc_gscon box bsc_gscon [label="store lchan pointer in conn->lchan_for_assignment"];
+	bsc_gscon box bsc_gscon [label="store lchan pointer in conn->assignment.new_lchan"];
 	bsc_lchan <- bsc_gscon [label="lchan_activate(FOR_ASSIGNMENT)"];
 	...;
 	|||;
 	--- [label="on lchan FSM error or timeout"];
-	bsc_lchan -> bsc_gscon [label="GSCON_EV_LCHAN_ALLOC_ERROR"];
-	bsc_gscon box bsc_gscon [label="'forget' all about conn->lchan_for_assignment"];
+	bsc_lchan -> bsc_gscon [label="GSCON_EV_LCHAN_ERROR"];
+	bsc_gscon box bsc_gscon [label="'forget' all about conn->assignment.new_lchan"];
 	bsc_gscon => mgw_msc [label="BSSMAP Assignment Failure"];
 	bsc_gscon abox bsc_gscon [label="ST_ACTIVE"];
 	--- [label="END: 'on error'"];
@@ -49,9 +49,9 @@
 	bsc_gscon -> bsc_lchan [label="LCHAN_EV_MGW_ENDPOINT_ERROR"];
 	bsc_lchan note bsc_gscon [label="conn FSM timeout handler exits and relies on the lchan FSM
 		signalling error, which should actually happen immediately:"];
-	bsc_gscon <- bsc_lchan [label="GSCON_EV_LCHAN_ALLOC_ERROR"];
+	bsc_gscon <- bsc_lchan [label="GSCON_EV_LCHAN_ERROR"];
 	bsc_gscon abox bsc_gscon [label="ST_ACTIVE"];
-	bsc_gscon box bsc_gscon [label="'forget' all about conn->lchan_for_assignment"];
+	bsc_gscon box bsc_gscon [label="'forget' all about conn->assignment.new_lchan"];
 	bsc_gscon => mgw_msc [label="BSSMAP Assignment Failure"];
 	--- [label="END: 'On Timeout'"];
 	...;
@@ -67,13 +67,13 @@
 	...;
 
 	bsc_lchan -> bsc_gscon [label="GSCON_EV_LCHAN_ACTIVE"];
-	bsc_gscon abox bsc_gscon [label="ST_ASSIGNMENT_\nWAIT_COMPLETE\nT10, 6s"];
+	bsc_gscon abox bsc_gscon [label="ST_ASSIGNMENT_\nWAIT_COMPLETE\nT10, 6s? T3107?"];
 	ms <= bsc_gscon [label="RR Assignment"];
 	...;
 	--- [label="On Timeout"];
 	bsc_gscon => mgw_msc [label="BSSMAP Assignment Failure"];
 	bsc_gscon -> bsc_lchan [label="LCHAN_EV_LCHAN_RELEASE"];
-	bsc_gscon box bsc_gscon [label="'forget' all about conn->lchan_for_assignment"];
+	bsc_gscon box bsc_gscon [label="'forget' all about conn->assignment.new_lchan"];
 	--- [label="IF assignment_created_mgw_endpoint == true"];
 	bsc_gscon -> bsc_mgcp [label="mgcp_conn_delete()"];
 	bsc_gscon note bsc_mgcp [label="If the MGW endpoint didn't exist before the Assignment, release
@@ -84,7 +84,7 @@
 	...;
 	ms => bsc_gscon [label="RR Assignment Complete"];
 	bsc_gscon -> bsc_lchan [label="OLD lchan: LCHAN_EV_LCHAN_RELEASE"];
-	bsc_gscon box bsc_gscon [label="conn->lchan = conn->lchan_for_assignment"];
+	bsc_gscon box bsc_gscon [label="conn->lchan = conn->assignment.new_lchan"];
 	--- [label="IF: chan_mode a speech mode?"];
 	bsc_gscon abox bsc_gscon [label="ST_WAIT_MDCX_BTS"];
 	bsc_gscon -> bsc_mgcp [label="mgcp_conn_modify()"];
diff --git a/doc/handover-inter-bsc-mo-fsm.dot b/doc/handover-inter-bsc-mo-fsm.dot
new file mode 100644
index 0000000..2832d0f
--- /dev/null
+++ b/doc/handover-inter-bsc-mo-fsm.dot
@@ -0,0 +1,26 @@
+digraph G {
+rankdir=TB;
+
+	invisible [style=invisible]
+	invisible -> mo [label="Measurement Report\nincluding neighbor\nBSS ARFCN",style=dashed]
+        mo [label="inter-BSC MO HO",shape=box];
+        msc [label="msc",shape=box3d];
+	new_bsc [label="new BSC",shape=box3d]
+	lchan [label="lchan",shape=box3d]
+        term [label="terminate",shape=box];
+
+	mo -> WAIT_HO_COMMAND [label="handover_start()"]
+	WAIT_HO_COMMAND -> msc [label="BSSMAP Handover\nRequired",style=dashed]
+	msc -> new_bsc [label="BSSMAP Handover\nRequest",style=dashed]
+	new_bsc -> msc [label="BSSMAP Handover\nRequest Ack",style=dashed]
+	msc -> WAIT_HO_COMMAND [label="BSSMAP Handover\nCommand",style=dashed]
+
+	WAIT_HO_COMMAND -> lchan [label="RR Handover\nCommand\nfrom new BSC",style=dashed]
+
+	WAIT_HO_COMMAND -> WAIT_CLEAR
+	msc -> WAIT_CLEAR [label="BSSMAP Clear Command",style=dashed]
+
+	WAIT_CLEAR -> term
+
+
+}
diff --git a/doc/handover-inter-bsc-mt-fsm.dot b/doc/handover-inter-bsc-mt-fsm.dot
new file mode 100644
index 0000000..82e101a
--- /dev/null
+++ b/doc/handover-inter-bsc-mt-fsm.dot
@@ -0,0 +1,42 @@
+digraph G {
+rankdir=TB;
+
+        mt [label="inter-BSC MT HO",shape=box];
+        gscon [label="gscon FSM",shape=box3d];
+        lchan [label="lchan FSM",shape=box3d];
+        msc [label="msc",shape=box3d];
+	old_bsc [label="old BSC",shape=box3d]
+	old_lchan [label="old lchan",shape=box3d]
+        term [label="terminate",shape=box];
+
+	invisible [style="invisible"]
+
+	mt -> old_bsc [style=dashed]
+	old_bsc -> msc [label="BSSMAP Handover Required",style=dashed]
+
+	invisible -> old_lchan [style=invisible,arrowhead=none]
+	msc -> gscon [label="BSSMAP Handover\nRequest",style=dashed]
+	gscon -> WAIT_LCHAN_ACTIVE [label="handover_start()",style=dashed]
+        WAIT_LCHAN_ACTIVE -> lchan [label="lchan_activate()\nFOR_HANDOVER",style=dashed]
+	lchan -> WAIT_LCHAN_ACTIVE [label="HO_EV_\nLCHAN_\nACTIVE,ERROR",style=dashed,constraint=false]
+        WAIT_LCHAN_ACTIVE -> WAIT_RR_HO_DETECT
+	
+        WAIT_RR_HO_DETECT -> msc [label="BSSMAP\nHandover\nAccept\nwith\nRR Handover\nCommand",style=dashed,constraint=false]
+        msc -> old_bsc -> old_lchan [label="RR Handover\nCommand",style=dashed]
+
+	lchan -> WAIT_RR_HO_DETECT [label="RR Handover\nDetect",style=dashed]
+	WAIT_RR_HO_DETECT -> WAIT_RR_HO_COMPLETE
+
+	lchan -> WAIT_RR_HO_COMPLETE [label="RR Handover\nComplete",style=dashed]
+	WAIT_RR_HO_COMPLETE -> WAIT_LCHAN_ESTABLISHED
+	lchan -> WAIT_LCHAN_ESTABLISHED [label="HO_EV_LCHAN_\nESTABLISHED",style=dashed]
+
+	WAIT_LCHAN_ESTABLISHED -> term [label="non-TCH"]
+	WAIT_LCHAN_ESTABLISHED -> WAIT_MGW_ENDPOINT_TO_MSC
+	WAIT_MGW_ENDPOINT_TO_MSC -> term [label="handover_end()",style=dashed]
+	term -> msc [label="BSSMAP Handover\nComplete\n/ Failure",style=dashed,constraint=false]
+
+	err [label="on error",shape=box,style=dashed]
+	err -> term
+
+}
diff --git a/doc/handover-inter-bsc-mt.msc b/doc/handover-inter-bsc-mt.msc
index 88a52da..52873c1 100644
--- a/doc/handover-inter-bsc-mt.msc
+++ b/doc/handover-inter-bsc-mt.msc
@@ -13,7 +13,7 @@
 	bsc_lchan abox bsc_lchan [label="LCHAN_ST_WAIT_TS_READY"];
 	...;
 	--- [label="on no lchan, lchan FSM error or timeout"];
-	bsc_lchan -> bsc_gscon [label="GSCON_EV_LCHAN_ALLOC_ERROR"];
+	bsc_lchan -> bsc_gscon [label="GSCON_EV_LCHAN_ERROR"];
 	bsc_gscon box bsc_gscon [label="handover_end(fail)"];
 	bsc_gscon => mgw_msc [label="BSSMAP Handover Failure"];
 	ms note bsc_gscon [label="MS happily continues on the old lchan."];
@@ -39,7 +39,7 @@
 	bsc_gscon -> bsc_lchan [label="LCHAN_EV_MGW_ENDPOINT_ERROR"];
 	bsc_lchan note bsc_gscon [label="conn FSM error handler exits and relies on the lchan FSM
 		signalling error, which should actually happen immediately:"];
-	bsc_gscon <- bsc_lchan [label="GSCON_EV_LCHAN_ALLOC_ERROR"];
+	bsc_gscon <- bsc_lchan [label="GSCON_EV_LCHAN_ERROR"];
 	bsc_gscon -> bsc_mgcp [label="mgcp_conn_delete()"];
 	bsc_gscon box bsc_gscon [label="handover_end(fail)"];
 	bsc_gscon => mgw_msc [label="BSSMAP Handover Failure"];
diff --git a/doc/handover-intra-bsc-fsm.dot b/doc/handover-intra-bsc-fsm.dot
new file mode 100644
index 0000000..4eb2561
--- /dev/null
+++ b/doc/handover-intra-bsc-fsm.dot
@@ -0,0 +1,27 @@
+digraph G {
+rankdir=TB;
+
+        lchan [label="lchan FSM",shape=box3d];
+        intra [label="intra-BSC HO",shape=box];
+        old_lchan [label="old lchan",shape=box3d];
+        term [label="terminate",shape=box];
+
+	invisible [style="invisible"]
+	invisible -> intra [style=invisible,arrowhead=none]
+	invisible -> old_lchan [style=invisible,arrowhead=none]
+
+	intra -> WAIT_LCHAN_ACTIVE [label="handover_start()",style=dashed]
+        WAIT_LCHAN_ACTIVE -> lchan [label="lchan_activate(FOR_HANDOVER)",style=dashed]
+	lchan -> WAIT_LCHAN_ACTIVE [label="HO_EV_\nLCHAN_\nACTIVE,ERROR",style=dashed,constraint=false]
+        WAIT_LCHAN_ACTIVE -> WAIT_RR_HO_DETECT
+        WAIT_RR_HO_DETECT -> old_lchan [label="RR Handover\nCommand",style=dashed,constraint=false]
+	
+	lchan -> WAIT_RR_HO_DETECT [label="RR Handover\nDetect",style=dashed]
+	WAIT_RR_HO_DETECT -> WAIT_RR_HO_COMPLETE
+
+	lchan -> WAIT_RR_HO_COMPLETE [label="RR Handover\nComplete",style=dashed]
+	WAIT_RR_HO_COMPLETE -> WAIT_LCHAN_ESTABLISHED
+	lchan -> WAIT_LCHAN_ESTABLISHED [label="HO_EV_LCHAN_\nESTABLISHED",style=dashed]
+
+	WAIT_LCHAN_ESTABLISHED -> term [label="handover_end()",style=dashed]
+}
diff --git a/doc/handover.msc b/doc/handover.msc
index 7529de6..b4307a8 100644
--- a/doc/handover.msc
+++ b/doc/handover.msc
@@ -13,7 +13,7 @@
 	bsc_lchan <- bsc_gscon [label="lchan_activate(lchan, FOR_HANDOVER)"];
 	...;
 	--- [label="on lchan FSM error or timeout"];
-	bsc_lchan -> bsc_gscon [label="GSCON_EV_LCHAN_ALLOC_ERROR"];
+	bsc_lchan -> bsc_gscon [label="GSCON_EV_LCHAN_ERROR"];
 	bsc_gscon box bsc_gscon [label="handover_end(fail)"];
 	ms note bsc_gscon [label="MS happily continues on the old lchan."];
 	bsc_gscon abox bsc_gscon [label="ST_ACTIVE"];
@@ -43,7 +43,7 @@
 	bsc_gscon -> bsc_lchan [label="LCHAN_EV_MGW_ENDPOINT_ERROR"];
 	bsc_lchan note bsc_gscon [label="conn FSM error handler exits and relies on the lchan FSM
 		signalling error, which should actually happen immediately:"];
-	bsc_gscon <- bsc_lchan [label="GSCON_EV_LCHAN_ALLOC_ERROR"];
+	bsc_gscon <- bsc_lchan [label="GSCON_EV_LCHAN_ERROR"];
 	bsc_gscon box bsc_gscon [label="handover_end(fail)"];
 	--- [label="IF handover_created_mgw_endpoint == true"];
 	bsc_gscon -> bsc_mgcp [label="mgcp_conn_delete()"];
diff --git a/doc/lchan-fsm.dot b/doc/lchan-fsm.dot
index dbb283c..b8e348e 100644
--- a/doc/lchan-fsm.dot
+++ b/doc/lchan-fsm.dot
@@ -4,10 +4,11 @@
 	invisible [style="invisible"]
 	UNUSED [penwidth=3.0]
 	WAIT_TS_READY
-	WAIT_MGW_ENDPOINT_AVAILABLE
 	WAIT_ACTIV_ACK
+	WAIT_MGW_ENDPOINT_AVAILABLE
 	WAIT_IPACC_CRCX_ACK
 	WAIT_IPACC_MDCX_ACK
+	WAIT_MGW_ENDPOINT_CONFIGURED
 	WAIT_RLL_ESTABLISH
 	ACTIVE [penwidth=3.0]
 	WAIT_SAPIS_RELEASED
@@ -17,16 +18,17 @@
 	BORKEN
 	
 	ts [label="timeslot FSM",shape=box3d];
-	gscon [label="conn FSM",shape=box3d];
+	mgwep [label="mgw endpoint\nFSM",shape=box3d];
 
 	UNUSED -> WAIT_TS_READY [label="lchan_allocate()"]
 	WAIT_TS_READY -> WAIT_ACTIV_ACK
 	WAIT_ACTIV_ACK -> WAIT_RLL_ESTABLISH
 	WAIT_RLL_ESTABLISH -> WAIT_MGW_ENDPOINT_AVAILABLE [label="TCH"]
 	WAIT_MGW_ENDPOINT_AVAILABLE -> WAIT_IPACC_CRCX_ACK [label="IPACC BTS"]
-	WAIT_MGW_ENDPOINT_AVAILABLE -> ACTIVE
+	WAIT_MGW_ENDPOINT_AVAILABLE -> WAIT_MGW_ENDPOINT_CONFIGURED
 	WAIT_IPACC_CRCX_ACK -> WAIT_IPACC_MDCX_ACK
-	WAIT_IPACC_MDCX_ACK -> ACTIVE
+	WAIT_IPACC_MDCX_ACK -> WAIT_MGW_ENDPOINT_CONFIGURED
+	WAIT_MGW_ENDPOINT_CONFIGURED -> ACTIVE
 	WAIT_RLL_ESTABLISH -> ACTIVE [label="non-TCH"];
 	WAIT_RLL_ESTABLISH -> WAIT_RF_RELEASE_ACK [label="timeout",style=dashed,constraint=false]
 
@@ -45,9 +47,9 @@
 
 	WAIT_TS_READY -> UNUSED [label="error/timeout",style=dashed,constraint=false]
 	{WAIT_ACTIV_ACK,WAIT_RF_RELEASE_ACK} -> BORKEN [label="error/timeout",style=dashed]
-	{WAIT_MGW_ENDPOINT_AVAILABLE,WAIT_IPACC_CRCX_ACK,WAIT_IPACC_MDCX_ACK} -> WAIT_SAPIS_RELEASED [label=error,style=dashed]
+	{WAIT_MGW_ENDPOINT_AVAILABLE,WAIT_IPACC_CRCX_ACK,WAIT_IPACC_MDCX_ACK,WAIT_MGW_ENDPOINT_CONFIGURED} -> WAIT_SAPIS_RELEASED [label=error,style=dashed]
 
-	WAIT_TS_READY -> gscon [label="GSCON_EV_\nENSURE_\nMGW_ENDPOINT",style=dotted]
-	gscon -> WAIT_MGW_ENDPOINT_AVAILABLE [label="LCHAN_EV_\nMGW_ENDPOINT_\n{AVAILABLE,ERROR}",style=dotted]
+	WAIT_TS_READY -> mgwep [label="CRCX",style=dotted]
+	mgwep -> WAIT_MGW_ENDPOINT_AVAILABLE [label="LCHAN_EV_\nMGW_ENDPOINT_\n{AVAILABLE,ERROR}",style=dotted]
 
 }
diff --git a/doc/lchan.msc b/doc/lchan.msc
index 9b7d663..42f2fb0 100644
--- a/doc/lchan.msc
+++ b/doc/lchan.msc
@@ -72,7 +72,7 @@
 	bsc_gscon note bsc_gscon [label="conn FSM should fire on CRCX timeout"];
 	bsc_lchan <- bsc_gscon [label="LCHAN_EV_MGW_ENDPOINT_ERROR"];
 	bsc_gscon note bsc_gscon [label="conn FSM should not assume anything and wait for
-		GSCON_EV_LCHAN_ALLOC_ERROR"];
+		GSCON_EV_LCHAN_ERROR"];
 	bsc_lchan rbox bsc_lchan [label="Do 'On any error'"];
 	bsc_lchan abox bsc_lchan [label="LCHAN_ST_UNUSED"];
 	bsc_ts <- bsc_lchan [label="TS_EV_LCHAN_UNUSED"];
@@ -142,7 +142,7 @@
 	bsc_lchan abox bsc_lchan [label="LCHAN_ST_WAIT_\nRLL_ESTABLISH\nT3101"];
 	...;
 	--- [label="on timeout"];
-	bsc_lchan -> bsc_gscon [label="GSCON_EV_LCHAN_ALLOC_ERROR"];
+	bsc_lchan -> bsc_gscon [label="GSCON_EV_LCHAN_ERROR"];
 	bsc_lchan -> bsc_lchan [label="lchan_fsm_pre_rf_release()"];
 	---;
 	...;
@@ -166,7 +166,7 @@
 	bts <= bsc_lchan [label="IPACC CRCX"];
 	...;
 	--- [label="on timeout"];
-	bsc_lchan -> bsc_gscon [label="GSCON_EV_LCHAN_ALLOC_ERROR"];
+	bsc_lchan -> bsc_gscon [label="GSCON_EV_LCHAN_ERROR"];
 	bsc_lchan -> bsc_lchan [label="lchan_graceful_release()"];
 	---;
 	...;
@@ -182,7 +182,7 @@
 		this; SCCPlite: the RTP port is already known from the timeslot+multiplex information."];
 	...;
 	--- [label="on timeout"];
-	bsc_lchan -> bsc_gscon [label="GSCON_EV_LCHAN_ALLOC_ERROR"];
+	bsc_lchan -> bsc_gscon [label="GSCON_EV_LCHAN_ERROR"];
 	bsc_lchan -> bsc_lchan [label="lchan_graceful_release()"];
 	---;
 	...;
@@ -288,7 +288,7 @@
 	bts <= bsc_lchan [label="RR Immediate Assign Reject"];
 	|||;
 	--- [label="IF FOR_ASSIGNMENT or FOR_HANDOVER"];
-	bsc_lchan -> bsc_gscon [label="GSCON_EV_LCHAN_ALLOC_ERROR"];
+	bsc_lchan -> bsc_gscon [label="GSCON_EV_LCHAN_ERROR"];
 	bsc_gscon note bsc_gscon [label="conn FSM shall immediately 'forget' the lchan"];
 	bsc_gscon => mgw_msc [label="BSSMAP\nAssignment Failure",ID=FOR_ASSIGNMENT];
 	bsc_gscon => mgw_msc [label="BSSMAP\nHandover Failure",ID="inter-BSC-MT HO"];
diff --git a/doc/mgw-endpoint-fsm.dot b/doc/mgw-endpoint-fsm.dot
new file mode 100644
index 0000000..8ad2e4a
--- /dev/null
+++ b/doc/mgw-endpoint-fsm.dot
@@ -0,0 +1,22 @@
+digraph G {
+rankdir=TB;
+	UNUSED
+	WAIT_MGW_RESPONSE
+	IN_USE
+	WAIT_DLCX_ALL
+	terminate [shape=box]
+
+	other [label="other FSM",shape=box3d]
+	other -> UNUSED [label="mgw_{crcx,mdcx}_{bts,msc}()",style=dashed]
+
+	UNUSED -> WAIT_MGW_RESPONSE
+	WAIT_MGW_RESPONSE -> IN_USE
+	IN_USE -> {WAIT_MGW_RESPONSE,WAIT_DLCX_ALL}
+
+	other2 [label="other FSM",shape=box3d]
+	other2 -> IN_USE [label="mgw_{crcx,mdcx,dlcx}_{bts,msc}()",style=dashed]
+	WAIT_DLCX_ALL -> terminate
+
+	IN_USE -> other2 [label="OTHER_EV_*",style=dashed]
+	IN_USE -> UNUSED [label="last DLCX"]
+}
diff --git a/doc/ms-channel-request.msc b/doc/ms-channel-request.msc
index 1c5b4bf..4b7de78 100644
--- a/doc/ms-channel-request.msc
+++ b/doc/ms-channel-request.msc
@@ -27,7 +27,7 @@
 
 	bsc box bsc [label="Store RACH data in lchan->rqd_ref, rqd_ta"];
 	bsc -> bsc_lchan [label="lchan_allocate(FOR_MS_CHANNEL_REQUEST)"];
-	bsc_lchan abox bsc_lchan [label="LCHAN_ST_WAIT_ACTIV_ACK\nT3103"];
+	bsc_lchan abox bsc_lchan [label="LCHAN_ST_WAIT_ACTIV_ACK\nT3101"];
 	bsc_lchan note bsc_lchan [label="The lchan FSM knows that FOR_MS_CHANNEL_REQUEST is about
 		Immediate Assignment."];
 	bts <= bsc_lchan [label="RSL Chan Activ (Immediate Assignment)"];

-- 
To view, visit https://gerrit.osmocom.org/9667
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-bsc
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: I29e31b753e23a4207662e0e385a337e7df836f45
Gerrit-Change-Number: 9667
Gerrit-PatchSet: 1
Gerrit-Owner: Neels Hofmeyr <nhofmeyr at sysmocom.de>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20180618/33cd6130/attachment.htm>


More information about the gerrit-log mailing list