aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJacob Erlbeck <jerlbeck@sysmocom.de>2015-07-01 13:10:41 +0200
committerJacob Erlbeck <jerlbeck@sysmocom.de>2015-07-07 10:22:18 +0200
commit5f494b8415ff4e5c9bf323ea7bc8326ad423c7ae (patch)
treee8aa04b66c4773fe4f62650d4e3b7bad94421d08 /src
parent9ae282372c9b3e10050244b8a1c9179122556175 (diff)
alloc: Only reserve 1 UL slot with algorithm B
Since currently the algorithm B will only allocate a single UL slot and will have to stick to it (first common TS), the other possible UL slots will not be allocated while the reservation is kept. This commit adds code to update the reserved set of UL slots to only reserve the single common TS when the UL TBF is allocated. Interestingly this leads to fewer allocated TBF in some cases due to USF exhaustion. This will be improved by the following commit "alloc: Skip common TS without free USF". Sponsored-by: On-Waves ehf
Diffstat (limited to 'src')
-rw-r--r--src/gprs_rlcmac_ts_alloc.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/gprs_rlcmac_ts_alloc.cpp b/src/gprs_rlcmac_ts_alloc.cpp
index bfc8c31e..338362c6 100644
--- a/src/gprs_rlcmac_ts_alloc.cpp
+++ b/src/gprs_rlcmac_ts_alloc.cpp
@@ -732,6 +732,11 @@ int alloc_algorithm_b(struct gprs_rlcmac_bts *bts,
slotcount++;
ul_tbf->first_ts = ts;
+ /* We will stick to that single UL slot, unreserve the others */
+ if (ul_slots != ms->reserved_ul_slots())
+ ms->set_reserved_slots(tbf->trx,
+ ul_slots, ms->reserved_dl_slots());
+
avail_count = bitcount(ms->reserved_ul_slots());
#if 0 /* This code assigns multiple slots for UL (and wastes USFs that way) */
for (ts = 0; ts < 8; ts++) {