aboutsummaryrefslogtreecommitdiffstats
path: root/src/osmo-bsc/bsc_subscr_conn_fsm.c
diff options
context:
space:
mode:
authorNeels Hofmeyr <neels@hofmeyr.de>2020-09-27 21:43:38 +0000
committerNeels Hofmeyr <neels@hofmeyr.de>2020-10-09 00:26:02 +0200
commit95245468d41366cd212e49eebc5b9e9735602a21 (patch)
treeae3417500e6d8d39e28c5017044f60fdac69f229 /src/osmo-bsc/bsc_subscr_conn_fsm.c
parent4ae338d5b6d737fd37826c02e27e2553cf23e2a3 (diff)
LCS: allow RSL EST IND during GSCON_ST_ACTIVE
If an A-interface conn is already active (for Location Services), an RSL EST IND may arrive during GSCON_ST_ACTIVE. Pass it on instead of rejecting. This allows establishing Layer 3 on an already active A-interface conn. Change-Id: Ib18a12f8b8bcfb356188b2c0d97d555c1850f23e
Diffstat (limited to 'src/osmo-bsc/bsc_subscr_conn_fsm.c')
-rw-r--r--src/osmo-bsc/bsc_subscr_conn_fsm.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/osmo-bsc/bsc_subscr_conn_fsm.c b/src/osmo-bsc/bsc_subscr_conn_fsm.c
index 5893ea391..ed08e86ad 100644
--- a/src/osmo-bsc/bsc_subscr_conn_fsm.c
+++ b/src/osmo-bsc/bsc_subscr_conn_fsm.c
@@ -434,6 +434,13 @@ static void gscon_fsm_active(struct osmo_fsm_inst *fi, uint32_t event, void *dat
lb_close_conn(conn);
break;
+ case GSCON_EV_MO_COMPL_L3:
+ /* It is possible to have an A-interface conn already established without an lchan being active, during
+ * a Perform Location Request (LCS). */
+ /* RLL ESTABLISH IND with initial L3 Message */
+ gscon_sigtran_send(conn, (struct msgb*)data);
+ break;
+
default:
OSMO_ASSERT(false);
}
@@ -659,7 +666,9 @@ static const struct osmo_fsm_state gscon_fsm_states[] = {
.name = "ACTIVE",
.in_event_mask = EV_TRANSPARENT_SCCP | S(GSCON_EV_ASSIGNMENT_START) |
S(GSCON_EV_HANDOVER_START)
- | S(GSCON_EV_LCS_LOC_REQ_END),
+ | S(GSCON_EV_LCS_LOC_REQ_END)
+ | S(GSCON_EV_MO_COMPL_L3)
+ ,
.out_state_mask = S(ST_CLEARING) | S(ST_ASSIGNMENT) |
S(ST_HANDOVER),
.action = gscon_fsm_active,