<p>pespin <strong>submitted</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/osmo-pcu/+/22191">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  Jenkins Builder: Verified
  lynxis lazus: Looks good to me, approved
  laforge: Looks good to me, but someone else must approve

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">Move llc_* fields from BTS to PCU<br><br>Change-Id: Iffb916e53fdf99164ad07cd19e4b35a64136307e<br>---<br>M src/bts.cpp<br>M src/bts.h<br>M src/gprs_bssgp_pcu.cpp<br>M src/gprs_ms.c<br>M src/gprs_pcu.c<br>M src/gprs_pcu.h<br>M src/llc.cpp<br>M src/pcu_vty.c<br>M src/tbf_dl.cpp<br>9 files changed, 34 insertions(+), 65 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/bts.cpp b/src/bts.cpp</span><br><span>index 450c04e..92abdbf 100644</span><br><span>--- a/src/bts.cpp</span><br><span>+++ b/src/bts.cpp</span><br><span>@@ -201,9 +201,6 @@</span><br><span>      bts->n3105 = 8;</span><br><span>   bts->si13_is_set = false;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        bts->llc_codel_interval_msec = LLC_CODEL_USE_DEFAULT;</span><br><span style="color: hsl(0, 100%, 40%);">-        bts->llc_idle_ack_csec = 10;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>      bts->app_info = NULL;</span><br><span>     bts->bts = bts_obj;</span><br><span>       bts->T_defs_bts = T_defs_bts;</span><br><span>diff --git a/src/bts.h b/src/bts.h</span><br><span>index 635c3c7..bf6e681 100644</span><br><span>--- a/src/bts.h</span><br><span>+++ b/src/bts.h</span><br><span>@@ -89,10 +89,6 @@</span><br><span>       uint16_t mcs_mask;  /* Allowed MCS mask from BTS */</span><br><span>  uint8_t initial_cs_dl, initial_cs_ul;</span><br><span>        uint8_t initial_mcs_dl, initial_mcs_ul;</span><br><span style="color: hsl(0, 100%, 40%);">- uint16_t force_llc_lifetime; /* overrides lifetime from SGSN */</span><br><span style="color: hsl(0, 100%, 40%);">- uint32_t llc_discard_csec;</span><br><span style="color: hsl(0, 100%, 40%);">-      uint32_t llc_idle_ack_csec;</span><br><span style="color: hsl(0, 100%, 40%);">-     uint32_t llc_codel_interval_msec; /* 0=disabled, -1=use default interval */</span><br><span>  /* Timer defintions */</span><br><span>       struct osmo_tdef *T_defs_bts; /* timers controlled by BTS, received through PCUIF */</span><br><span>         uint8_t n3101;</span><br><span>diff --git a/src/gprs_bssgp_pcu.cpp b/src/gprs_bssgp_pcu.cpp</span><br><span>index c1a7a7d..1596d67 100644</span><br><span>--- a/src/gprs_bssgp_pcu.cpp</span><br><span>+++ b/src/gprs_bssgp_pcu.cpp</span><br><span>@@ -676,7 +676,7 @@</span><br><span>    uint16_t bucket_time = the_pcu->vty.fc_bucket_time;</span><br><span> </span><br><span>   if (bucket_time == 0)</span><br><span style="color: hsl(0, 100%, 40%);">-           bucket_time = bts->force_llc_lifetime;</span><br><span style="color: hsl(120, 100%, 40%);">+             bucket_time = the_pcu->vty.force_llc_lifetime;</span><br><span> </span><br><span>        if (bucket_time == 0xffff)</span><br><span>           bucket_size = FC_MAX_BUCKET_SIZE;</span><br><span>diff --git a/src/gprs_ms.c b/src/gprs_ms.c</span><br><span>index 291f0e8..9d303d6 100644</span><br><span>--- a/src/gprs_ms.c</span><br><span>+++ b/src/gprs_ms.c</span><br><span>@@ -121,7 +121,7 @@</span><br><span>     ms_set_mode(ms, GPRS);</span><br><span> </span><br><span>   if (ms->bts)</span><br><span style="color: hsl(0, 100%, 40%);">-         codel_interval = bts_data(ms->bts)->llc_codel_interval_msec;</span><br><span style="color: hsl(120, 100%, 40%);">+            codel_interval = the_pcu->vty.llc_codel_interval_msec;</span><br><span> </span><br><span>        if (codel_interval) {</span><br><span>                if (codel_interval == LLC_CODEL_USE_DEFAULT)</span><br><span>diff --git a/src/gprs_pcu.c b/src/gprs_pcu.c</span><br><span>index 18c5568..013c026 100644</span><br><span>--- a/src/gprs_pcu.c</span><br><span>+++ b/src/gprs_pcu.c</span><br><span>@@ -94,6 +94,8 @@</span><br><span>        /* TODO: increase them when CRBB decoding is implemented */</span><br><span>  pcu->vty.ws_base = 64;</span><br><span>    pcu->vty.ws_pdch = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+      pcu->vty.llc_codel_interval_msec = LLC_CODEL_USE_DEFAULT;</span><br><span style="color: hsl(120, 100%, 40%);">+  pcu->vty.llc_idle_ack_csec = 10;</span><br><span> </span><br><span>      pcu->T_defs = T_defs_pcu;</span><br><span>         osmo_tdefs_reset(pcu->T_defs);</span><br><span>diff --git a/src/gprs_pcu.h b/src/gprs_pcu.h</span><br><span>index b4e7c13..8fc15dc 100644</span><br><span>--- a/src/gprs_pcu.h</span><br><span>+++ b/src/gprs_pcu.h</span><br><span>@@ -97,6 +97,10 @@</span><br><span>          enum gprs_ns2_dialect ns_dialect; /* Are we talking Gb with IP-SNS (true) or classic Gb? */</span><br><span>          uint16_t ws_base;</span><br><span>            uint16_t ws_pdch; /* increase WS by this value per PDCH */</span><br><span style="color: hsl(120, 100%, 40%);">+            uint16_t force_llc_lifetime; /* overrides lifetime from SGSN */</span><br><span style="color: hsl(120, 100%, 40%);">+               uint32_t llc_discard_csec;</span><br><span style="color: hsl(120, 100%, 40%);">+            uint32_t llc_idle_ack_csec;</span><br><span style="color: hsl(120, 100%, 40%);">+           uint32_t llc_codel_interval_msec; /* 0=disabled, -1=use default interval */</span><br><span>  } vty;</span><br><span> </span><br><span>   struct gsmtap_inst *gsmtap;</span><br><span>diff --git a/src/llc.cpp b/src/llc.cpp</span><br><span>index d1122f5..51cb15a 100644</span><br><span>--- a/src/llc.cpp</span><br><span>+++ b/src/llc.cpp</span><br><span>@@ -224,8 +224,8 @@</span><br><span> void gprs_llc_queue::calc_pdu_lifetime(BTS *bts, const uint16_t pdu_delay_csec, struct timespec *tv)</span><br><span> {</span><br><span>      uint16_t delay_csec;</span><br><span style="color: hsl(0, 100%, 40%);">-    if (bts->bts_data()->force_llc_lifetime)</span><br><span style="color: hsl(0, 100%, 40%);">-          delay_csec = bts->bts_data()->force_llc_lifetime;</span><br><span style="color: hsl(120, 100%, 40%);">+       if (bts->pcu->vty.force_llc_lifetime)</span><br><span style="color: hsl(120, 100%, 40%);">+           delay_csec = bts->pcu->vty.force_llc_lifetime;</span><br><span>         else</span><br><span>                 delay_csec = pdu_delay_csec;</span><br><span> </span><br><span>diff --git a/src/pcu_vty.c b/src/pcu_vty.c</span><br><span>index 5e9da45..0be914b 100644</span><br><span>--- a/src/pcu_vty.c</span><br><span>+++ b/src/pcu_vty.c</span><br><span>@@ -201,24 +201,24 @@</span><br><span>    if (the_pcu->vty.dl_arq_type == EGPRS_ARQ2)</span><br><span>               vty_out(vty, " egprs dl arq-type arq2%s", VTY_NEWLINE);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   if (bts->force_llc_lifetime == 0xffff)</span><br><span style="color: hsl(120, 100%, 40%);">+     if (the_pcu->vty.force_llc_lifetime == 0xffff)</span><br><span>            vty_out(vty, " queue lifetime infinite%s", VTY_NEWLINE);</span><br><span style="color: hsl(0, 100%, 40%);">-      else if (bts->force_llc_lifetime)</span><br><span style="color: hsl(0, 100%, 40%);">-            vty_out(vty, " queue lifetime %d%s", bts->force_llc_lifetime,</span><br><span style="color: hsl(120, 100%, 40%);">+    else if (the_pcu->vty.force_llc_lifetime)</span><br><span style="color: hsl(120, 100%, 40%);">+          vty_out(vty, " queue lifetime %d%s", the_pcu->vty.force_llc_lifetime,</span><br><span>                   VTY_NEWLINE);</span><br><span style="color: hsl(0, 100%, 40%);">-   if (bts->llc_discard_csec)</span><br><span style="color: hsl(0, 100%, 40%);">-           vty_out(vty, " queue hysteresis %d%s", bts->llc_discard_csec,</span><br><span style="color: hsl(120, 100%, 40%);">+    if (the_pcu->vty.llc_discard_csec)</span><br><span style="color: hsl(120, 100%, 40%);">+         vty_out(vty, " queue hysteresis %d%s", the_pcu->vty.llc_discard_csec,</span><br><span>                   VTY_NEWLINE);</span><br><span style="color: hsl(0, 100%, 40%);">-   if (bts->llc_idle_ack_csec)</span><br><span style="color: hsl(0, 100%, 40%);">-          vty_out(vty, " queue idle-ack-delay %d%s", bts->llc_idle_ack_csec,</span><br><span style="color: hsl(120, 100%, 40%);">+       if (the_pcu->vty.llc_idle_ack_csec)</span><br><span style="color: hsl(120, 100%, 40%);">+                vty_out(vty, " queue idle-ack-delay %d%s", the_pcu->vty.llc_idle_ack_csec,</span><br><span>                      VTY_NEWLINE);</span><br><span style="color: hsl(0, 100%, 40%);">-   if (bts->llc_codel_interval_msec == LLC_CODEL_USE_DEFAULT)</span><br><span style="color: hsl(120, 100%, 40%);">+ if (the_pcu->vty.llc_codel_interval_msec == LLC_CODEL_USE_DEFAULT)</span><br><span>                vty_out(vty, " queue codel%s", VTY_NEWLINE);</span><br><span style="color: hsl(0, 100%, 40%);">-  else if (bts->llc_codel_interval_msec == LLC_CODEL_DISABLE)</span><br><span style="color: hsl(120, 100%, 40%);">+        else if (the_pcu->vty.llc_codel_interval_msec == LLC_CODEL_DISABLE)</span><br><span>               vty_out(vty, " no queue codel%s", VTY_NEWLINE);</span><br><span>    else</span><br><span>                 vty_out(vty, " queue codel interval %d%s",</span><br><span style="color: hsl(0, 100%, 40%);">-                    bts->llc_codel_interval_msec/10, VTY_NEWLINE);</span><br><span style="color: hsl(120, 100%, 40%);">+                     the_pcu->vty.llc_codel_interval_msec/10, VTY_NEWLINE);</span><br><span> </span><br><span>        if (the_pcu->alloc_algorithm == alloc_algorithm_a)</span><br><span>                vty_out(vty, " alloc-algorithm a%s", VTY_NEWLINE);</span><br><span>@@ -579,11 +579,8 @@</span><br><span>        "queue lifetime <1-65534>",</span><br><span>          QUEUE_STR LIFETIME_STR "Lifetime in centi-seconds")</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-        struct gprs_rlcmac_bts *bts = bts_main_data();</span><br><span>       uint16_t csec = atoi(argv[0]);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-  bts->force_llc_lifetime = csec;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(120, 100%, 40%);">+    the_pcu->vty.force_llc_lifetime = csec;</span><br><span>   return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span>@@ -593,10 +590,7 @@</span><br><span>        "queue lifetime infinite",</span><br><span>         QUEUE_STR LIFETIME_STR "Infinite lifetime")</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-        struct gprs_rlcmac_bts *bts = bts_main_data();</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-  bts->force_llc_lifetime = 0xffff;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(120, 100%, 40%);">+  the_pcu->vty.force_llc_lifetime = 0xffff;</span><br><span>         return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span>@@ -607,10 +601,7 @@</span><br><span>        NO_STR QUEUE_STR "Disable lifetime limit of LLC frame (use value given "</span><br><span>           "by SGSN)\n")</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-      struct gprs_rlcmac_bts *bts = bts_main_data();</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-  bts->force_llc_lifetime = 0;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(120, 100%, 40%);">+       the_pcu->vty.force_llc_lifetime = 0;</span><br><span>      return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span>@@ -623,11 +614,8 @@</span><br><span>        "queue hysteresis <1-65535>",</span><br><span>        QUEUE_STR QUEUE_HYSTERESIS_STR "Hysteresis in centi-seconds")</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-      struct gprs_rlcmac_bts *bts = bts_main_data();</span><br><span>       uint16_t csec = atoi(argv[0]);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-  bts->llc_discard_csec = csec;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(120, 100%, 40%);">+      the_pcu->vty.llc_discard_csec = csec;</span><br><span>     return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span>@@ -637,10 +625,7 @@</span><br><span>        "no queue hysteresis",</span><br><span>             NO_STR QUEUE_STR QUEUE_HYSTERESIS_STR)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-       struct gprs_rlcmac_bts *bts = bts_main_data();</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-  bts->llc_discard_csec = 0;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(120, 100%, 40%);">+ the_pcu->vty.llc_discard_csec = 0;</span><br><span>        return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span>@@ -651,10 +636,7 @@</span><br><span>        "queue codel",</span><br><span>             QUEUE_STR QUEUE_CODEL_STR)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-   struct gprs_rlcmac_bts *bts = bts_main_data();</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-  bts->llc_codel_interval_msec = LLC_CODEL_USE_DEFAULT;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(120, 100%, 40%);">+      the_pcu->vty.llc_codel_interval_msec = LLC_CODEL_USE_DEFAULT;</span><br><span>     return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span>@@ -664,11 +646,8 @@</span><br><span>        "queue codel interval <1-1000>",</span><br><span>             QUEUE_STR QUEUE_CODEL_STR "Specify interval\n" "Interval in centi-seconds")</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-      struct gprs_rlcmac_bts *bts = bts_main_data();</span><br><span>       uint16_t csec = atoi(argv[0]);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-  bts->llc_codel_interval_msec = 10*csec;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(120, 100%, 40%);">+    the_pcu->vty.llc_codel_interval_msec = 10*csec;</span><br><span>   return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span>@@ -678,10 +657,7 @@</span><br><span>        "no queue codel",</span><br><span>          NO_STR QUEUE_STR QUEUE_CODEL_STR)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    struct gprs_rlcmac_bts *bts = bts_main_data();</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-  bts->llc_codel_interval_msec = LLC_CODEL_DISABLE;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(120, 100%, 40%);">+  the_pcu->vty.llc_codel_interval_msec = LLC_CODEL_DISABLE;</span><br><span>         return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span>@@ -694,11 +670,8 @@</span><br><span>     QUEUE_STR QUEUE_IDLE_ACK_STR "Idle ACK delay in centi-seconds",</span><br><span>            CMD_ATTR_IMMEDIATE)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-     struct gprs_rlcmac_bts *bts = bts_main_data();</span><br><span>       uint16_t csec = atoi(argv[0]);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-  bts->llc_idle_ack_csec = csec;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(120, 100%, 40%);">+     the_pcu->vty.llc_idle_ack_csec = csec;</span><br><span>    return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span>@@ -708,10 +681,7 @@</span><br><span>     NO_STR QUEUE_STR QUEUE_IDLE_ACK_STR,</span><br><span>         CMD_ATTR_IMMEDIATE)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-     struct gprs_rlcmac_bts *bts = bts_main_data();</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-  bts->llc_idle_ack_csec = 0;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(120, 100%, 40%);">+        the_pcu->vty.llc_idle_ack_csec = 0;</span><br><span>       return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span>diff --git a/src/tbf_dl.cpp b/src/tbf_dl.cpp</span><br><span>index 653db14..ab34ea1 100644</span><br><span>--- a/src/tbf_dl.cpp</span><br><span>+++ b/src/tbf_dl.cpp</span><br><span>@@ -202,9 +202,9 @@</span><br><span> </span><br><span> void gprs_rlcmac_dl_tbf::start_llc_timer()</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-  if (bts_data()->llc_idle_ack_csec > 0) {</span><br><span style="color: hsl(120, 100%, 40%);">+        if (the_pcu->vty.llc_idle_ack_csec > 0) {</span><br><span>              struct timespec tv;</span><br><span style="color: hsl(0, 100%, 40%);">-             csecs_to_timespec(bts_data()->llc_idle_ack_csec, &tv);</span><br><span style="color: hsl(120, 100%, 40%);">+         csecs_to_timespec(the_pcu->vty.llc_idle_ack_csec, &tv);</span><br><span>               osmo_timer_schedule(&m_llc_timer, tv.tv_sec, tv.tv_nsec / 1000);</span><br><span>         }</span><br><span> }</span><br><span>@@ -348,8 +348,8 @@</span><br><span>         const unsigned keep_small_thresh = 60;</span><br><span>       const MetaInfo *info;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-       if (bts_data()->llc_discard_csec)</span><br><span style="color: hsl(0, 100%, 40%);">-            csecs_to_timespec(bts_data()->llc_discard_csec, &hyst_delta);</span><br><span style="color: hsl(120, 100%, 40%);">+  if (the_pcu->vty.llc_discard_csec)</span><br><span style="color: hsl(120, 100%, 40%);">+         csecs_to_timespec(the_pcu->vty.llc_discard_csec, &hyst_delta);</span><br><span> </span><br><span>    osmo_clock_gettime(CLOCK_MONOTONIC, &tv_now);</span><br><span>    timespecadd(&tv_now, &hyst_delta, &tv_now2);</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-pcu/+/22191">change 22191</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-pcu/+/22191"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-pcu </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: Iffb916e53fdf99164ad07cd19e4b35a64136307e </div>
<div style="display:none"> Gerrit-Change-Number: 22191 </div>
<div style="display:none"> Gerrit-PatchSet: 4 </div>
<div style="display:none"> Gerrit-Owner: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-Reviewer: lynxis lazus <lynxis@fe80.eu> </div>
<div style="display:none"> Gerrit-Reviewer: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>