Hello Jenkins Builder,

I'd like you to reexamine a change.  Please visit

    https://gerrit.osmocom.org/3185

to look at the new patch set (#2).

libcommon: Fix log output for bts>0.

Fixes regression probably introduced in c696cc28.

For bts>0 logging doesn't show bts number correctly when printing lchan
identification string - it will always show it as "bts=0". The reason for
this is that the identification string is cached before bts->nr value is
set to a proper value.

This patch sets bts->nr as part of the first step of the bts structure
initialization, before caching happens thus making sure the cached
identification string is cached with the correct values.

Change-Id: I61c18a7f021fcb1ec00d34a745f4e3ab03416c2d
---
M openbsc/include/openbsc/gsm_data_shared.h
M openbsc/src/libcommon/gsm_data.c
M openbsc/src/libcommon/gsm_data_shared.c
M openbsc/tests/channel/channel_test.c
M openbsc/tests/gsm0408/gsm0408_test.c
5 files changed, 12 insertions(+), 10 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/openbsc refs/changes/85/3185/2

diff --git a/openbsc/include/openbsc/gsm_data_shared.h 
b/openbsc/include/openbsc/gsm_data_shared.h
index 4c71a07..369668d 100644
--- a/openbsc/include/openbsc/gsm_data_shared.h
+++ b/openbsc/include/openbsc/gsm_data_shared.h
@@ -900,7 +900,7 @@
 };
 
 
-struct gsm_bts *gsm_bts_alloc(void *talloc_ctx);
+struct gsm_bts *gsm_bts_alloc(void *talloc_ctx, uint8_t bts_num);
 struct gsm_bts *gsm_bts_num(struct gsm_network *net, int num);
 
 struct gsm_bts_trx *gsm_bts_trx_alloc(struct gsm_bts *bts);
diff --git a/openbsc/src/libcommon/gsm_data.c b/openbsc/src/libcommon/gsm_data.c
index db7de08..f1049e9 100644
--- a/openbsc/src/libcommon/gsm_data.c
+++ b/openbsc/src/libcommon/gsm_data.c
@@ -286,12 +286,13 @@
        if (!model && type != GSM_BTS_TYPE_UNKNOWN)
                return NULL;
 
-       bts = gsm_bts_alloc(net);
+       bts = gsm_bts_alloc(net, net->num_bts);
        if (!bts)
                return NULL;
 
+       net->num_bts++;
+
        bts->network = net;
-       bts->nr = net->num_bts++;
        bts->type = type;
        bts->model = model;
        bts->bsic = bsic;
diff --git a/openbsc/src/libcommon/gsm_data_shared.c 
b/openbsc/src/libcommon/gsm_data_shared.c
index 8992636..d792f3b 100644
--- a/openbsc/src/libcommon/gsm_data_shared.c
+++ b/openbsc/src/libcommon/gsm_data_shared.c
@@ -312,7 +312,7 @@
        .initial_mcs = 6,
 };
 
-struct gsm_bts *gsm_bts_alloc(void *ctx)
+struct gsm_bts *gsm_bts_alloc(void *ctx, uint8_t bts_num)
 {
        struct gsm_bts *bts = talloc_zero(ctx, struct gsm_bts);
        int i;
@@ -320,6 +320,7 @@
        if (!bts)
                return NULL;
 
+       bts->nr = bts_num;
        bts->num_trx = 0;
        INIT_LLIST_HEAD(&bts->trx_list);
        bts->ms_max_power = 15; /* dBm */
diff --git a/openbsc/tests/channel/channel_test.c 
b/openbsc/tests/channel/channel_test.c
index 88293d0..77a9da1 100644
--- a/openbsc/tests/channel/channel_test.c
+++ b/openbsc/tests/channel/channel_test.c
@@ -70,7 +70,7 @@
        network = bsc_network_init(tall_bsc_ctx, 1, 1, NULL);
        if (!network)
                exit(1);
-       bts = gsm_bts_alloc(network);
+       bts = gsm_bts_alloc(network, 0);
        bts->location_area_code = 23;
        s_conn.network = network;
 
diff --git a/openbsc/tests/gsm0408/gsm0408_test.c 
b/openbsc/tests/gsm0408/gsm0408_test.c
index 5a8c6ca..63b5c7c 100644
--- a/openbsc/tests/gsm0408/gsm0408_test.c
+++ b/openbsc/tests/gsm0408/gsm0408_test.c
@@ -153,7 +153,7 @@
 
        if (!network)
                exit(1);
-       bts = gsm_bts_alloc(network);
+       bts = gsm_bts_alloc(network, 0);
 
        _bts_uarfcn_add(bts, 10564, 319, 0);
        _bts_uarfcn_add(bts, 10612, 319, 0);
@@ -168,7 +168,7 @@
 
        if (!network)
                exit(1);
-       bts = gsm_bts_alloc(network);
+       bts = gsm_bts_alloc(network, 0);
 
        _bts_uarfcn_add(bts, 10564, 318, 0);
        _bts_uarfcn_add(bts, 10612, 319, 0);
@@ -188,7 +188,7 @@
        if (!network)
                exit(1);
 
-       bts = gsm_bts_alloc(network);
+       bts = gsm_bts_alloc(network, 0);
 
        /* first generate invalid SI as no UARFCN added */
        gen(bts, __func__);
@@ -216,7 +216,7 @@
        if (!network)
                exit(1);
 
-       bts = gsm_bts_alloc(network);
+       bts = gsm_bts_alloc(network, 0);
 
        bts->si_common.si2quater_neigh_list.arfcn = 
bts->si_common.data.earfcn_list;
        bts->si_common.si2quater_neigh_list.meas_bw = 
bts->si_common.data.meas_bw_list;
@@ -249,7 +249,7 @@
        if (!network)
                exit(1);
 
-       bts = gsm_bts_alloc(network);
+       bts = gsm_bts_alloc(network, 0);
 
        bts->si_common.si2quater_neigh_list.arfcn = 
bts->si_common.data.earfcn_list;
        bts->si_common.si2quater_neigh_list.meas_bw = 
bts->si_common.data.meas_bw_list;

-- 
To view, visit https://gerrit.osmocom.org/3185
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newpatchset
Gerrit-Change-Id: I61c18a7f021fcb1ec00d34a745f4e3ab03416c2d
Gerrit-PatchSet: 2
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Alexander Chemeris <[email protected]>
Gerrit-Reviewer: Alexander Chemeris <[email protected]>
Gerrit-Reviewer: Harald Welte <[email protected]>
Gerrit-Reviewer: Jenkins Builder

Reply via email to