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

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">Move dl_arq_type field from BTS to PCU<br><br>Change-Id: I0b82ab59edd58d60e5581c707dc49f58de0ba203<br>---<br>M src/bts.cpp<br>M src/bts.h<br>M src/coding_scheme.h<br>M src/gprs_pcu.c<br>M src/gprs_pcu.h<br>M src/pcu_vty.c<br>M src/tbf_dl.cpp<br>M tests/tbf/TbfTest.cpp<br>8 files changed, 19 insertions(+), 29 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 46f0033..5eefc36 100644</span><br><span>--- a/src/bts.cpp</span><br><span>+++ b/src/bts.cpp</span><br><span>@@ -245,12 +245,6 @@</span><br><span>  bts->llc_codel_interval_msec = LLC_CODEL_USE_DEFAULT;</span><br><span>     bts->llc_idle_ack_csec = 10;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-     /*</span><br><span style="color: hsl(0, 100%, 40%);">-       * By default resegmentation is supported in DL</span><br><span style="color: hsl(0, 100%, 40%);">-  * can also be configured through VTY</span><br><span style="color: hsl(0, 100%, 40%);">-    */</span><br><span style="color: hsl(0, 100%, 40%);">-     bts->dl_arq_type = EGPRS_ARQ1;</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 1394bfe..b46621a 100644</span><br><span>--- a/src/bts.h</span><br><span>+++ b/src/bts.h</span><br><span>@@ -108,8 +108,6 @@</span><br><span> </span><br><span>  uint8_t si13[GSM_MACBLOCK_LEN];</span><br><span>      bool si13_is_set;</span><br><span style="color: hsl(0, 100%, 40%);">-       /* 0 to support resegmentation in DL, 1 for no reseg */</span><br><span style="color: hsl(0, 100%, 40%);">- uint8_t dl_arq_type;</span><br><span> </span><br><span>     uint8_t cs_adj_enabled; /* whether cs_adj_{upper,lower}_limit are used to adjust DL CS */</span><br><span>    uint8_t cs_adj_upper_limit; /* downgrade DL CS if error rate above its value */</span><br><span>diff --git a/src/coding_scheme.h b/src/coding_scheme.h</span><br><span>index ea1ded1..1b21265 100644</span><br><span>--- a/src/coding_scheme.h</span><br><span>+++ b/src/coding_scheme.h</span><br><span>@@ -38,8 +38,10 @@</span><br><span>        EGPRS,</span><br><span> };</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-#define EGPRS_ARQ1            0x0</span><br><span style="color: hsl(0, 100%, 40%);">-#define EGPRS_ARQ2            0x1</span><br><span style="color: hsl(120, 100%, 40%);">+enum egprs_arq_type {</span><br><span style="color: hsl(120, 100%, 40%);">+     EGPRS_ARQ1 = 0,</span><br><span style="color: hsl(120, 100%, 40%);">+       EGPRS_ARQ2 = 1</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span> </span><br><span> extern const struct value_string mcs_names[];</span><br><span> const char *mcs_name(enum CodingScheme val);</span><br><span>diff --git a/src/gprs_pcu.c b/src/gprs_pcu.c</span><br><span>index 3b44d36..2a84f7b 100644</span><br><span>--- a/src/gprs_pcu.c</span><br><span>+++ b/src/gprs_pcu.c</span><br><span>@@ -52,6 +52,9 @@</span><br><span>     pcu->vty.max_mcs_dl = MAX_EDGE_MCS;</span><br><span>       pcu->vty.alpha = 0; /* a = 0.0 */</span><br><span>         pcu->vty.dl_tbf_preemptive_retransmission = true;</span><br><span style="color: hsl(120, 100%, 40%);">+  /* By default resegmentation is supported in DL can also be configured</span><br><span style="color: hsl(120, 100%, 40%);">+         * through VTY */</span><br><span style="color: hsl(120, 100%, 40%);">+     pcu->vty.dl_arq_type = EGPRS_ARQ1;</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 2f2fdc7..f07510b 100644</span><br><span>--- a/src/gprs_pcu.h</span><br><span>+++ b/src/gprs_pcu.h</span><br><span>@@ -27,6 +27,7 @@</span><br><span> #include <osmocom/core/gsmtap_util.h></span><br><span> </span><br><span> #include "gprs_bssgp_pcu.h"</span><br><span style="color: hsl(120, 100%, 40%);">+#include "coding_scheme.h"</span><br><span> </span><br><span> #define LLC_CODEL_DISABLE 0</span><br><span> #define LLC_CODEL_USE_DEFAULT (-1)</span><br><span>@@ -77,6 +78,7 @@</span><br><span>            uint8_t force_two_phase;</span><br><span>             uint8_t alpha, gamma;</span><br><span>                bool dl_tbf_preemptive_retransmission;</span><br><span style="color: hsl(120, 100%, 40%);">+                enum egprs_arq_type dl_arq_type; /* EGPRS_ARQ1 to support resegmentation in DL, EGPRS_ARQ2 for no reseg */</span><br><span>   } vty;</span><br><span> </span><br><span>   struct gsmtap_inst *gsmtap;</span><br><span>diff --git a/src/pcu_vty.c b/src/pcu_vty.c</span><br><span>index 727712d..ef86879 100644</span><br><span>--- a/src/pcu_vty.c</span><br><span>+++ b/src/pcu_vty.c</span><br><span>@@ -198,9 +198,8 @@</span><br><span>   vty_out(vty, " window-size %d %d%s", bts->ws_base, bts->ws_pdch,</span><br><span>             VTY_NEWLINE);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-       if (bts->dl_arq_type)</span><br><span style="color: hsl(0, 100%, 40%);">-                vty_out(vty, " egprs dl arq-type arq2%s",</span><br><span style="color: hsl(0, 100%, 40%);">-                     VTY_NEWLINE);</span><br><span style="color: hsl(120, 100%, 40%);">+ if (the_pcu->vty.dl_arq_type == EGPRS_ARQ2)</span><br><span style="color: hsl(120, 100%, 40%);">+                vty_out(vty, " egprs dl arq-type arq2%s", VTY_NEWLINE);</span><br><span> </span><br><span>        if (bts->force_llc_lifetime == 0xffff)</span><br><span>            vty_out(vty, " queue lifetime infinite%s", VTY_NEWLINE);</span><br><span>@@ -574,12 +573,10 @@</span><br><span>      "enable ARQ2 support",</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>       if (!strcmp(argv[0], "arq2"))</span><br><span style="color: hsl(0, 100%, 40%);">-         bts->dl_arq_type = 1;</span><br><span style="color: hsl(120, 100%, 40%);">+              the_pcu->vty.dl_arq_type = EGPRS_ARQ2;</span><br><span>    else</span><br><span style="color: hsl(0, 100%, 40%);">-            bts->dl_arq_type = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+              the_pcu->vty.dl_arq_type = EGPRS_ARQ1;</span><br><span> </span><br><span>        return CMD_SUCCESS;</span><br><span> }</span><br><span>diff --git a/src/tbf_dl.cpp b/src/tbf_dl.cpp</span><br><span>index 6f57e7d..b6d3a9e 100644</span><br><span>--- a/src/tbf_dl.cpp</span><br><span>+++ b/src/tbf_dl.cpp</span><br><span>@@ -486,7 +486,7 @@</span><br><span>                  /* Table 8.1.1.2 and Table 8.1.1.1 of 44.060 */</span><br><span>                      m_rlc.block(bsn)->cs_current_trans = get_retx_mcs(m_rlc.block(bsn)->cs_init,</span><br><span>                                                                     ms_current_cs_dl(ms()),</span><br><span style="color: hsl(0, 100%, 40%);">-                                                                         !bts->bts_data()->dl_arq_type);</span><br><span style="color: hsl(120, 100%, 40%);">+                                                                         bts->pcu->vty.dl_arq_type == EGPRS_ARQ1);</span><br><span> </span><br><span>                        LOGPTBFDL(this, LOGL_DEBUG,</span><br><span>                            "initial_cs_dl(%s) last_mcs(%s) demanded_mcs(%s) cs_trans(%s) arq_type(%d) bsn(%d)\n",</span><br><span>@@ -494,7 +494,7 @@</span><br><span>                               mcs_name(m_rlc.block(bsn)->cs_last),</span><br><span>                              mcs_name(ms_current_cs_dl(ms())),</span><br><span>                            mcs_name(m_rlc.block(bsn)->cs_current_trans),</span><br><span style="color: hsl(0, 100%, 40%);">-                                bts->bts_data()->dl_arq_type, bsn);</span><br><span style="color: hsl(120, 100%, 40%);">+                             the_pcu->vty.dl_arq_type, bsn);</span><br><span> </span><br><span>                     /* TODO: Need to remove this check when MCS-8 -> MCS-6</span><br><span>                     * transistion is handled.</span><br><span>diff --git a/tests/tbf/TbfTest.cpp b/tests/tbf/TbfTest.cpp</span><br><span>index 69f07aa..52403e1 100644</span><br><span>--- a/tests/tbf/TbfTest.cpp</span><br><span>+++ b/tests/tbf/TbfTest.cpp</span><br><span>@@ -2525,7 +2525,6 @@</span><br><span> {</span><br><span>     the_pcu->bts = bts_alloc(the_pcu);</span><br><span>        BTS *the_bts = the_pcu->bts;</span><br><span style="color: hsl(0, 100%, 40%);">- gprs_rlcmac_bts *bts;</span><br><span>        uint8_t ms_class = 11;</span><br><span>       uint8_t egprs_ms_class = 11;</span><br><span>         uint8_t trx_no;</span><br><span>@@ -2546,12 +2545,10 @@</span><br><span> </span><br><span>        fprintf(stderr, "=== start %s ===\n", __func__);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-  bts = the_bts->bts_data();</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>        setup_bts(the_bts, ts_no);</span><br><span>   OSMO_ASSERT(osmo_tdef_set(the_pcu->T_defs, -2031, 200, OSMO_TDEF_MS) == 0);</span><br><span>       /* ARQ II */</span><br><span style="color: hsl(0, 100%, 40%);">-    bts->dl_arq_type = EGPRS_ARQ2;</span><br><span style="color: hsl(120, 100%, 40%);">+     the_pcu->vty.dl_arq_type = EGPRS_ARQ2;</span><br><span> </span><br><span>        /*</span><br><span>    * Simulate a message captured during over-the-air testing,</span><br><span>@@ -3083,7 +3080,7 @@</span><br><span>  setup_bts(the_bts, ts_no);</span><br><span>   OSMO_ASSERT(osmo_tdef_set(the_pcu->T_defs, -2031, 200, OSMO_TDEF_MS) == 0);</span><br><span>       /* ARQ II */</span><br><span style="color: hsl(0, 100%, 40%);">-    bts->dl_arq_type = EGPRS_ARQ2;</span><br><span style="color: hsl(120, 100%, 40%);">+     the_pcu->vty.dl_arq_type = EGPRS_ARQ2;</span><br><span> </span><br><span> </span><br><span>    /* First parameter is current MCS, second one is demanded_mcs */</span><br><span>@@ -3114,7 +3111,7 @@</span><br><span>     OSMO_ASSERT(osmo_tdef_set(the_pcu->T_defs, -2031, 200, OSMO_TDEF_MS) == 0);</span><br><span> </span><br><span>   /* ARQ I resegmentation support */</span><br><span style="color: hsl(0, 100%, 40%);">-      bts->dl_arq_type = EGPRS_ARQ1;</span><br><span style="color: hsl(120, 100%, 40%);">+     the_pcu->vty.dl_arq_type = EGPRS_ARQ1;</span><br><span> </span><br><span>        /*</span><br><span>    * First parameter is current MCS, second one is demanded_mcs</span><br><span>@@ -3135,18 +3132,15 @@</span><br><span> {</span><br><span>         the_pcu->bts = bts_alloc(the_pcu);</span><br><span>        BTS *the_bts = the_pcu->bts;</span><br><span style="color: hsl(0, 100%, 40%);">- gprs_rlcmac_bts *bts;</span><br><span>        uint8_t ts_no = 4;</span><br><span>   int i;</span><br><span> </span><br><span>   fprintf(stderr, "=== start %s ===\n", __func__);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-  bts = the_bts->bts_data();</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>        setup_bts(the_bts, ts_no);</span><br><span>   OSMO_ASSERT(osmo_tdef_set(the_pcu->T_defs, -2031, 200, OSMO_TDEF_MS) == 0);</span><br><span>       /* ARQ II */</span><br><span style="color: hsl(0, 100%, 40%);">-    bts->dl_arq_type = EGPRS_ARQ2;</span><br><span style="color: hsl(120, 100%, 40%);">+     the_pcu->vty.dl_arq_type = EGPRS_ARQ2;</span><br><span> </span><br><span>        for (i = 1; i <= 9; i++)</span><br><span>          establish_and_use_egprs_dl_tbf(the_bts, i);</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-pcu/+/22183">change 22183</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/+/22183"/><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: I0b82ab59edd58d60e5581c707dc49f58de0ba203 </div>
<div style="display:none"> Gerrit-Change-Number: 22183 </div>
<div style="display:none"> Gerrit-PatchSet: 5 </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>