From 77da35515ce40baf2305cf7cf5e4008f6b478e36 Mon Sep 17 00:00:00 2001 From: Jacob Erlbeck Date: Thu, 16 Jul 2015 18:33:46 +0200 Subject: [PATCH] alloc: Make alloc_algorithm_dynamic stateful Currently there is no persistent state being used in alloc_algorithm_dynamic. So algorithm B is even used in persistent high usage scenarios. If there are many active TBFs, multislot assigments are not fair, because MS of a "higher" multislot class get higher troughputs. On the other hand, as long as all PDCH are busy no bandwidth will be wasted even if all MS use algorithm A. This commit modifies alloc_algorithm_dynamic to disable algorithm B when that call fails. It then keeps it disabled until there is a single PDCH which is idle (it is considered idle, if there is at most one active DL TBF assigned to it). Sponsored-by: On-Waves ehf --- src/bts.h | 2 + src/gprs_rlcmac_ts_alloc.cpp | 46 +- tests/alloc/AllocTest.cpp | 4 +- tests/alloc/AllocTest.err | 1012 +++++++--------------------------- tests/alloc/AllocTest.ok | 660 +++++++++++++--------- 5 files changed, 648 insertions(+), 1076 deletions(-) diff --git a/src/bts.h b/src/bts.h index f2b992bd..1a6d259a 100644 --- a/src/bts.h +++ b/src/bts.h @@ -182,6 +182,8 @@ struct gprs_rlcmac_bts { /* list of downlink TBFs */ struct llist_head dl_tbfs; + /* State for dynamic algorithm selection */ + int multislot_disabled; /** * Point back to the C++ object. This is used during the transition diff --git a/src/gprs_rlcmac_ts_alloc.cpp b/src/gprs_rlcmac_ts_alloc.cpp index e2c2a0f4..3714b30c 100644 --- a/src/gprs_rlcmac_ts_alloc.cpp +++ b/src/gprs_rlcmac_ts_alloc.cpp @@ -28,6 +28,9 @@ #include #include +/* Consider a PDCH as idle if has at most this number of TBFs assigned to it */ +#define PDCH_IDLE_TBF_THRESH 1 + /* 3GPP TS 05.02 Annex B.1 */ #define MS_NA 255 /* N/A */ @@ -363,6 +366,30 @@ static int find_trx(BTS *bts, const GprsMs *ms, int use_trx) return -EBUSY; } +static struct gprs_rlcmac_pdch * find_idle_pdch(BTS *bts) +{ + unsigned trx_no; + unsigned ts; + struct gprs_rlcmac_bts *bts_data = bts->bts_data(); + + /* Find the first PDCH with an unused DL TS */ + for (trx_no = 0; trx_no < ARRAY_SIZE(bts_data->trx); trx_no += 1) { + struct gprs_rlcmac_trx *trx = &bts_data->trx[trx_no]; + for (ts = 0; ts < ARRAY_SIZE(trx->pdch); ts++) { + struct gprs_rlcmac_pdch *pdch = &trx->pdch[ts]; + if (!pdch->is_enabled()) + continue; + + if (pdch->num_tbfs(GPRS_RLCMAC_DL_TBF) > PDCH_IDLE_TBF_THRESH) + continue; + + return pdch; + } + } + + return NULL; +} + static int tfi_find_free(BTS *bts, const GprsMs *ms, enum gprs_rlcmac_tbf_direction dir, int use_trx, int *trx_no_) { @@ -1030,9 +1057,22 @@ int alloc_algorithm_dynamic(struct gprs_rlcmac_bts *bts, { int rc; - rc = alloc_algorithm_b(bts, ms_, tbf_, cust, single, use_trx); - if (rc >= 0) - return rc; + /* Reset load_is_high if there is at least one idle PDCH */ + if (bts->multislot_disabled) { + bts->multislot_disabled = find_idle_pdch(bts->bts) == NULL; + if (!bts->multislot_disabled) + LOGP(DRLCMAC, LOGL_DEBUG, "Enabling algorithm B\n"); + } + + if (!bts->multislot_disabled) { + rc = alloc_algorithm_b(bts, ms_, tbf_, cust, single, use_trx); + if (rc >= 0) + return rc; + + if (!bts->multislot_disabled) + LOGP(DRLCMAC, LOGL_DEBUG, "Disabling algorithm B\n"); + bts->multislot_disabled = 1; + } rc = alloc_algorithm_a(bts, ms_, tbf_, cust, single, use_trx); return rc; diff --git a/tests/alloc/AllocTest.cpp b/tests/alloc/AllocTest.cpp index 429f588a..4b532246 100644 --- a/tests/alloc/AllocTest.cpp +++ b/tests/alloc/AllocTest.cpp @@ -759,7 +759,7 @@ static void test_successive_allocation() test_successive_allocation(alloc_algorithm_b, 10, 10, TEST_MODE_DL_AFTER_UL, 32, "algorithm B class 10 (DL after UL)"); test_successive_allocation(alloc_algorithm_dynamic, 10, 10, TEST_MODE_DL_AFTER_UL, - 63, "algorithm dynamic class 10 (DL after UL)"); + 95, "algorithm dynamic class 10 (DL after UL)"); test_successive_allocation(alloc_algorithm_a, 1, 1, TEST_MODE_UL_AFTER_DL, 35, "algorithm A (UL after DL)"); @@ -787,7 +787,7 @@ static void test_many_connections() { test_many_connections(alloc_algorithm_a, 160, "algorithm A"); test_many_connections(alloc_algorithm_b, 32, "algorithm B"); - test_many_connections(alloc_algorithm_dynamic, 121, "algorithm dynamic"); + test_many_connections(alloc_algorithm_dynamic, 160, "algorithm dynamic"); } int main(int argc, char **argv) diff --git a/tests/alloc/AllocTest.err b/tests/alloc/AllocTest.err index 8d91559a..a74c42bb 100644 --- a/tests/alloc/AllocTest.err +++ b/tests/alloc/AllocTest.err @@ -25,20 +25,8 @@ No TFI available. No TFI available. - Failed to allocate a TFI No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI - Failed to allocate a TS, no USF available - Failed to allocate a TS, no USF available No TFI available. @@ -47,8 +35,6 @@ No TFI available. No TFI available. No TFI available. - Failed to allocate a TFI -No TFI available. -- Failed to allocate a TFI - Failed to allocate a TS, no USF available No TFI available. No TFI available. @@ -64,98 +50,68 @@ No TFI available. - Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI -- Failed to allocate a TS, no TFI available +No TFI available. +- Failed to find a usable TRX (TFI exhausted) - Failed to allocate a TS, no USF available No TFI available. No TFI available. @@ -204,211 +160,73 @@ No TFI available. - Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI - Failed to find a usable TRX (TFI exhausted) No TFI available. No TFI available. @@ -824,707 +642,253 @@ No TFI available. - Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. No TFI available. -- Failed to allocate a TFI No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -- Failed to allocate a TS, no TFI available - Allocated 78 TBFs (previously -1) -No USF available -- Failed to allocate a TS, no USF available - Allocated 24 TBFs (previously 78) -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -No TFI available. -No TFI available. -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -No TFI available. -No TFI available. -No TFI available. -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -- Failed to allocate a TS, no TFI available - Allocated 84 TBFs (previously 78) -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -No TFI available. -No TFI available. -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -No TFI available. -No TFI available. -No TFI available. -No TFI available. -No TFI available. -No TFI available. -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI -No TFI available. -No TFI available. -- Failed to allocate a TFI - Failed to find a usable TRX (TFI exhausted) - Allocated 121 TBFs (previously 84) + Allocated 97 TBFs (previously -1) +- Failed to allocate a TS, no USF available + Allocated 24 TBFs (previously 97) +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +- Failed to find a usable TRX (TFI exhausted) + Allocated 160 TBFs (previously 97) +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +No TFI available. +- Failed to find a usable TRX (TFI exhausted) + Allocated 160 TBFs (previously 160) diff --git a/tests/alloc/AllocTest.ok b/tests/alloc/AllocTest.ok index 046b51a1..9f88186a 100644 --- a/tests/alloc/AllocTest.ok +++ b/tests/alloc/AllocTest.ok @@ -9133,37 +9133,69 @@ Going to test assignment with many TBF, algorithm dynamic class 10 (DL after UL) TBF[30] class 10 reserves ...DCD.. TBF[31] class 10 reserves .....DCD TBF[1] class 10 reserves ...C.... + TBF[0] class 10 reserves .......C + TBF[3] class 10 reserves ...C.... + TBF[2] class 10 reserves .......C + TBF[5] class 10 reserves ...C.... + TBF[4] class 10 reserves .......C + TBF[7] class 10 reserves ...C.... + TBF[6] class 10 reserves .......C + TBF[9] class 10 reserves ...C.... + TBF[8] class 10 reserves .......C + TBF[11] class 10 reserves ...C.... TBF[1] class 10 reserves ....C... - TBF[2] class 10 reserves ......C. + TBF[10] class 10 reserves .......C + TBF[13] class 10 reserves ...C.... TBF[3] class 10 reserves ....C... - TBF[4] class 10 reserves ......C. + TBF[2] class 10 reserves ......C. + TBF[12] class 10 reserves .......C + TBF[15] class 10 reserves ...C.... TBF[5] class 10 reserves ....C... - TBF[6] class 10 reserves ......C. + TBF[4] class 10 reserves ......C. + TBF[14] class 10 reserves .......C + TBF[17] class 10 reserves ...C.... TBF[7] class 10 reserves ....C... - TBF[8] class 10 reserves ......C. + TBF[6] class 10 reserves ......C. + TBF[16] class 10 reserves .......C + TBF[19] class 10 reserves ...C.... TBF[9] class 10 reserves ....C... - TBF[10] class 10 reserves ......C. + TBF[8] class 10 reserves ......C. + TBF[18] class 10 reserves .......C + TBF[21] class 10 reserves ...C.... TBF[11] class 10 reserves ....C... - TBF[12] class 10 reserves ......C. + TBF[10] class 10 reserves ......C. + TBF[20] class 10 reserves .......C + TBF[23] class 10 reserves ...C.... TBF[13] class 10 reserves ....C... - TBF[14] class 10 reserves ......C. + TBF[12] class 10 reserves ......C. + TBF[22] class 10 reserves .......C + TBF[25] class 10 reserves ...C.... TBF[15] class 10 reserves ....C... - TBF[16] class 10 reserves ......C. + TBF[14] class 10 reserves ......C. + TBF[24] class 10 reserves .......C + TBF[27] class 10 reserves ...C.... TBF[17] class 10 reserves ....C... - TBF[18] class 10 reserves ......C. + TBF[16] class 10 reserves ......C. + TBF[26] class 10 reserves .......C + TBF[29] class 10 reserves ...C.... TBF[19] class 10 reserves ....C... - TBF[20] class 10 reserves ......C. + TBF[18] class 10 reserves ......C. + TBF[28] class 10 reserves .......C + TBF[31] class 10 reserves ...C.... TBF[21] class 10 reserves ....C... - TBF[22] class 10 reserves ......C. + TBF[20] class 10 reserves ......C. + TBF[30] class 10 reserves .......C TBF[23] class 10 reserves ....C... - TBF[24] class 10 reserves ......C. + TBF[22] class 10 reserves ......C. TBF[25] class 10 reserves ....C... - TBF[26] class 10 reserves ......C. + TBF[24] class 10 reserves ......C. TBF[27] class 10 reserves ....C... - TBF[28] class 10 reserves ......C. + TBF[26] class 10 reserves ......C. TBF[29] class 10 reserves ....C... + TBF[28] class 10 reserves ......C. + TBF[31] class 10 reserves ....C... TBF[30] class 10 reserves ......C. - Successfully allocated 63 UL TBFs + Successfully allocated 95 UL TBFs Going to test assignment with many TBF, algorithm A (UL after DL) TBF[0] class 1 reserves ...U.... TBF[0] class 1 reserves ....U... @@ -10354,73 +10386,92 @@ Going to test assignment with many connections, algorithm dynamic TBF[0] class 4 reserves .....C.. TBF[1] class 5 reserves ...C.... TBF[2] class 6 reserves ...C.... - TBF[4] class 7 reserves ...C.... - TBF[2] class 8 reserves .....C.. + TBF[0] class 7 reserves .......C + TBF[4] class 8 reserves ...C.... TBF[0] class 9 reserves ....C... - TBF[2] class 10 reserves ....C... - TBF[4] class 11 reserves ....C... - TBF[0] class 12 reserves ......C. - TBF[4] class 13 reserves .....C.. - TBF[6] class 14 reserves ....C... - TBF[6] class 15 reserves ...C.... - TBF[7] class 16 reserves ...C.... - TBF[9] class 17 reserves ...C.... - TBF[11] class 18 reserves ...C.... - TBF[1] class 19 reserves ......C. - TBF[3] class 20 reserves ......C. - TBF[5] class 21 reserves ......C. - TBF[8] class 22 reserves ......C. - TBF[9] class 23 reserves ....C... - TBF[10] class 24 reserves ......C. - TBF[11] class 25 reserves ....C... - TBF[12] class 26 reserves ......C. - TBF[18] class 27 reserves ....C... - TBF[19] class 28 reserves ......C. - TBF[20] class 29 reserves ....C... - TBF[0] class 1 reserves .......C - TBF[1] class 2 reserves .......C - TBF[3] class 3 reserves .......C - TBF[5] class 4 reserves .....C.. - TBF[21] class 5 reserves ......C. - TBF[23] class 6 reserves ......C. - TBF[22] class 7 reserves ....C... - TBF[29] class 8 reserves .....C.. - TBF[24] class 9 reserves ....C... - TBF[26] class 10 reserves ....C... - TBF[28] class 11 reserves ....C... - TBF[25] class 12 reserves ......C. - TBF[30] class 13 reserves .....C.. - TBF[29] class 14 reserves ....C... - TBF[13] class 15 reserves ...C.... - TBF[18] class 16 reserves ...C.... - TBF[20] class 17 reserves ...C.... - TBF[22] class 18 reserves ...C.... - TBF[27] class 19 reserves ......C. - TBF[29] class 20 reserves ......C. + TBF[1] class 10 reserves .......C + TBF[6] class 11 reserves ...C.... + TBF[2] class 12 reserves ....C... + TBF[0] class 13 reserves ......C. + TBF[3] class 14 reserves .......C + TBF[7] class 15 reserves ...C.... + TBF[4] class 16 reserves ....C... + TBF[1] class 17 reserves ......C. + TBF[5] class 18 reserves .......C + TBF[9] class 19 reserves ...C.... + TBF[6] class 20 reserves ....C... + TBF[3] class 21 reserves ......C. + TBF[6] class 22 reserves .......C + TBF[11] class 23 reserves ...C.... + TBF[9] class 24 reserves ....C... + TBF[2] class 25 reserves .....C.. + TBF[5] class 26 reserves ......C. + TBF[8] class 27 reserves .......C + TBF[13] class 28 reserves ...C.... + TBF[11] class 29 reserves ....C... + TBF[4] class 1 reserves .....C.. + TBF[8] class 2 reserves ......C. + TBF[10] class 3 reserves .......C + TBF[18] class 4 reserves ...C.... + TBF[18] class 5 reserves ....C... + TBF[5] class 6 reserves .....C.. + TBF[10] class 7 reserves ......C. + TBF[12] class 8 reserves .......C + TBF[20] class 9 reserves ...C.... + TBF[20] class 10 reserves ....C... + TBF[29] class 11 reserves .....C.. + TBF[12] class 12 reserves ......C. + TBF[19] class 13 reserves .......C + TBF[22] class 14 reserves ...C.... + TBF[22] class 15 reserves ....C... + TBF[30] class 16 reserves .....C.. + TBF[19] class 17 reserves ......C. + TBF[21] class 18 reserves .......C + TBF[24] class 19 reserves ...C.... + TBF[24] class 20 reserves ....C... + TBF[31] class 21 reserves .....C.. + TBF[21] class 22 reserves ......C. + TBF[23] class 23 reserves .......C + TBF[26] class 24 reserves ...C.... + TBF[26] class 25 reserves ....C... + TBF[23] class 26 reserves ......C. + TBF[25] class 27 reserves .......C + TBF[28] class 28 reserves ...C.... + TBF[28] class 29 reserves ....C... + TBF[25] class 1 reserves ......C. + TBF[27] class 2 reserves .......C + TBF[29] class 3 reserves ...C.... + TBF[29] class 4 reserves ....C... + TBF[27] class 5 reserves ......C. + TBF[30] class 6 reserves ...C.... + TBF[30] class 7 reserves ....C... + TBF[29] class 8 reserves ......C. + TBF[31] class 9 reserves ...C.... + TBF[31] class 10 reserves ....C... TBF[0] class 1 reserves ...C.... - TBF[1] class 2 reserves ....DC.. - TBF[2] class 3 reserves ......DC - TBF[3] class 4 reserves ...DCD.. - TBF[4] class 5 reserves ......CD - TBF[5] class 6 reserves ...CD... - TBF[6] class 7 reserves .....CD. - TBF[7] class 8 reserves ....DDCD - TBF[8] class 9 reserves ...DCD.. - TBF[9] class 10 reserves .....DCD - TBF[10] class 11 reserves ...DCD.. - TBF[11] class 12 reserves .....DCD - TBF[12] class 13 reserves ...CDD.. - TBF[13] class 14 reserves ....CDDD - TBF[14] class 15 reserves ...CDDDD - TBF[15] class 16 reserves ...CDDDD - TBF[16] class 17 reserves ...CDDDD - TBF[17] class 18 reserves ...CDDDD - TBF[18] class 19 reserves .....DCD - TBF[19] class 20 reserves ...DCD.. - TBF[20] class 21 reserves .....DCD - TBF[21] class 22 reserves ...DCD.. - TBF[22] class 23 reserves .....DCD - TBF[23] class 24 reserves ...DCD.. + TBF[0] class 2 reserves ....DC.. + TBF[0] class 3 reserves ......DC + TBF[0] class 4 reserves ...DCD.. + TBF[0] class 5 reserves ......CD + TBF[1] class 6 reserves ...CD... + TBF[1] class 7 reserves .....CD. + TBF[1] class 8 reserves ....DDCD + TBF[1] class 9 reserves ...DCD.. + TBF[2] class 10 reserves .....DCD + TBF[2] class 11 reserves ...DCD.. + TBF[3] class 12 reserves .....DCD + TBF[2] class 13 reserves ...CDD.. + TBF[3] class 14 reserves ....CDDD + TBF[3] class 15 reserves ...CDDDD + TBF[4] class 16 reserves ...CDDDD + TBF[5] class 17 reserves ...CDDDD + TBF[6] class 18 reserves ...CDDDD + TBF[4] class 19 reserves .....DCD + TBF[4] class 20 reserves ...DCD.. + TBF[5] class 21 reserves .....DCD + TBF[5] class 22 reserves ...DCD.. + TBF[6] class 23 reserves .....DCD + TBF[6] class 24 reserves ...DCD.. TBF[0] class 1 reserves ...C.... TBF[1] class 2 reserves .....C.. TBF[2] class 3 reserves .......C @@ -10435,195 +10486,310 @@ Going to test assignment with many connections, algorithm dynamic TBF[7] class 12 reserves ......C. TBF[5] class 13 reserves ...C.... TBF[7] class 14 reserves ....C... - TBF[14] class 15 reserves ...CDDDD - TBF[15] class 16 reserves ...CDDDD - TBF[16] class 17 reserves ...CDDDD - TBF[17] class 18 reserves ...CDDDD + TBF[8] class 15 reserves ...C.... + TBF[10] class 16 reserves ...C.... + TBF[12] class 17 reserves ...C.... + TBF[14] class 18 reserves ...C.... TBF[9] class 19 reserves ......C. TBF[8] class 20 reserves ....C... TBF[11] class 21 reserves ......C. TBF[10] class 22 reserves ....C... TBF[13] class 23 reserves ......C. TBF[12] class 24 reserves ....C... - TBF[18] class 25 reserves ......C. + TBF[14] class 25 reserves ......C. TBF[13] class 26 reserves ....C... - TBF[20] class 27 reserves ......C. - TBF[19] class 28 reserves ....C... - TBF[22] class 29 reserves ......C. + TBF[15] class 27 reserves ......C. + TBF[14] class 28 reserves ....C... + TBF[16] class 29 reserves ......C. TBF[4] class 1 reserves .......C - TBF[5] class 2 reserves .......C - TBF[31] class 3 reserves ......DC + TBF[7] class 2 reserves .......C + TBF[9] class 3 reserves .......C TBF[0] class 4 reserves .....C.. TBF[1] class 5 reserves ...C.... TBF[2] class 6 reserves ...C.... - TBF[4] class 7 reserves ...C.... - TBF[2] class 8 reserves .....C.. + TBF[0] class 7 reserves .......C + TBF[4] class 8 reserves ...C.... TBF[0] class 9 reserves ....C... - TBF[2] class 10 reserves ....C... - TBF[4] class 11 reserves ....C... - TBF[0] class 12 reserves ......C. - TBF[4] class 13 reserves .....C.. - TBF[6] class 14 reserves ....C... - TBF[6] class 15 reserves ...C.... - TBF[7] class 16 reserves ...C.... - TBF[8] class 17 reserves ...C.... - TBF[9] class 18 reserves ...C.... - TBF[1] class 19 reserves ......C. - TBF[3] class 20 reserves ......C. - TBF[5] class 21 reserves ......C. - TBF[8] class 22 reserves ......C. - TBF[9] class 23 reserves ....C... - TBF[10] class 24 reserves ......C. - TBF[11] class 25 reserves ....C... - TBF[12] class 26 reserves ......C. - TBF[18] class 27 reserves ....C... - TBF[19] class 28 reserves ......C. + TBF[1] class 10 reserves .......C + TBF[6] class 11 reserves ...C.... + TBF[2] class 12 reserves ....C... + TBF[0] class 13 reserves ......C. + TBF[3] class 14 reserves .......C + TBF[7] class 15 reserves ...C.... + TBF[4] class 16 reserves ....C... + TBF[1] class 17 reserves ......C. + TBF[5] class 18 reserves .......C + TBF[9] class 19 reserves ...C.... + TBF[6] class 20 reserves ....C... + TBF[3] class 21 reserves ......C. + TBF[6] class 22 reserves .......C + TBF[11] class 23 reserves ...C.... + TBF[9] class 24 reserves ....C... + TBF[2] class 25 reserves .....C.. + TBF[5] class 26 reserves ......C. + TBF[8] class 27 reserves .......C + TBF[13] class 28 reserves ...C.... + TBF[11] class 29 reserves ....C... + TBF[4] class 1 reserves .....C.. + TBF[8] class 2 reserves ......C. + TBF[10] class 3 reserves .......C + TBF[15] class 4 reserves ...C.... + TBF[15] class 5 reserves ....C... + TBF[5] class 6 reserves .....C.. + TBF[10] class 7 reserves ......C. + TBF[11] class 8 reserves .......C + TBF[16] class 9 reserves ...C.... + TBF[16] class 10 reserves ....C... + TBF[6] class 11 reserves .....C.. + TBF[12] class 12 reserves ......C. + TBF[12] class 13 reserves .......C + TBF[17] class 14 reserves ...C.... + TBF[17] class 15 reserves ....C... + TBF[7] class 16 reserves .....C.. + TBF[17] class 17 reserves ......C. + TBF[13] class 18 reserves .......C + TBF[18] class 19 reserves ...C.... + TBF[18] class 20 reserves ....C... + TBF[8] class 21 reserves .....C.. + TBF[18] class 22 reserves ......C. + TBF[14] class 23 reserves .......C + TBF[19] class 24 reserves ...C.... + TBF[19] class 25 reserves ....C... + TBF[19] class 26 reserves ......C. + TBF[15] class 27 reserves .......C + TBF[20] class 28 reserves ...C.... TBF[20] class 29 reserves ....C... - TBF[0] class 1 reserves .......C - TBF[1] class 2 reserves .......C - TBF[3] class 3 reserves .......C - TBF[5] class 4 reserves .....C.. + TBF[20] class 1 reserves ......C. + TBF[16] class 2 reserves .......C + TBF[21] class 3 reserves ...C.... + TBF[21] class 4 reserves ....C... TBF[21] class 5 reserves ......C. - TBF[23] class 6 reserves ......C. - TBF[21] class 7 reserves ....C... - TBF[6] class 8 reserves .....C.. - TBF[24] class 9 reserves ....C... - TBF[26] class 10 reserves ....C... - TBF[28] class 11 reserves ....C... - TBF[25] class 12 reserves ......C. - TBF[30] class 13 reserves .....C.. - TBF[22] class 14 reserves ....C... - TBF[10] class 15 reserves ...C.... - TBF[11] class 16 reserves ...C.... - TBF[12] class 17 reserves ...C.... - TBF[13] class 18 reserves ...C.... - TBF[27] class 19 reserves ......C. - TBF[29] class 20 reserves ......C. - TBF[24] class 21 reserves ......C. - TBF[26] class 22 reserves ......C. - TBF[28] class 23 reserves ......C. - TBF[23] class 24 reserves ....C... - TBF[30] class 25 reserves ......C. - TBF[25] class 26 reserves ....C... - TBF[6] class 1 reserves .......C + TBF[22] class 6 reserves ...C.... + TBF[22] class 7 reserves ....C... + TBF[22] class 8 reserves ......C. + TBF[23] class 9 reserves ...C.... + TBF[23] class 10 reserves ....C... + TBF[9] class 11 reserves .....C.. + TBF[10] class 12 reserves .....C.. + TBF[11] class 13 reserves .....C.. + TBF[12] class 14 reserves .....C.. + TBF[13] class 15 reserves .....C.. + TBF[14] class 16 reserves .....C.. + TBF[15] class 17 reserves .....C.. + TBF[16] class 18 reserves .....C.. + TBF[17] class 19 reserves .....C.. + TBF[17] class 20 reserves .......C + TBF[18] class 21 reserves .....C.. + TBF[18] class 22 reserves .......C + TBF[19] class 23 reserves .....C.. + TBF[19] class 24 reserves .......C + TBF[20] class 25 reserves .....C.. + TBF[20] class 26 reserves .......C + TBF[21] class 27 reserves .....C.. + TBF[21] class 28 reserves .......C + TBF[22] class 29 reserves .....C.. + TBF[22] class 1 reserves .......C + TBF[23] class 2 reserves .....C.. + TBF[23] class 3 reserves ......C. + TBF[23] class 4 reserves .......C + TBF[24] class 5 reserves ...C.... + TBF[24] class 6 reserves ....C... + TBF[24] class 7 reserves .....C.. + TBF[24] class 8 reserves ......C. + TBF[24] class 9 reserves .......C + TBF[25] class 10 reserves ...C.... + TBF[25] class 11 reserves ....C... + TBF[25] class 12 reserves .....C.. + TBF[25] class 13 reserves ......C. + TBF[25] class 14 reserves .......C + TBF[26] class 15 reserves ...C.... + TBF[26] class 16 reserves ....C... + TBF[26] class 17 reserves .....C.. + TBF[26] class 18 reserves ......C. + TBF[26] class 19 reserves .......C + TBF[27] class 20 reserves ...C.... + TBF[27] class 21 reserves ....C... + TBF[27] class 22 reserves .....C.. + TBF[27] class 23 reserves ......C. + TBF[27] class 24 reserves .......C + TBF[28] class 25 reserves ...C.... + TBF[28] class 26 reserves ....C... + TBF[28] class 27 reserves .....C.. + TBF[28] class 28 reserves ......C. + TBF[28] class 29 reserves .......C + TBF[29] class 1 reserves ...C.... + TBF[29] class 2 reserves ....C... + TBF[29] class 3 reserves .....C.. + TBF[29] class 4 reserves ......C. + TBF[29] class 5 reserves .......C + TBF[30] class 6 reserves ...C.... + TBF[30] class 7 reserves ....C... + TBF[30] class 8 reserves .....C.. + TBF[30] class 9 reserves ......C. + TBF[30] class 10 reserves .......C + TBF[31] class 11 reserves ...C.... + TBF[31] class 12 reserves ....C... + TBF[31] class 13 reserves .....C.. + TBF[31] class 14 reserves ......C. + TBF[31] class 15 reserves .......C + TBF[0] class 1 reserves ...C.... TBF[1] class 2 reserves .....C.. TBF[2] class 3 reserves .......C - TBF[7] class 4 reserves .....C.. - TBF[7] class 5 reserves .......C - TBF[8] class 6 reserves .....C.. + TBF[1] class 4 reserves ....C... + TBF[2] class 5 reserves ......C. + TBF[3] class 6 reserves ...C.... TBF[3] class 7 reserves .....C.. - TBF[8] class 8 reserves .......C - TBF[9] class 9 reserves .....C.. - TBF[9] class 10 reserves .......C - TBF[10] class 11 reserves .....C.. - TBF[10] class 12 reserves .......C - TBF[11] class 13 reserves .....C.. - TBF[11] class 14 reserves .......C - TBF[14] class 15 reserves ...CDDDD - TBF[15] class 16 reserves ...CDDDD - TBF[16] class 17 reserves ...CDDDD - TBF[17] class 18 reserves ...CDDDD - TBF[0] class 19 reserves ...C.... - TBF[3] class 20 reserves ...C.... - TBF[5] class 21 reserves ...C.... - TBF[12] class 22 reserves .....C.. - TBF[12] class 23 reserves .......C - TBF[18] class 24 reserves ...C.... - TBF[13] class 25 reserves .....C.. - TBF[13] class 26 reserves .......C - TBF[19] class 27 reserves ...C.... - TBF[1] class 28 reserves ....C... - TBF[18] class 29 reserves .....C.. + TBF[4] class 8 reserves ......C. + TBF[3] class 9 reserves ....C... + TBF[6] class 10 reserves ......C. + TBF[5] class 11 reserves ....C... + TBF[7] class 12 reserves ......C. + TBF[5] class 13 reserves ...C.... + TBF[7] class 14 reserves ....C... + TBF[8] class 15 reserves ...C.... + TBF[10] class 16 reserves ...C.... + TBF[12] class 17 reserves ...C.... + TBF[14] class 18 reserves ...C.... + TBF[9] class 19 reserves ......C. + TBF[8] class 20 reserves ....C... + TBF[11] class 21 reserves ......C. + TBF[10] class 22 reserves ....C... + TBF[13] class 23 reserves ......C. + TBF[12] class 24 reserves ....C... + TBF[14] class 25 reserves ......C. + TBF[13] class 26 reserves ....C... + TBF[15] class 27 reserves ......C. + TBF[14] class 28 reserves ....C... + TBF[16] class 29 reserves ......C. TBF[4] class 1 reserves .......C - TBF[5] class 2 reserves .......C - TBF[31] class 3 reserves ......DC + TBF[7] class 2 reserves .......C + TBF[9] class 3 reserves .......C TBF[0] class 4 reserves .....C.. TBF[1] class 5 reserves ...C.... TBF[2] class 6 reserves ...C.... - TBF[4] class 7 reserves ...C.... - TBF[2] class 8 reserves .....C.. + TBF[0] class 7 reserves .......C + TBF[4] class 8 reserves ...C.... TBF[0] class 9 reserves ....C... - TBF[2] class 10 reserves ....C... - TBF[3] class 11 reserves ....C... - TBF[18] class 12 reserves .......C - TBF[4] class 13 reserves .....C.. - TBF[4] class 14 reserves ....C... - TBF[6] class 15 reserves ...C.... - TBF[7] class 16 reserves ...C.... - TBF[8] class 17 reserves ...C.... - TBF[9] class 18 reserves ...C.... - TBF[0] class 19 reserves ......C. - TBF[1] class 20 reserves ......C. - TBF[2] class 21 reserves ......C. - TBF[3] class 22 reserves ......C. - TBF[5] class 23 reserves ....C... - TBF[4] class 24 reserves ......C. - TBF[6] class 25 reserves ....C... + TBF[1] class 10 reserves .......C + TBF[6] class 11 reserves ...C.... + TBF[2] class 12 reserves ....C... + TBF[0] class 13 reserves ......C. + TBF[3] class 14 reserves .......C + TBF[7] class 15 reserves ...C.... + TBF[4] class 16 reserves ....C... + TBF[1] class 17 reserves ......C. + TBF[5] class 18 reserves .......C + TBF[9] class 19 reserves ...C.... + TBF[6] class 20 reserves ....C... + TBF[3] class 21 reserves ......C. + TBF[6] class 22 reserves .......C + TBF[11] class 23 reserves ...C.... + TBF[9] class 24 reserves ....C... + TBF[2] class 25 reserves .....C.. TBF[5] class 26 reserves ......C. - TBF[7] class 27 reserves ....C... - TBF[6] class 28 reserves ......C. - TBF[20] class 29 reserves ...DCD.. - TBF[0] class 1 reserves .......C - TBF[1] class 2 reserves .......C - TBF[3] class 3 reserves .......C - TBF[8] class 4 reserves ....C... - TBF[7] class 5 reserves ......C. - TBF[8] class 6 reserves ......C. - TBF[21] class 7 reserves ....CD.. - TBF[5] class 8 reserves .....C.. - TBF[9] class 9 reserves ....C... - TBF[10] class 10 reserves ....C... - TBF[11] class 11 reserves ....C... - TBF[9] class 12 reserves ......C. - TBF[6] class 13 reserves .....C.. - TBF[22] class 14 reserves ....CDDD - TBF[10] class 15 reserves ...C.... - TBF[11] class 16 reserves ...C.... - TBF[12] class 17 reserves ...C.... - TBF[13] class 18 reserves ...C.... - TBF[27] class 19 reserves ....DDCD - TBF[29] class 20 reserves .....DCD - TBF[24] class 21 reserves ....DCD. - TBF[26] class 22 reserves .....DCD - TBF[28] class 23 reserves ....DCD. - TBF[23] class 24 reserves ...DCD.. - TBF[30] class 25 reserves .....DCD - TBF[25] class 26 reserves ...CD... - TBF[10] class 27 reserves ......C. - TBF[21] class 28 reserves ...C.... - TBF[11] class 29 reserves ......C. - TBF[12] class 1 reserves ....C... - TBF[22] class 2 reserves ...C.... - TBF[12] class 3 reserves ......C. - TBF[13] class 4 reserves ....C... + TBF[8] class 27 reserves .......C + TBF[13] class 28 reserves ...C.... + TBF[11] class 29 reserves ....C... + TBF[4] class 1 reserves .....C.. + TBF[8] class 2 reserves ......C. + TBF[10] class 3 reserves .......C + TBF[15] class 4 reserves ...C.... + TBF[15] class 5 reserves ....C... + TBF[5] class 6 reserves .....C.. + TBF[10] class 7 reserves ......C. + TBF[11] class 8 reserves .......C + TBF[16] class 9 reserves ...C.... + TBF[16] class 10 reserves ....C... + TBF[6] class 11 reserves .....C.. + TBF[12] class 12 reserves ......C. + TBF[12] class 13 reserves .......C + TBF[17] class 14 reserves ...C.... + TBF[17] class 15 reserves ....C... + TBF[7] class 16 reserves .....C.. + TBF[17] class 17 reserves ......C. + TBF[13] class 18 reserves .......C + TBF[18] class 19 reserves ...C.... + TBF[18] class 20 reserves ....C... + TBF[8] class 21 reserves .....C.. + TBF[18] class 22 reserves ......C. + TBF[14] class 23 reserves .......C + TBF[19] class 24 reserves ...C.... + TBF[19] class 25 reserves ....C... + TBF[19] class 26 reserves ......C. + TBF[15] class 27 reserves .......C + TBF[20] class 28 reserves ...C.... + TBF[20] class 29 reserves ....C... + TBF[20] class 1 reserves ......C. + TBF[16] class 2 reserves .......C + TBF[21] class 3 reserves ...C.... + TBF[21] class 4 reserves ....C... + TBF[21] class 5 reserves ......C. + TBF[22] class 6 reserves ...C.... + TBF[22] class 7 reserves ....C... + TBF[22] class 8 reserves ......C. + TBF[23] class 9 reserves ...C.... + TBF[23] class 10 reserves ....C... + TBF[9] class 11 reserves .....C.. + TBF[10] class 12 reserves .....C.. + TBF[11] class 13 reserves .....C.. + TBF[12] class 14 reserves .....C.. + TBF[13] class 15 reserves .....C.. + TBF[14] class 16 reserves .....C.. + TBF[15] class 17 reserves .....C.. + TBF[16] class 18 reserves .....C.. + TBF[17] class 19 reserves .....C.. + TBF[17] class 20 reserves .......C + TBF[18] class 21 reserves .....C.. + TBF[18] class 22 reserves .......C + TBF[19] class 23 reserves .....C.. + TBF[19] class 24 reserves .......C + TBF[20] class 25 reserves .....C.. + TBF[20] class 26 reserves .......C + TBF[21] class 27 reserves .....C.. + TBF[21] class 28 reserves .......C + TBF[22] class 29 reserves .....C.. + TBF[22] class 1 reserves .......C + TBF[23] class 2 reserves .....C.. + TBF[23] class 3 reserves ......C. + TBF[23] class 4 reserves .......C TBF[24] class 5 reserves ...C.... - TBF[13] class 6 reserves ......C. - TBF[19] class 7 reserves .......C - TBF[18] class 8 reserves ....C... - TBF[26] class 9 reserves ...C.... - TBF[18] class 10 reserves ......C. - TBF[20] class 11 reserves .......C - TBF[19] class 12 reserves ....C... - TBF[27] class 13 reserves ...C.... - TBF[19] class 14 reserves ......C. - TBF[21] class 15 reserves .......C + TBF[24] class 6 reserves ....C... + TBF[24] class 7 reserves .....C.. + TBF[24] class 8 reserves ......C. + TBF[24] class 9 reserves .......C + TBF[25] class 10 reserves ...C.... + TBF[25] class 11 reserves ....C... + TBF[25] class 12 reserves .....C.. + TBF[25] class 13 reserves ......C. + TBF[25] class 14 reserves .......C + TBF[26] class 15 reserves ...C.... TBF[26] class 16 reserves ....C... - TBF[28] class 17 reserves ...C.... - TBF[19] class 18 reserves .....C.. - TBF[20] class 19 reserves ......C. - TBF[23] class 20 reserves .......C - TBF[29] class 21 reserves ....C... - TBF[29] class 22 reserves ...C.... - TBF[25] class 23 reserves .....C.. - TBF[21] class 24 reserves ......C. - TBF[24] class 25 reserves .......C - TBF[30] class 26 reserves ....C... - TBF[30] class 27 reserves ...C.... - TBF[31] class 28 reserves .....C.. - TBF[23] class 29 reserves ......C. - TBF[25] class 1 reserves .......C - TBF[31] class 2 reserves ....C... - TBF[31] class 3 reserves ...C.... - TBF[25] class 4 reserves ......C. - TBF[28] class 5 reserves .......C - Successfully allocated 121 TBFs + TBF[26] class 17 reserves .....C.. + TBF[26] class 18 reserves ......C. + TBF[26] class 19 reserves .......C + TBF[27] class 20 reserves ...C.... + TBF[27] class 21 reserves ....C... + TBF[27] class 22 reserves .....C.. + TBF[27] class 23 reserves ......C. + TBF[27] class 24 reserves .......C + TBF[28] class 25 reserves ...C.... + TBF[28] class 26 reserves ....C... + TBF[28] class 27 reserves .....C.. + TBF[28] class 28 reserves ......C. + TBF[28] class 29 reserves .......C + TBF[29] class 1 reserves ...C.... + TBF[29] class 2 reserves ....C... + TBF[29] class 3 reserves .....C.. + TBF[29] class 4 reserves ......C. + TBF[29] class 5 reserves .......C + TBF[30] class 6 reserves ...C.... + TBF[30] class 7 reserves ....C... + TBF[30] class 8 reserves .....C.. + TBF[30] class 9 reserves ......C. + TBF[30] class 10 reserves .......C + TBF[31] class 11 reserves ...C.... + TBF[31] class 12 reserves ....C... + TBF[31] class 13 reserves .....C.. + TBF[31] class 14 reserves ......C. + TBF[31] class 15 reserves .......C + Successfully allocated 160 TBFs