diff options
author | Philipp Maier <pmaier@sysmocom.de> | 2019-03-15 13:34:34 +0100 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2019-03-27 11:10:57 +0000 |
commit | 945c09381d033d142d8e851cd7a4de2e407b61ca (patch) | |
tree | 2caf7bc0f26fa95182d24deb5fa82ead0aea4089 | |
parent | a5a03d6b355437df1d7c5213236b0096b12640af (diff) |
oml: use oml_tx_failure_event_rep() instead of signals to SS_FAIL
At some locations in the code a signal to SS_FAIL is dispatched in order
to trigger the sending of an OML failure event report in oml.c. This is
a bit overcomplicated for the task. Lets use oml_tx_failure_event_rep()
to send the failure event reports and lets remove the signal handler for
SS_FAIL.
Change-Id: Ie4fce1273a19cc14f37ff6fc7582b2945c7e7c47
Related: OS#3843
-rw-r--r-- | include/osmo-bts/signal.h | 1 | ||||
-rw-r--r-- | src/common/bts_ctrl_commands.c | 5 | ||||
-rw-r--r-- | src/common/oml.c | 12 | ||||
-rw-r--r-- | src/common/pcu_sock.c | 9 |
4 files changed, 10 insertions, 17 deletions
diff --git a/include/osmo-bts/signal.h b/include/osmo-bts/signal.h index 01d4099b..c8168a26 100644 --- a/include/osmo-bts/signal.h +++ b/include/osmo-bts/signal.h @@ -5,7 +5,6 @@ enum sig_subsys { SS_GLOBAL, - SS_FAIL, }; enum signals_global { diff --git a/src/common/bts_ctrl_commands.c b/src/common/bts_ctrl_commands.c index 4efb4ee3..47d8a5db 100644 --- a/src/common/bts_ctrl_commands.c +++ b/src/common/bts_ctrl_commands.c @@ -34,6 +34,8 @@ #include <osmo-bts/oml.h> #include <osmo-bts/bts.h> +static struct gsm_bts *g_bts; + CTRL_CMD_DEFINE(therm_att, "thermal-attenuation"); static int get_therm_att(struct ctrl_cmd *cmd, void *data) { @@ -75,7 +77,7 @@ CTRL_CMD_DEFINE_WO_NOVRF(oml_alert, "oml-alert"); static int set_oml_alert(struct ctrl_cmd *cmd, void *data) { /* Note: we expect signal dispatch to be synchronous */ - osmo_signal_dispatch(SS_FAIL, OSMO_EVT_EXT_ALARM, cmd->value); + oml_tx_failure_event_rep(&g_bts->mo, OSMO_EVT_EXT_ALARM, cmd->value); cmd->reply = "OK"; @@ -88,6 +90,7 @@ int bts_ctrl_cmds_install(struct gsm_bts *bts) rc |= ctrl_cmd_install(CTRL_NODE_TRX, &cmd_therm_att); rc |= ctrl_cmd_install(CTRL_NODE_ROOT, &cmd_oml_alert); + g_bts = bts; return rc; } diff --git a/src/common/oml.c b/src/common/oml.c index 7ff5967f..c96a893f 100644 --- a/src/common/oml.c +++ b/src/common/oml.c @@ -1493,23 +1493,11 @@ int down_oml(struct gsm_bts *bts, struct msgb *msg) return ret; } -static int handle_fail_sig(unsigned int subsys, unsigned int signal, void *handle, - void *signal_data) -{ - if (signal_data) - oml_tx_failure_event_rep(handle, signal, "%s", signal_data); - else - oml_tx_failure_event_rep(handle, signal, ""); - - return 0; -} - int oml_init(struct gsm_abis_mo *mo) { DEBUGP(DOML, "Initializing OML attribute definitions\n"); tlv_def_patch(&abis_nm_att_tlvdef_ipa_local, &abis_nm_att_tlvdef_ipa); tlv_def_patch(&abis_nm_att_tlvdef_ipa_local, &abis_nm_att_tlvdef); - osmo_signal_register_handler(SS_FAIL, handle_fail_sig, mo); return 0; } diff --git a/src/common/pcu_sock.c b/src/common/pcu_sock.c index 2c7028e0..440f561d 100644 --- a/src/common/pcu_sock.c +++ b/src/common/pcu_sock.c @@ -43,6 +43,7 @@ #include <osmo-bts/rsl.h> #include <osmo-bts/signal.h> #include <osmo-bts/l1sap.h> +#include <osmo-bts/oml.h> uint32_t trx_get_hlayer1(struct gsm_bts_trx *trx); @@ -577,7 +578,7 @@ static int pcu_rx_txt_ind(struct gsm_bts *bts, case PCU_VERSION: LOGP(DPCU, LOGL_INFO, "OsmoPCU version %s connected\n", txt->text); - osmo_signal_dispatch(SS_FAIL, OSMO_EVT_PCU_VERS, txt->text); + oml_tx_failure_event_rep(&bts->gprs.cell.mo, OSMO_EVT_PCU_VERS, txt->text); osmo_strlcpy(bts->pcu_version, txt->text, MAX_VERSION_LENGTH); if (GSM_BTS_HAS_SI(bts, SYSINFO_TYPE_13)) @@ -586,7 +587,7 @@ static int pcu_rx_txt_ind(struct gsm_bts *bts, LOGP(DPCU, LOGL_INFO, "SI13 is not available on PCU connection\n"); break; case PCU_OML_ALERT: - osmo_signal_dispatch(SS_FAIL, OSMO_EVT_EXT_ALARM, txt->text); + oml_tx_failure_event_rep(&bts->gprs.cell.mo, OSMO_EVT_EXT_ALARM, txt->text); break; default: LOGP(DPCU, LOGL_ERROR, "Unknown TXT_IND type %u received\n", @@ -713,7 +714,9 @@ static void pcu_sock_close(struct pcu_sock_state *state) bts = llist_entry(state->net->bts_list.next, struct gsm_bts, list); LOGP(DPCU, LOGL_NOTICE, "PCU socket has LOST connection\n"); - osmo_signal_dispatch(SS_FAIL, OSMO_EVT_PCU_VERS, NULL); + oml_tx_failure_event_rep(&bts->gprs.cell.mo, OSMO_EVT_PCU_VERS, + "PCU socket has LOST connection"); + bts->pcu_version[0] = '\0'; close(bfd->fd); |