<p>pespin has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-pcu/+/20994">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">Get rid of bts->egprs_enabled<br><br>BTS simply notifies the PCU about the supported MCS, and PCU is<br>responsible for providing correct data formatting supported for the BTS<br>and the target MS.<br><br>Change-Id: Ifcf23771bd23afc64ca6fea38948f98f2d134ecb<br>---<br>M src/bts.h<br>M src/gprs_bssgp_pcu.cpp<br>M src/pcu_l1_if.cpp<br>M tests/edge/EdgeTest.cpp<br>M tests/tbf/TbfTest.cpp<br>M tests/types/TypesTest.cpp<br>6 files changed, 15 insertions(+), 24 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-pcu refs/changes/94/20994/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/bts.h b/src/bts.h</span><br><span>index edb5d6e..cc6c22b 100644</span><br><span>--- a/src/bts.h</span><br><span>+++ b/src/bts.h</span><br><span>@@ -135,7 +135,6 @@</span><br><span> </span><br><span>  uint8_t force_two_phase;</span><br><span>     uint8_t alpha, gamma;</span><br><span style="color: hsl(0, 100%, 40%);">-   bool egprs_enabled;</span><br><span>  bool dl_tbf_preemptive_retransmission;</span><br><span>       uint8_t si13[GSM_MACBLOCK_LEN];</span><br><span>      bool si13_is_set;</span><br><span>diff --git a/src/gprs_bssgp_pcu.cpp b/src/gprs_bssgp_pcu.cpp</span><br><span>index a788ac0..2f79fa4 100644</span><br><span>--- a/src/gprs_bssgp_pcu.cpp</span><br><span>+++ b/src/gprs_bssgp_pcu.cpp</span><br><span>@@ -737,18 +737,23 @@</span><br><span> {</span><br><span>  int num;</span><br><span>     int i;</span><br><span style="color: hsl(120, 100%, 40%);">+        bool mcs_any = false;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-       if (bts->egprs_enabled) {</span><br><span style="color: hsl(120, 100%, 40%);">+  /* First check if we support any MCS: */</span><br><span style="color: hsl(120, 100%, 40%);">+      for (i = sizeof(bts->mcs_supported) - 1; i >= 0; i--) {</span><br><span style="color: hsl(120, 100%, 40%);">+         if (bts->mcs_supported[i]) {</span><br><span style="color: hsl(120, 100%, 40%);">+                       num = i + 1;</span><br><span style="color: hsl(120, 100%, 40%);">+                  mcs_any = true;</span><br><span style="color: hsl(120, 100%, 40%);">+                       break;</span><br><span style="color: hsl(120, 100%, 40%);">+                }</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   if (mcs_any) {</span><br><span>               if (!bts->cs_adj_enabled) {</span><br><span>                       if (bts->initial_mcs_dl) {</span><br><span>                                num = bts->initial_mcs_dl;</span><br><span>                        } else {</span><br><span style="color: hsl(0, 100%, 40%);">-                                for (i = sizeof(bts->mcs_supported) - 1; i >= 0; i--) {</span><br><span style="color: hsl(0, 100%, 40%);">-                                   if (bts->mcs_supported[i]) {</span><br><span style="color: hsl(0, 100%, 40%);">-                                         num = i + 1;</span><br><span style="color: hsl(0, 100%, 40%);">-                                            break;</span><br><span style="color: hsl(0, 100%, 40%);">-                                  }</span><br><span style="color: hsl(0, 100%, 40%);">-                               }</span><br><span style="color: hsl(120, 100%, 40%);">+                             /* We found "num" for free in the loop above */</span><br><span>                    }</span><br><span>            } else if (bts->bts->max_mcs_dl()) {</span><br><span>                   num = bts->bts->max_mcs_dl();</span><br><span>@@ -803,6 +808,9 @@</span><br><span>    ms_bucket_size = bts->fc_ms_bucket_size;</span><br><span>  ms_leak_rate = bts->fc_ms_leak_rate;</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+   /* FIXME: This calculation is mostly wrong. It should be done based on</span><br><span style="color: hsl(120, 100%, 40%);">+           currently established TBF (and whether the related (egprs)_ms_class</span><br><span style="color: hsl(120, 100%, 40%);">+           as per which CS/MCS they support). */</span><br><span>     if (leak_rate == 0) {</span><br><span>                int meas_rate;</span><br><span>               int usage; /* in 0..1000 */</span><br><span>diff --git a/src/pcu_l1_if.cpp b/src/pcu_l1_if.cpp</span><br><span>index 45527f5..4e2f339 100644</span><br><span>--- a/src/pcu_l1_if.cpp</span><br><span>+++ b/src/pcu_l1_if.cpp</span><br><span>@@ -625,11 +625,9 @@</span><br><span>  if (!any_cs_supported) /* We need at least 1 CS, let's enable CS1 */</span><br><span>             bts->cs_supported[0] = true;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-     bts->egprs_enabled = false;</span><br><span>       for (i = 0; i < sizeof(bts->mcs_supported); i++) {</span><br><span>             bts->mcs_supported[i] = (info_ind->flags & (PCU_IF_FLAG_MCS1 << i));</span><br><span>                 if (bts->mcs_supported[i]) {</span><br><span style="color: hsl(0, 100%, 40%);">-                 bts->egprs_enabled = true;</span><br><span>                        LOGP(DL1IF, LOGL_DEBUG, " Use MCS%d\n", i+1);</span><br><span>              }</span><br><span>    }</span><br><span>diff --git a/tests/edge/EdgeTest.cpp b/tests/edge/EdgeTest.cpp</span><br><span>index 5845f4d..67ed2a7 100644</span><br><span>--- a/tests/edge/EdgeTest.cpp</span><br><span>+++ b/tests/edge/EdgeTest.cpp</span><br><span>@@ -1157,7 +1157,6 @@</span><br><span>   gprs_rlcmac_trx *trx;</span><br><span> </span><br><span>    bts = the_bts->bts_data();</span><br><span style="color: hsl(0, 100%, 40%);">-   bts->egprs_enabled = true;</span><br><span>        bts->alloc_algorithm = alloc_algorithm_a;</span><br><span>         bts->initial_cs_dl = cs;</span><br><span>  bts->initial_cs_ul = cs;</span><br><span>diff --git a/tests/tbf/TbfTest.cpp b/tests/tbf/TbfTest.cpp</span><br><span>index 7811883..99ec54a 100644</span><br><span>--- a/tests/tbf/TbfTest.cpp</span><br><span>+++ b/tests/tbf/TbfTest.cpp</span><br><span>@@ -1737,7 +1737,6 @@</span><br><span> </span><br><span>     setup_bts(&the_bts, ts_no, 4);</span><br><span>   the_bts.bts_data()->initial_mcs_dl = 9;</span><br><span style="color: hsl(0, 100%, 40%);">-      the_bts.bts_data()->egprs_enabled = true;</span><br><span>         bts = the_bts.bts_data();</span><br><span>    bts->ws_base = 128;</span><br><span>       bts->ws_pdch = 64;</span><br><span>@@ -2177,7 +2176,6 @@</span><br><span>        setup_bts(&the_bts, ts_no);</span><br><span> </span><br><span>  /* EGPRS-only */</span><br><span style="color: hsl(0, 100%, 40%);">-        bts->egprs_enabled = true;</span><br><span> </span><br><span>    gprs_bssgp_init(bts, 3234, 3234, 1, 1, false, 0, 0, 0);</span><br><span> </span><br><span>@@ -2257,7 +2255,6 @@</span><br><span>  ws_check(dl_tbf, __func__, 4, 64, true, false);</span><br><span> </span><br><span>  /* EGPRS-only */</span><br><span style="color: hsl(0, 100%, 40%);">-        bts->egprs_enabled = true;</span><br><span> </span><br><span>    /* Does support EGPRS */</span><br><span>     ms = the_bts.ms_alloc(ms_class, ms_class);</span><br><span>@@ -2297,7 +2294,6 @@</span><br><span>   gprs_bssgp_init(bts, 5234, 5234, 1, 1, false, 0, 0, 0);</span><br><span> </span><br><span>  /* EGPRS-only */</span><br><span style="color: hsl(0, 100%, 40%);">-        bts->egprs_enabled = true;</span><br><span> </span><br><span>    /* Does support EGPRS */</span><br><span>     ms = the_bts.ms_alloc(ms_class, ms_class);</span><br><span>@@ -2330,7 +2326,6 @@</span><br><span> </span><br><span>       setup_bts(&the_bts, ts_no, 4);</span><br><span>   the_bts.bts_data()->initial_mcs_dl = 9;</span><br><span style="color: hsl(0, 100%, 40%);">-      the_bts.bts_data()->egprs_enabled = true;</span><br><span> </span><br><span>     ul_tbf = puan_urbb_len_issue(&the_bts, ts_no, tlli, &fn, qta,</span><br><span>                ms_class, egprs_ms_class);</span><br><span>@@ -2471,7 +2466,6 @@</span><br><span> </span><br><span>       setup_bts(&the_bts, ts_no, 4);</span><br><span>   the_bts.bts_data()->initial_mcs_dl = 9;</span><br><span style="color: hsl(0, 100%, 40%);">-      the_bts.bts_data()->egprs_enabled = true;</span><br><span> </span><br><span>     ul_tbf = tbf_li_decoding(&the_bts, ts_no, tlli, &fn, qta,</span><br><span>            ms_class, egprs_ms_class);</span><br><span>@@ -2515,7 +2509,6 @@</span><br><span> </span><br><span>       setup_bts(&the_bts, ts_no);</span><br><span>      OSMO_ASSERT(osmo_tdef_set(bts->T_defs_pcu, -2031, 200, OSMO_TDEF_MS) == 0);</span><br><span style="color: hsl(0, 100%, 40%);">-  bts->egprs_enabled = true;</span><br><span>        /* ARQ II */</span><br><span>         bts->dl_arq_type = EGPRS_ARQ2;</span><br><span> </span><br><span>@@ -2599,7 +2592,6 @@</span><br><span> </span><br><span>    setup_bts(&the_bts, ts_no, 4);</span><br><span>   the_bts.bts_data()->initial_mcs_dl = 9;</span><br><span style="color: hsl(0, 100%, 40%);">-      the_bts.bts_data()->egprs_enabled = true;</span><br><span> </span><br><span>     ul_tbf = establish_ul_tbf_two_phase_spb(&the_bts, ts_no, tlli, &fn, qta,</span><br><span>             ms_class, egprs_ms_class);</span><br><span>@@ -2629,7 +2621,6 @@</span><br><span> </span><br><span>       setup_bts(&the_bts, ts_no, 4);</span><br><span>   the_bts.bts_data()->initial_mcs_dl = 9;</span><br><span style="color: hsl(0, 100%, 40%);">-      the_bts.bts_data()->egprs_enabled = true;</span><br><span> </span><br><span>     ul_tbf = establish_ul_tbf_two_phase(&the_bts, ts_no, tlli, &fn, qta,</span><br><span>                 ms_class, egprs_ms_class);</span><br><span>@@ -3054,7 +3045,6 @@</span><br><span>   bts->cs_downgrade_threshold = 0;</span><br><span>  setup_bts(&the_bts, ts_no);</span><br><span>      OSMO_ASSERT(osmo_tdef_set(bts->T_defs_pcu, -2031, 200, OSMO_TDEF_MS) == 0);</span><br><span style="color: hsl(0, 100%, 40%);">-  bts->egprs_enabled = true;</span><br><span>        /* ARQ II */</span><br><span>         bts->dl_arq_type = EGPRS_ARQ2;</span><br><span> </span><br><span>@@ -3083,7 +3073,6 @@</span><br><span>        bts->cs_downgrade_threshold = 0;</span><br><span>  setup_bts(&the_bts, ts_no);</span><br><span>      OSMO_ASSERT(osmo_tdef_set(bts->T_defs_pcu, -2031, 200, OSMO_TDEF_MS) == 0);</span><br><span style="color: hsl(0, 100%, 40%);">-  bts->egprs_enabled = true;</span><br><span> </span><br><span>    /* ARQ I resegmentation support */</span><br><span>   bts->dl_arq_type = EGPRS_ARQ1;</span><br><span>@@ -3115,7 +3104,6 @@</span><br><span> </span><br><span>        setup_bts(&the_bts, ts_no);</span><br><span>      OSMO_ASSERT(osmo_tdef_set(bts->T_defs_pcu, -2031, 200, OSMO_TDEF_MS) == 0);</span><br><span style="color: hsl(0, 100%, 40%);">-  bts->egprs_enabled = true;</span><br><span>        /* ARQ II */</span><br><span>         bts->dl_arq_type = EGPRS_ARQ2;</span><br><span> </span><br><span>diff --git a/tests/types/TypesTest.cpp b/tests/types/TypesTest.cpp</span><br><span>index eeebc70..feccf42 100644</span><br><span>--- a/tests/types/TypesTest.cpp</span><br><span>+++ b/tests/types/TypesTest.cpp</span><br><span>@@ -670,7 +670,6 @@</span><br><span>         fprintf(stderr, "############## test_egprs_ul_ack_nack\n");</span><br><span> </span><br><span>    BTS the_bts;</span><br><span style="color: hsl(0, 100%, 40%);">-    the_bts.bts_data()->egprs_enabled = true;</span><br><span>         the_bts.bts_data()->alloc_algorithm = alloc_algorithm_a;</span><br><span>  the_bts.bts_data()->trx[0].pdch[4].enable();</span><br><span> </span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-pcu/+/20994">change 20994</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/+/20994"/><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: Ifcf23771bd23afc64ca6fea38948f98f2d134ecb </div>
<div style="display:none"> Gerrit-Change-Number: 20994 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>