<p>pespin has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-pcu/+/23109">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">Remove uneeded ms param from alloc_algorithm_func_t func<br><br>Since a while ago, the data architecture was changed so that TBF is<br>guaranteed to always have a MS object associated. Hence, it makes no<br>sense to pass the MS object as a separate param as we can take it from<br>tbf object and makes code less confusing.<br><br>Change-Id: Idc0c76cf6f007afa4236480cdad0d8e99dabec5f<br>---<br>M src/gprs_pcu.h<br>M src/gprs_rlcmac.h<br>M src/gprs_rlcmac_ts_alloc.cpp<br>M src/tbf.cpp<br>M tests/alloc/AllocTest.cpp<br>5 files changed, 17 insertions(+), 27 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/09/23109/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/gprs_pcu.h b/src/gprs_pcu.h</span><br><span>index 76e3937..a17144c 100644</span><br><span>--- a/src/gprs_pcu.h</span><br><span>+++ b/src/gprs_pcu.h</span><br><span>@@ -67,7 +67,6 @@</span><br><span> struct gprs_rlcmac_tbf;</span><br><span> </span><br><span> typedef int (*alloc_algorithm_func_t)(struct gprs_rlcmac_bts *bts,</span><br><span style="color: hsl(0, 100%, 40%);">-                                  struct GprsMs *ms,</span><br><span>                                   struct gprs_rlcmac_tbf *tbf,</span><br><span>                                 bool single, int8_t use_tbf);</span><br><span> </span><br><span>diff --git a/src/gprs_rlcmac.h b/src/gprs_rlcmac.h</span><br><span>index 69fd6a4..cf95c37 100644</span><br><span>--- a/src/gprs_rlcmac.h</span><br><span>+++ b/src/gprs_rlcmac.h</span><br><span>@@ -104,13 +104,13 @@</span><br><span> </span><br><span> extern "C" {</span><br><span> #endif</span><br><span style="color: hsl(0, 100%, 40%);">-int alloc_algorithm_a(struct gprs_rlcmac_bts *bts, struct GprsMs *ms, struct gprs_rlcmac_tbf *tbf, bool single,</span><br><span style="color: hsl(120, 100%, 40%);">+int alloc_algorithm_a(struct gprs_rlcmac_bts *bts, struct gprs_rlcmac_tbf *tbf, bool single,</span><br><span>                      int8_t use_trx);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-int alloc_algorithm_b(struct gprs_rlcmac_bts *bts, struct GprsMs *ms, struct gprs_rlcmac_tbf *tbf, bool single,</span><br><span style="color: hsl(120, 100%, 40%);">+int alloc_algorithm_b(struct gprs_rlcmac_bts *bts, struct gprs_rlcmac_tbf *tbf, bool single,</span><br><span>                    int8_t use_trx);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-int alloc_algorithm_dynamic(struct gprs_rlcmac_bts *bts, struct GprsMs *ms, struct gprs_rlcmac_tbf *tbf, bool single,</span><br><span style="color: hsl(120, 100%, 40%);">+int alloc_algorithm_dynamic(struct gprs_rlcmac_bts *bts, struct gprs_rlcmac_tbf *tbf, bool single,</span><br><span>                      int8_t use_trx);</span><br><span> </span><br><span> int gprs_rlcmac_paging_request(struct gprs_rlcmac_bts *bts, const struct osmo_mobile_identity *mi, uint16_t pgroup);</span><br><span>diff --git a/src/gprs_rlcmac_ts_alloc.cpp b/src/gprs_rlcmac_ts_alloc.cpp</span><br><span>index 7202423..1dc31f6 100644</span><br><span>--- a/src/gprs_rlcmac_ts_alloc.cpp</span><br><span>+++ b/src/gprs_rlcmac_ts_alloc.cpp</span><br><span>@@ -338,13 +338,12 @@</span><br><span>  * Assign single slot for uplink and downlink</span><br><span>  *</span><br><span>  *  \param[in,out] bts Pointer to BTS struct</span><br><span style="color: hsl(0, 100%, 40%);">- *  \param[in,out] ms_ Pointer to MS object</span><br><span>  *  \param[in,out] tbf_ Pointer to TBF struct</span><br><span>  *  \param[in] single flag indicating if we should force single-slot allocation</span><br><span>  *  \param[in] use_trx which TRX to use or -1 if it should be selected during allocation</span><br><span>  *  \returns negative error code or 0 on success</span><br><span>  */</span><br><span style="color: hsl(0, 100%, 40%);">-int alloc_algorithm_a(struct gprs_rlcmac_bts *bts, GprsMs *ms_, struct gprs_rlcmac_tbf *tbf_, bool single,</span><br><span style="color: hsl(120, 100%, 40%);">+int alloc_algorithm_a(struct gprs_rlcmac_bts *bts, struct gprs_rlcmac_tbf *tbf_, bool single,</span><br><span>                int8_t use_trx)</span><br><span> {</span><br><span>   struct gprs_rlcmac_pdch *pdch;</span><br><span>@@ -355,7 +354,7 @@</span><br><span>         int usf = -1;</span><br><span>        uint8_t mask = 0xff;</span><br><span>         const char *mask_reason = NULL;</span><br><span style="color: hsl(0, 100%, 40%);">- const GprsMs *ms = ms_;</span><br><span style="color: hsl(120, 100%, 40%);">+       struct GprsMs *ms = tbf_->ms();</span><br><span>   const gprs_rlcmac_tbf *tbf = tbf_;</span><br><span>   gprs_rlcmac_trx *trx = ms_current_trx(ms);</span><br><span> </span><br><span>@@ -420,7 +419,7 @@</span><br><span>         tbf_->trx = trx;</span><br><span>  /* the only one TS is the common TS */</span><br><span>       tbf_->first_ts = tbf_->first_common_ts = ts;</span><br><span style="color: hsl(0, 100%, 40%);">-      ms_set_reserved_slots(ms_, trx, 1 << ts, 1 << ts);</span><br><span style="color: hsl(120, 100%, 40%);">+        ms_set_reserved_slots(ms, trx, 1 << ts, 1 << ts);</span><br><span> </span><br><span>    tbf_->upgrade_to_multislot = 0;</span><br><span>   bts_do_rate_ctr_inc(bts, CTR_TBF_ALLOC_ALGO_A);</span><br><span>@@ -853,13 +852,12 @@</span><br><span>  * Assign one uplink slot. (With free USF)</span><br><span>  *</span><br><span>  *  \param[in,out] bts Pointer to BTS struct</span><br><span style="color: hsl(0, 100%, 40%);">- *  \param[in,out] ms_ Pointer to MS object</span><br><span>  *  \param[in,out] tbf_ Pointer to TBF struct</span><br><span>  *  \param[in] single flag indicating if we should force single-slot allocation</span><br><span>  *  \param[in] use_trx which TRX to use or -1 if it should be selected during allocation</span><br><span>  *  \returns negative error code or 0 on success</span><br><span>  */</span><br><span style="color: hsl(0, 100%, 40%);">-int alloc_algorithm_b(struct gprs_rlcmac_bts *bts, GprsMs *ms_, struct gprs_rlcmac_tbf *tbf_, bool single,</span><br><span style="color: hsl(120, 100%, 40%);">+int alloc_algorithm_b(struct gprs_rlcmac_bts *bts, struct gprs_rlcmac_tbf *tbf_, bool single,</span><br><span>                 int8_t use_trx)</span><br><span> {</span><br><span>   uint8_t dl_slots;</span><br><span>@@ -873,7 +871,7 @@</span><br><span>      int usf[8] = {-1, -1, -1, -1, -1, -1, -1, -1};</span><br><span>       int rc;</span><br><span>      int tfi;</span><br><span style="color: hsl(0, 100%, 40%);">-        const GprsMs *ms = ms_;</span><br><span style="color: hsl(120, 100%, 40%);">+       struct GprsMs *ms = tbf_->ms();</span><br><span>   const gprs_rlcmac_tbf *tbf = tbf_;</span><br><span>   gprs_rlcmac_trx *trx;</span><br><span> </span><br><span>@@ -881,10 +879,7 @@</span><br><span> </span><br><span>         /* Step 1: Get current state from the MS object */</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-  if (!ms) {</span><br><span style="color: hsl(0, 100%, 40%);">-              LOGP(DRLCMAC, LOGL_ERROR, "MS not set\n");</span><br><span style="color: hsl(0, 100%, 40%);">-            return -EINVAL;</span><br><span style="color: hsl(0, 100%, 40%);">- }</span><br><span style="color: hsl(120, 100%, 40%);">+     OSMO_ASSERT(ms);</span><br><span> </span><br><span>         dl_slots = ms_reserved_dl_slots(ms);</span><br><span>         ul_slots = ms_reserved_ul_slots(ms);</span><br><span>@@ -958,7 +953,7 @@</span><br><span> </span><br><span>       /* Step 4: Update MS and TBF and really allocate the resources */</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   update_ms_reserved_slots(trx, ms_, reserved_ul_slots, reserved_dl_slots, ul_slots, dl_slots);</span><br><span style="color: hsl(120, 100%, 40%);">+ update_ms_reserved_slots(trx, ms, reserved_ul_slots, reserved_dl_slots, ul_slots, dl_slots);</span><br><span> </span><br><span>     tbf_->trx = trx;</span><br><span>  tbf_->first_common_ts = first_common_ts;</span><br><span>@@ -983,13 +978,12 @@</span><br><span>  * goal is to provide the highest possible bandwidth per MS.</span><br><span>  *</span><br><span>  *  \param[in,out] bts Pointer to BTS struct</span><br><span style="color: hsl(0, 100%, 40%);">- *  \param[in,out] ms_ Pointer to MS object</span><br><span>  *  \param[in,out] tbf_ Pointer to TBF struct</span><br><span>  *  \param[in] single flag indicating if we should force single-slot allocation</span><br><span>  *  \param[in] use_trx which TRX to use or -1 if it should be selected during allocation</span><br><span>  *  \returns negative error code or 0 on success</span><br><span>  */</span><br><span style="color: hsl(0, 100%, 40%);">-int alloc_algorithm_dynamic(struct gprs_rlcmac_bts *bts, GprsMs *ms_, struct gprs_rlcmac_tbf *tbf_, bool single,</span><br><span style="color: hsl(120, 100%, 40%);">+int alloc_algorithm_dynamic(struct gprs_rlcmac_bts *bts, struct gprs_rlcmac_tbf *tbf_, bool single,</span><br><span>                             int8_t use_trx)</span><br><span> {</span><br><span>     int rc;</span><br><span>@@ -1002,7 +996,7 @@</span><br><span>       }</span><br><span> </span><br><span>        if (!bts->multislot_disabled) {</span><br><span style="color: hsl(0, 100%, 40%);">-              rc = alloc_algorithm_b(bts, ms_, tbf_, single, use_trx);</span><br><span style="color: hsl(120, 100%, 40%);">+              rc = alloc_algorithm_b(bts, tbf_, single, use_trx);</span><br><span>          if (rc >= 0)</span><br><span>                      return rc;</span><br><span> </span><br><span>@@ -1011,7 +1005,7 @@</span><br><span>               bts->multislot_disabled = 1;</span><br><span>      }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   return alloc_algorithm_a(bts, ms_, tbf_, single, use_trx);</span><br><span style="color: hsl(120, 100%, 40%);">+    return alloc_algorithm_a(bts, tbf_, single, use_trx);</span><br><span> }</span><br><span> </span><br><span> int gprs_alloc_max_dl_slots_per_ms(const struct gprs_rlcmac_bts *bts, uint8_t ms_class)</span><br><span>diff --git a/src/tbf.cpp b/src/tbf.cpp</span><br><span>index 2f58375..5ca34f4 100644</span><br><span>--- a/src/tbf.cpp</span><br><span>+++ b/src/tbf.cpp</span><br><span>@@ -331,7 +331,7 @@</span><br><span>     LOGP(DTBF, LOGL_DEBUG, "********** DL-TBF update **********\n");</span><br><span> </span><br><span>       tbf_unlink_pdch(this);</span><br><span style="color: hsl(0, 100%, 40%);">-  rc = the_pcu->alloc_algorithm(bts, ms(), this, false, -1);</span><br><span style="color: hsl(120, 100%, 40%);">+ rc = the_pcu->alloc_algorithm(bts, this, false, -1);</span><br><span>      /* if no resource */</span><br><span>         if (rc < 0) {</span><br><span>             LOGPTBF(this, LOGL_ERROR, "No resource after update???\n");</span><br><span>@@ -749,7 +749,7 @@</span><br><span> </span><br><span>      m_created_ts = time(NULL);</span><br><span>   /* select algorithm */</span><br><span style="color: hsl(0, 100%, 40%);">-  rc = the_pcu->alloc_algorithm(bts, m_ms, this, single_slot, use_trx);</span><br><span style="color: hsl(120, 100%, 40%);">+      rc = the_pcu->alloc_algorithm(bts, this, single_slot, use_trx);</span><br><span>   /* if no resource */</span><br><span>         if (rc < 0) {</span><br><span>             LOGPTBF(this, LOGL_NOTICE,</span><br><span>diff --git a/tests/alloc/AllocTest.cpp b/tests/alloc/AllocTest.cpp</span><br><span>index d626692..fe803e3 100644</span><br><span>--- a/tests/alloc/AllocTest.cpp</span><br><span>+++ b/tests/alloc/AllocTest.cpp</span><br><span>@@ -423,9 +423,6 @@</span><br><span>    test_all_alloc_b();</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-typedef int (*algo_t)(struct gprs_rlcmac_bts *bts, struct GprsMs *ms, struct gprs_rlcmac_tbf *tbf, bool single,</span><br><span style="color: hsl(0, 100%, 40%);">-                   int8_t use_trx);</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span> static char get_dir_char(uint8_t mask, uint8_t tx, uint8_t rx, uint8_t busy)</span><br><span> {</span><br><span>  int offs = busy ? 32 : 0;</span><br><span>@@ -640,7 +637,7 @@</span><br><span>      return counter;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-static void test_successive_allocation(algo_t algo, unsigned min_class,</span><br><span style="color: hsl(120, 100%, 40%);">+static void test_successive_allocation(alloc_algorithm_func_t algo, unsigned min_class,</span><br><span>     unsigned max_class, enum test_mode mode,</span><br><span>     unsigned expect_num, const char *text)</span><br><span> {</span><br><span>@@ -674,7 +671,7 @@</span><br><span>    talloc_free(bts);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-static void test_many_connections(algo_t algo, unsigned expect_num,</span><br><span style="color: hsl(120, 100%, 40%);">+static void test_many_connections(alloc_algorithm_func_t algo, unsigned expect_num,</span><br><span>   const char *text)</span><br><span> {</span><br><span>       struct gprs_rlcmac_bts *bts = bts_alloc(the_pcu, 0);</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-pcu/+/23109">change 23109</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/+/23109"/><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: Idc0c76cf6f007afa4236480cdad0d8e99dabec5f </div>
<div style="display:none"> Gerrit-Change-Number: 23109 </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>