This is merely a historical archive of years 2008-2021, before the migration to mailman3.
A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.
Max gerrit-no-reply at lists.osmocom.orgHello 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 (#3).
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, 32 insertions(+), 21 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-pcu refs/changes/34/3934/3
diff --git a/src/gprs_rlcmac_ts_alloc.cpp b/src/gprs_rlcmac_ts_alloc.cpp
index 78cf539..8311e22 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
@@ -654,7 +681,6 @@
unsigned rx_slot_count;
uint16_t rx_bad;
uint8_t rx_good;
- unsigned ts;
int capacity;
/* Filter out bad slots */
@@ -714,25 +740,7 @@
}
/* 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;
@@ -740,7 +748,10 @@
max_capacity = capacity;
max_ul_slots = tx_window;
max_dl_slots = rx_window;
- }}}}
+ }
+ }
+ }
+ }
if (!max_ul_slots || !max_dl_slots) {
LOGP(DRLCMAC, LOGL_NOTICE,
--
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: 3
Gerrit-Project: osmo-pcu
Gerrit-Branch: master
Gerrit-Owner: Max <msuraev at sysmocom.de>
Gerrit-Reviewer: Harald Welte <laforge at gnumonks.org>
Gerrit-Reviewer: Jenkins Builder