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
This commit is contained in:
parent
a5a03d6b35
commit
945c09381d
|
@ -5,7 +5,6 @@
|
||||||
|
|
||||||
enum sig_subsys {
|
enum sig_subsys {
|
||||||
SS_GLOBAL,
|
SS_GLOBAL,
|
||||||
SS_FAIL,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
enum signals_global {
|
enum signals_global {
|
||||||
|
|
|
@ -34,6 +34,8 @@
|
||||||
#include <osmo-bts/oml.h>
|
#include <osmo-bts/oml.h>
|
||||||
#include <osmo-bts/bts.h>
|
#include <osmo-bts/bts.h>
|
||||||
|
|
||||||
|
static struct gsm_bts *g_bts;
|
||||||
|
|
||||||
CTRL_CMD_DEFINE(therm_att, "thermal-attenuation");
|
CTRL_CMD_DEFINE(therm_att, "thermal-attenuation");
|
||||||
static int get_therm_att(struct ctrl_cmd *cmd, void *data)
|
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)
|
static int set_oml_alert(struct ctrl_cmd *cmd, void *data)
|
||||||
{
|
{
|
||||||
/* Note: we expect signal dispatch to be synchronous */
|
/* 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";
|
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_TRX, &cmd_therm_att);
|
||||||
rc |= ctrl_cmd_install(CTRL_NODE_ROOT, &cmd_oml_alert);
|
rc |= ctrl_cmd_install(CTRL_NODE_ROOT, &cmd_oml_alert);
|
||||||
|
g_bts = bts;
|
||||||
|
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1493,23 +1493,11 @@ int down_oml(struct gsm_bts *bts, struct msgb *msg)
|
||||||
return ret;
|
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)
|
int oml_init(struct gsm_abis_mo *mo)
|
||||||
{
|
{
|
||||||
DEBUGP(DOML, "Initializing OML attribute definitions\n");
|
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_ipa);
|
||||||
tlv_def_patch(&abis_nm_att_tlvdef_ipa_local, &abis_nm_att_tlvdef);
|
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;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -43,6 +43,7 @@
|
||||||
#include <osmo-bts/rsl.h>
|
#include <osmo-bts/rsl.h>
|
||||||
#include <osmo-bts/signal.h>
|
#include <osmo-bts/signal.h>
|
||||||
#include <osmo-bts/l1sap.h>
|
#include <osmo-bts/l1sap.h>
|
||||||
|
#include <osmo-bts/oml.h>
|
||||||
|
|
||||||
uint32_t trx_get_hlayer1(struct gsm_bts_trx *trx);
|
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:
|
case PCU_VERSION:
|
||||||
LOGP(DPCU, LOGL_INFO, "OsmoPCU version %s connected\n",
|
LOGP(DPCU, LOGL_INFO, "OsmoPCU version %s connected\n",
|
||||||
txt->text);
|
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);
|
osmo_strlcpy(bts->pcu_version, txt->text, MAX_VERSION_LENGTH);
|
||||||
|
|
||||||
if (GSM_BTS_HAS_SI(bts, SYSINFO_TYPE_13))
|
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");
|
LOGP(DPCU, LOGL_INFO, "SI13 is not available on PCU connection\n");
|
||||||
break;
|
break;
|
||||||
case PCU_OML_ALERT:
|
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;
|
break;
|
||||||
default:
|
default:
|
||||||
LOGP(DPCU, LOGL_ERROR, "Unknown TXT_IND type %u received\n",
|
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);
|
bts = llist_entry(state->net->bts_list.next, struct gsm_bts, list);
|
||||||
|
|
||||||
LOGP(DPCU, LOGL_NOTICE, "PCU socket has LOST connection\n");
|
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';
|
bts->pcu_version[0] = '\0';
|
||||||
|
|
||||||
close(bfd->fd);
|
close(bfd->fd);
|
||||||
|
|
Loading…
Reference in New Issue