abis_nm: Introduce & use a nm_is_running function to test gsm_nm_state
This returns true if the gsm_nm_state can be considered 'running'. Note that we also accept availability==0xff (which is a code for no value) because according to 12.21 it is perfectly valid. Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
This commit is contained in:
parent
9ea3268daa
commit
ca3e04f741
|
@ -826,4 +826,5 @@ int nm_state_event(enum nm_evt evt, u_int8_t obj_class, void *obj,
|
|||
|
||||
const char *nm_opstate_name(u_int8_t os);
|
||||
const char *nm_avail_name(u_int8_t avail);
|
||||
int nm_is_running(struct gsm_nm_state *s);
|
||||
#endif /* _NM_H */
|
||||
|
|
|
@ -599,6 +599,13 @@ const char *nm_adm_name(u_int8_t adm)
|
|||
}
|
||||
}
|
||||
|
||||
int nm_is_running(struct gsm_nm_state *s) {
|
||||
return (s->operational == NM_OPSTATE_ENABLED) && (
|
||||
(s->availability == NM_AVSTATE_OK) ||
|
||||
(s->availability == 0xff)
|
||||
);
|
||||
}
|
||||
|
||||
static void debugp_foh(struct abis_om_fom_hdr *foh)
|
||||
{
|
||||
DEBUGP(DNM, "OC=%s(%02x) INST=(%02x,%02x,%02x) ",
|
||||
|
|
|
@ -39,8 +39,7 @@ static int ts_is_usable(struct gsm_bts_trx_ts *ts)
|
|||
{
|
||||
/* FIXME: How does this behave for BS-11 ? */
|
||||
if (is_ipaccess_bts(ts->trx->bts)) {
|
||||
if (ts->nm_state.operational != NM_OPSTATE_ENABLED ||
|
||||
ts->nm_state.availability != NM_AVSTATE_OK)
|
||||
if (!nm_is_running(&ts->nm_state))
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -51,10 +50,8 @@ int trx_is_usable(struct gsm_bts_trx *trx)
|
|||
{
|
||||
/* FIXME: How does this behave for BS-11 ? */
|
||||
if (is_ipaccess_bts(trx->bts)) {
|
||||
if (trx->nm_state.operational != NM_OPSTATE_ENABLED ||
|
||||
trx->nm_state.availability != NM_AVSTATE_OK ||
|
||||
trx->bb_transc.nm_state.operational != NM_OPSTATE_ENABLED ||
|
||||
trx->bb_transc.nm_state.availability != NM_AVSTATE_OK)
|
||||
if (!nm_is_running(&trx->nm_state) ||
|
||||
!nm_is_running(&trx->bb_transc.nm_state))
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -380,8 +377,8 @@ void bts_chan_load(struct pchan_load *cl, const struct gsm_bts *bts)
|
|||
int i;
|
||||
|
||||
/* skip administratively deactivated tranxsceivers */
|
||||
if (trx->nm_state.availability != NM_AVSTATE_OK ||
|
||||
trx->bb_transc.nm_state.availability != NM_AVSTATE_OK)
|
||||
if (!nm_is_running(&trx->nm_state) ||
|
||||
!nm_is_running(&trx->bb_transc.nm_state))
|
||||
continue;
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(trx->ts); i++) {
|
||||
|
@ -390,7 +387,7 @@ void bts_chan_load(struct pchan_load *cl, const struct gsm_bts *bts)
|
|||
int j;
|
||||
|
||||
/* skip administratively deactivated timeslots */
|
||||
if (ts->nm_state.availability != NM_AVSTATE_OK)
|
||||
if (!nm_is_running(&ts->nm_state))
|
||||
continue;
|
||||
|
||||
for (j = 0; j < subslots_per_pchan[ts->pchan]; j++) {
|
||||
|
|
Loading…
Reference in New Issue