From 95245468d41366cd212e49eebc5b9e9735602a21 Mon Sep 17 00:00:00 2001 From: Neels Hofmeyr Date: Sun, 27 Sep 2020 21:43:38 +0000 Subject: 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 --- src/osmo-bsc/bsc_subscr_conn_fsm.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'src/osmo-bsc') 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, -- cgit v1.2.3