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
diff --git a/src/gprs_rlcmac_ts_alloc.cpp b/src/gprs_rlcmac_ts_alloc.cpp
index bfc8c31..338362c 100644
--- a/src/gprs_rlcmac_ts_alloc.cpp
+++ b/src/gprs_rlcmac_ts_alloc.cpp
@@ -732,6 +732,11 @@
 		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++) {