Hello Harald Welte, Jenkins Builder,

I'd like you to reexamine a change.  Please visit

    https://gerrit.osmocom.org/3934

to look at the new patch set (#2).

Simplify TS alloc: separate capacity computation

Move TRX capacity computation into separate function and document it.

Change-Id: Ifd88fc7ff818ea2a041eae61c5d457926a0df0f2
Related: OS#2282
---
M src/gprs_rlcmac_ts_alloc.cpp
1 file changed, 28 insertions(+), 20 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/osmo-pcu refs/changes/34/3934/2

diff --git a/src/gprs_rlcmac_ts_alloc.cpp b/src/gprs_rlcmac_ts_alloc.cpp
index ea699ff..8cdfc9a 100644
--- a/src/gprs_rlcmac_ts_alloc.cpp
+++ b/src/gprs_rlcmac_ts_alloc.cpp
@@ -499,6 +499,33 @@
        return 0;
 }
 
+/*! Compute capacity of a given TRX
+ *
+ *  \param[in] trx Pointer to TRX object
+ *  \param[in] rx_window Receive window
+ *  \param[in] tx_window Transmit window
+ *  \returns non-negative capacity
+ */
+static inline unsigned compute_capacity(const struct gprs_rlcmac_trx *trx, int 
rx_window, int tx_window)
+{
+       const struct gprs_rlcmac_pdch *pdch;
+       unsigned ts, capacity = 0;
+
+       for (ts = 0; ts < ARRAY_SIZE(trx->pdch); ts++) {
+               pdch = &trx->pdch[ts];
+               if (rx_window & (1 << ts))
+                       capacity += OSMO_MAX(32 - 
pdch->num_reserved(GPRS_RLCMAC_DL_TBF), 1);
+
+               /* Only consider common slots for UL */
+               if (tx_window & rx_window & (1 << ts)) {
+                       if (find_free_usf(pdch) >= 0)
+                               capacity += OSMO_MAX(32 - 
pdch->num_reserved(GPRS_RLCMAC_UL_TBF), 1);
+               }
+       }
+
+       return capacity;
+}
+
 /*! Find set of slots available for allocation while taking MS class into 
account
  *
  *  \param[in] trx Pointer to TRX object
@@ -653,7 +680,6 @@
                                        unsigned rx_slot_count;
                                        uint16_t rx_bad;
                                        uint8_t rx_good;
-                                       unsigned ts;
                                        int capacity;
 
                                        /* Filter out bad slots */
@@ -709,25 +735,7 @@
                                                continue;
 
                                        /* Compute capacity */
-                                       capacity = 0;
-
-                                       for (ts = 0; ts < 
ARRAY_SIZE(trx->pdch); ts++) {
-                                               int c;
-                                               const struct gprs_rlcmac_pdch 
*pdch = &trx->pdch[ts];
-                                               if (rx_window & (1 << ts)) {
-                                                       c = 32 - 
pdch->num_reserved(GPRS_RLCMAC_DL_TBF);
-                                                       c = OSMO_MAX(c, 1);
-                                                       capacity += c;
-                                               }
-                                               /* Only consider common slots 
for UL */
-                                               if (tx_window & rx_window & (1 
<< ts)) {
-                                                       if (find_free_usf(pdch) 
>= 0) {
-                                                               c = 32 - 
pdch->num_reserved(GPRS_RLCMAC_UL_TBF);
-                                                               c = OSMO_MAX(c, 
1);
-                                                               capacity += c;
-                                                       }
-                                               }
-                                       }
+                                       capacity = compute_capacity(trx, 
rx_window, tx_window);
 
                                        if (capacity <= max_capacity)
                                                continue;

-- 
To view, visit https://gerrit.osmocom.org/3934
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newpatchset
Gerrit-Change-Id: Ifd88fc7ff818ea2a041eae61c5d457926a0df0f2
Gerrit-PatchSet: 2
Gerrit-Project: osmo-pcu
Gerrit-Branch: master
Gerrit-Owner: Max <msur...@sysmocom.de>
Gerrit-Reviewer: Harald Welte <lafo...@gnumonks.org>
Gerrit-Reviewer: Jenkins Builder

Reply via email to