Change in osmo-pcu[master]: Expect ms object to exist before calling tbf_alloc_dl_tbf()

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/.

pespin gerrit-no-reply at lists.osmocom.org
Tue May 12 17:09:21 UTC 2020


pespin has submitted this change. ( https://gerrit.osmocom.org/c/osmo-pcu/+/18134 )

Change subject: Expect ms object to exist before calling tbf_alloc_dl_tbf()
......................................................................

Expect ms object to exist before calling tbf_alloc_dl_tbf()

Same as previous commit, this time for the DL counterpart.

Change-Id: I87f6cdf8288a688466020bda0874e68b57aa71c4
---
M src/tbf.cpp
M src/tbf.h
M src/tbf_dl.cpp
M tests/alloc/AllocTest.cpp
M tests/app_info/AppInfoTest.cpp
M tests/tbf/TbfTest.cpp
M tests/tbf/TbfTest.err
M tests/types/TypesTest.cpp
8 files changed, 223 insertions(+), 221 deletions(-)

Approvals:
  pespin: Looks good to me, approved
  Jenkins Builder: Verified



diff --git a/src/tbf.cpp b/src/tbf.cpp
index e41ed9f..56fdcd1 100644
--- a/src/tbf.cpp
+++ b/src/tbf.cpp
@@ -1049,24 +1049,25 @@
 	return 0;
 }
 
-struct gprs_rlcmac_dl_tbf *tbf_alloc_dl_tbf(struct gprs_rlcmac_bts *bts, GprsMs *ms, int8_t use_trx, uint8_t ms_class,
-					    uint8_t egprs_ms_class, bool single_slot)
+struct gprs_rlcmac_dl_tbf *tbf_alloc_dl_tbf(struct gprs_rlcmac_bts *bts, GprsMs *ms, int8_t use_trx, bool single_slot)
 {
 	struct gprs_rlcmac_dl_tbf *tbf;
 	int rc;
 
-	if (egprs_ms_class == 0 && bts->egprs_enabled) {
-		if (ms_class > 0) {
+	OSMO_ASSERT(ms != NULL);
+
+	if (ms->egprs_ms_class() == 0 && bts->egprs_enabled) {
+		if (ms->ms_class() > 0) {
 			LOGP(DTBF, LOGL_NOTICE, "Not accepting non-EGPRS phone in EGPRS-only mode\n");
 			bts->bts->tbf_failed_egprs_only();
 			return NULL;
 		}
-		egprs_ms_class = 1;
+		ms->set_egprs_ms_class(1);
 	}
 
 	LOGP(DTBF, LOGL_DEBUG, "********** DL-TBF starts here **********\n");
 	LOGP(DTBF, LOGL_INFO, "Allocating DL TBF: MS_CLASS=%d/%d\n",
-	     ms_class, egprs_ms_class);
+	     ms->ms_class(), ms->egprs_ms_class());
 
 	tbf = talloc(tall_pcu_ctx, struct gprs_rlcmac_dl_tbf);
 
@@ -1075,17 +1076,13 @@
 
 	talloc_set_destructor(tbf, dl_tbf_dtor);
 	new (tbf) gprs_rlcmac_dl_tbf(bts->bts);
-
-	if (!ms)
-		ms = bts->bts->ms_alloc(ms_class, egprs_ms_class);
-
-	if (egprs_ms_class > 0 && bts->egprs_enabled) {
+	if (ms->egprs_ms_class() > 0 && bts->egprs_enabled) {
 		tbf->enable_egprs();
 		setup_egprs_mode(bts, ms);
 		LOGPTBF(tbf, LOGL_INFO, "Enabled EGPRS, mode %s\n", mode_name(ms->mode()));
 	}
 
-	rc = setup_tbf(tbf, ms, use_trx, ms_class, 0, single_slot);
+	rc = setup_tbf(tbf, ms, use_trx, ms->ms_class(), 0, single_slot);
 	/* if no resource */
 	if (rc < 0) {
 		talloc_free(tbf);
@@ -1430,8 +1427,7 @@
 	bts->tbf_reused();
 
 	new_tbf = tbf_alloc_dl_tbf(bts->bts_data(), ms(),
-		this->trx->trx_no, ms_class(),
-		ms() ?  ms()->egprs_ms_class() : 0, false);
+		this->trx->trx_no, false);
 
 	if (!new_tbf) {
 		LOGP(DTBF, LOGL_NOTICE, "No PDCH resource\n");
diff --git a/src/tbf.h b/src/tbf.h
index 33d996f..5ebd2e8 100644
--- a/src/tbf.h
+++ b/src/tbf.h
@@ -351,8 +351,7 @@
 
 struct gprs_rlcmac_ul_tbf *tbf_alloc_ul_tbf(struct gprs_rlcmac_bts *bts, GprsMs *ms, int8_t use_trx, bool single_slot);
 
-struct gprs_rlcmac_dl_tbf *tbf_alloc_dl_tbf(struct gprs_rlcmac_bts *bts, GprsMs *ms, int8_t use_trx, uint8_t ms_class,
-					    uint8_t egprs_ms_class, bool single_slot);
+struct gprs_rlcmac_dl_tbf *tbf_alloc_dl_tbf(struct gprs_rlcmac_bts *bts, GprsMs *ms, int8_t use_trx, bool single_slot);
 
 void tbf_free(struct gprs_rlcmac_tbf *tbf);
 
diff --git a/src/tbf_dl.cpp b/src/tbf_dl.cpp
index 4e8966e..591f460 100644
--- a/src/tbf_dl.cpp
+++ b/src/tbf_dl.cpp
@@ -146,10 +146,12 @@
 
 	/* check for uplink data, so we copy our informations */
 	ms = bts->bts->ms_store().get_ms(tlli, tlli_old, imsi);
-	if (ms) {
-		ul_tbf = ms->ul_tbf();
-		ta = ms->ta();
-	}
+	if (!ms)
+		ms = bts->bts->ms_alloc(ms_class, egprs_ms_class); /* ms class updated later */
+
+	ul_tbf = ms->ul_tbf();
+	ta = ms->ta();
+
 	/* TODO: if (!ms) create MS before tbf_alloc is called? */
 
 	if (ul_tbf && ul_tbf->m_contention_resolution_done
@@ -166,7 +168,7 @@
 	// Create new TBF (any TRX)
 /* FIXME: Copy and paste with alloc_ul_tbf */
 	/* set number of downlink slots according to multislot class */
-	dl_tbf = tbf_alloc_dl_tbf(bts, ms, use_trx, ms_class, egprs_ms_class, ss);
+	dl_tbf = tbf_alloc_dl_tbf(bts, ms, use_trx, ss);
 
 	if (!dl_tbf) {
 		LOGP(DTBF, LOGL_NOTICE, "No PDCH resource\n");
diff --git a/tests/alloc/AllocTest.cpp b/tests/alloc/AllocTest.cpp
index abd5d22..fec2c31 100644
--- a/tests/alloc/AllocTest.cpp
+++ b/tests/alloc/AllocTest.cpp
@@ -41,17 +41,14 @@
 
 static gprs_rlcmac_tbf *tbf_alloc(struct gprs_rlcmac_bts *bts,
 		GprsMs *ms, gprs_rlcmac_tbf_direction dir,
-		uint8_t use_trx,
-		uint8_t ms_class, uint8_t egprs_ms_class, bool single_slot)
+		uint8_t use_trx, bool single_slot)
 {
-	if (dir == GPRS_RLCMAC_UL_TBF && !ms)
-		ms = bts->bts->ms_alloc(ms_class, egprs_ms_class);
+	OSMO_ASSERT(ms != NULL);
 
 	if (dir == GPRS_RLCMAC_UL_TBF)
 		return tbf_alloc_ul_tbf(bts, ms, use_trx, single_slot);
 	else
-		return tbf_alloc_dl_tbf(bts, ms, use_trx,
-			ms_class, egprs_ms_class, single_slot);
+		return tbf_alloc_dl_tbf(bts, ms, use_trx, single_slot);
 }
 
 static void check_tfi_usage(BTS *the_bts)
@@ -116,6 +113,7 @@
 	int i;
 	uint8_t used_trx, tmp_trx;
 	BTS the_bts;
+	GprsMs *ms;
 	struct gprs_rlcmac_bts *bts;
 	struct gprs_rlcmac_tbf *tbfs[32*8+1] = { 0, };
 
@@ -138,7 +136,8 @@
 	 * least this part is working okay.
 	 */
 	for (i = 0; i < (int)ARRAY_SIZE(tbfs); ++i) {
-		tbfs[i] = tbf_alloc(bts, NULL, dir, -1, 0, 0, 0);
+		ms = bts->bts->ms_alloc(0, 0);
+		tbfs[i] = tbf_alloc(bts, ms, dir, -1, 0);
 		if (tbfs[i] == NULL)
 			break;
 
@@ -155,7 +154,8 @@
 		if (tbfs[i])
 			tbf_free(tbfs[i]);
 
-	tbfs[0] = tbf_alloc(bts, NULL, dir, -1, 0, 0, 0);
+	ms = bts->bts->ms_alloc(0, 0);
+	tbfs[0] = tbf_alloc(bts, ms, dir, -1, 0);
 	OSMO_ASSERT(tbfs[0]);
 	tbf_free(tbfs[0]);
 }
@@ -229,8 +229,7 @@
 	dump_assignment(ul_tbf, "UL", verbose);
 
 	/* assume final ack has not been sent */
-	dl_tbf = tbf_alloc_dl_tbf(bts, ul_tbf->ms(), ul_tbf->ms()->current_trx()->trx_no, ms_class, 0,
-				  false);
+	dl_tbf = tbf_alloc_dl_tbf(bts, ms, ms->current_trx()->trx_no, false);
 	if (!dl_tbf)
 		return false;
 
@@ -262,15 +261,14 @@
 
 	enable_ts_on_bts(bts, ts0, ts1, ts2, ts3, ts4, ts5, ts6, ts7);
 
-	dl_tbf = tbf_alloc_dl_tbf(bts, NULL, -1, ms_class, 0, true);
+	ms = the_bts.ms_alloc(ms_class, 0);
+	dl_tbf = tbf_alloc_dl_tbf(bts, ms, -1, true);
 	if (!dl_tbf)
 		return false;
 
 	dl_tbf->update_ms(0x23, GPRS_RLCMAC_DL_TBF);
-	ms = dl_tbf->ms();
-	OSMO_ASSERT(dl_tbf->ms());
+	OSMO_ASSERT(dl_tbf->ms() == ms);
 	OSMO_ASSERT(dl_tbf->ms()->current_trx());
-	ms->set_ms_class(ms_class);
 
 	dump_assignment(dl_tbf, "DL", verbose);
 
@@ -320,14 +318,13 @@
 	if (!ul_tbf)
 		return false;
 
-	OSMO_ASSERT(ul_tbf->ms());
+	OSMO_ASSERT(ul_tbf->ms() == ms);
 	OSMO_ASSERT(ul_tbf->ms()->current_trx());
-	trx_no = ul_tbf->ms()->current_trx()->trx_no;
+	trx_no = ms->current_trx()->trx_no;
 	dump_assignment(ul_tbf, "UL", true);
 
 	/* assume final ack has not been sent */
-	dl_tbf = tbf_alloc_dl_tbf(bts, ul_tbf->ms(), trx_no, ms_class, 0,
-				  false);
+	dl_tbf = tbf_alloc_dl_tbf(bts, ms, trx_no, false);
 	if (!dl_tbf)
 		return false;
 
@@ -456,8 +453,7 @@
 	}
 }
 
-static GprsMs *alloc_tbfs(BTS *the_bts, GprsMs *ms, unsigned ms_class,
-	enum test_mode mode)
+static GprsMs *alloc_tbfs(BTS *the_bts, GprsMs *ms, enum test_mode mode)
 {
 	struct gprs_rlcmac_bts *bts;
 	uint8_t trx_no = -1;
@@ -478,9 +474,8 @@
 	case TEST_MODE_UL_ONLY:
 	case TEST_MODE_DL_AFTER_UL:
 	case TEST_MODE_UL_AND_DL:
-		if (ms && ms->ul_tbf())
+		if (ms->ul_tbf())
 			tbf_free(ms->ul_tbf());
-		ms->set_ms_class(ms_class);
 		tbf = tbf_alloc_ul_tbf(bts, ms, trx_no, false);
 		if (tbf == NULL)
 			return NULL;
@@ -488,9 +483,9 @@
 	case TEST_MODE_DL_ONLY:
 	case TEST_MODE_UL_AFTER_DL:
 	case TEST_MODE_DL_AND_UL:
-		if (ms && ms->dl_tbf())
+		if (ms->dl_tbf())
 			tbf_free(ms->dl_tbf());
-		tbf = tbf_alloc_dl_tbf(bts, ms, trx_no, ms_class, 0, false);
+		tbf = tbf_alloc_dl_tbf(bts, ms, trx_no, false);
 		if (tbf == NULL)
 			return NULL;
 	}
@@ -511,12 +506,12 @@
 
 	case TEST_MODE_DL_AFTER_UL:
 	case TEST_MODE_UL_AND_DL:
-		ms = alloc_tbfs(the_bts, ms, ms_class, TEST_MODE_DL_ONLY);
+		ms = alloc_tbfs(the_bts, ms, TEST_MODE_DL_ONLY);
 		break;
 
 	case TEST_MODE_UL_AFTER_DL:
 	case TEST_MODE_DL_AND_UL:
-		ms = alloc_tbfs(the_bts, ms, ms_class, TEST_MODE_UL_ONLY);
+		ms = alloc_tbfs(the_bts, ms, TEST_MODE_UL_ONLY);
 		break;
 	}
 
@@ -561,8 +556,8 @@
 		ms = the_bts->ms_by_tlli(tlli);
 		if (!ms)
 			ms = the_bts->ms_alloc(0, 0);
-
-		ms = alloc_tbfs(the_bts, ms, ms_class, mode);
+		ms->set_ms_class(ms_class);
+		ms = alloc_tbfs(the_bts, ms, mode);
 		if (!ms)
 			break;
 
@@ -754,6 +749,7 @@
 static void test_2_consecutive_dl_tbfs()
 {
 	BTS the_bts;
+	GprsMs *ms;
 	struct gprs_rlcmac_bts *bts;
 	struct gprs_rlcmac_trx *trx;
 	uint8_t ms_class = 11;
@@ -772,8 +768,8 @@
 	trx->pdch[6].enable();
 	trx->pdch[7].enable();
 
-	dl_tbf1 = tbf_alloc_dl_tbf(bts, NULL, 0, ms_class, egprs_ms_class,
-				   false);
+	ms = the_bts.ms_alloc(ms_class, egprs_ms_class);
+	dl_tbf1 = tbf_alloc_dl_tbf(bts, ms, 0, false);
 	OSMO_ASSERT(dl_tbf1);
 
 	for (int i = 0; i < 8; i++) {
@@ -783,8 +779,8 @@
 	OSMO_ASSERT(numTs1 == 4);
 	printf("TBF1: numTs(%d)\n", numTs1);
 
-	dl_tbf2 = tbf_alloc_dl_tbf(bts, NULL, 0, ms_class, egprs_ms_class,
-				   false);
+	ms = the_bts.ms_alloc(ms_class, egprs_ms_class);
+	dl_tbf2 = tbf_alloc_dl_tbf(bts, ms, 0, false);
 	OSMO_ASSERT(dl_tbf2);
 
 	for (int i = 0; i < 8; i++) {
diff --git a/tests/app_info/AppInfoTest.cpp b/tests/app_info/AppInfoTest.cpp
index ca2c59e..cd4454d 100644
--- a/tests/app_info/AppInfoTest.cpp
+++ b/tests/app_info/AppInfoTest.cpp
@@ -93,9 +93,9 @@
 	trx->pdch[7].enable();
 
 	ms1 = bts->ms_alloc(10, 11);
-	tbf1 = tbf_alloc_dl_tbf(bts_data, ms1, 0, 10, 11, false);
+	tbf1 = tbf_alloc_dl_tbf(bts_data, ms1, 0, false);
 	ms2 = bts->ms_alloc(12, 13);
-	tbf2 = tbf_alloc_dl_tbf(bts_data, ms2, 0, 12, 13, false);
+	tbf2 = tbf_alloc_dl_tbf(bts_data, ms2, 0, false);
 
 	fprintf(stderr, "\n");
 }
diff --git a/tests/tbf/TbfTest.cpp b/tests/tbf/TbfTest.cpp
index 0a979e5..36f9ced 100644
--- a/tests/tbf/TbfTest.cpp
+++ b/tests/tbf/TbfTest.cpp
@@ -87,23 +87,23 @@
 	/*
 	 * Make a uplink and downlink allocation
 	 */
+	ms = the_bts.ms_alloc(0, 0);
 	gprs_rlcmac_tbf *dl_tbf = tbf_alloc_dl_tbf(the_bts.bts_data(),
-						NULL,
-						0, 0, 0, false);
+						ms, 0, false);
 	OSMO_ASSERT(dl_tbf != NULL);
 	dl_tbf->update_ms(0x2342, GPRS_RLCMAC_DL_TBF);
 	dl_tbf->set_ta(4);
+	OSMO_ASSERT(ms->dl_tbf() == dl_tbf);
+	OSMO_ASSERT(dl_tbf->ms() == ms);
 
 	gprs_rlcmac_tbf *ul_tbf = tbf_alloc_ul_tbf(the_bts.bts_data(),
-						dl_tbf->ms(), 0, false);
+						   ms, 0, false);
 	OSMO_ASSERT(ul_tbf != NULL);
 	ul_tbf->update_ms(0x2342, GPRS_RLCMAC_UL_TBF);
-
-	ms = the_bts.ms_by_tlli(0x2342);
-
-	OSMO_ASSERT(ms != NULL);
-	OSMO_ASSERT(ms->dl_tbf() == dl_tbf);
 	OSMO_ASSERT(ms->ul_tbf() == ul_tbf);
+	OSMO_ASSERT(ul_tbf->ms() == ms);
+
+	OSMO_ASSERT(the_bts.ms_by_tlli(0x2342) == ms);
 
 	/*
 	 * Now check.. that DL changes and that the timing advance
@@ -172,15 +172,15 @@
 	gprs_rlcmac_bts *bts;
 	int tfi;
 	uint8_t trx_no;
-
+	GprsMs *ms;
 	gprs_rlcmac_dl_tbf *dl_tbf;
 
 	bts = the_bts->bts_data();
+	ms = the_bts->ms_alloc(ms_class, egprs_ms_class);
 
 	tfi = the_bts->tfi_find_free(GPRS_RLCMAC_DL_TBF, &trx_no, -1);
 	OSMO_ASSERT(tfi >= 0);
-	dl_tbf = tbf_alloc_dl_tbf(bts, NULL, trx_no, ms_class, egprs_ms_class,
-				  true);
+	dl_tbf = tbf_alloc_dl_tbf(bts, ms, trx_no, true);
 	dl_tbf->set_ta(0);
 	check_tbf(dl_tbf);
 
@@ -2232,6 +2232,7 @@
 {
 	BTS the_bts;
 	gprs_rlcmac_bts *bts;
+	GprsMs *ms;
 	uint8_t ts_no = 4;
 	uint8_t ms_class = 12;
 	gprs_rlcmac_dl_tbf *dl_tbf;
@@ -2258,7 +2259,8 @@
 	gprs_bssgp_create_and_connect(bts, 33001, 0, 33001, 4234, 4234, 4234, 1, 1, false, 0, 0, 0);
 
 	/* Does no support EGPRS */
-	dl_tbf = tbf_alloc_dl_tbf(bts, NULL, 0, ms_class, 0, false);
+	ms = the_bts.ms_alloc(ms_class, 0);
+	dl_tbf = tbf_alloc_dl_tbf(bts, ms, 0, false);
 
 	ws_check(dl_tbf, __func__, 4, 64, true, false);
 
@@ -2266,7 +2268,8 @@
 	bts->egprs_enabled = 1;
 
 	/* Does support EGPRS */
-	dl_tbf = tbf_alloc_dl_tbf(bts, NULL, 0, ms_class, ms_class, false);
+	ms = the_bts.ms_alloc(ms_class, ms_class);
+	dl_tbf = tbf_alloc_dl_tbf(bts, ms, 0, false);
 
 	ws_check(dl_tbf, __func__, 4, 128 + 4 * 64, true, true);
 }
@@ -2275,6 +2278,7 @@
 {
 	BTS the_bts;
 	gprs_rlcmac_bts *bts;
+	GprsMs *ms;
 	uint8_t ts_no = 4;
 	uint8_t ms_class = 11;
 	gprs_rlcmac_dl_tbf *dl_tbf;
@@ -2304,7 +2308,8 @@
 	bts->egprs_enabled = 1;
 
 	/* Does support EGPRS */
-	dl_tbf = tbf_alloc_dl_tbf(bts, NULL, 0, ms_class, ms_class, true);
+	ms = the_bts.ms_alloc(ms_class, ms_class);
+	dl_tbf = tbf_alloc_dl_tbf(bts, ms, 0, true);
 
 	ws_check(dl_tbf, __func__, 1, 128 + 1 * 64, false, false);
 
diff --git a/tests/tbf/TbfTest.err b/tests/tbf/TbfTest.err
index 3f72266..6019def 100644
--- a/tests/tbf/TbfTest.err
+++ b/tests/tbf/TbfTest.err
@@ -1,9 +1,9 @@
 === start test_tbf_base ===
 === end test_tbf_base ===
 === start test_tbf_tlli_update ===
+Creating MS object, TLLI = 0x00000000
 ********** DL-TBF starts here **********
 Allocating DL TBF: MS_CLASS=0/0
-Creating MS object, TLLI = 0x00000000
 [DL] Slot Allocation (Algorithm A) for class 0
 - Skipping TS 0, because not enabled
 - Skipping TS 1, because not enabled
@@ -40,12 +40,12 @@
 Modifying MS object, TLLI = 0x00004232, TA 4 -> 6
 === end test_tbf_tlli_update ===
 === start test_tbf_final_ack ===
+Creating MS object, TLLI = 0x00000000
+Modifying MS object, TLLI = 0x00000000, MS class 0 -> 45
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
 ********** DL-TBF starts here **********
 Allocating DL TBF: MS_CLASS=45/0
-Creating MS object, TLLI = 0x00000000
-Modifying MS object, TLLI = 0x00000000, MS class 0 -> 45
 [DL] Slot Allocation (Algorithm A) for class 45
 - Skipping TS 0, because not enabled
 - Skipping TS 1, because not enabled
@@ -130,12 +130,12 @@
 Destroying MS object, TLLI = 0xffeeddcc
 === end test_tbf_final_ack ===
 === start test_tbf_final_ack ===
+Creating MS object, TLLI = 0x00000000
+Modifying MS object, TLLI = 0x00000000, MS class 0 -> 45
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
 ********** DL-TBF starts here **********
 Allocating DL TBF: MS_CLASS=45/0
-Creating MS object, TLLI = 0x00000000
-Modifying MS object, TLLI = 0x00000000, MS class 0 -> 45
 [DL] Slot Allocation (Algorithm A) for class 45
 - Skipping TS 0, because not enabled
 - Skipping TS 1, because not enabled
@@ -220,12 +220,12 @@
 Destroying MS object, TLLI = 0xffeeddcc
 === end test_tbf_final_ack ===
 === start test_tbf_delayed_release ===
+Creating MS object, TLLI = 0x00000000
+Modifying MS object, TLLI = 0x00000000, MS class 0 -> 45
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
 ********** DL-TBF starts here **********
 Allocating DL TBF: MS_CLASS=45/0
-Creating MS object, TLLI = 0x00000000
-Modifying MS object, TLLI = 0x00000000, MS class 0 -> 45
 [DL] Slot Allocation (Algorithm A) for class 45
 - Skipping TS 0, because not enabled
 - Skipping TS 1, because not enabled
@@ -475,12 +475,12 @@
 ********** DL-TBF ends here **********
 === end test_tbf_delayed_release ===
 === start test_tbf_imsi ===
+Creating MS object, TLLI = 0x00000000
+Modifying MS object, TLLI = 0x00000000, MS class 0 -> 45
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
 ********** DL-TBF starts here **********
 Allocating DL TBF: MS_CLASS=45/0
-Creating MS object, TLLI = 0x00000000
-Modifying MS object, TLLI = 0x00000000, MS class 0 -> 45
 [DL] Slot Allocation (Algorithm A) for class 45
 - Skipping TS 0, because not enabled
 - Skipping TS 1, because not enabled
@@ -497,12 +497,12 @@
 Modifying MS object, TLLI = 0x00000000, TA 220 -> 0
 TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL) changes DL ASS state from GPRS_RLCMAC_DL_ASS_NONE to GPRS_RLCMAC_DL_ASS_SEND_ASS
 TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL) changes state from NULL to FLOW
+Creating MS object, TLLI = 0x00000000
+Modifying MS object, TLLI = 0x00000000, MS class 0 -> 45
 Searching for first unallocated TFI: TRX=0
  Found TFI=1.
 ********** DL-TBF starts here **********
 Allocating DL TBF: MS_CLASS=45/0
-Creating MS object, TLLI = 0x00000000
-Modifying MS object, TLLI = 0x00000000, MS class 0 -> 45
 [DL] Slot Allocation (Algorithm A) for class 45
 - Skipping TS 0, because not enabled
 - Skipping TS 1, because not enabled
@@ -542,10 +542,10 @@
 ********** DL-TBF ends here **********
 === end test_tbf_imsi ===
 === start test_tbf_exhaustion ===
-********** DL-TBF starts here **********
-Allocating DL TBF: MS_CLASS=45/0
 Creating MS object, TLLI = 0x00000000
 Modifying MS object, TLLI = 0x00000000, MS class 0 -> 45
+********** DL-TBF starts here **********
+Allocating DL TBF: MS_CLASS=45/0
 [DL] Slot Allocation (Algorithm A) for class 45
 - Skipping TS 0, because not enabled
 - Skipping TS 1, because not enabled
@@ -567,10 +567,10 @@
 TBF(TFI=0 TLLI=0xc0000000 DIR=DL STATE=ASSIGN) TX: START Immediate Assignment Downlink (PCH)
  - TRX=0 (0) TS=4 TA=220 pollFN=-1
 TBF(TFI=0 TLLI=0xc0000000 DIR=DL STATE=ASSIGN) appending 256 bytes
-********** DL-TBF starts here **********
-Allocating DL TBF: MS_CLASS=45/0
 Creating MS object, TLLI = 0x00000000
 Modifying MS object, TLLI = 0x00000000, MS class 0 -> 45
+********** DL-TBF starts here **********
+Allocating DL TBF: MS_CLASS=45/0
 [DL] Slot Allocation (Algorithm A) for class 45
 - Skipping TS 0, because not enabled
 - Skipping TS 1, because not enabled
@@ -592,10 +592,10 @@
 TBF(TFI=1 TLLI=0xc0000001 DIR=DL STATE=ASSIGN) TX: START Immediate Assignment Downlink (PCH)
  - TRX=0 (0) TS=4 TA=220 pollFN=-1
 TBF(TFI=1 TLLI=0xc0000001 DIR=DL STATE=ASSIGN) appending 256 bytes
-********** DL-TBF starts here **********
-Allocating DL TBF: MS_CLASS=45/0
 Creating MS object, TLLI = 0x00000000
 Modifying MS object, TLLI = 0x00000000, MS class 0 -> 45
+********** DL-TBF starts here **********
+Allocating DL TBF: MS_CLASS=45/0
 [DL] Slot Allocation (Algorithm A) for class 45
 - Skipping TS 0, because not enabled
 - Skipping TS 1, because not enabled
@@ -617,10 +617,10 @@
 TBF(TFI=2 TLLI=0xc0000002 DIR=DL STATE=ASSIGN) TX: START Immediate Assignment Downlink (PCH)
  - TRX=0 (0) TS=4 TA=220 pollFN=-1
 TBF(TFI=2 TLLI=0xc0000002 DIR=DL STATE=ASSIGN) appending 256 bytes
-********** DL-TBF starts here **********
-Allocating DL TBF: MS_CLASS=45/0
 Creating MS object, TLLI = 0x00000000
 Modifying MS object, TLLI = 0x00000000, MS class 0 -> 45
+********** DL-TBF starts here **********
+Allocating DL TBF: MS_CLASS=45/0
 [DL] Slot Allocation (Algorithm A) for class 45
 - Skipping TS 0, because not enabled
 - Skipping TS 1, because not enabled
@@ -642,10 +642,10 @@
 TBF(TFI=3 TLLI=0xc0000003 DIR=DL STATE=ASSIGN) TX: START Immediate Assignment Downlink (PCH)
  - TRX=0 (0) TS=4 TA=220 pollFN=-1
 TBF(TFI=3 TLLI=0xc0000003 DIR=DL STATE=ASSIGN) appending 256 bytes
-********** DL-TBF starts here **********
-Allocating DL TBF: MS_CLASS=45/0
 Creating MS object, TLLI = 0x00000000
 Modifying MS object, TLLI = 0x00000000, MS class 0 -> 45
+********** DL-TBF starts here **********
+Allocating DL TBF: MS_CLASS=45/0
 [DL] Slot Allocation (Algorithm A) for class 45
 - Skipping TS 0, because not enabled
 - Skipping TS 1, because not enabled
@@ -667,10 +667,10 @@
 TBF(TFI=4 TLLI=0xc0000004 DIR=DL STATE=ASSIGN) TX: START Immediate Assignment Downlink (PCH)
  - TRX=0 (0) TS=4 TA=220 pollFN=-1
 TBF(TFI=4 TLLI=0xc0000004 DIR=DL STATE=ASSIGN) appending 256 bytes
-********** DL-TBF starts here **********
-Allocating DL TBF: MS_CLASS=45/0
 Creating MS object, TLLI = 0x00000000
 Modifying MS object, TLLI = 0x00000000, MS class 0 -> 45
+********** DL-TBF starts here **********
+Allocating DL TBF: MS_CLASS=45/0
 [DL] Slot Allocation (Algorithm A) for class 45
 - Skipping TS 0, because not enabled
 - Skipping TS 1, because not enabled
@@ -692,10 +692,10 @@
 TBF(TFI=5 TLLI=0xc0000005 DIR=DL STATE=ASSIGN) TX: START Immediate Assignment Downlink (PCH)
  - TRX=0 (0) TS=4 TA=220 pollFN=-1
 TBF(TFI=5 TLLI=0xc0000005 DIR=DL STATE=ASSIGN) appending 256 bytes
-********** DL-TBF starts here **********
-Allocating DL TBF: MS_CLASS=45/0
 Creating MS object, TLLI = 0x00000000
 Modifying MS object, TLLI = 0x00000000, MS class 0 -> 45
+********** DL-TBF starts here **********
+Allocating DL TBF: MS_CLASS=45/0
 [DL] Slot Allocation (Algorithm A) for class 45
 - Skipping TS 0, because not enabled
 - Skipping TS 1, because not enabled
@@ -717,10 +717,10 @@
 TBF(TFI=6 TLLI=0xc0000006 DIR=DL STATE=ASSIGN) TX: START Immediate Assignment Downlink (PCH)
  - TRX=0 (0) TS=4 TA=220 pollFN=-1
 TBF(TFI=6 TLLI=0xc0000006 DIR=DL STATE=ASSIGN) appending 256 bytes
-********** DL-TBF starts here **********
-Allocating DL TBF: MS_CLASS=45/0
 Creating MS object, TLLI = 0x00000000
 Modifying MS object, TLLI = 0x00000000, MS class 0 -> 45
+********** DL-TBF starts here **********
+Allocating DL TBF: MS_CLASS=45/0
 [DL] Slot Allocation (Algorithm A) for class 45
 - Skipping TS 0, because not enabled
 - Skipping TS 1, because not enabled
@@ -742,10 +742,10 @@
 TBF(TFI=7 TLLI=0xc0000007 DIR=DL STATE=ASSIGN) TX: START Immediate Assignment Downlink (PCH)
  - TRX=0 (0) TS=4 TA=220 pollFN=-1
 TBF(TFI=7 TLLI=0xc0000007 DIR=DL STATE=ASSIGN) appending 256 bytes
-********** DL-TBF starts here **********
-Allocating DL TBF: MS_CLASS=45/0
 Creating MS object, TLLI = 0x00000000
 Modifying MS object, TLLI = 0x00000000, MS class 0 -> 45
+********** DL-TBF starts here **********
+Allocating DL TBF: MS_CLASS=45/0
 [DL] Slot Allocation (Algorithm A) for class 45
 - Skipping TS 0, because not enabled
 - Skipping TS 1, because not enabled
@@ -767,10 +767,10 @@
 TBF(TFI=8 TLLI=0xc0000008 DIR=DL STATE=ASSIGN) TX: START Immediate Assignment Downlink (PCH)
  - TRX=0 (0) TS=4 TA=220 pollFN=-1
 TBF(TFI=8 TLLI=0xc0000008 DIR=DL STATE=ASSIGN) appending 256 bytes
-********** DL-TBF starts here **********
-Allocating DL TBF: MS_CLASS=45/0
 Creating MS object, TLLI = 0x00000000
 Modifying MS object, TLLI = 0x00000000, MS class 0 -> 45
+********** DL-TBF starts here **********
+Allocating DL TBF: MS_CLASS=45/0
 [DL] Slot Allocation (Algorithm A) for class 45
 - Skipping TS 0, because not enabled
 - Skipping TS 1, because not enabled
@@ -792,10 +792,10 @@
 TBF(TFI=9 TLLI=0xc0000009 DIR=DL STATE=ASSIGN) TX: START Immediate Assignment Downlink (PCH)
  - TRX=0 (0) TS=4 TA=220 pollFN=-1
 TBF(TFI=9 TLLI=0xc0000009 DIR=DL STATE=ASSIGN) appending 256 bytes
-********** DL-TBF starts here **********
-Allocating DL TBF: MS_CLASS=45/0
 Creating MS object, TLLI = 0x00000000
 Modifying MS object, TLLI = 0x00000000, MS class 0 -> 45
+********** DL-TBF starts here **********
+Allocating DL TBF: MS_CLASS=45/0
 [DL] Slot Allocation (Algorithm A) for class 45
 - Skipping TS 0, because not enabled
 - Skipping TS 1, because not enabled
@@ -817,10 +817,10 @@
 TBF(TFI=10 TLLI=0xc000000a DIR=DL STATE=ASSIGN) TX: START Immediate Assignment Downlink (PCH)
  - TRX=0 (0) TS=4 TA=220 pollFN=-1
 TBF(TFI=10 TLLI=0xc000000a DIR=DL STATE=ASSIGN) appending 256 bytes
-********** DL-TBF starts here **********
-Allocating DL TBF: MS_CLASS=45/0
 Creating MS object, TLLI = 0x00000000
 Modifying MS object, TLLI = 0x00000000, MS class 0 -> 45
+********** DL-TBF starts here **********
+Allocating DL TBF: MS_CLASS=45/0
 [DL] Slot Allocation (Algorithm A) for class 45
 - Skipping TS 0, because not enabled
 - Skipping TS 1, because not enabled
@@ -842,10 +842,10 @@
 TBF(TFI=11 TLLI=0xc000000b DIR=DL STATE=ASSIGN) TX: START Immediate Assignment Downlink (PCH)
  - TRX=0 (0) TS=4 TA=220 pollFN=-1
 TBF(TFI=11 TLLI=0xc000000b DIR=DL STATE=ASSIGN) appending 256 bytes
-********** DL-TBF starts here **********
-Allocating DL TBF: MS_CLASS=45/0
 Creating MS object, TLLI = 0x00000000
 Modifying MS object, TLLI = 0x00000000, MS class 0 -> 45
+********** DL-TBF starts here **********
+Allocating DL TBF: MS_CLASS=45/0
 [DL] Slot Allocation (Algorithm A) for class 45
 - Skipping TS 0, because not enabled
 - Skipping TS 1, because not enabled
@@ -867,10 +867,10 @@
 TBF(TFI=12 TLLI=0xc000000c DIR=DL STATE=ASSIGN) TX: START Immediate Assignment Downlink (PCH)
  - TRX=0 (0) TS=4 TA=220 pollFN=-1
 TBF(TFI=12 TLLI=0xc000000c DIR=DL STATE=ASSIGN) appending 256 bytes
-********** DL-TBF starts here **********
-Allocating DL TBF: MS_CLASS=45/0
 Creating MS object, TLLI = 0x00000000
 Modifying MS object, TLLI = 0x00000000, MS class 0 -> 45
+********** DL-TBF starts here **********
+Allocating DL TBF: MS_CLASS=45/0
 [DL] Slot Allocation (Algorithm A) for class 45
 - Skipping TS 0, because not enabled
 - Skipping TS 1, because not enabled
@@ -892,10 +892,10 @@
 TBF(TFI=13 TLLI=0xc000000d DIR=DL STATE=ASSIGN) TX: START Immediate Assignment Downlink (PCH)
  - TRX=0 (0) TS=4 TA=220 pollFN=-1
 TBF(TFI=13 TLLI=0xc000000d DIR=DL STATE=ASSIGN) appending 256 bytes
-********** DL-TBF starts here **********
-Allocating DL TBF: MS_CLASS=45/0
 Creating MS object, TLLI = 0x00000000
 Modifying MS object, TLLI = 0x00000000, MS class 0 -> 45
+********** DL-TBF starts here **********
+Allocating DL TBF: MS_CLASS=45/0
 [DL] Slot Allocation (Algorithm A) for class 45
 - Skipping TS 0, because not enabled
 - Skipping TS 1, because not enabled
@@ -917,10 +917,10 @@
 TBF(TFI=14 TLLI=0xc000000e DIR=DL STATE=ASSIGN) TX: START Immediate Assignment Downlink (PCH)
  - TRX=0 (0) TS=4 TA=220 pollFN=-1
 TBF(TFI=14 TLLI=0xc000000e DIR=DL STATE=ASSIGN) appending 256 bytes
-********** DL-TBF starts here **********
-Allocating DL TBF: MS_CLASS=45/0
 Creating MS object, TLLI = 0x00000000
 Modifying MS object, TLLI = 0x00000000, MS class 0 -> 45
+********** DL-TBF starts here **********
+Allocating DL TBF: MS_CLASS=45/0
 [DL] Slot Allocation (Algorithm A) for class 45
 - Skipping TS 0, because not enabled
 - Skipping TS 1, because not enabled
@@ -942,10 +942,10 @@
 TBF(TFI=15 TLLI=0xc000000f DIR=DL STATE=ASSIGN) TX: START Immediate Assignment Downlink (PCH)
  - TRX=0 (0) TS=4 TA=220 pollFN=-1
 TBF(TFI=15 TLLI=0xc000000f DIR=DL STATE=ASSIGN) appending 256 bytes
-********** DL-TBF starts here **********
-Allocating DL TBF: MS_CLASS=45/0
 Creating MS object, TLLI = 0x00000000
 Modifying MS object, TLLI = 0x00000000, MS class 0 -> 45
+********** DL-TBF starts here **********
+Allocating DL TBF: MS_CLASS=45/0
 [DL] Slot Allocation (Algorithm A) for class 45
 - Skipping TS 0, because not enabled
 - Skipping TS 1, because not enabled
@@ -967,10 +967,10 @@
 TBF(TFI=16 TLLI=0xc0000010 DIR=DL STATE=ASSIGN) TX: START Immediate Assignment Downlink (PCH)
  - TRX=0 (0) TS=4 TA=220 pollFN=-1
 TBF(TFI=16 TLLI=0xc0000010 DIR=DL STATE=ASSIGN) appending 256 bytes
-********** DL-TBF starts here **********
-Allocating DL TBF: MS_CLASS=45/0
 Creating MS object, TLLI = 0x00000000
 Modifying MS object, TLLI = 0x00000000, MS class 0 -> 45
+********** DL-TBF starts here **********
+Allocating DL TBF: MS_CLASS=45/0
 [DL] Slot Allocation (Algorithm A) for class 45
 - Skipping TS 0, because not enabled
 - Skipping TS 1, because not enabled
@@ -992,10 +992,10 @@
 TBF(TFI=17 TLLI=0xc0000011 DIR=DL STATE=ASSIGN) TX: START Immediate Assignment Downlink (PCH)
  - TRX=0 (0) TS=4 TA=220 pollFN=-1
 TBF(TFI=17 TLLI=0xc0000011 DIR=DL STATE=ASSIGN) appending 256 bytes
-********** DL-TBF starts here **********
-Allocating DL TBF: MS_CLASS=45/0
 Creating MS object, TLLI = 0x00000000
 Modifying MS object, TLLI = 0x00000000, MS class 0 -> 45
+********** DL-TBF starts here **********
+Allocating DL TBF: MS_CLASS=45/0
 [DL] Slot Allocation (Algorithm A) for class 45
 - Skipping TS 0, because not enabled
 - Skipping TS 1, because not enabled
@@ -1017,10 +1017,10 @@
 TBF(TFI=18 TLLI=0xc0000012 DIR=DL STATE=ASSIGN) TX: START Immediate Assignment Downlink (PCH)
  - TRX=0 (0) TS=4 TA=220 pollFN=-1
 TBF(TFI=18 TLLI=0xc0000012 DIR=DL STATE=ASSIGN) appending 256 bytes
-********** DL-TBF starts here **********
-Allocating DL TBF: MS_CLASS=45/0
 Creating MS object, TLLI = 0x00000000
 Modifying MS object, TLLI = 0x00000000, MS class 0 -> 45
+********** DL-TBF starts here **********
+Allocating DL TBF: MS_CLASS=45/0
 [DL] Slot Allocation (Algorithm A) for class 45
 - Skipping TS 0, because not enabled
 - Skipping TS 1, because not enabled
@@ -1042,10 +1042,10 @@
 TBF(TFI=19 TLLI=0xc0000013 DIR=DL STATE=ASSIGN) TX: START Immediate Assignment Downlink (PCH)
  - TRX=0 (0) TS=4 TA=220 pollFN=-1
 TBF(TFI=19 TLLI=0xc0000013 DIR=DL STATE=ASSIGN) appending 256 bytes
-********** DL-TBF starts here **********
-Allocating DL TBF: MS_CLASS=45/0
 Creating MS object, TLLI = 0x00000000
 Modifying MS object, TLLI = 0x00000000, MS class 0 -> 45
+********** DL-TBF starts here **********
+Allocating DL TBF: MS_CLASS=45/0
 [DL] Slot Allocation (Algorithm A) for class 45
 - Skipping TS 0, because not enabled
 - Skipping TS 1, because not enabled
@@ -1067,10 +1067,10 @@
 TBF(TFI=20 TLLI=0xc0000014 DIR=DL STATE=ASSIGN) TX: START Immediate Assignment Downlink (PCH)
  - TRX=0 (0) TS=4 TA=220 pollFN=-1
 TBF(TFI=20 TLLI=0xc0000014 DIR=DL STATE=ASSIGN) appending 256 bytes
-********** DL-TBF starts here **********
-Allocating DL TBF: MS_CLASS=45/0
 Creating MS object, TLLI = 0x00000000
 Modifying MS object, TLLI = 0x00000000, MS class 0 -> 45
+********** DL-TBF starts here **********
+Allocating DL TBF: MS_CLASS=45/0
 [DL] Slot Allocation (Algorithm A) for class 45
 - Skipping TS 0, because not enabled
 - Skipping TS 1, because not enabled
@@ -1092,10 +1092,10 @@
 TBF(TFI=21 TLLI=0xc0000015 DIR=DL STATE=ASSIGN) TX: START Immediate Assignment Downlink (PCH)
  - TRX=0 (0) TS=4 TA=220 pollFN=-1
 TBF(TFI=21 TLLI=0xc0000015 DIR=DL STATE=ASSIGN) appending 256 bytes
-********** DL-TBF starts here **********
-Allocating DL TBF: MS_CLASS=45/0
 Creating MS object, TLLI = 0x00000000
 Modifying MS object, TLLI = 0x00000000, MS class 0 -> 45
+********** DL-TBF starts here **********
+Allocating DL TBF: MS_CLASS=45/0
 [DL] Slot Allocation (Algorithm A) for class 45
 - Skipping TS 0, because not enabled
 - Skipping TS 1, because not enabled
@@ -1117,10 +1117,10 @@
 TBF(TFI=22 TLLI=0xc0000016 DIR=DL STATE=ASSIGN) TX: START Immediate Assignment Downlink (PCH)
  - TRX=0 (0) TS=4 TA=220 pollFN=-1
 TBF(TFI=22 TLLI=0xc0000016 DIR=DL STATE=ASSIGN) appending 256 bytes
-********** DL-TBF starts here **********
-Allocating DL TBF: MS_CLASS=45/0
 Creating MS object, TLLI = 0x00000000
 Modifying MS object, TLLI = 0x00000000, MS class 0 -> 45
+********** DL-TBF starts here **********
+Allocating DL TBF: MS_CLASS=45/0
 [DL] Slot Allocation (Algorithm A) for class 45
 - Skipping TS 0, because not enabled
 - Skipping TS 1, because not enabled
@@ -1142,10 +1142,10 @@
 TBF(TFI=23 TLLI=0xc0000017 DIR=DL STATE=ASSIGN) TX: START Immediate Assignment Downlink (PCH)
  - TRX=0 (0) TS=4 TA=220 pollFN=-1
 TBF(TFI=23 TLLI=0xc0000017 DIR=DL STATE=ASSIGN) appending 256 bytes
-********** DL-TBF starts here **********
-Allocating DL TBF: MS_CLASS=45/0
 Creating MS object, TLLI = 0x00000000
 Modifying MS object, TLLI = 0x00000000, MS class 0 -> 45
+********** DL-TBF starts here **********
+Allocating DL TBF: MS_CLASS=45/0
 [DL] Slot Allocation (Algorithm A) for class 45
 - Skipping TS 0, because not enabled
 - Skipping TS 1, because not enabled
@@ -1167,10 +1167,10 @@
 TBF(TFI=24 TLLI=0xc0000018 DIR=DL STATE=ASSIGN) TX: START Immediate Assignment Downlink (PCH)
  - TRX=0 (0) TS=4 TA=220 pollFN=-1
 TBF(TFI=24 TLLI=0xc0000018 DIR=DL STATE=ASSIGN) appending 256 bytes
-********** DL-TBF starts here **********
-Allocating DL TBF: MS_CLASS=45/0
 Creating MS object, TLLI = 0x00000000
 Modifying MS object, TLLI = 0x00000000, MS class 0 -> 45
+********** DL-TBF starts here **********
+Allocating DL TBF: MS_CLASS=45/0
 [DL] Slot Allocation (Algorithm A) for class 45
 - Skipping TS 0, because not enabled
 - Skipping TS 1, because not enabled
@@ -1192,10 +1192,10 @@
 TBF(TFI=25 TLLI=0xc0000019 DIR=DL STATE=ASSIGN) TX: START Immediate Assignment Downlink (PCH)
  - TRX=0 (0) TS=4 TA=220 pollFN=-1
 TBF(TFI=25 TLLI=0xc0000019 DIR=DL STATE=ASSIGN) appending 256 bytes
-********** DL-TBF starts here **********
-Allocating DL TBF: MS_CLASS=45/0
 Creating MS object, TLLI = 0x00000000
 Modifying MS object, TLLI = 0x00000000, MS class 0 -> 45
+********** DL-TBF starts here **********
+Allocating DL TBF: MS_CLASS=45/0
 [DL] Slot Allocation (Algorithm A) for class 45
 - Skipping TS 0, because not enabled
 - Skipping TS 1, because not enabled
@@ -1217,10 +1217,10 @@
 TBF(TFI=26 TLLI=0xc000001a DIR=DL STATE=ASSIGN) TX: START Immediate Assignment Downlink (PCH)
  - TRX=0 (0) TS=4 TA=220 pollFN=-1
 TBF(TFI=26 TLLI=0xc000001a DIR=DL STATE=ASSIGN) appending 256 bytes
-********** DL-TBF starts here **********
-Allocating DL TBF: MS_CLASS=45/0
 Creating MS object, TLLI = 0x00000000
 Modifying MS object, TLLI = 0x00000000, MS class 0 -> 45
+********** DL-TBF starts here **********
+Allocating DL TBF: MS_CLASS=45/0
 [DL] Slot Allocation (Algorithm A) for class 45
 - Skipping TS 0, because not enabled
 - Skipping TS 1, because not enabled
@@ -1242,10 +1242,10 @@
 TBF(TFI=27 TLLI=0xc000001b DIR=DL STATE=ASSIGN) TX: START Immediate Assignment Downlink (PCH)
  - TRX=0 (0) TS=4 TA=220 pollFN=-1
 TBF(TFI=27 TLLI=0xc000001b DIR=DL STATE=ASSIGN) appending 256 bytes
-********** DL-TBF starts here **********
-Allocating DL TBF: MS_CLASS=45/0
 Creating MS object, TLLI = 0x00000000
 Modifying MS object, TLLI = 0x00000000, MS class 0 -> 45
+********** DL-TBF starts here **********
+Allocating DL TBF: MS_CLASS=45/0
 [DL] Slot Allocation (Algorithm A) for class 45
 - Skipping TS 0, because not enabled
 - Skipping TS 1, because not enabled
@@ -1267,10 +1267,10 @@
 TBF(TFI=28 TLLI=0xc000001c DIR=DL STATE=ASSIGN) TX: START Immediate Assignment Downlink (PCH)
  - TRX=0 (0) TS=4 TA=220 pollFN=-1
 TBF(TFI=28 TLLI=0xc000001c DIR=DL STATE=ASSIGN) appending 256 bytes
-********** DL-TBF starts here **********
-Allocating DL TBF: MS_CLASS=45/0
 Creating MS object, TLLI = 0x00000000
 Modifying MS object, TLLI = 0x00000000, MS class 0 -> 45
+********** DL-TBF starts here **********
+Allocating DL TBF: MS_CLASS=45/0
 [DL] Slot Allocation (Algorithm A) for class 45
 - Skipping TS 0, because not enabled
 - Skipping TS 1, because not enabled
@@ -1292,10 +1292,10 @@
 TBF(TFI=29 TLLI=0xc000001d DIR=DL STATE=ASSIGN) TX: START Immediate Assignment Downlink (PCH)
  - TRX=0 (0) TS=4 TA=220 pollFN=-1
 TBF(TFI=29 TLLI=0xc000001d DIR=DL STATE=ASSIGN) appending 256 bytes
-********** DL-TBF starts here **********
-Allocating DL TBF: MS_CLASS=45/0
 Creating MS object, TLLI = 0x00000000
 Modifying MS object, TLLI = 0x00000000, MS class 0 -> 45
+********** DL-TBF starts here **********
+Allocating DL TBF: MS_CLASS=45/0
 [DL] Slot Allocation (Algorithm A) for class 45
 - Skipping TS 0, because not enabled
 - Skipping TS 1, because not enabled
@@ -1317,10 +1317,10 @@
 TBF(TFI=30 TLLI=0xc000001e DIR=DL STATE=ASSIGN) TX: START Immediate Assignment Downlink (PCH)
  - TRX=0 (0) TS=4 TA=220 pollFN=-1
 TBF(TFI=30 TLLI=0xc000001e DIR=DL STATE=ASSIGN) appending 256 bytes
-********** DL-TBF starts here **********
-Allocating DL TBF: MS_CLASS=45/0
 Creating MS object, TLLI = 0x00000000
 Modifying MS object, TLLI = 0x00000000, MS class 0 -> 45
+********** DL-TBF starts here **********
+Allocating DL TBF: MS_CLASS=45/0
 [DL] Slot Allocation (Algorithm A) for class 45
 - Skipping TS 0, because not enabled
 - Skipping TS 1, because not enabled
@@ -1342,20 +1342,20 @@
 TBF(TFI=31 TLLI=0xc000001f DIR=DL STATE=ASSIGN) TX: START Immediate Assignment Downlink (PCH)
  - TRX=0 (0) TS=4 TA=220 pollFN=-1
 TBF(TFI=31 TLLI=0xc000001f DIR=DL STATE=ASSIGN) appending 256 bytes
-********** DL-TBF starts here **********
-Allocating DL TBF: MS_CLASS=45/0
 Creating MS object, TLLI = 0x00000000
 Modifying MS object, TLLI = 0x00000000, MS class 0 -> 45
+********** DL-TBF starts here **********
+Allocating DL TBF: MS_CLASS=45/0
 [DL] Slot Allocation (Algorithm A) for class 45
 [DL] algo A <single> (suggested TRX: -1): failed to find a usable TRX (TFI exhausted)
 No PDCH resource
 === end test_tbf_exhaustion ===
 Destroying MS object, TLLI = 0x00000000
 === start test_tbf_dl_llc_loss ===
-********** DL-TBF starts here **********
-Allocating DL TBF: MS_CLASS=45/0
 Creating MS object, TLLI = 0x00000000
 Modifying MS object, TLLI = 0x00000000, MS class 0 -> 45
+********** DL-TBF starts here **********
+Allocating DL TBF: MS_CLASS=45/0
 [DL] Slot Allocation (Algorithm A) for class 45
 - Skipping TS 0, because not enabled
 - Skipping TS 1, because not enabled
@@ -3053,14 +3053,17 @@
 TBF(TFI=1 TLLI=0xf1223344 DIR=DL STATE=FINISHED) msg block (BSN 10, CS-1): 0f 03 14 4d 43 20 50 41 43 4b 45 54 20 30 39 20 28 54 42 46 20 32 29 
 === end test_tbf_dl_reuse ===
 === start test_tbf_gprs_egprs ===
+Creating MS object, TLLI = 0x00000000
+Modifying MS object, TLLI = 0x00000000, MS class 0 -> 45
 Not accepting non-EGPRS phone in EGPRS-only mode
 No PDCH resource
 === end test_tbf_gprs_egprs ===
+Destroying MS object, TLLI = 0x00000000
 === start test_tbf_ws ===
-********** DL-TBF starts here **********
-Allocating DL TBF: MS_CLASS=12/0
 Creating MS object, TLLI = 0x00000000
 Modifying MS object, TLLI = 0x00000000, MS class 0 -> 12
+********** DL-TBF starts here **********
+Allocating DL TBF: MS_CLASS=12/0
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
 Slot Allocation (Algorithm B) for class 12
@@ -3094,11 +3097,11 @@
 Detaching TBF from MS object, TLLI = 0x00000000, TBF = TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=RELEASING)
 Destroying MS object, TLLI = 0x00000000
 ********** DL-TBF ends here **********
-********** DL-TBF starts here **********
-Allocating DL TBF: MS_CLASS=12/12
 Creating MS object, TLLI = 0x00000000
 Modifying MS object, TLLI = 0x00000000, MS class 0 -> 12
 Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 12
+********** DL-TBF starts here **********
+Allocating DL TBF: MS_CLASS=12/12
 TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL EGPRS) Enabled EGPRS, mode EGPRS
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
@@ -3452,13 +3455,13 @@
 === end test_tbf_egprs_two_phase_spb ===
 === start test_tbf_egprs_dl ===
 Testing MCS-1
+Creating MS object, TLLI = 0x00000000
+Modifying MS object, TLLI = 0x00000000, MS class 0 -> 11
+Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 11
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
 ********** DL-TBF starts here **********
 Allocating DL TBF: MS_CLASS=11/11
-Creating MS object, TLLI = 0x00000000
-Modifying MS object, TLLI = 0x00000000, MS class 0 -> 11
-Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 11
 TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL EGPRS) Enabled EGPRS, mode EGPRS
 [DL] Slot Allocation (Algorithm A) for class 0
 - Skipping TS 0, because not enabled
@@ -3759,13 +3762,13 @@
 Destroying MS object, TLLI = 0xffeeddcc
 ********** DL-TBF ends here **********
 Testing MCS-2
+Creating MS object, TLLI = 0x00000000
+Modifying MS object, TLLI = 0x00000000, MS class 0 -> 11
+Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 11
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
 ********** DL-TBF starts here **********
 Allocating DL TBF: MS_CLASS=11/11
-Creating MS object, TLLI = 0x00000000
-Modifying MS object, TLLI = 0x00000000, MS class 0 -> 11
-Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 11
 TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL EGPRS) Enabled EGPRS, mode EGPRS
 [DL] Slot Allocation (Algorithm A) for class 0
 - Skipping TS 0, because not enabled
@@ -4016,13 +4019,13 @@
 Destroying MS object, TLLI = 0xffeeddcc
 ********** DL-TBF ends here **********
 Testing MCS-3
+Creating MS object, TLLI = 0x00000000
+Modifying MS object, TLLI = 0x00000000, MS class 0 -> 11
+Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 11
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
 ********** DL-TBF starts here **********
 Allocating DL TBF: MS_CLASS=11/11
-Creating MS object, TLLI = 0x00000000
-Modifying MS object, TLLI = 0x00000000, MS class 0 -> 11
-Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 11
 TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL EGPRS) Enabled EGPRS, mode EGPRS
 [DL] Slot Allocation (Algorithm A) for class 0
 - Skipping TS 0, because not enabled
@@ -4235,13 +4238,13 @@
 Destroying MS object, TLLI = 0xffeeddcc
 ********** DL-TBF ends here **********
 Testing MCS-4
+Creating MS object, TLLI = 0x00000000
+Modifying MS object, TLLI = 0x00000000, MS class 0 -> 11
+Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 11
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
 ********** DL-TBF starts here **********
 Allocating DL TBF: MS_CLASS=11/11
-Creating MS object, TLLI = 0x00000000
-Modifying MS object, TLLI = 0x00000000, MS class 0 -> 11
-Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 11
 TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL EGPRS) Enabled EGPRS, mode EGPRS
 [DL] Slot Allocation (Algorithm A) for class 0
 - Skipping TS 0, because not enabled
@@ -4422,13 +4425,13 @@
 Destroying MS object, TLLI = 0xffeeddcc
 ********** DL-TBF ends here **********
 Testing MCS-5
+Creating MS object, TLLI = 0x00000000
+Modifying MS object, TLLI = 0x00000000, MS class 0 -> 11
+Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 11
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
 ********** DL-TBF starts here **********
 Allocating DL TBF: MS_CLASS=11/11
-Creating MS object, TLLI = 0x00000000
-Modifying MS object, TLLI = 0x00000000, MS class 0 -> 11
-Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 11
 TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL EGPRS) Enabled EGPRS, mode EGPRS
 [DL] Slot Allocation (Algorithm A) for class 0
 - Skipping TS 0, because not enabled
@@ -4589,13 +4592,13 @@
 Destroying MS object, TLLI = 0xffeeddcc
 ********** DL-TBF ends here **********
 Testing MCS-6
+Creating MS object, TLLI = 0x00000000
+Modifying MS object, TLLI = 0x00000000, MS class 0 -> 11
+Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 11
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
 ********** DL-TBF starts here **********
 Allocating DL TBF: MS_CLASS=11/11
-Creating MS object, TLLI = 0x00000000
-Modifying MS object, TLLI = 0x00000000, MS class 0 -> 11
-Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 11
 TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL EGPRS) Enabled EGPRS, mode EGPRS
 [DL] Slot Allocation (Algorithm A) for class 0
 - Skipping TS 0, because not enabled
@@ -4738,13 +4741,13 @@
 Destroying MS object, TLLI = 0xffeeddcc
 ********** DL-TBF ends here **********
 Testing MCS-7
+Creating MS object, TLLI = 0x00000000
+Modifying MS object, TLLI = 0x00000000, MS class 0 -> 11
+Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 11
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
 ********** DL-TBF starts here **********
 Allocating DL TBF: MS_CLASS=11/11
-Creating MS object, TLLI = 0x00000000
-Modifying MS object, TLLI = 0x00000000, MS class 0 -> 11
-Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 11
 TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL EGPRS) Enabled EGPRS, mode EGPRS
 [DL] Slot Allocation (Algorithm A) for class 0
 - Skipping TS 0, because not enabled
@@ -4882,13 +4885,13 @@
 Destroying MS object, TLLI = 0xffeeddcc
 ********** DL-TBF ends here **********
 Testing MCS-8
+Creating MS object, TLLI = 0x00000000
+Modifying MS object, TLLI = 0x00000000, MS class 0 -> 11
+Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 11
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
 ********** DL-TBF starts here **********
 Allocating DL TBF: MS_CLASS=11/11
-Creating MS object, TLLI = 0x00000000
-Modifying MS object, TLLI = 0x00000000, MS class 0 -> 11
-Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 11
 TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL EGPRS) Enabled EGPRS, mode EGPRS
 [DL] Slot Allocation (Algorithm A) for class 0
 - Skipping TS 0, because not enabled
@@ -5015,13 +5018,13 @@
 Destroying MS object, TLLI = 0xffeeddcc
 ********** DL-TBF ends here **********
 Testing MCS-9
+Creating MS object, TLLI = 0x00000000
+Modifying MS object, TLLI = 0x00000000, MS class 0 -> 11
+Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 11
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
 ********** DL-TBF starts here **********
 Allocating DL TBF: MS_CLASS=11/11
-Creating MS object, TLLI = 0x00000000
-Modifying MS object, TLLI = 0x00000000, MS class 0 -> 11
-Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 11
 TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL EGPRS) Enabled EGPRS, mode EGPRS
 [DL] Slot Allocation (Algorithm A) for class 0
 - Skipping TS 0, because not enabled
@@ -5150,13 +5153,13 @@
 === end test_tbf_egprs_dl ===
 === start test_tbf_egprs_retx_dl ===
 Testing retx for MCS 6 - 6
+Creating MS object, TLLI = 0x00000000
+Modifying MS object, TLLI = 0x00000000, MS class 0 -> 11
+Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 11
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
 ********** DL-TBF starts here **********
 Allocating DL TBF: MS_CLASS=11/11
-Creating MS object, TLLI = 0x00000000
-Modifying MS object, TLLI = 0x00000000, MS class 0 -> 11
-Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 11
 TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL EGPRS) Enabled EGPRS, mode EGPRS
 [DL] Slot Allocation (Algorithm A) for class 0
 - Skipping TS 0, because not enabled
@@ -5206,13 +5209,13 @@
 Destroying MS object, TLLI = 0xffeeddcc
 ********** DL-TBF ends here **********
 Testing retx for MCS 1 - 9
+Creating MS object, TLLI = 0x00000000
+Modifying MS object, TLLI = 0x00000000, MS class 0 -> 11
+Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 11
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
 ********** DL-TBF starts here **********
 Allocating DL TBF: MS_CLASS=11/11
-Creating MS object, TLLI = 0x00000000
-Modifying MS object, TLLI = 0x00000000, MS class 0 -> 11
-Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 11
 TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL EGPRS) Enabled EGPRS, mode EGPRS
 [DL] Slot Allocation (Algorithm A) for class 0
 - Skipping TS 0, because not enabled
@@ -5262,13 +5265,13 @@
 Destroying MS object, TLLI = 0xffeeddcc
 ********** DL-TBF ends here **********
 Testing retx for MCS 2 - 8
+Creating MS object, TLLI = 0x00000000
+Modifying MS object, TLLI = 0x00000000, MS class 0 -> 11
+Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 11
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
 ********** DL-TBF starts here **********
 Allocating DL TBF: MS_CLASS=11/11
-Creating MS object, TLLI = 0x00000000
-Modifying MS object, TLLI = 0x00000000, MS class 0 -> 11
-Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 11
 TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL EGPRS) Enabled EGPRS, mode EGPRS
 [DL] Slot Allocation (Algorithm A) for class 0
 - Skipping TS 0, because not enabled
@@ -5318,13 +5321,13 @@
 Destroying MS object, TLLI = 0xffeeddcc
 ********** DL-TBF ends here **********
 Testing retx for MCS 5 - 7
+Creating MS object, TLLI = 0x00000000
+Modifying MS object, TLLI = 0x00000000, MS class 0 -> 11
+Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 11
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
 ********** DL-TBF starts here **********
 Allocating DL TBF: MS_CLASS=11/11
-Creating MS object, TLLI = 0x00000000
-Modifying MS object, TLLI = 0x00000000, MS class 0 -> 11
-Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 11
 TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL EGPRS) Enabled EGPRS, mode EGPRS
 [DL] Slot Allocation (Algorithm A) for class 0
 - Skipping TS 0, because not enabled
@@ -5390,13 +5393,13 @@
 Destroying MS object, TLLI = 0xffeeddcc
 ********** DL-TBF ends here **********
 Testing retx for MCS 6 - 9
+Creating MS object, TLLI = 0x00000000
+Modifying MS object, TLLI = 0x00000000, MS class 0 -> 11
+Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 11
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
 ********** DL-TBF starts here **********
 Allocating DL TBF: MS_CLASS=11/11
-Creating MS object, TLLI = 0x00000000
-Modifying MS object, TLLI = 0x00000000, MS class 0 -> 11
-Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 11
 TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL EGPRS) Enabled EGPRS, mode EGPRS
 [DL] Slot Allocation (Algorithm A) for class 0
 - Skipping TS 0, because not enabled
@@ -5462,13 +5465,13 @@
 Destroying MS object, TLLI = 0xffeeddcc
 ********** DL-TBF ends here **********
 Testing retx for MCS 7 - 5
+Creating MS object, TLLI = 0x00000000
+Modifying MS object, TLLI = 0x00000000, MS class 0 -> 11
+Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 11
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
 ********** DL-TBF starts here **********
 Allocating DL TBF: MS_CLASS=11/11
-Creating MS object, TLLI = 0x00000000
-Modifying MS object, TLLI = 0x00000000, MS class 0 -> 11
-Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 11
 TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL EGPRS) Enabled EGPRS, mode EGPRS
 [DL] Slot Allocation (Algorithm A) for class 0
 - Skipping TS 0, because not enabled
@@ -5534,13 +5537,13 @@
 Destroying MS object, TLLI = 0xffeeddcc
 ********** DL-TBF ends here **********
 Testing retx for MCS 9 - 6
+Creating MS object, TLLI = 0x00000000
+Modifying MS object, TLLI = 0x00000000, MS class 0 -> 11
+Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 11
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
 ********** DL-TBF starts here **********
 Allocating DL TBF: MS_CLASS=11/11
-Creating MS object, TLLI = 0x00000000
-Modifying MS object, TLLI = 0x00000000, MS class 0 -> 11
-Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 11
 TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL EGPRS) Enabled EGPRS, mode EGPRS
 [DL] Slot Allocation (Algorithm A) for class 0
 - Skipping TS 0, because not enabled
@@ -5608,13 +5611,13 @@
 === end test_tbf_egprs_retx_dl ===
 === start test_tbf_egprs_spb_dl ===
 Testing retx for MCS 6 to reseg_mcs 3
+Creating MS object, TLLI = 0x00000000
+Modifying MS object, TLLI = 0x00000000, MS class 0 -> 11
+Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 11
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
 ********** DL-TBF starts here **********
 Allocating DL TBF: MS_CLASS=11/11
-Creating MS object, TLLI = 0x00000000
-Modifying MS object, TLLI = 0x00000000, MS class 0 -> 11
-Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 11
 TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL EGPRS) Enabled EGPRS, mode EGPRS
 [DL] Slot Allocation (Algorithm A) for class 0
 - Skipping TS 0, because not enabled
@@ -5671,13 +5674,13 @@
 Destroying MS object, TLLI = 0xffeeddcc
 ********** DL-TBF ends here **********
 Testing retx for MCS 5 to reseg_mcs 2
+Creating MS object, TLLI = 0x00000000
+Modifying MS object, TLLI = 0x00000000, MS class 0 -> 11
+Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 11
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
 ********** DL-TBF starts here **********
 Allocating DL TBF: MS_CLASS=11/11
-Creating MS object, TLLI = 0x00000000
-Modifying MS object, TLLI = 0x00000000, MS class 0 -> 11
-Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 11
 TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL EGPRS) Enabled EGPRS, mode EGPRS
 [DL] Slot Allocation (Algorithm A) for class 0
 - Skipping TS 0, because not enabled
@@ -5734,13 +5737,13 @@
 Destroying MS object, TLLI = 0xffeeddcc
 ********** DL-TBF ends here **********
 Testing retx for MCS 4 to reseg_mcs 1
+Creating MS object, TLLI = 0x00000000
+Modifying MS object, TLLI = 0x00000000, MS class 0 -> 11
+Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 11
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
 ********** DL-TBF starts here **********
 Allocating DL TBF: MS_CLASS=11/11
-Creating MS object, TLLI = 0x00000000
-Modifying MS object, TLLI = 0x00000000, MS class 0 -> 11
-Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 11
 TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL EGPRS) Enabled EGPRS, mode EGPRS
 [DL] Slot Allocation (Algorithm A) for class 0
 - Skipping TS 0, because not enabled
@@ -5797,13 +5800,13 @@
 Destroying MS object, TLLI = 0xffeeddcc
 ********** DL-TBF ends here **********
 Testing retx for MCS 6 to reseg_mcs 3
+Creating MS object, TLLI = 0x00000000
+Modifying MS object, TLLI = 0x00000000, MS class 0 -> 11
+Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 11
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
 ********** DL-TBF starts here **********
 Allocating DL TBF: MS_CLASS=11/11
-Creating MS object, TLLI = 0x00000000
-Modifying MS object, TLLI = 0x00000000, MS class 0 -> 11
-Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 11
 TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL EGPRS) Enabled EGPRS, mode EGPRS
 [DL] Slot Allocation (Algorithm A) for class 0
 - Skipping TS 0, because not enabled
@@ -5979,11 +5982,11 @@
 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) appending 256 bytes
 === end test_tbf_puan_urbb_len ===
 === start test_tbf_update_ws ===
-********** DL-TBF starts here **********
-Allocating DL TBF: MS_CLASS=11/11
 Creating MS object, TLLI = 0x00000000
 Modifying MS object, TLLI = 0x00000000, MS class 0 -> 11
 Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 11
+********** DL-TBF starts here **********
+Allocating DL TBF: MS_CLASS=11/11
 TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL EGPRS) Enabled EGPRS, mode EGPRS
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
@@ -6138,13 +6141,13 @@
 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) appending 256 bytes
 === end test_tbf_li_decoding ===
 === start test_tbf_epdan_out_of_rx_window ===
+Creating MS object, TLLI = 0x00000000
+Modifying MS object, TLLI = 0x00000000, MS class 0 -> 11
+Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 11
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
 ********** DL-TBF starts here **********
 Allocating DL TBF: MS_CLASS=11/11
-Creating MS object, TLLI = 0x00000000
-Modifying MS object, TLLI = 0x00000000, MS class 0 -> 11
-Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 11
 TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL EGPRS) Enabled EGPRS, mode EGPRS
 [DL] Slot Allocation (Algorithm A) for class 0
 - Skipping TS 0, because not enabled
@@ -7781,13 +7784,13 @@
 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) appending 256 bytes
 === end test_tbf_egprs_two_phase_puan ===
 === start test_packet_access_rej_epdan ===
+Creating MS object, TLLI = 0x00000000
+Modifying MS object, TLLI = 0x00000000, MS class 0 -> 11
+Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 11
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
 ********** DL-TBF starts here **********
 Allocating DL TBF: MS_CLASS=11/11
-Creating MS object, TLLI = 0x00000000
-Modifying MS object, TLLI = 0x00000000, MS class 0 -> 11
-Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 11
 [DL] Slot Allocation (Algorithm A) for class 11
 - Skipping TS 0, because not enabled
 - Skipping TS 1, because not enabled
diff --git a/tests/types/TypesTest.cpp b/tests/types/TypesTest.cpp
index 8469d60..e3c0991 100644
--- a/tests/types/TypesTest.cpp
+++ b/tests/types/TypesTest.cpp
@@ -756,8 +756,9 @@
 	the_bts.bts_data()->alloc_algorithm = alloc_algorithm_a;
 	the_bts.bts_data()->trx[0].pdch[2].enable();
 	the_bts.bts_data()->trx[0].pdch[3].enable();
+	GprsMs *ms = the_bts.ms_alloc(1, 1);
 
-	struct gprs_rlcmac_tbf *tbf = tbf_alloc_dl_tbf(the_bts.bts_data(), NULL, 0, 1, 1, false);
+	struct gprs_rlcmac_tbf *tbf = tbf_alloc_dl_tbf(the_bts.bts_data(), ms, 0, false);
 	static uint8_t res[] = { 0x06,
 				 0x3f, /* Immediate Assignment Message Type */
 				 0x30, /* §10.5.2.26 Page Mode and §10.5.2.25b Dedicated mode/TBF */

-- 
To view, visit https://gerrit.osmocom.org/c/osmo-pcu/+/18134
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-pcu
Gerrit-Branch: master
Gerrit-Change-Id: I87f6cdf8288a688466020bda0874e68b57aa71c4
Gerrit-Change-Number: 18134
Gerrit-PatchSet: 3
Gerrit-Owner: pespin <pespin at sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <axilirator at gmail.com>
Gerrit-Reviewer: laforge <laforge at osmocom.org>
Gerrit-Reviewer: pespin <pespin at sysmocom.de>
Gerrit-MessageType: merged
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20200512/15c37305/attachment.htm>


More information about the gerrit-log mailing list