Harald Welte has submitted this change and it was merged.

Change subject: gsm_bts_trx_set_system_infos(): Disable non-existing SI
......................................................................


gsm_bts_trx_set_system_infos(): Disable non-existing SI

If we previously had a given SI present/active, we must send a
zero-length BCCH FILLING for that SI type to the BTS to stop it from
further transmitting this SI.

Change-Id: I33e356e2fa3a69efac9080813e3e9ef4e6438ed1
Closes: OS#2368
---
M openbsc/src/libbsc/bsc_init.c
1 file changed, 17 insertions(+), 6 deletions(-)

Approvals:
  Harald Welte: Looks good to me, approved
  Jenkins Builder: Verified



diff --git a/openbsc/src/libbsc/bsc_init.c b/openbsc/src/libbsc/bsc_init.c
index c17e4a7..36531d2 100644
--- a/openbsc/src/libbsc/bsc_init.c
+++ b/openbsc/src/libbsc/bsc_init.c
@@ -103,8 +103,11 @@
        struct gsm_bts *bts = trx->bts;
        int rc, j;
 
-       DEBUGP(DRR, "SI%s: %s\n", get_value_string(osmo_sitype_strs, i),
-               osmo_hexdump(GSM_BTS_SI(bts, i), GSM_MACBLOCK_LEN));
+       if (si_len) {
+               DEBUGP(DRR, "SI%s: %s\n", get_value_string(osmo_sitype_strs, i),
+                       osmo_hexdump(GSM_BTS_SI(bts, i), GSM_MACBLOCK_LEN));
+       } else
+               DEBUGP(DRR, "SI%s: OFF\n", get_value_string(osmo_sitype_strs, 
i));
 
        switch (i) {
        case SYSINFO_TYPE_5:
@@ -112,14 +115,18 @@
        case SYSINFO_TYPE_5ter:
        case SYSINFO_TYPE_6:
                rc = rsl_sacch_filling(trx, osmo_sitype2rsl(i),
-                                      GSM_BTS_SI(bts, i), si_len);
+                                      si_len ? GSM_BTS_SI(bts, i) : NULL, 
si_len);
                break;
        case SYSINFO_TYPE_2quater:
+               if (si_len == 0) {
+                       rc = rsl_bcch_info(trx, i, NULL, 0);
+                       break;
+               }
                for (j = 0; j <= bts->si2q_count; j++)
                        rc = rsl_bcch_info(trx, i, (const uint8_t 
*)GSM_BTS_SI2Q(bts, j), GSM_MACBLOCK_LEN);
                break;
        default:
-               rc = rsl_bcch_info(trx, i, GSM_BTS_SI(bts, i), si_len);
+               rc = rsl_bcch_info(trx, i, si_len ? GSM_BTS_SI(bts, i) : NULL, 
si_len);
                break;
        }
 
@@ -192,9 +199,13 @@
 
        for (n = 0; n < n_si; n++) {
                i = gen_si[n];
+               /* if we don't currently have this SI, we send a zero-length
+                * RSL BCCH FILLING / SACCH FILLING * in order to deactivate
+                * the SI, in case it might have previously been active */
                if (!GSM_BTS_HAS_SI(bts, i))
-                       continue;
-               rc = rsl_si(trx, i, si_len[i]);
+                       rc = rsl_si(trx, i, 0);
+               else
+                       rc = rsl_si(trx, i, si_len[i]);
                if (rc < 0)
                        return rc;
        }

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

Gerrit-MessageType: merged
Gerrit-Change-Id: I33e356e2fa3a69efac9080813e3e9ef4e6438ed1
Gerrit-PatchSet: 3
Gerrit-Project: openbsc
Gerrit-Branch: master
Gerrit-Owner: Harald Welte <lafo...@gnumonks.org>
Gerrit-Reviewer: Harald Welte <lafo...@gnumonks.org>
Gerrit-Reviewer: Jenkins Builder

Reply via email to