diff options
author | Neels Hofmeyr <neels@hofmeyr.de> | 2020-09-27 21:43:38 +0000 |
---|---|---|
committer | Neels Hofmeyr <neels@hofmeyr.de> | 2020-10-09 00:26:02 +0200 |
commit | 95245468d41366cd212e49eebc5b9e9735602a21 (patch) | |
tree | ae3417500e6d8d39e28c5017044f60fdac69f229 /src/osmo-bsc/bsc_subscr_conn_fsm.c | |
parent | 4ae338d5b6d737fd37826c02e27e2553cf23e2a3 (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.c | 11 |
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, |