tbf: Re-send dl assignment if we can upgrade to multislot

The current code would only ever assign one PDCH for the initial
assignment (from CCCH). Only if reuse_tbf is called the algorithm would
actually use multiple DL PDCHs if possible.

This patch introduced a tbf attribute upgrade_to_multislot that is set
if we have multiple PDCH configured, and support multislot assignment,
but can only assign a single PDCH (alloc_algorithm_b, parameter single
is set). In this case after the assignment completes (and the MS is
listening on a PDCH) we resend a DL assignment though the PACCH and this
time we can assign multiple timeslots.
diff --git a/src/gprs_rlcmac_ts_alloc.cpp b/src/gprs_rlcmac_ts_alloc.cpp
index 4825db1..13fc636 100644
--- a/src/gprs_rlcmac_ts_alloc.cpp
+++ b/src/gprs_rlcmac_ts_alloc.cpp
@@ -175,6 +175,8 @@
 	/* the only one TS is the common TS */
 	tbf->first_ts = tbf->first_common_ts = ts;
 
+	tbf->upgrade_to_multislot = 0;
+
 	return 0;
 }
 
@@ -665,10 +667,17 @@
 		}
 	}
 	if (single && slotcount) {
+		uint8_t ts_count = 0;
+		for (ts = 0; ts < 8; ts++)
+			if ((tx_window & (1 << ts)))
+				ts_count++;
+
+		tbf->upgrade_to_multislot = (ts_count > 1);
 		LOGP(DRLCMAC, LOGL_INFO, "Using single slot at TS %d for %s\n",
 			tbf->first_ts,
 			(tbf->direction == GPRS_RLCMAC_DL_TBF) ? "DL" : "UL");
 	} else {
+		tbf->upgrade_to_multislot = 0;
 		LOGP(DRLCMAC, LOGL_INFO, "Using %d slots for %s\n", slotcount,
 			(tbf->direction == GPRS_RLCMAC_DL_TBF) ? "DL" : "UL");
 	}