aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNeels Hofmeyr <neels@hofmeyr.de>2018-05-04 22:55:09 +0200
committerNeels Hofmeyr <neels@hofmeyr.de>2018-06-08 05:47:54 +0200
commit0935546b2b30ead6183b6fde2f324f118e657125 (patch)
treecde802a54bdf84d4e6077daa80f7257c6d917d9a
parent13269b0f9b050de0100e5209b2e47942b43758b4 (diff)
assignment: signal assignment failure on chan act nack
When the BTS responds with a Chan Act NACK, i.e. the lchan could not be activated, immediately signal Assignment Failure to the MSC (in handle_chan_nack()). In handle_chan_nack(), adjust log: instead of waiting for timeout, we now signal Assignment Failure. Drop misleading logging from bsc_assign_fail(): instead of transmitting the Assignment Failure message, it actually signals an FSM event. Leave logging of that to the FSM logging. Change-Id: Ib204b4a5272f9b7b60ca5f932cd8a4c857316270
-rw-r--r--src/osmo-bsc/bsc_api.c3
-rw-r--r--src/osmo-bsc/osmo_bsc_api.c5
2 files changed, 5 insertions, 3 deletions
diff --git a/src/osmo-bsc/bsc_api.c b/src/osmo-bsc/bsc_api.c
index 02a59cc89..7aa0e3658 100644
--- a/src/osmo-bsc/bsc_api.c
+++ b/src/osmo-bsc/bsc_api.c
@@ -740,9 +740,10 @@ static void handle_chan_nack(struct gsm_subscriber_connection *conn, struct gsm_
if (conn->secondary_lchan != lchan)
return;
- LOGPLCHAN(lchan, DMSC, LOGL_ERROR, "Channel activation failed. Waiting for timeout now\n");
+ LOGPLCHAN(lchan, DMSC, LOGL_ERROR, "Channel activation failed.\n");
conn->secondary_lchan->conn = NULL;
conn->secondary_lchan = NULL;
+ bsc_assign_fail(conn, GSM0808_CAUSE_RADIO_INTERFACE_FAILURE, NULL);
}
static __attribute__((constructor)) void on_dso_load_bsc(void)
diff --git a/src/osmo-bsc/osmo_bsc_api.c b/src/osmo-bsc/osmo_bsc_api.c
index 51fbdd31b..f3c36c3c8 100644
--- a/src/osmo-bsc/osmo_bsc_api.c
+++ b/src/osmo-bsc/osmo_bsc_api.c
@@ -425,8 +425,9 @@ void bsc_assign_compl(struct gsm_subscriber_connection *conn, uint8_t rr_cause)
/*! BSC->MSC: Assignment of lchan failed. */
void bsc_assign_fail(struct gsm_subscriber_connection *conn, uint8_t cause, uint8_t *rr_cause)
{
- LOGP(DMSC, LOGL_INFO, "Tx MSC ASSIGN FAIL\n");
- osmo_fsm_inst_dispatch(conn->fi, GSCON_EV_RR_ASS_FAIL, NULL);
+ LOGPFSML(conn->fi, LOGL_ERROR, "Assignment failure: BSSMAP: '%s' from RR: '%s'\n",
+ gsm0808_cause_name(cause), rr_cause ? rr_cause_name(*rr_cause) : "(none)");
+ osmo_fsm_inst_dispatch(conn->fi, GSCON_EV_RR_ASS_FAIL, &cause);
}
/*! BSC->MSC: RR conn has been cleared. */