<p>neels has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-bsc/+/23785">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">update neighbor ARFCNs on startup and config changes<br><br>The effects of the neighbor configuration depend on the LAC, Cell<br>Identity, ARFCN, BSIC configuration of neighbor cells. Make sure that<br>the neighbor ARFCN list in the System Information is updated.<br><br>This may seem rather aggressive: updating the SI of all BTS if only one<br>config item changed. But indeed even modifying one config item of one<br>BTS may cause a change in the neighbor relations that many other BTS may<br>have to the changed BTS. For example, if many BTS configure a<br>'neighbor lac-ci 42 23', and this cell's config changes to LAC 43, all<br>of those other BTS need to update their neighbor ARFCNs.<br><br>Also update the system information even before the BTS are connected and<br>started up. The main benefit here is that the VTY 'show bts N' command<br>then already lists the correct neighbor ARFCNs.<br><br>In gsm_bts_trx_set_system_infos(), make sure that the updated SI is only<br>sent to TRXes that are actually usable, otherwise abis_rsl_sendmsg()<br>spams the log with complaints that a message's dst == NULL.<br><br>The desire to have the ARFCNs listed in the VTY before starting up BTSes<br>came during analysis for Ifb54d9a91e9bca032c721f12c873c6216733e7b1,<br>which fixes a bug that is now much easier to verify being fixed.<br><br>Change-Id: I2222e029fc225152e124ed1e8887f1ffd4a107ef<br>---<br>M include/osmocom/bsc/bts.h<br>M src/osmo-bsc/bsc_init.c<br>M src/osmo-bsc/bsc_vty.c<br>M src/osmo-bsc/bts_trx.c<br>M src/osmo-bsc/neighbor_ident_vty.c<br>M src/osmo-bsc/osmo_bsc_main.c<br>6 files changed, 45 insertions(+), 1 deletion(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/85/23785/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/include/osmocom/bsc/bts.h b/include/osmocom/bsc/bts.h</span><br><span>index bcc215d..5aaf6d5 100644</span><br><span>--- a/include/osmocom/bsc/bts.h</span><br><span>+++ b/include/osmocom/bsc/bts.h</span><br><span>@@ -671,6 +671,7 @@</span><br><span> int bts_count_free_ts(struct gsm_bts *bts, enum gsm_phys_chan_config pchan);</span><br><span> </span><br><span> int gsm_bts_set_system_infos(struct gsm_bts *bts);</span><br><span style="color: hsl(120, 100%, 40%);">+int gsm_net_set_system_infos();</span><br><span> </span><br><span> int gsm_bts_model_register(struct gsm_bts_model *model);</span><br><span> struct gsm_bts_model *bts_model_find(enum gsm_bts_type type);</span><br><span>diff --git a/src/osmo-bsc/bsc_init.c b/src/osmo-bsc/bsc_init.c</span><br><span>index b572f27..dedbd96 100644</span><br><span>--- a/src/osmo-bsc/bsc_init.c</span><br><span>+++ b/src/osmo-bsc/bsc_init.c</span><br><span>@@ -168,3 +168,15 @@</span><br><span> </span><br><span>  return bts;</span><br><span> }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+int gsm_net_set_system_infos()</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+ struct gsm_bts *bts;</span><br><span style="color: hsl(120, 100%, 40%);">+  int ret = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+  llist_for_each_entry(bts, &bsc_gsmnet->bts_list, list) {</span><br><span style="color: hsl(120, 100%, 40%);">+               int rc = gsm_bts_set_system_infos(bts);</span><br><span style="color: hsl(120, 100%, 40%);">+               if (rc)</span><br><span style="color: hsl(120, 100%, 40%);">+                       ret = rc;</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span style="color: hsl(120, 100%, 40%);">+     return ret;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span>diff --git a/src/osmo-bsc/bsc_vty.c b/src/osmo-bsc/bsc_vty.c</span><br><span>index 1d29f1b..6991e03 100644</span><br><span>--- a/src/osmo-bsc/bsc_vty.c</span><br><span>+++ b/src/osmo-bsc/bsc_vty.c</span><br><span>@@ -2447,6 +2447,11 @@</span><br><span>         }</span><br><span>    bts->cell_identity = ci;</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+       /* Changing the CI of a BTS may affect the neighbor relations between cells, when other cells indicate a</span><br><span style="color: hsl(120, 100%, 40%);">+       * neighbor cell by CI. Update the neighbors list in System Information. */</span><br><span style="color: hsl(120, 100%, 40%);">+   if (vty->type != VTY_FILE)</span><br><span style="color: hsl(120, 100%, 40%);">+         gsm_net_set_system_infos();</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>        return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span>@@ -2473,6 +2478,11 @@</span><br><span> </span><br><span>    bts->location_area_code = lac;</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+ /* Changing the LAC of a BTS may affect the neighbor relations between cells, when other cells indicate a</span><br><span style="color: hsl(120, 100%, 40%);">+      * neighbor cell by LAC. Update the neighbors list in System Information. */</span><br><span style="color: hsl(120, 100%, 40%);">+  if (vty->type != VTY_FILE)</span><br><span style="color: hsl(120, 100%, 40%);">+         gsm_net_set_system_infos();</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>        return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span>@@ -2503,6 +2513,9 @@</span><br><span>         }</span><br><span>    bts->bsic = bsic;</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+      if (vty->type != VTY_FILE)</span><br><span style="color: hsl(120, 100%, 40%);">+         gsm_net_set_system_infos();</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>        return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span>@@ -5346,7 +5359,9 @@</span><br><span>                 return CMD_WARNING;</span><br><span>  }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   /* FIXME: patch ARFCN into SYSTEM INFORMATION */</span><br><span style="color: hsl(120, 100%, 40%);">+      if (vty->type != VTY_FILE)</span><br><span style="color: hsl(120, 100%, 40%);">+         gsm_net_set_system_infos();</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>        /* FIXME: use OML layer to update the ARFCN */</span><br><span>       /* FIXME: use RSL layer to update SYSTEM INFORMATION */</span><br><span> </span><br><span>diff --git a/src/osmo-bsc/bts_trx.c b/src/osmo-bsc/bts_trx.c</span><br><span>index 6d98929..b8096ac 100644</span><br><span>--- a/src/osmo-bsc/bts_trx.c</span><br><span>+++ b/src/osmo-bsc/bts_trx.c</span><br><span>@@ -429,6 +429,10 @@</span><br><span> </span><br><span>  /* Third, we send the selected SI via RSL */</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+      /* If the BTS is not up and running yet, don't send anything. */</span><br><span style="color: hsl(120, 100%, 40%);">+  if (!trx_is_usable(trx))</span><br><span style="color: hsl(120, 100%, 40%);">+              return 0;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>  for (n = 0; n < n_si; n++) {</span><br><span>              i = gen_si[n];</span><br><span>               /* 3GPP TS 08.58 ยง8.5.1 BCCH INFORMATION. If we don't currently</span><br><span>diff --git a/src/osmo-bsc/neighbor_ident_vty.c b/src/osmo-bsc/neighbor_ident_vty.c</span><br><span>index b9160ec..12aca9d 100644</span><br><span>--- a/src/osmo-bsc/neighbor_ident_vty.c</span><br><span>+++ b/src/osmo-bsc/neighbor_ident_vty.c</span><br><span>@@ -183,6 +183,10 @@</span><br><span>         neighbor = talloc_zero(bts, struct neighbor);</span><br><span>        *neighbor = *n;</span><br><span>      llist_add_tail(&neighbor->entry, &bts->neighbors);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+    if (vty->type != VTY_FILE)</span><br><span style="color: hsl(120, 100%, 40%);">+         gsm_bts_set_system_infos(bts);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>     return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span>@@ -213,6 +217,10 @@</span><br><span> </span><br><span>              llist_del(&neighbor->entry);</span><br><span>          talloc_free(neighbor);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+              if (vty->type != VTY_FILE)</span><br><span style="color: hsl(120, 100%, 40%);">+                 gsm_bts_set_system_infos(bts);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>             return CMD_SUCCESS;</span><br><span>  }</span><br><span> </span><br><span>diff --git a/src/osmo-bsc/osmo_bsc_main.c b/src/osmo-bsc/osmo_bsc_main.c</span><br><span>index 3069cc0..fd41b74 100644</span><br><span>--- a/src/osmo-bsc/osmo_bsc_main.c</span><br><span>+++ b/src/osmo-bsc/osmo_bsc_main.c</span><br><span>@@ -942,6 +942,10 @@</span><br><span>            exit(1);</span><br><span>     }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+ /* Make the 'show bts' information list the neighbor ARFCNs by updating the</span><br><span style="color: hsl(120, 100%, 40%);">+    * system_information.si_common.neigh_list. */</span><br><span style="color: hsl(120, 100%, 40%);">+        gsm_net_set_system_infos();</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>        /* start control interface after reading config for</span><br><span>   * ctrl_vty_get_bind_addr() */</span><br><span>       bsc_gsmnet->ctrl = bsc_controlif_setup(bsc_gsmnet,</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-bsc/+/23785">change 23785</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/osmo-bsc/+/23785"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-bsc </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I2222e029fc225152e124ed1e8887f1ffd4a107ef </div>
<div style="display:none"> Gerrit-Change-Number: 23785 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: neels <nhofmeyr@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>