diff options
author | Harald Welte <laforge@netfilter.org> | 2009-12-16 11:57:48 +0100 |
---|---|---|
committer | Harald Welte <laforge@netfilter.org> | 2009-12-16 11:57:48 +0100 |
commit | 152b6261f88ac085cd96b63374ad5847ac7b3ce2 (patch) | |
tree | c766c27296b44b8b12eba6a8211f5c186a907a1e | |
parent | 7f2d25b0956f0e9fb6cdf0056d9371a00cc239e4 (diff) |
[system_information] Print more debugging about what's going on
-rw-r--r-- | openbsc/src/bsc_init.c | 16 | ||||
-rw-r--r-- | openbsc/src/system_information.c | 21 |
2 files changed, 26 insertions, 11 deletions
diff --git a/openbsc/src/bsc_init.c b/openbsc/src/bsc_init.c index ef68ef936..aed0dad42 100644 --- a/openbsc/src/bsc_init.c +++ b/openbsc/src/bsc_init.c @@ -684,25 +684,31 @@ static int set_system_infos(struct gsm_bts_trx *trx) } #ifdef GPRS rc = gsm_generate_si(si_tmp, trx->bts, RSL_SYSTEM_INFO_13); - if (rc < 0) + if (rc < 0) { + i = 13; goto err_out; + } rsl_bcch_info(trx, RSL_SYSTEM_INFO_13, si_tmp, rc); #endif rc = gsm_generate_si(si_tmp, trx->bts, 5); - if (rc < 0) + if (rc < 0) { + i = 5; goto err_out; + } rsl_sacch_filling(trx, RSL_SYSTEM_INFO_5, si_tmp, rc); rc = gsm_generate_si(si_tmp, trx->bts, 6); - if (rc < 0) + if (rc < 0) { + i = 6; goto err_out; + } rsl_sacch_filling(trx, RSL_SYSTEM_INFO_6, si_tmp, rc); return 0; err_out: - fprintf(stderr, "Cannot generate SI for BTS %u, most likely " + fprintf(stderr, "Cannot generate SI %u for BTS %u, most likely " "a problem with neighbor cell list generation\n", - trx->bts->nr); + i, trx->bts->nr); return rc; } diff --git a/openbsc/src/system_information.c b/openbsc/src/system_information.c index 2d4ba20a4..644abb432 100644 --- a/openbsc/src/system_information.c +++ b/openbsc/src/system_information.c @@ -32,6 +32,7 @@ #include <openbsc/abis_rsl.h> #include <openbsc/rest_octets.h> #include <openbsc/bitvec.h> +#include <openbsc/debug.h> #define GSM48_CELL_CHAN_DESC_SIZE 16 #define GSM_MACBLOCK_LEN 23 @@ -73,10 +74,14 @@ static int freq_list_bmrel_set_arfcn(u_int8_t *chan_list, unsigned int arfcn) if (arfcn == min_arfcn) return 0; - if (arfcn < min_arfcn) + if (arfcn < min_arfcn) { + DEBUGP(DRR, "arfcn(%u) < min(%u)\n", arfcn, min_arfcn); return -EINVAL; - if (arfcn > min_arfcn + 111) + } + if (arfcn > min_arfcn + 111) { + DEBUGP(DRR, "arfcn(%u) > min(%u) + 111\n", arfcn, min_arfcn); return -EINVAL; + } bitno = (arfcn - min_arfcn); byte = bitno / 8; @@ -121,17 +126,21 @@ static int bitvec2freq_list(u_int8_t *chan_list, struct bitvec *bv, } } - if ((max - min) > 111) + if ((max - min) > 111) { + DEBUGP(DRR, "min_arfcn=%u, max_arfcn=%u, distance > 111\n", min, max); return -EINVAL; + } chan_list[0] |= (min >> 9) & 1; chan_list[1] = (min >> 1); chan_list[2] = (min & 1) << 7; for (i = 0; i < bv->data_len*8; i++) { - rc = freq_list_bmrel_set_arfcn(chan_list, i); - if (rc < 0) - return rc; + if (bitvec_get_bit_pos(bv, i)) { + rc = freq_list_bmrel_set_arfcn(chan_list, i); + if (rc < 0) + return rc; + } } return 0; |