[PATCH] osmo-pcu[master]: PDCH allocation across two TRX

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

arvind.sirsikar gerrit-no-reply at lists.osmocom.org
Tue Jan 24 07:00:51 UTC 2017


Hello Max, Jenkins Builder,

I'd like you to reexamine a change.  Please visit

    https://gerrit.osmocom.org/1512

to look at the new patch set (#3).

PDCH allocation across two TRX

Implementation:
PCU keeps track of number PDCH across all the TRXs at BTS context and also keeps number
of active PDCHs in each TRX context. This ratio gives the CAPACITY of each TRX.

1st Phase:
        While selection of TRX, functions get_possible_trxs(for multiple TS)
        and get_possible_trxs_sba(Single block allocation, Ex: during RACH)
        gets possible TRXs based on TFIs availability.
2nd Phase: outcome of TRXs(from get_possible_trxs, get_possible_trxs_sba) will
        be fed to get_suitable_trx function. Which does actual load balancing on each TRX.
        And selects the best fit TRX, based on below equation
        PROBABILITY = MAX_PROBABILITY – ((LOAD * 100)/CAPACITY);

        If same PROBABILITY
                Select the one with higher capacity
        Else
                Find the TRX with higher PROBABILITY

        MAX_PROBABILITY  = 65535;
        LOAD: Initialized to 0, Later gets incremented with number of TS allocated.
        and decremented while TBF deletion, based on number of TS allocated

Below are the test executed on Unit test environment
    1)  2 TRXs, with same Capacity
    2)  2 TRX with ½ capacity
    3)  2 TRXs with ¼ capacity
    4)  2 TRX with UL and DL allocation to ensure Tbfs on both direction is hosted on same TRX
    5)  2 TRX with same Capacity and  DL TBF creation and deletion scenarios to ensure proper
        load balancing criteria for actual Load.

Below are the Test executed on Integration setup with Ettus B200 setup with 2
        TRXs with same CAPACITY.

    1)  TRX allocation during RACH procedure(SBA allocation)
    2)  TRX allocation during DL TBF creation with multi time slots(4 time slots)
    3)  TRX allocation while Ping Test
    4)  TRX allocation while UDP test
    5)  TRX allocation for web browsing.
    6)  2 MS test with each TRX sharing 1 MS. Received aggregate throughput of
        446 kbps(223 Kbps each)

    Limitation:
    1)   BSSGP flow control needs to be tuned since test with 2 MS with each MS on different TRX
        runs for 20 mins
    2)  USF resource availibility is not checked while selecting the TRX as existing implementation

Change-Id: I222c3340872ffa1dd6e8fabe5276d793e660f67d
Related: OS# 1775
---
M src/bts.cpp
M src/bts.h
M src/gprs_rlcmac_ts_alloc.cpp
M src/sba.cpp
M src/tbf.cpp
M tests/tbf/TbfTest.cpp
M tests/tbf/TbfTest.err
M tests/tbf/TbfTest.ok
8 files changed, 1,980 insertions(+), 44 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/osmo-pcu refs/changes/12/1512/3

diff --git a/src/bts.cpp b/src/bts.cpp
index b4e18e3..b83f5f9 100644
--- a/src/bts.cpp
+++ b/src/bts.cpp
@@ -188,11 +188,13 @@
 {
 	memset(&m_bts, 0, sizeof(m_bts));
 	m_bts.bts = this;
-
+	m_total_pdch = 0;
 	/* initialize back pointers */
 	for (size_t trx_no = 0; trx_no < ARRAY_SIZE(m_bts.trx); ++trx_no) {
 		struct gprs_rlcmac_trx *trx = &m_bts.trx[trx_no];
 		trx->trx_no = trx_no;
+		trx->num_pdch = 0;
+		trx->current_load = 0;
 		trx->bts = this;
 
 		for (size_t ts_no = 0; ts_no < ARRAY_SIZE(trx->pdch); ++ts_no) {
@@ -407,19 +409,97 @@
 	return m_bts.trx[trx].pdch[ts].ul_tbf_by_tfi(tfi);
 }
 
-/*
- * Search for free TFI and return TFI, TRX.
- * This method returns the first TFI that is currently not used in any PDCH of
- * a TRX. The first TRX that contains such an TFI is returned. Negative values
- * indicate errors.
+/*! \brief: Return TRX number if available, else returns -EBUSY
+ *  \param[in] dir The TBF direction(DL or UL)
+ *  \param[in] _trx The uint8_t *
+ *  \param[in] use_trx, if new MS receives -1, else receives current TRX of MS
+ *  \returns -EBUSY if no TRX is available else returns valid trx in *_trx
  */
 int BTS::tfi_find_free(enum gprs_rlcmac_tbf_direction dir,
 		uint8_t *_trx, int8_t use_trx)
 {
 	struct gprs_rlcmac_pdch *pdch;
-	uint32_t free_tfis;
+	uint32_t free_tfis = 0xffffffff;
+	uint8_t ts, tfi;
+	bool possible_trx[8];
+	int ret;
+
+	/* This function will get list of possible TRXs */
+	ret = get_possible_trxs(dir, possible_trx, use_trx);
+	if (ret < 0)
+		return -EBUSY;
+
+
+	if (use_trx >= 0)
+		*_trx = use_trx;
+	else
+		*_trx = get_suitable_trx(possible_trx);
+
+	LOGP(DRLCMAC, LOGL_DEBUG,
+			"Searching for first unallocated TFI: TRX=%d\n", *_trx);
+
+	for (ts = 0; ts < 8; ts++) {
+		pdch = &m_bts.trx[*_trx].pdch[ts];
+		free_tfis &= ~pdch->assigned_tfi(dir);
+	}
+	/* find the first */
+	for (tfi = 0; tfi < 32; tfi++) {
+		if (free_tfis & 1 << tfi)
+			break;
+	}
+
+	OSMO_ASSERT(tfi < 32);
+
+	LOGP(DRLCMAC, LOGL_DEBUG, " Found TFI=%d.\n", tfi);
+
+	return tfi;
+}
+
+/*! \brief: Prepares all the TRXs which can be used to host a perticulat TBF
+ *   for single block allocation
+ *  \param[in] *_trx The bool
+ *  \param[in] _trx The bool *. Array of TRXs. initialized to false at caller
+ *   array of size 8
+ *  \returns -EINVAL if no PDCH available else returns list of valid TRXs
+ */
+int BTS::get_possible_trxs_sba(
+		bool *_trx)
+{
+	uint8_t trx;
 	bool has_pdch = false;
-	uint8_t trx_from, trx_to, trx, ts, tfi;
+
+	for (trx = 0; trx < 8; trx++) {
+		if (bts_data()->trx[trx].num_pdch) {
+			_trx[trx] = true;
+			has_pdch = true;
+			LOGP(DRLCMAC, LOGL_DEBUG, " Valid TRX=%d.\n", trx);
+		} else {
+			_trx[trx] = false;
+			LOGP(DRLCMAC, LOGL_DEBUG, " Not valid TRX=%d.\n", trx);
+		}
+	}
+	if (has_pdch)
+		return 0;
+
+	return -EINVAL;
+}
+
+/*! \brief: Prepares all the TRXs which can be used to host a perticulat TBF
+ *   for multi slots allocation
+ *  \param[in] dir The gprs_rlcmac_tbf_direction
+ *  \param[in] _trx The bool *. Array of TRXs. initialized to false at caller
+ *   array of size 8
+ *  \returns -EINVAL if no PDCH available or -EBUSY if no TFIs available
+ *   else returns list of valid TRXs
+ */
+int BTS::get_possible_trxs(enum gprs_rlcmac_tbf_direction dir,
+		bool *_trx, int8_t use_trx)
+{
+	struct gprs_rlcmac_pdch *pdch;
+	uint32_t free_tfis;
+	uint32_t is_tfis_available = false;
+	bool has_pdch = false;
+	uint8_t trx_from, trx_to, trx, ts;
 
 	if (use_trx >= 0 && use_trx < 8)
 		trx_from = trx_to = use_trx;
@@ -442,8 +522,12 @@
 			trx_has_pdch = true;
 			has_pdch = true;
 		}
-		if (trx_has_pdch && free_tfis)
-			break;
+		if (trx_has_pdch && free_tfis) {
+			_trx[trx] = true;
+			is_tfis_available = true;
+		} else {
+			_trx[trx] = false;
+		}
 
 		free_tfis = 0;
 	}
@@ -452,26 +536,68 @@
 		return -EINVAL;
 	}
 
-	if (!free_tfis) {
+	if (!is_tfis_available) {
 		LOGP(DRLCMAC, LOGL_NOTICE, "No TFI available.\n");
 		return -EBUSY;
 	}
+	return 0;
+}
+
+/*! \brief: selects the best TRX which can be used to host a perticulat TBF
+ *   for multi/single slots allocation
+ *  \param[in] avail_trx The bool *. Array of TRXs. initialized to false
+ *   or true at caller. array of size 8
+ *  \returns selected_trx to host the TBF else returns -1
+ */
+int BTS::get_suitable_trx(bool *avail_trx)
+{
+	uint8_t trx;
+	uint32_t select_probability = 0;
+	uint32_t temp_probability = 0;
+	int selected_trx = -1;
+	bool is_better_trx = false;
 
 
-	LOGP(DRLCMAC, LOGL_DEBUG,
-		"Searching for first unallocated TFI: TRX=%d\n", trx);
+	for (trx = 0; trx <= 7; trx++) {
+		/* Check if this TRX is in possible list */
+		if (!avail_trx[trx])
+			continue;
 
-	/* find the first */
-	for (tfi = 0; tfi < 32; tfi++) {
-		if (free_tfis & 1 << tfi)
-			break;
+		is_better_trx = false;
+
+		temp_probability = MAX_LOAD_PROBABILITY -
+			(get_num_pdch() * 100 *
+			 m_bts.trx[trx].current_load)
+			/ m_bts.trx[trx].num_pdch;
+
+		LOGP(DRLCMAC, LOGL_DEBUG, "trx(%d) cur load(%d)"
+				" numpdch(%d) prob1(%u) seleprob(%u)"
+				" btsnumpdch(%d)\n", trx,
+				m_bts.trx[trx].current_load,
+				m_bts.trx[trx].num_pdch,
+				temp_probability, select_probability,
+				get_num_pdch());
+
+		if (temp_probability >= select_probability) {
+			if (temp_probability > select_probability)
+				is_better_trx = true;
+			else if (temp_probability == select_probability)
+				if (selected_trx >= 0 || selected_trx < 8)
+					if (m_bts.trx[selected_trx].num_pdch
+						< m_bts.trx[trx].num_pdch)
+						is_better_trx = true;
+		}
+		if (is_better_trx) {
+			selected_trx = trx;
+			select_probability =
+				temp_probability;
+			LOGP(DRLCMAC, LOGL_DEBUG, "selected pro(%u)"
+					"selected_trx(%d)\n",
+					select_probability, selected_trx);
+		}
 	}
 
-	OSMO_ASSERT(tfi < 32);
-
-	LOGP(DRLCMAC, LOGL_DEBUG, " Found TFI=%d.\n", tfi);
-	*_trx = trx;
-	return tfi;
+	return selected_trx;
 }
 
 int BTS::rcv_imm_ass_cnf(const uint8_t *data, uint32_t fn)
@@ -783,13 +909,17 @@
 {
 	/* TODO: Check if there are still allocated resources.. */
 	INIT_LLIST_HEAD(&paging_list);
+	trx->num_pdch++;
 	m_is_enabled = 1;
+	bts()->increment_num_pdch();
 }
 
 void gprs_rlcmac_pdch::disable()
 {
 	/* TODO.. kick free_resources once we know the TRX/TS we are on */
 	m_is_enabled = 0;
+	trx->num_pdch--;
+	bts()->decrement_num_pdch();
 }
 
 void gprs_rlcmac_pdch::free_resources()
diff --git a/src/bts.h b/src/bts.h
index 2932154..f022e5b 100644
--- a/src/bts.h
+++ b/src/bts.h
@@ -44,6 +44,7 @@
 #define LLC_CODEL_USE_DEFAULT (-1)
 #define MAX_GPRS_CS 9
 
+#define MAX_LOAD_PROBABILITY 0xffffffff
 
 struct BTS;
 struct GprsMs;
@@ -136,7 +137,8 @@
 	/* back pointers */
 	struct BTS *bts;
 	uint8_t trx_no;
-
+	uint8_t current_load;
+	uint8_t num_pdch;
 #ifdef __cplusplus
 	void reserve_slots(enum gprs_rlcmac_tbf_direction dir, uint8_t slots);
 	void unreserve_slots(enum gprs_rlcmac_tbf_direction dir, uint8_t slots);
@@ -345,6 +347,9 @@
 	gprs_rlcmac_ul_tbf *ul_tbf_by_tfi(uint8_t tfi, uint8_t trx, uint8_t ts);
 
 	int tfi_find_free(enum gprs_rlcmac_tbf_direction dir, uint8_t *_trx, int8_t use_trx);
+	int get_possible_trxs(enum gprs_rlcmac_tbf_direction dir,
+		bool *_trx, int8_t use_trx);
+	int get_suitable_trx(bool *suitable_trx);
 
 	int rcv_imm_ass_cnf(const uint8_t *data, uint32_t fn);
 	uint8_t is_single_block(uint16_t ra, enum ph_burst_type burst_type,
@@ -451,6 +456,10 @@
 
 	void ms_present(int32_t n);
 	int32_t ms_present_get();
+	void increment_num_pdch();
+	void decrement_num_pdch();
+	uint8_t get_num_pdch() const;
+	int get_possible_trxs_sba(bool *_trx);
 
 	/*
 	 * Below for C interface for the VTY
@@ -476,6 +485,8 @@
 	/* list of downlink TBFs */
 	LListHead<gprs_rlcmac_tbf> m_dl_tbfs;
 
+	/* The summation of all the PDCH across all TRX for this BTS*/
+	uint8_t m_total_pdch;
 private:
 	/* disable copying to avoid slicing */
 	BTS(const BTS&);
@@ -487,6 +498,21 @@
 	return m_cur_fn;
 }
 
+inline void BTS::increment_num_pdch()
+{
+	m_total_pdch++;
+}
+
+inline void BTS::decrement_num_pdch()
+{
+	m_total_pdch--;
+}
+
+inline uint8_t BTS::get_num_pdch() const
+{
+	return m_total_pdch;
+}
+
 inline SBAController *BTS::sba()
 {
 	return &m_sba;
diff --git a/src/gprs_rlcmac_ts_alloc.cpp b/src/gprs_rlcmac_ts_alloc.cpp
index 57197b2..7ede192 100644
--- a/src/gprs_rlcmac_ts_alloc.cpp
+++ b/src/gprs_rlcmac_ts_alloc.cpp
@@ -383,8 +383,12 @@
 	int tfi;
 	uint8_t trx_no;
 
-	if (use_trx == -1 && ms->current_trx())
+	LOGP(DRLCMAC, LOGL_DEBUG, "use_trx = %d\n", use_trx);
+
+	if (use_trx == -1 && ms->current_trx()) {
 		use_trx = ms->current_trx()->trx_no;
+		LOGP(DRLCMAC, LOGL_DEBUG, "MS alive = %d\n", use_trx);
+	}
 
 	tfi = bts->tfi_find_free(dir, &trx_no, use_trx);
 	if (tfi < 0)
@@ -392,6 +396,8 @@
 
 	if (trx_no_)
 		*trx_no_ = trx_no;
+
+	LOGP(DRLCMAC, LOGL_DEBUG, "FREE trx = %d TFI = %d\n", *trx_no_, tfi);
 
 	return tfi;
 }
@@ -479,6 +485,7 @@
 	}
 
 	tbf_->trx = trx;
+	trx->current_load++;
 	/* the only one TS is the common TS */
 	tbf_->first_ts = tbf_->first_common_ts = ts;
 	ms_->set_reserved_slots(trx, 1 << ts, 1 << ts);
@@ -1000,6 +1007,7 @@
 			if (!(dl_slots & (1 << ts)))
 				continue;
 
+			trx->current_load++;
 			LOGP(DRLCMAC, LOGL_DEBUG, "- Assigning DL TS "
 				"%d\n", ts);
 			assign_dlink_tbf(&trx->pdch[ts], dl_tbf, tfi);
@@ -1012,6 +1020,7 @@
 				continue;
 
 			OSMO_ASSERT(usf[ts] >= 0);
+			trx->current_load++;
 
 			LOGP(DRLCMAC, LOGL_DEBUG, "- Assigning UL TS "
 				"%d\n", ts);
diff --git a/src/sba.cpp b/src/sba.cpp
index 5d75b17..abe75e2 100644
--- a/src/sba.cpp
+++ b/src/sba.cpp
@@ -49,8 +49,27 @@
 
 	struct gprs_rlcmac_pdch *pdch;
 	struct gprs_rlcmac_sba *sba;
-	int8_t trx, ts;
+	int8_t ts;
 	uint32_t fn;
+	bool trxs[8];
+	int selected_trx;
+	int ret;
+
+	ret = m_bts.get_possible_trxs_sba(trxs);
+
+	if (ret == -EINVAL)
+		return -EINVAL;
+
+	selected_trx = m_bts.get_suitable_trx(trxs);
+
+	for (ts = 7; ts >= 0; ts--) {
+		pdch = &m_bts.bts_data()->trx[selected_trx].pdch[ts];
+		if (!pdch->is_enabled())
+			continue;
+		break;
+	}
+	if (ts < 0)
+		return -EINVAL;
 
 	sba = talloc_zero(tall_pcu_ctx, struct gprs_rlcmac_sba);
 	if (!sba)
@@ -59,25 +78,10 @@
 	if (!gsm48_ta_is_valid(ta))
 		return -EINVAL;
 
-	for (trx = 0; trx < 8; trx++) {
-		for (ts = 7; ts >= 0; ts--) {
-			pdch = &m_bts.bts_data()->trx[trx].pdch[ts];
-			if (!pdch->is_enabled())
-				continue;
-			break;
-		}
-		if (ts >= 0)
-			break;
-	}
-	if (trx == 8) {
-		LOGP(DRLCMAC, LOGL_NOTICE, "No PDCH available.\n");
-		talloc_free(sba);
-		return -EINVAL;
-	}
 
 	fn = (pdch->last_rts_fn + AGCH_START_OFFSET) % 2715648;
 
-	sba->trx_no = trx;
+	sba->trx_no = selected_trx;
 	sba->ts_no = ts;
 	sba->fn = fn;
 	sba->ta = ta;
@@ -85,9 +89,12 @@
 	llist_add(&sba->list, &m_sbas);
 	m_bts.sba_allocated();
 
-	*_trx = trx;
+	*_trx = selected_trx;
 	*_ts = ts;
 	*_fn = fn;
+	LOGP(DRLCMAC, LOGL_DEBUG, " sba fn=%d ts = %d trx = %d\n",
+		fn, ts, selected_trx);
+
 	return 0;
 }
 
diff --git a/src/tbf.cpp b/src/tbf.cpp
index 33d94a8..27a7e97 100644
--- a/src/tbf.cpp
+++ b/src/tbf.cpp
@@ -410,7 +410,7 @@
 	for (ts = 0; ts < 8; ts++) {
 		if (!tbf->pdch[ts])
 			continue;
-
+		tbf->trx->current_load--;
 		tbf->pdch[ts]->detach_tbf(tbf);
 		tbf->pdch[ts] = NULL;
 	}
diff --git a/tests/tbf/TbfTest.cpp b/tests/tbf/TbfTest.cpp
index bebb6ef..7d48a5c 100644
--- a/tests/tbf/TbfTest.cpp
+++ b/tests/tbf/TbfTest.cpp
@@ -45,6 +45,12 @@
 void *tall_pcu_ctx;
 int16_t spoof_mnc = 0, spoof_mcc = 0;
 
+#define ASSERT_TBF_ALLOC_ON_TRX(_dl_tbf, _bts,		\
+		 _ms_class, _egprs_ms_class, _trx_num)	\
+	_dl_tbf = tbf_alloc_dl_tbf(_bts, NULL, -1,	\
+		_ms_class, _egprs_ms_class, 1);		\
+	OSMO_ASSERT(_dl_tbf->trx->trx_no == _trx_num);	\
+
 static void check_tbf(gprs_rlcmac_tbf *tbf)
 {
 	OSMO_ASSERT(tbf);
@@ -2833,6 +2839,231 @@
 	ARRAY_SIZE(default_categories),
 };
 
+void test_multi_trx_test_same_capacity()
+{
+	BTS the_bts;
+	gprs_rlcmac_dl_tbf *dl_tbf;
+	struct gprs_rlcmac_bts *bts;
+	uint8_t ms_class = 1;
+	uint8_t egprs_ms_class = 1;
+
+	printf("=== start %s ===\n", __func__);
+
+	setup_bts(&the_bts, 4);
+
+	bts = the_bts.bts_data();
+
+	bts->trx[0].pdch[5].enable();
+	bts->alloc_algorithm = alloc_algorithm_b;
+	bts->trx[1].pdch[4].enable();
+	bts->trx[1].pdch[5].enable();
+
+	ASSERT_TBF_ALLOC_ON_TRX(dl_tbf, bts, ms_class,
+				egprs_ms_class, 0);
+	ASSERT_TBF_ALLOC_ON_TRX(dl_tbf, bts, ms_class,
+				egprs_ms_class, 1);
+	ASSERT_TBF_ALLOC_ON_TRX(dl_tbf, bts, ms_class,
+				egprs_ms_class, 0);
+	ASSERT_TBF_ALLOC_ON_TRX(dl_tbf, bts, ms_class,
+				egprs_ms_class, 1);
+	ASSERT_TBF_ALLOC_ON_TRX(dl_tbf, bts, ms_class,
+				egprs_ms_class, 0);
+	ASSERT_TBF_ALLOC_ON_TRX(dl_tbf, bts, ms_class,
+				egprs_ms_class, 1);
+	ASSERT_TBF_ALLOC_ON_TRX(dl_tbf, bts, ms_class,
+				egprs_ms_class, 0);
+	ASSERT_TBF_ALLOC_ON_TRX(dl_tbf, bts, ms_class,
+				egprs_ms_class, 1);
+	ASSERT_TBF_ALLOC_ON_TRX(dl_tbf, bts, ms_class,
+				egprs_ms_class, 0);
+	ASSERT_TBF_ALLOC_ON_TRX(dl_tbf, bts, ms_class,
+				egprs_ms_class, 1);
+	ASSERT_TBF_ALLOC_ON_TRX(dl_tbf, bts, ms_class,
+				egprs_ms_class, 0);
+
+	printf("=== end %s ===\n", __func__);
+
+}
+
+void test_multi_trx_test_1_2_capacity()
+{
+	BTS the_bts;
+	gprs_rlcmac_dl_tbf *dl_tbf;
+	struct gprs_rlcmac_bts *bts;
+	uint8_t ms_class = 1;
+	uint8_t egprs_ms_class = 1;
+
+	printf("=== start %s ===\n", __func__);
+
+	setup_bts(&the_bts, 4);
+
+	bts = the_bts.bts_data();
+	bts->alloc_algorithm = alloc_algorithm_b;
+	bts->trx[0].pdch[5].enable();
+	bts->trx[1].pdch[4].enable();
+
+	ASSERT_TBF_ALLOC_ON_TRX(dl_tbf, bts, ms_class,
+				egprs_ms_class, 0);
+	ASSERT_TBF_ALLOC_ON_TRX(dl_tbf, bts, ms_class,
+				egprs_ms_class, 1);
+	ASSERT_TBF_ALLOC_ON_TRX(dl_tbf, bts, ms_class,
+				egprs_ms_class, 0);
+	ASSERT_TBF_ALLOC_ON_TRX(dl_tbf, bts, ms_class,
+				egprs_ms_class, 0);
+	ASSERT_TBF_ALLOC_ON_TRX(dl_tbf, bts, ms_class,
+				egprs_ms_class, 1);
+	ASSERT_TBF_ALLOC_ON_TRX(dl_tbf, bts, ms_class,
+				egprs_ms_class, 0);
+	ASSERT_TBF_ALLOC_ON_TRX(dl_tbf, bts, ms_class,
+				egprs_ms_class, 0);
+	ASSERT_TBF_ALLOC_ON_TRX(dl_tbf, bts, ms_class,
+				egprs_ms_class, 1);
+	ASSERT_TBF_ALLOC_ON_TRX(dl_tbf, bts, ms_class,
+				egprs_ms_class, 0);
+	ASSERT_TBF_ALLOC_ON_TRX(dl_tbf, bts, ms_class,
+				egprs_ms_class, 0);
+	ASSERT_TBF_ALLOC_ON_TRX(dl_tbf, bts, ms_class,
+				egprs_ms_class, 1);
+
+	printf("=== end %s ===\n", __func__);
+
+}
+
+void test_multi_trx_test_1_4_capacity()
+{
+	BTS the_bts;
+	gprs_rlcmac_dl_tbf *dl_tbf;
+	struct gprs_rlcmac_bts *bts;
+	uint8_t ms_class = 1;
+	uint8_t egprs_ms_class = 1;
+
+	printf("=== start %s ===\n", __func__);
+
+	setup_bts(&the_bts, 4);
+	bts = the_bts.bts_data();
+
+	bts->alloc_algorithm = alloc_algorithm_b;
+
+	bts->trx[0].pdch[5].enable();
+	bts->trx[0].pdch[6].enable();
+	bts->trx[0].pdch[7].enable();
+	bts->trx[1].pdch[0].enable();
+
+	ASSERT_TBF_ALLOC_ON_TRX(dl_tbf, bts, ms_class,
+				egprs_ms_class, 0);
+	ASSERT_TBF_ALLOC_ON_TRX(dl_tbf, bts, ms_class,
+				egprs_ms_class, 1);
+	ASSERT_TBF_ALLOC_ON_TRX(dl_tbf, bts, ms_class,
+				egprs_ms_class, 0);
+	ASSERT_TBF_ALLOC_ON_TRX(dl_tbf, bts, ms_class,
+				egprs_ms_class, 0);
+	ASSERT_TBF_ALLOC_ON_TRX(dl_tbf, bts, ms_class,
+				egprs_ms_class, 0);
+	ASSERT_TBF_ALLOC_ON_TRX(dl_tbf, bts, ms_class,
+				egprs_ms_class, 0);
+	ASSERT_TBF_ALLOC_ON_TRX(dl_tbf, bts, ms_class,
+				egprs_ms_class, 1);
+	ASSERT_TBF_ALLOC_ON_TRX(dl_tbf, bts, ms_class,
+				egprs_ms_class, 0);
+	ASSERT_TBF_ALLOC_ON_TRX(dl_tbf, bts, ms_class,
+				egprs_ms_class, 0);
+	ASSERT_TBF_ALLOC_ON_TRX(dl_tbf, bts, ms_class,
+				egprs_ms_class, 0);
+	ASSERT_TBF_ALLOC_ON_TRX(dl_tbf, bts, ms_class,
+				egprs_ms_class, 0);
+
+	printf("=== end %s ===\n", __func__);
+}
+
+void test_multi_trx_test_release_alloc()
+{
+	BTS the_bts;
+	gprs_rlcmac_dl_tbf *dl_tbf;
+	struct gprs_rlcmac_bts *bts;
+	uint8_t ms_class = 1;
+	uint8_t egprs_ms_class = 1;
+
+	printf("=== start %s ===\n", __func__);
+
+	setup_bts(&the_bts, 4);
+	bts = the_bts.bts_data();
+	bts->alloc_algorithm = alloc_algorithm_b;
+
+	bts->trx[0].pdch[5].enable();
+	bts->trx[1].pdch[0].enable();
+
+	ASSERT_TBF_ALLOC_ON_TRX(dl_tbf, bts, ms_class,
+				egprs_ms_class, 0);
+	tbf_free(dl_tbf);
+	ASSERT_TBF_ALLOC_ON_TRX(dl_tbf, bts, ms_class,
+				egprs_ms_class, 0);
+	ASSERT_TBF_ALLOC_ON_TRX(dl_tbf, bts, ms_class,
+				egprs_ms_class, 1);
+	tbf_free(dl_tbf);
+	ASSERT_TBF_ALLOC_ON_TRX(dl_tbf, bts, ms_class,
+				egprs_ms_class, 1);
+	ASSERT_TBF_ALLOC_ON_TRX(dl_tbf, bts, ms_class,
+				egprs_ms_class, 0);
+	tbf_free(dl_tbf);
+	ASSERT_TBF_ALLOC_ON_TRX(dl_tbf, bts, ms_class,
+				egprs_ms_class, 0);
+
+	printf("=== end %s ===\n", __func__);
+}
+
+void test_multi_trx_test_same_capacity_dl_ul_combined()
+{
+	BTS the_bts;
+	gprs_rlcmac_dl_tbf *dl_tbf;
+	static gprs_rlcmac_ul_tbf *ul_tbf;
+	struct gprs_rlcmac_bts *bts;
+	uint8_t ms_class = 1;
+	uint8_t egprs_ms_class = 1;
+
+	printf("=== start %s ===\n", __func__);
+
+	setup_bts(&the_bts, 4);
+	bts = the_bts.bts_data();
+
+	bts->alloc_algorithm = alloc_algorithm_b;
+	bts->trx[1].pdch[4].enable();
+
+	ASSERT_TBF_ALLOC_ON_TRX(dl_tbf, bts, ms_class,
+				egprs_ms_class, 0);
+	ul_tbf = tbf_alloc_ul(bts,
+			dl_tbf->trx->trx_no,
+			dl_tbf->ms_class(), dl_tbf->ms()->egprs_ms_class(),
+			dl_tbf->tlli(), dl_tbf->ta(), dl_tbf->ms());
+	OSMO_ASSERT(ul_tbf->trx->trx_no == 0);
+
+	ASSERT_TBF_ALLOC_ON_TRX(dl_tbf, bts, ms_class,
+				egprs_ms_class, 1);
+	ASSERT_TBF_ALLOC_ON_TRX(dl_tbf, bts, ms_class,
+				egprs_ms_class, 1);
+	ASSERT_TBF_ALLOC_ON_TRX(dl_tbf, bts, ms_class,
+				egprs_ms_class, 0);
+
+	ul_tbf = tbf_alloc_ul(bts,
+			dl_tbf->trx->trx_no,
+			dl_tbf->ms_class(), dl_tbf->ms()->egprs_ms_class(),
+			dl_tbf->tlli(), dl_tbf->ta(), dl_tbf->ms());
+	OSMO_ASSERT(ul_tbf->trx->trx_no == 0);
+
+	printf("=== end %s ===\n", __func__);
+
+}
+
+void test_multi_trx_test()
+{
+	printf("=== start %s ===\n", __func__);
+	test_multi_trx_test_same_capacity();
+	test_multi_trx_test_1_2_capacity();
+	test_multi_trx_test_1_4_capacity();
+	test_multi_trx_test_release_alloc();
+	test_multi_trx_test_same_capacity_dl_ul_combined();
+	printf("=== end %s ===\n", __func__);
+
+}
 void test_packet_access_rej_epdan()
 {
 	BTS the_bts;
@@ -2900,6 +3131,7 @@
 	test_tbf_epdan_out_of_rx_window();
 	test_immediate_assign_rej();
 	test_packet_access_rej_epdan();
+	test_multi_trx_test();
 
 	if (getenv("TALLOC_REPORT_FULL"))
 		talloc_report_full(tall_pcu_ctx, stderr);
diff --git a/tests/tbf/TbfTest.err b/tests/tbf/TbfTest.err
index 5f5456b..4d41f2a 100644
--- a/tests/tbf/TbfTest.err
+++ b/tests/tbf/TbfTest.err
@@ -35,6 +35,8 @@
 The MS object cannot fully confirm an unexpected TLLI: 0x00004232, partly confirmed
 Modifying MS object, TLLI: 0x00002342 -> 0x00004232, already confirmed partly
 Modifying MS object, TLLI = 0x00004232, TA 4 -> 6
+trx(0) cur load(0) numpdch(1) prob1(4294967295) seleprob(0) btsnumpdch(1)
+selected pro(4294967295)selected_trx(0)
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
 ********** TBF starts here **********
@@ -123,6 +125,8 @@
 Detaching TBF from MS object, TLLI = 0xffeeddcc, TBF = TBF(TFI=1 TLLI=0xffeeddcc DIR=DL STATE=RELEASING)
 ********** TBF ends here **********
 Destroying MS object, TLLI = 0xffeeddcc
+trx(0) cur load(0) numpdch(1) prob1(4294967295) seleprob(0) btsnumpdch(1)
+selected pro(4294967295)selected_trx(0)
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
 ********** TBF starts here **********
@@ -211,6 +215,8 @@
 Detaching TBF from MS object, TLLI = 0xffeeddcc, TBF = TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING)
 ********** TBF ends here **********
 Destroying MS object, TLLI = 0xffeeddcc
+trx(0) cur load(0) numpdch(1) prob1(4294967295) seleprob(0) btsnumpdch(1)
+selected pro(4294967295)selected_trx(0)
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
 ********** TBF starts here **********
@@ -514,6 +520,8 @@
 Detaching TBF from MS object, TLLI = 0xffeeddcc, TBF = TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING)
 Destroying MS object, TLLI = 0xffeeddcc
 ********** TBF ends here **********
+trx(0) cur load(0) numpdch(1) prob1(4294967295) seleprob(0) btsnumpdch(1)
+selected pro(4294967295)selected_trx(0)
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
 ********** TBF starts here **********
@@ -535,6 +543,8 @@
 Allocated TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL): trx = 0, ul_slots = 10, dl_slots = 10
 Modifying MS object, TLLI = 0x00000000, TA 220 -> 0
 TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL) changes state from NULL to FLOW
+trx(0) cur load(1) numpdch(1) prob1(4294967195) seleprob(0) btsnumpdch(1)
+selected pro(4294967195)selected_trx(0)
 Searching for first unallocated TFI: TRX=0
  Found TFI=1.
 ********** TBF starts here **********
@@ -1508,6 +1518,8 @@
 Polling cannot be scheduled in this TS 7 (first control TS 4)
 msg block (BSN 2, CS-1): 07 01 04 4d 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 
 MSG = 07 01 04 4d 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 
+trx(0) cur load(0) numpdch(1) prob1(4294967295) seleprob(0) btsnumpdch(1)
+selected pro(4294967295)selected_trx(0)
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
 MS requests UL TBF on RACH, so we provide one 
@@ -1588,10 +1600,23 @@
 MS requests UL TBF on RACH, so we provide one 
 ra=0x73 Fn=2654167 qta=31 is_11bit=0:
 MS requests single block allocation
+ Valid TRX=0.
+ Not valid TRX=1.
+ Not valid TRX=2.
+ Not valid TRX=3.
+ Not valid TRX=4.
+ Not valid TRX=5.
+ Not valid TRX=6.
+ Not valid TRX=7.
+trx(0) cur load(0) numpdch(1) prob1(4294967295) seleprob(0) btsnumpdch(1)
+selected pro(4294967295)selected_trx(0)
+ sba fn=2654270 ts = 7 trx = 0
 RX: [PCU <- BTS] RACH  qbit-ta=31 ra=0x73, Fn=2654167 (17,25,9), SBFn=2654270
 TX: Immediate Assignment Uplink (AGCH)
  - TRX=0 (0) TS=7 TA=7 TSC=0 TFI=-1 USF=7
 Sending data request: trx=0 ts=0 sapi=2 arfcn=0 fn=0 block=0 data=2d 06 3f 10 0f 00 00 73 8b 29 07 00 c0 0c 5a 43 2b 2b 2b 2b 2b 2b 2b 
+trx(0) cur load(0) numpdch(1) prob1(4294967295) seleprob(0) btsnumpdch(1)
+selected pro(4294967295)selected_trx(0)
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
 Got RLC block, coding scheme: CS-1, length: 23 (23))
@@ -1674,10 +1699,23 @@
 MS requests UL TBF on RACH, so we provide one 
 ra=0x73 Fn=2654167 qta=31 is_11bit=0:
 MS requests single block allocation
+ Valid TRX=0.
+ Not valid TRX=1.
+ Not valid TRX=2.
+ Not valid TRX=3.
+ Not valid TRX=4.
+ Not valid TRX=5.
+ Not valid TRX=6.
+ Not valid TRX=7.
+trx(0) cur load(0) numpdch(1) prob1(4294967295) seleprob(0) btsnumpdch(1)
+selected pro(4294967295)selected_trx(0)
+ sba fn=2654270 ts = 7 trx = 0
 RX: [PCU <- BTS] RACH  qbit-ta=31 ra=0x73, Fn=2654167 (17,25,9), SBFn=2654270
 TX: Immediate Assignment Uplink (AGCH)
  - TRX=0 (0) TS=7 TA=7 TSC=0 TFI=-1 USF=7
 Sending data request: trx=0 ts=0 sapi=2 arfcn=0 fn=0 block=0 data=2d 06 3f 10 0f 00 00 73 8b 29 07 00 c0 0c 5a 43 2b 2b 2b 2b 2b 2b 2b 
+trx(0) cur load(0) numpdch(1) prob1(4294967295) seleprob(0) btsnumpdch(1)
+selected pro(4294967295)selected_trx(0)
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
 Got RLC block, coding scheme: CS-1, length: 23 (23))
@@ -1809,10 +1847,23 @@
 MS requests UL TBF on RACH, so we provide one 
 ra=0x73 Fn=2654232 qta=31 is_11bit=0:
 MS requests single block allocation
+ Valid TRX=0.
+ Not valid TRX=1.
+ Not valid TRX=2.
+ Not valid TRX=3.
+ Not valid TRX=4.
+ Not valid TRX=5.
+ Not valid TRX=6.
+ Not valid TRX=7.
+trx(0) cur load(2) numpdch(1) prob1(4294967095) seleprob(0) btsnumpdch(1)
+selected pro(4294967095)selected_trx(0)
+ sba fn=2654335 ts = 7 trx = 0
 RX: [PCU <- BTS] RACH  qbit-ta=31 ra=0x73, Fn=2654232 (17,39,22), SBFn=2654335
 TX: Immediate Assignment Uplink (AGCH)
  - TRX=0 (0) TS=7 TA=7 TSC=0 TFI=-1 USF=7
 Sending data request: trx=0 ts=0 sapi=2 arfcn=0 fn=0 block=0 data=2d 06 3f 10 0f 00 00 73 8c f6 07 00 c0 0c 68 ab 2b 2b 2b 2b 2b 2b 2b 
+trx(0) cur load(2) numpdch(1) prob1(4294967095) seleprob(0) btsnumpdch(1)
+selected pro(4294967095)selected_trx(0)
 Searching for first unallocated TFI: TRX=0
  Found TFI=1.
 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=FINISHED) poll timeout for FN=2654292, TS=7 (curr FN 2654335)
@@ -1886,10 +1937,23 @@
 MS requests UL TBF on RACH, so we provide one 
 ra=0x73 Fn=2654167 qta=31 is_11bit=0:
 MS requests single block allocation
+ Valid TRX=0.
+ Not valid TRX=1.
+ Not valid TRX=2.
+ Not valid TRX=3.
+ Not valid TRX=4.
+ Not valid TRX=5.
+ Not valid TRX=6.
+ Not valid TRX=7.
+trx(0) cur load(0) numpdch(1) prob1(4294967295) seleprob(0) btsnumpdch(1)
+selected pro(4294967295)selected_trx(0)
+ sba fn=2654270 ts = 7 trx = 0
 RX: [PCU <- BTS] RACH  qbit-ta=31 ra=0x73, Fn=2654167 (17,25,9), SBFn=2654270
 TX: Immediate Assignment Uplink (AGCH)
  - TRX=0 (0) TS=7 TA=7 TSC=0 TFI=-1 USF=7
 Sending data request: trx=0 ts=0 sapi=2 arfcn=0 fn=0 block=0 data=2d 06 3f 10 0f 00 00 73 8b 29 07 00 c0 0c 5a 43 2b 2b 2b 2b 2b 2b 2b 
+trx(0) cur load(0) numpdch(1) prob1(4294967295) seleprob(0) btsnumpdch(1)
+selected pro(4294967295)selected_trx(0)
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
 Got RLC block, coding scheme: CS-1, length: 23 (23))
@@ -1980,10 +2044,23 @@
 MS requests UL TBF on RACH, so we provide one 
 ra=0x73 Fn=2654224 qta=31 is_11bit=0:
 MS requests single block allocation
+ Valid TRX=0.
+ Not valid TRX=1.
+ Not valid TRX=2.
+ Not valid TRX=3.
+ Not valid TRX=4.
+ Not valid TRX=5.
+ Not valid TRX=6.
+ Not valid TRX=7.
+trx(0) cur load(1) numpdch(1) prob1(4294967195) seleprob(0) btsnumpdch(1)
+selected pro(4294967195)selected_trx(0)
+ sba fn=2654327 ts = 7 trx = 0
 RX: [PCU <- BTS] RACH  qbit-ta=31 ra=0x73, Fn=2654224 (17,31,14), SBFn=2654327
 TX: Immediate Assignment Uplink (AGCH)
  - TRX=0 (0) TS=7 TA=7 TSC=0 TFI=-1 USF=7
 Sending data request: trx=0 ts=0 sapi=2 arfcn=0 fn=0 block=0 data=2d 06 3f 10 0f 00 00 73 8b ee 07 00 c0 0c 60 6b 2b 2b 2b 2b 2b 2b 2b 
+trx(0) cur load(1) numpdch(1) prob1(4294967195) seleprob(0) btsnumpdch(1)
+selected pro(4294967195)selected_trx(0)
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
 Got RLC block, coding scheme: CS-1, length: 23 (23))
@@ -2065,10 +2142,23 @@
 MS requests UL TBF on RACH, so we provide one 
 ra=0x73 Fn=2654167 qta=31 is_11bit=0:
 MS requests single block allocation
+ Valid TRX=0.
+ Not valid TRX=1.
+ Not valid TRX=2.
+ Not valid TRX=3.
+ Not valid TRX=4.
+ Not valid TRX=5.
+ Not valid TRX=6.
+ Not valid TRX=7.
+trx(0) cur load(0) numpdch(1) prob1(4294967295) seleprob(0) btsnumpdch(1)
+selected pro(4294967295)selected_trx(0)
+ sba fn=2654270 ts = 7 trx = 0
 RX: [PCU <- BTS] RACH  qbit-ta=31 ra=0x73, Fn=2654167 (17,25,9), SBFn=2654270
 TX: Immediate Assignment Uplink (AGCH)
  - TRX=0 (0) TS=7 TA=7 TSC=0 TFI=-1 USF=7
 Sending data request: trx=0 ts=0 sapi=2 arfcn=0 fn=0 block=0 data=2d 06 3f 10 0f 00 00 73 8b 29 07 00 c0 0c 5a 43 2b 2b 2b 2b 2b 2b 2b 
+trx(0) cur load(0) numpdch(1) prob1(4294967295) seleprob(0) btsnumpdch(1)
+selected pro(4294967295)selected_trx(0)
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
 Got RLC block, coding scheme: CS-1, length: 23 (23))
@@ -2155,6 +2245,8 @@
 PDCH(TS 7, TRX 0): Detaching TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW), 0 TBFs, USFs = 00, TFIs = 00000000.
 Detaching TBF from MS object, TLLI = 0xf1223344, TBF = TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW)
 ********** TBF ends here **********
+trx(0) cur load(1) numpdch(1) prob1(4294967195) seleprob(0) btsnumpdch(1)
+selected pro(4294967195)selected_trx(0)
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
 MS requests UL TBF on RACH, so we provide one 
@@ -2221,10 +2313,23 @@
 MS requests UL TBF on RACH, so we provide one 
 ra=0x73 Fn=2654167 qta=31 is_11bit=0:
 MS requests single block allocation
+ Valid TRX=0.
+ Not valid TRX=1.
+ Not valid TRX=2.
+ Not valid TRX=3.
+ Not valid TRX=4.
+ Not valid TRX=5.
+ Not valid TRX=6.
+ Not valid TRX=7.
+trx(0) cur load(0) numpdch(1) prob1(4294967295) seleprob(0) btsnumpdch(1)
+selected pro(4294967295)selected_trx(0)
+ sba fn=2654270 ts = 7 trx = 0
 RX: [PCU <- BTS] RACH  qbit-ta=31 ra=0x73, Fn=2654167 (17,25,9), SBFn=2654270
 TX: Immediate Assignment Uplink (AGCH)
  - TRX=0 (0) TS=7 TA=7 TSC=0 TFI=-1 USF=7
 Sending data request: trx=0 ts=0 sapi=2 arfcn=0 fn=0 block=0 data=2d 06 3f 10 0f 00 00 73 8b 29 07 00 c0 0c 5a 43 2b 2b 2b 2b 2b 2b 2b 
+trx(0) cur load(0) numpdch(1) prob1(4294967295) seleprob(0) btsnumpdch(1)
+selected pro(4294967295)selected_trx(0)
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
 Got RLC block, coding scheme: CS-1, length: 23 (23))
@@ -3279,8 +3384,10 @@
 Allocating DL TBF: MS_CLASS=12/0
 Creating MS object, TLLI = 0x00000000
 Modifying MS object, TLLI = 0x00000000, MS class 0 -> 12
+use_trx = 0
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
+FREE trx = 0 TFI = 0
 Slot Allocation (Algorithm B) for class 12
 - Rx=4 Tx=4 Sum Rx+Tx=5  Tta=2 Ttb=1  Tra=2 Trb=1 Type=1
 - Skipping TS 0, because not enabled
@@ -3318,8 +3425,10 @@
 Modifying MS object, TLLI = 0x00000000, MS class 0 -> 12
 Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 12
 Enabled EGPRS for TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL EGPRS), mode EGPRS
+use_trx = 0
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
+FREE trx = 0 TFI = 0
 Slot Allocation (Algorithm B) for class 12
 - Rx=4 Tx=4 Sum Rx+Tx=5  Tta=2 Ttb=1  Tra=2 Trb=1 Type=1
 - Skipping TS 0, because not enabled
@@ -3357,10 +3466,23 @@
 MS requests UL TBF on RACH, so we provide one 
 ra=0x73 Fn=2654167 qta=31 is_11bit=0:
 MS requests single block allocation
+ Valid TRX=0.
+ Not valid TRX=1.
+ Not valid TRX=2.
+ Not valid TRX=3.
+ Not valid TRX=4.
+ Not valid TRX=5.
+ Not valid TRX=6.
+ Not valid TRX=7.
+trx(0) cur load(0) numpdch(1) prob1(4294967295) seleprob(0) btsnumpdch(1)
+selected pro(4294967295)selected_trx(0)
+ sba fn=2654270 ts = 7 trx = 0
 RX: [PCU <- BTS] RACH  qbit-ta=31 ra=0x73, Fn=2654167 (17,25,9), SBFn=2654270
 TX: Immediate Assignment Uplink (AGCH)
  - TRX=0 (0) TS=7 TA=7 TSC=0 TFI=-1 USF=7
 Sending data request: trx=0 ts=0 sapi=2 arfcn=0 fn=0 block=0 data=2d 06 3f 10 0f 00 00 73 8b 29 07 00 c0 0c 5a 43 2b 2b 2b 2b 2b 2b 2b 
+trx(0) cur load(0) numpdch(1) prob1(4294967295) seleprob(0) btsnumpdch(1)
+selected pro(4294967295)selected_trx(0)
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
 Got RLC block, coding scheme: CS-1, length: 23 (23))
@@ -3453,10 +3575,23 @@
 MS requests UL TBF on RACH, so we provide one 
 ra=0x73 Fn=2654167 qta=31 is_11bit=0:
 MS requests single block allocation
+ Valid TRX=0.
+ Not valid TRX=1.
+ Not valid TRX=2.
+ Not valid TRX=3.
+ Not valid TRX=4.
+ Not valid TRX=5.
+ Not valid TRX=6.
+ Not valid TRX=7.
+trx(0) cur load(0) numpdch(1) prob1(4294967295) seleprob(0) btsnumpdch(1)
+selected pro(4294967295)selected_trx(0)
+ sba fn=2654270 ts = 7 trx = 0
 RX: [PCU <- BTS] RACH  qbit-ta=31 ra=0x73, Fn=2654167 (17,25,9), SBFn=2654270
 TX: Immediate Assignment Uplink (AGCH)
  - TRX=0 (0) TS=7 TA=7 TSC=0 TFI=-1 USF=7
 Sending data request: trx=0 ts=0 sapi=2 arfcn=0 fn=0 block=0 data=2d 06 3f 10 0f 00 00 73 8b 29 07 00 c0 0c 5a 43 2b 2b 2b 2b 2b 2b 2b 
+trx(0) cur load(0) numpdch(1) prob1(4294967295) seleprob(0) btsnumpdch(1)
+selected pro(4294967295)selected_trx(0)
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
 Got RLC block, coding scheme: CS-1, length: 23 (23))
@@ -3708,6 +3843,8 @@
 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=NULL EGPRS) changes state from NULL to ASSIGN
 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) starting timer 0.
 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) append
+trx(0) cur load(0) numpdch(1) prob1(4294967295) seleprob(0) btsnumpdch(1)
+selected pro(4294967295)selected_trx(0)
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
 ********** TBF starts here **********
@@ -4043,6 +4180,8 @@
 Detaching TBF from MS object, TLLI = 0xffeeddcc, TBF = TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS)
 Destroying MS object, TLLI = 0xffeeddcc
 ********** TBF ends here **********
+trx(0) cur load(0) numpdch(1) prob1(4294967295) seleprob(0) btsnumpdch(1)
+selected pro(4294967295)selected_trx(0)
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
 ********** TBF starts here **********
@@ -4323,6 +4462,8 @@
 Detaching TBF from MS object, TLLI = 0xffeeddcc, TBF = TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS)
 Destroying MS object, TLLI = 0xffeeddcc
 ********** TBF ends here **********
+trx(0) cur load(0) numpdch(1) prob1(4294967295) seleprob(0) btsnumpdch(1)
+selected pro(4294967295)selected_trx(0)
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
 ********** TBF starts here **********
@@ -4562,6 +4703,8 @@
 Detaching TBF from MS object, TLLI = 0xffeeddcc, TBF = TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS)
 Destroying MS object, TLLI = 0xffeeddcc
 ********** TBF ends here **********
+trx(0) cur load(0) numpdch(1) prob1(4294967295) seleprob(0) btsnumpdch(1)
+selected pro(4294967295)selected_trx(0)
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
 ********** TBF starts here **********
@@ -4765,6 +4908,8 @@
 Detaching TBF from MS object, TLLI = 0xffeeddcc, TBF = TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS)
 Destroying MS object, TLLI = 0xffeeddcc
 ********** TBF ends here **********
+trx(0) cur load(0) numpdch(1) prob1(4294967295) seleprob(0) btsnumpdch(1)
+selected pro(4294967295)selected_trx(0)
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
 ********** TBF starts here **********
@@ -4946,6 +5091,8 @@
 Detaching TBF from MS object, TLLI = 0xffeeddcc, TBF = TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS)
 Destroying MS object, TLLI = 0xffeeddcc
 ********** TBF ends here **********
+trx(0) cur load(0) numpdch(1) prob1(4294967295) seleprob(0) btsnumpdch(1)
+selected pro(4294967295)selected_trx(0)
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
 ********** TBF starts here **********
@@ -5108,6 +5255,8 @@
 Detaching TBF from MS object, TLLI = 0xffeeddcc, TBF = TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS)
 Destroying MS object, TLLI = 0xffeeddcc
 ********** TBF ends here **********
+trx(0) cur load(0) numpdch(1) prob1(4294967295) seleprob(0) btsnumpdch(1)
+selected pro(4294967295)selected_trx(0)
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
 ********** TBF starts here **********
@@ -5266,6 +5415,8 @@
 Detaching TBF from MS object, TLLI = 0xffeeddcc, TBF = TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS)
 Destroying MS object, TLLI = 0xffeeddcc
 ********** TBF ends here **********
+trx(0) cur load(0) numpdch(1) prob1(4294967295) seleprob(0) btsnumpdch(1)
+selected pro(4294967295)selected_trx(0)
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
 ********** TBF starts here **********
@@ -5411,6 +5562,8 @@
 Detaching TBF from MS object, TLLI = 0xffeeddcc, TBF = TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS)
 Destroying MS object, TLLI = 0xffeeddcc
 ********** TBF ends here **********
+trx(0) cur load(0) numpdch(1) prob1(4294967295) seleprob(0) btsnumpdch(1)
+selected pro(4294967295)selected_trx(0)
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
 ********** TBF starts here **********
@@ -5557,6 +5710,8 @@
 Detaching TBF from MS object, TLLI = 0xffeeddcc, TBF = TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS)
 Destroying MS object, TLLI = 0xffeeddcc
 ********** TBF ends here **********
+trx(0) cur load(0) numpdch(1) prob1(4294967295) seleprob(0) btsnumpdch(1)
+selected pro(4294967295)selected_trx(0)
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
 ********** TBF starts here **********
@@ -5609,6 +5764,8 @@
 Detaching TBF from MS object, TLLI = 0xffeeddcc, TBF = TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS)
 Destroying MS object, TLLI = 0xffeeddcc
 ********** TBF ends here **********
+trx(0) cur load(0) numpdch(1) prob1(4294967295) seleprob(0) btsnumpdch(1)
+selected pro(4294967295)selected_trx(0)
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
 ********** TBF starts here **********
@@ -5661,6 +5818,8 @@
 Detaching TBF from MS object, TLLI = 0xffeeddcc, TBF = TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS)
 Destroying MS object, TLLI = 0xffeeddcc
 ********** TBF ends here **********
+trx(0) cur load(0) numpdch(1) prob1(4294967295) seleprob(0) btsnumpdch(1)
+selected pro(4294967295)selected_trx(0)
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
 ********** TBF starts here **********
@@ -5713,6 +5872,8 @@
 Detaching TBF from MS object, TLLI = 0xffeeddcc, TBF = TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS)
 Destroying MS object, TLLI = 0xffeeddcc
 ********** TBF ends here **********
+trx(0) cur load(0) numpdch(1) prob1(4294967295) seleprob(0) btsnumpdch(1)
+selected pro(4294967295)selected_trx(0)
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
 ********** TBF starts here **********
@@ -5784,6 +5945,8 @@
 Detaching TBF from MS object, TLLI = 0xffeeddcc, TBF = TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS)
 Destroying MS object, TLLI = 0xffeeddcc
 ********** TBF ends here **********
+trx(0) cur load(0) numpdch(1) prob1(4294967295) seleprob(0) btsnumpdch(1)
+selected pro(4294967295)selected_trx(0)
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
 ********** TBF starts here **********
@@ -5855,6 +6018,8 @@
 Detaching TBF from MS object, TLLI = 0xffeeddcc, TBF = TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS)
 Destroying MS object, TLLI = 0xffeeddcc
 ********** TBF ends here **********
+trx(0) cur load(0) numpdch(1) prob1(4294967295) seleprob(0) btsnumpdch(1)
+selected pro(4294967295)selected_trx(0)
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
 ********** TBF starts here **********
@@ -5926,6 +6091,8 @@
 Detaching TBF from MS object, TLLI = 0xffeeddcc, TBF = TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS)
 Destroying MS object, TLLI = 0xffeeddcc
 ********** TBF ends here **********
+trx(0) cur load(0) numpdch(1) prob1(4294967295) seleprob(0) btsnumpdch(1)
+selected pro(4294967295)selected_trx(0)
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
 ********** TBF starts here **********
@@ -5997,6 +6164,8 @@
 Detaching TBF from MS object, TLLI = 0xffeeddcc, TBF = TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS)
 Destroying MS object, TLLI = 0xffeeddcc
 ********** TBF ends here **********
+trx(0) cur load(0) numpdch(1) prob1(4294967295) seleprob(0) btsnumpdch(1)
+selected pro(4294967295)selected_trx(0)
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
 ********** TBF starts here **********
@@ -6055,6 +6224,8 @@
 Detaching TBF from MS object, TLLI = 0xffeeddcc, TBF = TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS)
 Destroying MS object, TLLI = 0xffeeddcc
 ********** TBF ends here **********
+trx(0) cur load(0) numpdch(1) prob1(4294967295) seleprob(0) btsnumpdch(1)
+selected pro(4294967295)selected_trx(0)
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
 ********** TBF starts here **********
@@ -6113,6 +6284,8 @@
 Detaching TBF from MS object, TLLI = 0xffeeddcc, TBF = TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS)
 Destroying MS object, TLLI = 0xffeeddcc
 ********** TBF ends here **********
+trx(0) cur load(0) numpdch(1) prob1(4294967295) seleprob(0) btsnumpdch(1)
+selected pro(4294967295)selected_trx(0)
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
 ********** TBF starts here **********
@@ -6171,6 +6344,8 @@
 Detaching TBF from MS object, TLLI = 0xffeeddcc, TBF = TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EGPRS)
 Destroying MS object, TLLI = 0xffeeddcc
 ********** TBF ends here **********
+trx(0) cur load(0) numpdch(1) prob1(4294967295) seleprob(0) btsnumpdch(1)
+selected pro(4294967295)selected_trx(0)
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
 ********** TBF starts here **********
@@ -6239,10 +6414,23 @@
 MS requests UL TBF on RACH, so we provide one 
 ra=0x73 Fn=2654167 qta=31 is_11bit=0:
 MS requests single block allocation
+ Valid TRX=0.
+ Not valid TRX=1.
+ Not valid TRX=2.
+ Not valid TRX=3.
+ Not valid TRX=4.
+ Not valid TRX=5.
+ Not valid TRX=6.
+ Not valid TRX=7.
+trx(0) cur load(0) numpdch(1) prob1(4294967295) seleprob(0) btsnumpdch(1)
+selected pro(4294967295)selected_trx(0)
+ sba fn=2654270 ts = 7 trx = 0
 RX: [PCU <- BTS] RACH  qbit-ta=31 ra=0x73, Fn=2654167 (17,25,9), SBFn=2654270
 TX: Immediate Assignment Uplink (AGCH)
  - TRX=0 (0) TS=7 TA=7 TSC=0 TFI=-1 USF=7
 Sending data request: trx=0 ts=0 sapi=2 arfcn=0 fn=0 block=0 data=2d 06 3f 10 0f 00 00 73 8b 29 07 00 c0 0c 5a 43 2b 2b 2b 2b 2b 2b 2b 
+trx(0) cur load(0) numpdch(1) prob1(4294967295) seleprob(0) btsnumpdch(1)
+selected pro(4294967295)selected_trx(0)
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
 Got RLC block, coding scheme: CS-1, length: 23 (23))
@@ -6367,8 +6555,10 @@
 Modifying MS object, TLLI = 0x00000000, MS class 0 -> 11
 Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 11
 Enabled EGPRS for TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL EGPRS), mode EGPRS
+use_trx = 0
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
+FREE trx = 0 TFI = 0
 Slot Allocation (Algorithm B) for class 11
 - Rx=4 Tx=3 Sum Rx+Tx=5  Tta=3 Ttb=1  Tra=2 Trb=1 Type=1
 - Skipping TS 0, because not enabled
@@ -6389,8 +6579,10 @@
 DL TBF slots: 0x10, N: 1, WS: 192
 ********** TBF update **********
 PDCH(TS 4, TRX 0): Detaching TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL EGPRS), 0 TBFs, USFs = 00, TFIs = 00000000.
+use_trx = 0
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
+FREE trx = 0 TFI = 0
 - Selected DL slots: (TS=0)"..DDDD.."(TS=7)
 Using 4 slots for DL
 - Assigning DL TS 2
@@ -6417,10 +6609,23 @@
 MS requests UL TBF on RACH, so we provide one 
 ra=0x73 Fn=2654167 qta=31 is_11bit=0:
 MS requests single block allocation
+ Valid TRX=0.
+ Not valid TRX=1.
+ Not valid TRX=2.
+ Not valid TRX=3.
+ Not valid TRX=4.
+ Not valid TRX=5.
+ Not valid TRX=6.
+ Not valid TRX=7.
+trx(0) cur load(0) numpdch(1) prob1(4294967295) seleprob(0) btsnumpdch(1)
+selected pro(4294967295)selected_trx(0)
+ sba fn=2654270 ts = 7 trx = 0
 RX: [PCU <- BTS] RACH  qbit-ta=31 ra=0x73, Fn=2654167 (17,25,9), SBFn=2654270
 TX: Immediate Assignment Uplink (AGCH)
  - TRX=0 (0) TS=7 TA=7 TSC=0 TFI=-1 USF=7
 Sending data request: trx=0 ts=0 sapi=2 arfcn=0 fn=0 block=0 data=2d 06 3f 10 0f 00 00 73 8b 29 07 00 c0 0c 5a 43 2b 2b 2b 2b 2b 2b 2b 
+trx(0) cur load(0) numpdch(1) prob1(4294967295) seleprob(0) btsnumpdch(1)
+selected pro(4294967295)selected_trx(0)
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
 Got RLC block, coding scheme: CS-1, length: 23 (23))
@@ -6527,6 +6732,8 @@
 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=NULL EGPRS) changes state from NULL to ASSIGN
 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) starting timer 0.
 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) append
+trx(0) cur load(0) numpdch(1) prob1(4294967295) seleprob(0) btsnumpdch(1)
+selected pro(4294967295)selected_trx(0)
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
 ********** TBF starts here **********
@@ -6881,9 +7088,18 @@
 MS requests UL TBF on RACH, so we provide one 
 ra=0x70 Fn=2654167 qta=31 is_11bit=0:
 MS requests single block allocation
-No PDCH available.
+ Not valid TRX=0.
+ Not valid TRX=1.
+ Not valid TRX=2.
+ Not valid TRX=3.
+ Not valid TRX=4.
+ Not valid TRX=5.
+ Not valid TRX=6.
+ Not valid TRX=7.
 No PDCH resource for single block allocation.sending Immediate Assignment Uplink (AGCH) reject
 Sending data request: trx=0 ts=0 sapi=2 arfcn=0 fn=0 block=0 data=4d 06 3a 10 70 8b 29 14 70 8b 29 14 70 8b 29 14 70 8b 29 14 0b 2b 2b 
+trx(0) cur load(0) numpdch(1) prob1(4294967295) seleprob(0) btsnumpdch(1)
+selected pro(4294967295)selected_trx(0)
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
 ********** TBF starts here **********
@@ -6908,3 +7124,1307 @@
 TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL) changes state from NULL to FLOW
 The MS object cannot fully confirm an unexpected TLLI: 0xffeeddcc, partly confirmed
 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW) append
+********** TBF starts here **********
+Allocating DL TBF: MS_CLASS=1/1
+Creating MS object, TLLI = 0x00000000
+Modifying MS object, TLLI = 0x00000000, MS class 0 -> 1
+Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 1
+use_trx = -1
+trx(0) cur load(0) numpdch(2) prob1(4294967295) seleprob(0) btsnumpdch(4)
+selected pro(4294967295)selected_trx(0)
+trx(1) cur load(0) numpdch(2) prob1(4294967295) seleprob(4294967295) btsnumpdch(4)
+Searching for first unallocated TFI: TRX=0
+ Found TFI=0.
+FREE trx = 0 TFI = 0
+Slot Allocation (Algorithm B) for class 1
+- Rx=1 Tx=1 Sum Rx+Tx=2  Tta=3 Ttb=2  Tra=4 Trb=2 Type=1
+- Skipping TS 0, because not enabled
+- Skipping TS 1, because not enabled
+- Skipping TS 2, because not enabled
+- Skipping TS 3, because not enabled
+- Skipping TS 6, because not enabled
+- Skipping TS 7, because not enabled
+- Possible DL/UL slots: (TS=0)"....CC.."(TS=7)
+- Selected DL slots: (TS=0)"....D..."(TS=7), single
+Using single slot at TS 4 for DL
+- Reserved DL/UL slots: (TS=0)"....C..."(TS=7)
+- Assigning DL TS 4
+PDCH(TS 4, TRX 0): Attaching TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL), 1 TBFs, USFs = 00, TFIs = 00000001.
+- Setting Control TS 4
+Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL)
+Allocated TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL): trx = 0, ul_slots = 10, dl_slots = 10
+********** TBF starts here **********
+Allocating DL TBF: MS_CLASS=1/1
+Creating MS object, TLLI = 0x00000000
+Modifying MS object, TLLI = 0x00000000, MS class 0 -> 1
+Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 1
+use_trx = -1
+trx(0) cur load(1) numpdch(2) prob1(4294967095) seleprob(0) btsnumpdch(4)
+selected pro(4294967095)selected_trx(0)
+trx(1) cur load(0) numpdch(2) prob1(4294967295) seleprob(4294967095) btsnumpdch(4)
+selected pro(4294967295)selected_trx(1)
+Searching for first unallocated TFI: TRX=1
+ Found TFI=0.
+FREE trx = 1 TFI = 0
+Slot Allocation (Algorithm B) for class 1
+- Rx=1 Tx=1 Sum Rx+Tx=2  Tta=3 Ttb=2  Tra=4 Trb=2 Type=1
+- Skipping TS 0, because not enabled
+- Skipping TS 1, because not enabled
+- Skipping TS 2, because not enabled
+- Skipping TS 3, because not enabled
+- Skipping TS 6, because not enabled
+- Skipping TS 7, because not enabled
+- Possible DL/UL slots: (TS=0)"....CC.."(TS=7)
+- Selected DL slots: (TS=0)"....D..."(TS=7), single
+Using single slot at TS 4 for DL
+- Reserved DL/UL slots: (TS=0)"....C..."(TS=7)
+- Assigning DL TS 4
+PDCH(TS 4, TRX 1): Attaching TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL), 1 TBFs, USFs = 00, TFIs = 00000001.
+- Setting Control TS 4
+Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL)
+Allocated TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL): trx = 1, ul_slots = 10, dl_slots = 10
+********** TBF starts here **********
+Allocating DL TBF: MS_CLASS=1/1
+Creating MS object, TLLI = 0x00000000
+Modifying MS object, TLLI = 0x00000000, MS class 0 -> 1
+Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 1
+use_trx = -1
+trx(0) cur load(1) numpdch(2) prob1(4294967095) seleprob(0) btsnumpdch(4)
+selected pro(4294967095)selected_trx(0)
+trx(1) cur load(1) numpdch(2) prob1(4294967095) seleprob(4294967095) btsnumpdch(4)
+Searching for first unallocated TFI: TRX=0
+ Found TFI=1.
+FREE trx = 0 TFI = 1
+Slot Allocation (Algorithm B) for class 1
+- Rx=1 Tx=1 Sum Rx+Tx=2  Tta=3 Ttb=2  Tra=4 Trb=2 Type=1
+- Skipping TS 0, because not enabled
+- Skipping TS 1, because not enabled
+- Skipping TS 2, because not enabled
+- Skipping TS 3, because not enabled
+- Skipping TS 6, because not enabled
+- Skipping TS 7, because not enabled
+- Possible DL/UL slots: (TS=0)"....CC.."(TS=7)
+- Selected DL slots: (TS=0)".....D.."(TS=7), single
+Using single slot at TS 5 for DL
+- Reserved DL/UL slots: (TS=0)".....C.."(TS=7)
+- Assigning DL TS 5
+PDCH(TS 5, TRX 0): Attaching TBF(TFI=1 TLLI=0x00000000 DIR=DL STATE=NULL), 1 TBFs, USFs = 00, TFIs = 00000002.
+- Setting Control TS 5
+Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=1 TLLI=0x00000000 DIR=DL STATE=NULL)
+Allocated TBF(TFI=1 TLLI=0x00000000 DIR=DL STATE=NULL): trx = 0, ul_slots = 20, dl_slots = 20
+********** TBF starts here **********
+Allocating DL TBF: MS_CLASS=1/1
+Creating MS object, TLLI = 0x00000000
+Modifying MS object, TLLI = 0x00000000, MS class 0 -> 1
+Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 1
+use_trx = -1
+trx(0) cur load(2) numpdch(2) prob1(4294966895) seleprob(0) btsnumpdch(4)
+selected pro(4294966895)selected_trx(0)
+trx(1) cur load(1) numpdch(2) prob1(4294967095) seleprob(4294966895) btsnumpdch(4)
+selected pro(4294967095)selected_trx(1)
+Searching for first unallocated TFI: TRX=1
+ Found TFI=1.
+FREE trx = 1 TFI = 1
+Slot Allocation (Algorithm B) for class 1
+- Rx=1 Tx=1 Sum Rx+Tx=2  Tta=3 Ttb=2  Tra=4 Trb=2 Type=1
+- Skipping TS 0, because not enabled
+- Skipping TS 1, because not enabled
+- Skipping TS 2, because not enabled
+- Skipping TS 3, because not enabled
+- Skipping TS 6, because not enabled
+- Skipping TS 7, because not enabled
+- Possible DL/UL slots: (TS=0)"....CC.."(TS=7)
+- Selected DL slots: (TS=0)".....D.."(TS=7), single
+Using single slot at TS 5 for DL
+- Reserved DL/UL slots: (TS=0)".....C.."(TS=7)
+- Assigning DL TS 5
+PDCH(TS 5, TRX 1): Attaching TBF(TFI=1 TLLI=0x00000000 DIR=DL STATE=NULL), 1 TBFs, USFs = 00, TFIs = 00000002.
+- Setting Control TS 5
+Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=1 TLLI=0x00000000 DIR=DL STATE=NULL)
+Allocated TBF(TFI=1 TLLI=0x00000000 DIR=DL STATE=NULL): trx = 1, ul_slots = 20, dl_slots = 20
+********** TBF starts here **********
+Allocating DL TBF: MS_CLASS=1/1
+Creating MS object, TLLI = 0x00000000
+Modifying MS object, TLLI = 0x00000000, MS class 0 -> 1
+Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 1
+use_trx = -1
+trx(0) cur load(2) numpdch(2) prob1(4294966895) seleprob(0) btsnumpdch(4)
+selected pro(4294966895)selected_trx(0)
+trx(1) cur load(2) numpdch(2) prob1(4294966895) seleprob(4294966895) btsnumpdch(4)
+Searching for first unallocated TFI: TRX=0
+ Found TFI=2.
+FREE trx = 0 TFI = 2
+Slot Allocation (Algorithm B) for class 1
+- Rx=1 Tx=1 Sum Rx+Tx=2  Tta=3 Ttb=2  Tra=4 Trb=2 Type=1
+- Skipping TS 0, because not enabled
+- Skipping TS 1, because not enabled
+- Skipping TS 2, because not enabled
+- Skipping TS 3, because not enabled
+- Skipping TS 6, because not enabled
+- Skipping TS 7, because not enabled
+- Possible DL/UL slots: (TS=0)"....CC.."(TS=7)
+- Selected DL slots: (TS=0)"....D..."(TS=7), single
+Using single slot at TS 4 for DL
+- Reserved DL/UL slots: (TS=0)"....C..."(TS=7)
+- Assigning DL TS 4
+PDCH(TS 4, TRX 0): Attaching TBF(TFI=2 TLLI=0x00000000 DIR=DL STATE=NULL), 2 TBFs, USFs = 00, TFIs = 00000005.
+- Setting Control TS 4
+Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=2 TLLI=0x00000000 DIR=DL STATE=NULL)
+Allocated TBF(TFI=2 TLLI=0x00000000 DIR=DL STATE=NULL): trx = 0, ul_slots = 10, dl_slots = 10
+********** TBF starts here **********
+Allocating DL TBF: MS_CLASS=1/1
+Creating MS object, TLLI = 0x00000000
+Modifying MS object, TLLI = 0x00000000, MS class 0 -> 1
+Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 1
+use_trx = -1
+trx(0) cur load(3) numpdch(2) prob1(4294966695) seleprob(0) btsnumpdch(4)
+selected pro(4294966695)selected_trx(0)
+trx(1) cur load(2) numpdch(2) prob1(4294966895) seleprob(4294966695) btsnumpdch(4)
+selected pro(4294966895)selected_trx(1)
+Searching for first unallocated TFI: TRX=1
+ Found TFI=2.
+FREE trx = 1 TFI = 2
+Slot Allocation (Algorithm B) for class 1
+- Rx=1 Tx=1 Sum Rx+Tx=2  Tta=3 Ttb=2  Tra=4 Trb=2 Type=1
+- Skipping TS 0, because not enabled
+- Skipping TS 1, because not enabled
+- Skipping TS 2, because not enabled
+- Skipping TS 3, because not enabled
+- Skipping TS 6, because not enabled
+- Skipping TS 7, because not enabled
+- Possible DL/UL slots: (TS=0)"....CC.."(TS=7)
+- Selected DL slots: (TS=0)"....D..."(TS=7), single
+Using single slot at TS 4 for DL
+- Reserved DL/UL slots: (TS=0)"....C..."(TS=7)
+- Assigning DL TS 4
+PDCH(TS 4, TRX 1): Attaching TBF(TFI=2 TLLI=0x00000000 DIR=DL STATE=NULL), 2 TBFs, USFs = 00, TFIs = 00000005.
+- Setting Control TS 4
+Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=2 TLLI=0x00000000 DIR=DL STATE=NULL)
+Allocated TBF(TFI=2 TLLI=0x00000000 DIR=DL STATE=NULL): trx = 1, ul_slots = 10, dl_slots = 10
+********** TBF starts here **********
+Allocating DL TBF: MS_CLASS=1/1
+Creating MS object, TLLI = 0x00000000
+Modifying MS object, TLLI = 0x00000000, MS class 0 -> 1
+Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 1
+use_trx = -1
+trx(0) cur load(3) numpdch(2) prob1(4294966695) seleprob(0) btsnumpdch(4)
+selected pro(4294966695)selected_trx(0)
+trx(1) cur load(3) numpdch(2) prob1(4294966695) seleprob(4294966695) btsnumpdch(4)
+Searching for first unallocated TFI: TRX=0
+ Found TFI=3.
+FREE trx = 0 TFI = 3
+Slot Allocation (Algorithm B) for class 1
+- Rx=1 Tx=1 Sum Rx+Tx=2  Tta=3 Ttb=2  Tra=4 Trb=2 Type=1
+- Skipping TS 0, because not enabled
+- Skipping TS 1, because not enabled
+- Skipping TS 2, because not enabled
+- Skipping TS 3, because not enabled
+- Skipping TS 6, because not enabled
+- Skipping TS 7, because not enabled
+- Possible DL/UL slots: (TS=0)"....CC.."(TS=7)
+- Selected DL slots: (TS=0)".....D.."(TS=7), single
+Using single slot at TS 5 for DL
+- Reserved DL/UL slots: (TS=0)".....C.."(TS=7)
+- Assigning DL TS 5
+PDCH(TS 5, TRX 0): Attaching TBF(TFI=3 TLLI=0x00000000 DIR=DL STATE=NULL), 2 TBFs, USFs = 00, TFIs = 0000000a.
+- Setting Control TS 5
+Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=3 TLLI=0x00000000 DIR=DL STATE=NULL)
+Allocated TBF(TFI=3 TLLI=0x00000000 DIR=DL STATE=NULL): trx = 0, ul_slots = 20, dl_slots = 20
+********** TBF starts here **********
+Allocating DL TBF: MS_CLASS=1/1
+Creating MS object, TLLI = 0x00000000
+Modifying MS object, TLLI = 0x00000000, MS class 0 -> 1
+Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 1
+use_trx = -1
+trx(0) cur load(4) numpdch(2) prob1(4294966495) seleprob(0) btsnumpdch(4)
+selected pro(4294966495)selected_trx(0)
+trx(1) cur load(3) numpdch(2) prob1(4294966695) seleprob(4294966495) btsnumpdch(4)
+selected pro(4294966695)selected_trx(1)
+Searching for first unallocated TFI: TRX=1
+ Found TFI=3.
+FREE trx = 1 TFI = 3
+Slot Allocation (Algorithm B) for class 1
+- Rx=1 Tx=1 Sum Rx+Tx=2  Tta=3 Ttb=2  Tra=4 Trb=2 Type=1
+- Skipping TS 0, because not enabled
+- Skipping TS 1, because not enabled
+- Skipping TS 2, because not enabled
+- Skipping TS 3, because not enabled
+- Skipping TS 6, because not enabled
+- Skipping TS 7, because not enabled
+- Possible DL/UL slots: (TS=0)"....CC.."(TS=7)
+- Selected DL slots: (TS=0)".....D.."(TS=7), single
+Using single slot at TS 5 for DL
+- Reserved DL/UL slots: (TS=0)".....C.."(TS=7)
+- Assigning DL TS 5
+PDCH(TS 5, TRX 1): Attaching TBF(TFI=3 TLLI=0x00000000 DIR=DL STATE=NULL), 2 TBFs, USFs = 00, TFIs = 0000000a.
+- Setting Control TS 5
+Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=3 TLLI=0x00000000 DIR=DL STATE=NULL)
+Allocated TBF(TFI=3 TLLI=0x00000000 DIR=DL STATE=NULL): trx = 1, ul_slots = 20, dl_slots = 20
+********** TBF starts here **********
+Allocating DL TBF: MS_CLASS=1/1
+Creating MS object, TLLI = 0x00000000
+Modifying MS object, TLLI = 0x00000000, MS class 0 -> 1
+Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 1
+use_trx = -1
+trx(0) cur load(4) numpdch(2) prob1(4294966495) seleprob(0) btsnumpdch(4)
+selected pro(4294966495)selected_trx(0)
+trx(1) cur load(4) numpdch(2) prob1(4294966495) seleprob(4294966495) btsnumpdch(4)
+Searching for first unallocated TFI: TRX=0
+ Found TFI=4.
+FREE trx = 0 TFI = 4
+Slot Allocation (Algorithm B) for class 1
+- Rx=1 Tx=1 Sum Rx+Tx=2  Tta=3 Ttb=2  Tra=4 Trb=2 Type=1
+- Skipping TS 0, because not enabled
+- Skipping TS 1, because not enabled
+- Skipping TS 2, because not enabled
+- Skipping TS 3, because not enabled
+- Skipping TS 6, because not enabled
+- Skipping TS 7, because not enabled
+- Possible DL/UL slots: (TS=0)"....CC.."(TS=7)
+- Selected DL slots: (TS=0)"....D..."(TS=7), single
+Using single slot at TS 4 for DL
+- Reserved DL/UL slots: (TS=0)"....C..."(TS=7)
+- Assigning DL TS 4
+PDCH(TS 4, TRX 0): Attaching TBF(TFI=4 TLLI=0x00000000 DIR=DL STATE=NULL), 3 TBFs, USFs = 00, TFIs = 00000015.
+- Setting Control TS 4
+Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=4 TLLI=0x00000000 DIR=DL STATE=NULL)
+Allocated TBF(TFI=4 TLLI=0x00000000 DIR=DL STATE=NULL): trx = 0, ul_slots = 10, dl_slots = 10
+********** TBF starts here **********
+Allocating DL TBF: MS_CLASS=1/1
+Creating MS object, TLLI = 0x00000000
+Modifying MS object, TLLI = 0x00000000, MS class 0 -> 1
+Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 1
+use_trx = -1
+trx(0) cur load(5) numpdch(2) prob1(4294966295) seleprob(0) btsnumpdch(4)
+selected pro(4294966295)selected_trx(0)
+trx(1) cur load(4) numpdch(2) prob1(4294966495) seleprob(4294966295) btsnumpdch(4)
+selected pro(4294966495)selected_trx(1)
+Searching for first unallocated TFI: TRX=1
+ Found TFI=4.
+FREE trx = 1 TFI = 4
+Slot Allocation (Algorithm B) for class 1
+- Rx=1 Tx=1 Sum Rx+Tx=2  Tta=3 Ttb=2  Tra=4 Trb=2 Type=1
+- Skipping TS 0, because not enabled
+- Skipping TS 1, because not enabled
+- Skipping TS 2, because not enabled
+- Skipping TS 3, because not enabled
+- Skipping TS 6, because not enabled
+- Skipping TS 7, because not enabled
+- Possible DL/UL slots: (TS=0)"....CC.."(TS=7)
+- Selected DL slots: (TS=0)"....D..."(TS=7), single
+Using single slot at TS 4 for DL
+- Reserved DL/UL slots: (TS=0)"....C..."(TS=7)
+- Assigning DL TS 4
+PDCH(TS 4, TRX 1): Attaching TBF(TFI=4 TLLI=0x00000000 DIR=DL STATE=NULL), 3 TBFs, USFs = 00, TFIs = 00000015.
+- Setting Control TS 4
+Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=4 TLLI=0x00000000 DIR=DL STATE=NULL)
+Allocated TBF(TFI=4 TLLI=0x00000000 DIR=DL STATE=NULL): trx = 1, ul_slots = 10, dl_slots = 10
+********** TBF starts here **********
+Allocating DL TBF: MS_CLASS=1/1
+Creating MS object, TLLI = 0x00000000
+Modifying MS object, TLLI = 0x00000000, MS class 0 -> 1
+Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 1
+use_trx = -1
+trx(0) cur load(5) numpdch(2) prob1(4294966295) seleprob(0) btsnumpdch(4)
+selected pro(4294966295)selected_trx(0)
+trx(1) cur load(5) numpdch(2) prob1(4294966295) seleprob(4294966295) btsnumpdch(4)
+Searching for first unallocated TFI: TRX=0
+ Found TFI=5.
+FREE trx = 0 TFI = 5
+Slot Allocation (Algorithm B) for class 1
+- Rx=1 Tx=1 Sum Rx+Tx=2  Tta=3 Ttb=2  Tra=4 Trb=2 Type=1
+- Skipping TS 0, because not enabled
+- Skipping TS 1, because not enabled
+- Skipping TS 2, because not enabled
+- Skipping TS 3, because not enabled
+- Skipping TS 6, because not enabled
+- Skipping TS 7, because not enabled
+- Possible DL/UL slots: (TS=0)"....CC.."(TS=7)
+- Selected DL slots: (TS=0)".....D.."(TS=7), single
+Using single slot at TS 5 for DL
+- Reserved DL/UL slots: (TS=0)".....C.."(TS=7)
+- Assigning DL TS 5
+PDCH(TS 5, TRX 0): Attaching TBF(TFI=5 TLLI=0x00000000 DIR=DL STATE=NULL), 3 TBFs, USFs = 00, TFIs = 0000002a.
+- Setting Control TS 5
+Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=5 TLLI=0x00000000 DIR=DL STATE=NULL)
+Allocated TBF(TFI=5 TLLI=0x00000000 DIR=DL STATE=NULL): trx = 0, ul_slots = 20, dl_slots = 20
+********** TBF starts here **********
+Allocating DL TBF: MS_CLASS=1/1
+Creating MS object, TLLI = 0x00000000
+Modifying MS object, TLLI = 0x00000000, MS class 0 -> 1
+Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 1
+use_trx = -1
+trx(0) cur load(0) numpdch(2) prob1(4294967295) seleprob(0) btsnumpdch(3)
+selected pro(4294967295)selected_trx(0)
+trx(1) cur load(0) numpdch(1) prob1(4294967295) seleprob(4294967295) btsnumpdch(3)
+Searching for first unallocated TFI: TRX=0
+ Found TFI=0.
+FREE trx = 0 TFI = 0
+Slot Allocation (Algorithm B) for class 1
+- Rx=1 Tx=1 Sum Rx+Tx=2  Tta=3 Ttb=2  Tra=4 Trb=2 Type=1
+- Skipping TS 0, because not enabled
+- Skipping TS 1, because not enabled
+- Skipping TS 2, because not enabled
+- Skipping TS 3, because not enabled
+- Skipping TS 6, because not enabled
+- Skipping TS 7, because not enabled
+- Possible DL/UL slots: (TS=0)"....CC.."(TS=7)
+- Selected DL slots: (TS=0)"....D..."(TS=7), single
+Using single slot at TS 4 for DL
+- Reserved DL/UL slots: (TS=0)"....C..."(TS=7)
+- Assigning DL TS 4
+PDCH(TS 4, TRX 0): Attaching TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL), 1 TBFs, USFs = 00, TFIs = 00000001.
+- Setting Control TS 4
+Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL)
+Allocated TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL): trx = 0, ul_slots = 10, dl_slots = 10
+********** TBF starts here **********
+Allocating DL TBF: MS_CLASS=1/1
+Creating MS object, TLLI = 0x00000000
+Modifying MS object, TLLI = 0x00000000, MS class 0 -> 1
+Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 1
+use_trx = -1
+trx(0) cur load(1) numpdch(2) prob1(4294967145) seleprob(0) btsnumpdch(3)
+selected pro(4294967145)selected_trx(0)
+trx(1) cur load(0) numpdch(1) prob1(4294967295) seleprob(4294967145) btsnumpdch(3)
+selected pro(4294967295)selected_trx(1)
+Searching for first unallocated TFI: TRX=1
+ Found TFI=0.
+FREE trx = 1 TFI = 0
+Slot Allocation (Algorithm B) for class 1
+- Rx=1 Tx=1 Sum Rx+Tx=2  Tta=3 Ttb=2  Tra=4 Trb=2 Type=1
+- Skipping TS 0, because not enabled
+- Skipping TS 1, because not enabled
+- Skipping TS 2, because not enabled
+- Skipping TS 3, because not enabled
+- Skipping TS 5, because not enabled
+- Skipping TS 6, because not enabled
+- Skipping TS 7, because not enabled
+- Possible DL/UL slots: (TS=0)"....C..."(TS=7)
+- Selected DL slots: (TS=0)"....D..."(TS=7), single
+Using single slot at TS 4 for DL
+- Reserved DL/UL slots: (TS=0)"....C..."(TS=7)
+- Assigning DL TS 4
+PDCH(TS 4, TRX 1): Attaching TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL), 1 TBFs, USFs = 00, TFIs = 00000001.
+- Setting Control TS 4
+Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL)
+Allocated TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL): trx = 1, ul_slots = 10, dl_slots = 10
+********** TBF starts here **********
+Allocating DL TBF: MS_CLASS=1/1
+Creating MS object, TLLI = 0x00000000
+Modifying MS object, TLLI = 0x00000000, MS class 0 -> 1
+Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 1
+use_trx = -1
+trx(0) cur load(1) numpdch(2) prob1(4294967145) seleprob(0) btsnumpdch(3)
+selected pro(4294967145)selected_trx(0)
+trx(1) cur load(1) numpdch(1) prob1(4294966995) seleprob(4294967145) btsnumpdch(3)
+Searching for first unallocated TFI: TRX=0
+ Found TFI=1.
+FREE trx = 0 TFI = 1
+Slot Allocation (Algorithm B) for class 1
+- Rx=1 Tx=1 Sum Rx+Tx=2  Tta=3 Ttb=2  Tra=4 Trb=2 Type=1
+- Skipping TS 0, because not enabled
+- Skipping TS 1, because not enabled
+- Skipping TS 2, because not enabled
+- Skipping TS 3, because not enabled
+- Skipping TS 6, because not enabled
+- Skipping TS 7, because not enabled
+- Possible DL/UL slots: (TS=0)"....CC.."(TS=7)
+- Selected DL slots: (TS=0)".....D.."(TS=7), single
+Using single slot at TS 5 for DL
+- Reserved DL/UL slots: (TS=0)".....C.."(TS=7)
+- Assigning DL TS 5
+PDCH(TS 5, TRX 0): Attaching TBF(TFI=1 TLLI=0x00000000 DIR=DL STATE=NULL), 1 TBFs, USFs = 00, TFIs = 00000002.
+- Setting Control TS 5
+Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=1 TLLI=0x00000000 DIR=DL STATE=NULL)
+Allocated TBF(TFI=1 TLLI=0x00000000 DIR=DL STATE=NULL): trx = 0, ul_slots = 20, dl_slots = 20
+********** TBF starts here **********
+Allocating DL TBF: MS_CLASS=1/1
+Creating MS object, TLLI = 0x00000000
+Modifying MS object, TLLI = 0x00000000, MS class 0 -> 1
+Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 1
+use_trx = -1
+trx(0) cur load(2) numpdch(2) prob1(4294966995) seleprob(0) btsnumpdch(3)
+selected pro(4294966995)selected_trx(0)
+trx(1) cur load(1) numpdch(1) prob1(4294966995) seleprob(4294966995) btsnumpdch(3)
+Searching for first unallocated TFI: TRX=0
+ Found TFI=2.
+FREE trx = 0 TFI = 2
+Slot Allocation (Algorithm B) for class 1
+- Rx=1 Tx=1 Sum Rx+Tx=2  Tta=3 Ttb=2  Tra=4 Trb=2 Type=1
+- Skipping TS 0, because not enabled
+- Skipping TS 1, because not enabled
+- Skipping TS 2, because not enabled
+- Skipping TS 3, because not enabled
+- Skipping TS 6, because not enabled
+- Skipping TS 7, because not enabled
+- Possible DL/UL slots: (TS=0)"....CC.."(TS=7)
+- Selected DL slots: (TS=0)"....D..."(TS=7), single
+Using single slot at TS 4 for DL
+- Reserved DL/UL slots: (TS=0)"....C..."(TS=7)
+- Assigning DL TS 4
+PDCH(TS 4, TRX 0): Attaching TBF(TFI=2 TLLI=0x00000000 DIR=DL STATE=NULL), 2 TBFs, USFs = 00, TFIs = 00000005.
+- Setting Control TS 4
+Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=2 TLLI=0x00000000 DIR=DL STATE=NULL)
+Allocated TBF(TFI=2 TLLI=0x00000000 DIR=DL STATE=NULL): trx = 0, ul_slots = 10, dl_slots = 10
+********** TBF starts here **********
+Allocating DL TBF: MS_CLASS=1/1
+Creating MS object, TLLI = 0x00000000
+Modifying MS object, TLLI = 0x00000000, MS class 0 -> 1
+Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 1
+use_trx = -1
+trx(0) cur load(3) numpdch(2) prob1(4294966845) seleprob(0) btsnumpdch(3)
+selected pro(4294966845)selected_trx(0)
+trx(1) cur load(1) numpdch(1) prob1(4294966995) seleprob(4294966845) btsnumpdch(3)
+selected pro(4294966995)selected_trx(1)
+Searching for first unallocated TFI: TRX=1
+ Found TFI=1.
+FREE trx = 1 TFI = 1
+Slot Allocation (Algorithm B) for class 1
+- Rx=1 Tx=1 Sum Rx+Tx=2  Tta=3 Ttb=2  Tra=4 Trb=2 Type=1
+- Skipping TS 0, because not enabled
+- Skipping TS 1, because not enabled
+- Skipping TS 2, because not enabled
+- Skipping TS 3, because not enabled
+- Skipping TS 5, because not enabled
+- Skipping TS 6, because not enabled
+- Skipping TS 7, because not enabled
+- Possible DL/UL slots: (TS=0)"....C..."(TS=7)
+- Selected DL slots: (TS=0)"....D..."(TS=7), single
+Using single slot at TS 4 for DL
+- Reserved DL/UL slots: (TS=0)"....C..."(TS=7)
+- Assigning DL TS 4
+PDCH(TS 4, TRX 1): Attaching TBF(TFI=1 TLLI=0x00000000 DIR=DL STATE=NULL), 2 TBFs, USFs = 00, TFIs = 00000003.
+- Setting Control TS 4
+Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=1 TLLI=0x00000000 DIR=DL STATE=NULL)
+Allocated TBF(TFI=1 TLLI=0x00000000 DIR=DL STATE=NULL): trx = 1, ul_slots = 10, dl_slots = 10
+********** TBF starts here **********
+Allocating DL TBF: MS_CLASS=1/1
+Creating MS object, TLLI = 0x00000000
+Modifying MS object, TLLI = 0x00000000, MS class 0 -> 1
+Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 1
+use_trx = -1
+trx(0) cur load(3) numpdch(2) prob1(4294966845) seleprob(0) btsnumpdch(3)
+selected pro(4294966845)selected_trx(0)
+trx(1) cur load(2) numpdch(1) prob1(4294966695) seleprob(4294966845) btsnumpdch(3)
+Searching for first unallocated TFI: TRX=0
+ Found TFI=3.
+FREE trx = 0 TFI = 3
+Slot Allocation (Algorithm B) for class 1
+- Rx=1 Tx=1 Sum Rx+Tx=2  Tta=3 Ttb=2  Tra=4 Trb=2 Type=1
+- Skipping TS 0, because not enabled
+- Skipping TS 1, because not enabled
+- Skipping TS 2, because not enabled
+- Skipping TS 3, because not enabled
+- Skipping TS 6, because not enabled
+- Skipping TS 7, because not enabled
+- Possible DL/UL slots: (TS=0)"....CC.."(TS=7)
+- Selected DL slots: (TS=0)".....D.."(TS=7), single
+Using single slot at TS 5 for DL
+- Reserved DL/UL slots: (TS=0)".....C.."(TS=7)
+- Assigning DL TS 5
+PDCH(TS 5, TRX 0): Attaching TBF(TFI=3 TLLI=0x00000000 DIR=DL STATE=NULL), 2 TBFs, USFs = 00, TFIs = 0000000a.
+- Setting Control TS 5
+Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=3 TLLI=0x00000000 DIR=DL STATE=NULL)
+Allocated TBF(TFI=3 TLLI=0x00000000 DIR=DL STATE=NULL): trx = 0, ul_slots = 20, dl_slots = 20
+********** TBF starts here **********
+Allocating DL TBF: MS_CLASS=1/1
+Creating MS object, TLLI = 0x00000000
+Modifying MS object, TLLI = 0x00000000, MS class 0 -> 1
+Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 1
+use_trx = -1
+trx(0) cur load(4) numpdch(2) prob1(4294966695) seleprob(0) btsnumpdch(3)
+selected pro(4294966695)selected_trx(0)
+trx(1) cur load(2) numpdch(1) prob1(4294966695) seleprob(4294966695) btsnumpdch(3)
+Searching for first unallocated TFI: TRX=0
+ Found TFI=4.
+FREE trx = 0 TFI = 4
+Slot Allocation (Algorithm B) for class 1
+- Rx=1 Tx=1 Sum Rx+Tx=2  Tta=3 Ttb=2  Tra=4 Trb=2 Type=1
+- Skipping TS 0, because not enabled
+- Skipping TS 1, because not enabled
+- Skipping TS 2, because not enabled
+- Skipping TS 3, because not enabled
+- Skipping TS 6, because not enabled
+- Skipping TS 7, because not enabled
+- Possible DL/UL slots: (TS=0)"....CC.."(TS=7)
+- Selected DL slots: (TS=0)"....D..."(TS=7), single
+Using single slot at TS 4 for DL
+- Reserved DL/UL slots: (TS=0)"....C..."(TS=7)
+- Assigning DL TS 4
+PDCH(TS 4, TRX 0): Attaching TBF(TFI=4 TLLI=0x00000000 DIR=DL STATE=NULL), 3 TBFs, USFs = 00, TFIs = 00000015.
+- Setting Control TS 4
+Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=4 TLLI=0x00000000 DIR=DL STATE=NULL)
+Allocated TBF(TFI=4 TLLI=0x00000000 DIR=DL STATE=NULL): trx = 0, ul_slots = 10, dl_slots = 10
+********** TBF starts here **********
+Allocating DL TBF: MS_CLASS=1/1
+Creating MS object, TLLI = 0x00000000
+Modifying MS object, TLLI = 0x00000000, MS class 0 -> 1
+Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 1
+use_trx = -1
+trx(0) cur load(5) numpdch(2) prob1(4294966545) seleprob(0) btsnumpdch(3)
+selected pro(4294966545)selected_trx(0)
+trx(1) cur load(2) numpdch(1) prob1(4294966695) seleprob(4294966545) btsnumpdch(3)
+selected pro(4294966695)selected_trx(1)
+Searching for first unallocated TFI: TRX=1
+ Found TFI=2.
+FREE trx = 1 TFI = 2
+Slot Allocation (Algorithm B) for class 1
+- Rx=1 Tx=1 Sum Rx+Tx=2  Tta=3 Ttb=2  Tra=4 Trb=2 Type=1
+- Skipping TS 0, because not enabled
+- Skipping TS 1, because not enabled
+- Skipping TS 2, because not enabled
+- Skipping TS 3, because not enabled
+- Skipping TS 5, because not enabled
+- Skipping TS 6, because not enabled
+- Skipping TS 7, because not enabled
+- Possible DL/UL slots: (TS=0)"....C..."(TS=7)
+- Selected DL slots: (TS=0)"....D..."(TS=7), single
+Using single slot at TS 4 for DL
+- Reserved DL/UL slots: (TS=0)"....C..."(TS=7)
+- Assigning DL TS 4
+PDCH(TS 4, TRX 1): Attaching TBF(TFI=2 TLLI=0x00000000 DIR=DL STATE=NULL), 3 TBFs, USFs = 00, TFIs = 00000007.
+- Setting Control TS 4
+Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=2 TLLI=0x00000000 DIR=DL STATE=NULL)
+Allocated TBF(TFI=2 TLLI=0x00000000 DIR=DL STATE=NULL): trx = 1, ul_slots = 10, dl_slots = 10
+********** TBF starts here **********
+Allocating DL TBF: MS_CLASS=1/1
+Creating MS object, TLLI = 0x00000000
+Modifying MS object, TLLI = 0x00000000, MS class 0 -> 1
+Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 1
+use_trx = -1
+trx(0) cur load(5) numpdch(2) prob1(4294966545) seleprob(0) btsnumpdch(3)
+selected pro(4294966545)selected_trx(0)
+trx(1) cur load(3) numpdch(1) prob1(4294966395) seleprob(4294966545) btsnumpdch(3)
+Searching for first unallocated TFI: TRX=0
+ Found TFI=5.
+FREE trx = 0 TFI = 5
+Slot Allocation (Algorithm B) for class 1
+- Rx=1 Tx=1 Sum Rx+Tx=2  Tta=3 Ttb=2  Tra=4 Trb=2 Type=1
+- Skipping TS 0, because not enabled
+- Skipping TS 1, because not enabled
+- Skipping TS 2, because not enabled
+- Skipping TS 3, because not enabled
+- Skipping TS 6, because not enabled
+- Skipping TS 7, because not enabled
+- Possible DL/UL slots: (TS=0)"....CC.."(TS=7)
+- Selected DL slots: (TS=0)".....D.."(TS=7), single
+Using single slot at TS 5 for DL
+- Reserved DL/UL slots: (TS=0)".....C.."(TS=7)
+- Assigning DL TS 5
+PDCH(TS 5, TRX 0): Attaching TBF(TFI=5 TLLI=0x00000000 DIR=DL STATE=NULL), 3 TBFs, USFs = 00, TFIs = 0000002a.
+- Setting Control TS 5
+Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=5 TLLI=0x00000000 DIR=DL STATE=NULL)
+Allocated TBF(TFI=5 TLLI=0x00000000 DIR=DL STATE=NULL): trx = 0, ul_slots = 20, dl_slots = 20
+********** TBF starts here **********
+Allocating DL TBF: MS_CLASS=1/1
+Creating MS object, TLLI = 0x00000000
+Modifying MS object, TLLI = 0x00000000, MS class 0 -> 1
+Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 1
+use_trx = -1
+trx(0) cur load(6) numpdch(2) prob1(4294966395) seleprob(0) btsnumpdch(3)
+selected pro(4294966395)selected_trx(0)
+trx(1) cur load(3) numpdch(1) prob1(4294966395) seleprob(4294966395) btsnumpdch(3)
+Searching for first unallocated TFI: TRX=0
+ Found TFI=6.
+FREE trx = 0 TFI = 6
+Slot Allocation (Algorithm B) for class 1
+- Rx=1 Tx=1 Sum Rx+Tx=2  Tta=3 Ttb=2  Tra=4 Trb=2 Type=1
+- Skipping TS 0, because not enabled
+- Skipping TS 1, because not enabled
+- Skipping TS 2, because not enabled
+- Skipping TS 3, because not enabled
+- Skipping TS 6, because not enabled
+- Skipping TS 7, because not enabled
+- Possible DL/UL slots: (TS=0)"....CC.."(TS=7)
+- Selected DL slots: (TS=0)"....D..."(TS=7), single
+Using single slot at TS 4 for DL
+- Reserved DL/UL slots: (TS=0)"....C..."(TS=7)
+- Assigning DL TS 4
+PDCH(TS 4, TRX 0): Attaching TBF(TFI=6 TLLI=0x00000000 DIR=DL STATE=NULL), 4 TBFs, USFs = 00, TFIs = 00000055.
+- Setting Control TS 4
+Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=6 TLLI=0x00000000 DIR=DL STATE=NULL)
+Allocated TBF(TFI=6 TLLI=0x00000000 DIR=DL STATE=NULL): trx = 0, ul_slots = 10, dl_slots = 10
+********** TBF starts here **********
+Allocating DL TBF: MS_CLASS=1/1
+Creating MS object, TLLI = 0x00000000
+Modifying MS object, TLLI = 0x00000000, MS class 0 -> 1
+Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 1
+use_trx = -1
+trx(0) cur load(7) numpdch(2) prob1(4294966245) seleprob(0) btsnumpdch(3)
+selected pro(4294966245)selected_trx(0)
+trx(1) cur load(3) numpdch(1) prob1(4294966395) seleprob(4294966245) btsnumpdch(3)
+selected pro(4294966395)selected_trx(1)
+Searching for first unallocated TFI: TRX=1
+ Found TFI=3.
+FREE trx = 1 TFI = 3
+Slot Allocation (Algorithm B) for class 1
+- Rx=1 Tx=1 Sum Rx+Tx=2  Tta=3 Ttb=2  Tra=4 Trb=2 Type=1
+- Skipping TS 0, because not enabled
+- Skipping TS 1, because not enabled
+- Skipping TS 2, because not enabled
+- Skipping TS 3, because not enabled
+- Skipping TS 5, because not enabled
+- Skipping TS 6, because not enabled
+- Skipping TS 7, because not enabled
+- Possible DL/UL slots: (TS=0)"....C..."(TS=7)
+- Selected DL slots: (TS=0)"....D..."(TS=7), single
+Using single slot at TS 4 for DL
+- Reserved DL/UL slots: (TS=0)"....C..."(TS=7)
+- Assigning DL TS 4
+PDCH(TS 4, TRX 1): Attaching TBF(TFI=3 TLLI=0x00000000 DIR=DL STATE=NULL), 4 TBFs, USFs = 00, TFIs = 0000000f.
+- Setting Control TS 4
+Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=3 TLLI=0x00000000 DIR=DL STATE=NULL)
+Allocated TBF(TFI=3 TLLI=0x00000000 DIR=DL STATE=NULL): trx = 1, ul_slots = 10, dl_slots = 10
+********** TBF starts here **********
+Allocating DL TBF: MS_CLASS=1/1
+Creating MS object, TLLI = 0x00000000
+Modifying MS object, TLLI = 0x00000000, MS class 0 -> 1
+Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 1
+use_trx = -1
+trx(0) cur load(0) numpdch(4) prob1(4294967295) seleprob(0) btsnumpdch(5)
+selected pro(4294967295)selected_trx(0)
+trx(1) cur load(0) numpdch(1) prob1(4294967295) seleprob(4294967295) btsnumpdch(5)
+Searching for first unallocated TFI: TRX=0
+ Found TFI=0.
+FREE trx = 0 TFI = 0
+Slot Allocation (Algorithm B) for class 1
+- Rx=1 Tx=1 Sum Rx+Tx=2  Tta=3 Ttb=2  Tra=4 Trb=2 Type=1
+- Skipping TS 0, because not enabled
+- Skipping TS 1, because not enabled
+- Skipping TS 2, because not enabled
+- Skipping TS 3, because not enabled
+- Possible DL/UL slots: (TS=0)"....CCCC"(TS=7)
+- Selected DL slots: (TS=0)"....D..."(TS=7), single
+Using single slot at TS 4 for DL
+- Reserved DL/UL slots: (TS=0)"....C..."(TS=7)
+- Assigning DL TS 4
+PDCH(TS 4, TRX 0): Attaching TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL), 1 TBFs, USFs = 00, TFIs = 00000001.
+- Setting Control TS 4
+Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL)
+Allocated TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL): trx = 0, ul_slots = 10, dl_slots = 10
+********** TBF starts here **********
+Allocating DL TBF: MS_CLASS=1/1
+Creating MS object, TLLI = 0x00000000
+Modifying MS object, TLLI = 0x00000000, MS class 0 -> 1
+Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 1
+use_trx = -1
+trx(0) cur load(1) numpdch(4) prob1(4294967170) seleprob(0) btsnumpdch(5)
+selected pro(4294967170)selected_trx(0)
+trx(1) cur load(0) numpdch(1) prob1(4294967295) seleprob(4294967170) btsnumpdch(5)
+selected pro(4294967295)selected_trx(1)
+Searching for first unallocated TFI: TRX=1
+ Found TFI=0.
+FREE trx = 1 TFI = 0
+Slot Allocation (Algorithm B) for class 1
+- Rx=1 Tx=1 Sum Rx+Tx=2  Tta=3 Ttb=2  Tra=4 Trb=2 Type=1
+- Skipping TS 1, because not enabled
+- Skipping TS 2, because not enabled
+- Skipping TS 3, because not enabled
+- Skipping TS 4, because not enabled
+- Skipping TS 5, because not enabled
+- Skipping TS 6, because not enabled
+- Skipping TS 7, because not enabled
+- Possible DL/UL slots: (TS=0)"C......."(TS=7)
+- Selected DL slots: (TS=0)"D......."(TS=7), single
+Using single slot at TS 0 for DL
+- Reserved DL/UL slots: (TS=0)"C......."(TS=7)
+- Assigning DL TS 0
+PDCH(TS 0, TRX 1): Attaching TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL), 1 TBFs, USFs = 00, TFIs = 00000001.
+- Setting Control TS 0
+Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL)
+Allocated TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL): trx = 1, ul_slots = 01, dl_slots = 01
+********** TBF starts here **********
+Allocating DL TBF: MS_CLASS=1/1
+Creating MS object, TLLI = 0x00000000
+Modifying MS object, TLLI = 0x00000000, MS class 0 -> 1
+Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 1
+use_trx = -1
+trx(0) cur load(1) numpdch(4) prob1(4294967170) seleprob(0) btsnumpdch(5)
+selected pro(4294967170)selected_trx(0)
+trx(1) cur load(1) numpdch(1) prob1(4294966795) seleprob(4294967170) btsnumpdch(5)
+Searching for first unallocated TFI: TRX=0
+ Found TFI=1.
+FREE trx = 0 TFI = 1
+Slot Allocation (Algorithm B) for class 1
+- Rx=1 Tx=1 Sum Rx+Tx=2  Tta=3 Ttb=2  Tra=4 Trb=2 Type=1
+- Skipping TS 0, because not enabled
+- Skipping TS 1, because not enabled
+- Skipping TS 2, because not enabled
+- Skipping TS 3, because not enabled
+- Possible DL/UL slots: (TS=0)"....CCCC"(TS=7)
+- Selected DL slots: (TS=0)".....D.."(TS=7), single
+Using single slot at TS 5 for DL
+- Reserved DL/UL slots: (TS=0)".....C.."(TS=7)
+- Assigning DL TS 5
+PDCH(TS 5, TRX 0): Attaching TBF(TFI=1 TLLI=0x00000000 DIR=DL STATE=NULL), 1 TBFs, USFs = 00, TFIs = 00000002.
+- Setting Control TS 5
+Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=1 TLLI=0x00000000 DIR=DL STATE=NULL)
+Allocated TBF(TFI=1 TLLI=0x00000000 DIR=DL STATE=NULL): trx = 0, ul_slots = 20, dl_slots = 20
+********** TBF starts here **********
+Allocating DL TBF: MS_CLASS=1/1
+Creating MS object, TLLI = 0x00000000
+Modifying MS object, TLLI = 0x00000000, MS class 0 -> 1
+Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 1
+use_trx = -1
+trx(0) cur load(2) numpdch(4) prob1(4294967045) seleprob(0) btsnumpdch(5)
+selected pro(4294967045)selected_trx(0)
+trx(1) cur load(1) numpdch(1) prob1(4294966795) seleprob(4294967045) btsnumpdch(5)
+Searching for first unallocated TFI: TRX=0
+ Found TFI=2.
+FREE trx = 0 TFI = 2
+Slot Allocation (Algorithm B) for class 1
+- Rx=1 Tx=1 Sum Rx+Tx=2  Tta=3 Ttb=2  Tra=4 Trb=2 Type=1
+- Skipping TS 0, because not enabled
+- Skipping TS 1, because not enabled
+- Skipping TS 2, because not enabled
+- Skipping TS 3, because not enabled
+- Possible DL/UL slots: (TS=0)"....CCCC"(TS=7)
+- Selected DL slots: (TS=0)"......D."(TS=7), single
+Using single slot at TS 6 for DL
+- Reserved DL/UL slots: (TS=0)"......C."(TS=7)
+- Assigning DL TS 6
+PDCH(TS 6, TRX 0): Attaching TBF(TFI=2 TLLI=0x00000000 DIR=DL STATE=NULL), 1 TBFs, USFs = 00, TFIs = 00000004.
+- Setting Control TS 6
+Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=2 TLLI=0x00000000 DIR=DL STATE=NULL)
+Allocated TBF(TFI=2 TLLI=0x00000000 DIR=DL STATE=NULL): trx = 0, ul_slots = 40, dl_slots = 40
+********** TBF starts here **********
+Allocating DL TBF: MS_CLASS=1/1
+Creating MS object, TLLI = 0x00000000
+Modifying MS object, TLLI = 0x00000000, MS class 0 -> 1
+Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 1
+use_trx = -1
+trx(0) cur load(3) numpdch(4) prob1(4294966920) seleprob(0) btsnumpdch(5)
+selected pro(4294966920)selected_trx(0)
+trx(1) cur load(1) numpdch(1) prob1(4294966795) seleprob(4294966920) btsnumpdch(5)
+Searching for first unallocated TFI: TRX=0
+ Found TFI=3.
+FREE trx = 0 TFI = 3
+Slot Allocation (Algorithm B) for class 1
+- Rx=1 Tx=1 Sum Rx+Tx=2  Tta=3 Ttb=2  Tra=4 Trb=2 Type=1
+- Skipping TS 0, because not enabled
+- Skipping TS 1, because not enabled
+- Skipping TS 2, because not enabled
+- Skipping TS 3, because not enabled
+- Possible DL/UL slots: (TS=0)"....CCCC"(TS=7)
+- Selected DL slots: (TS=0)".......D"(TS=7), single
+Using single slot at TS 7 for DL
+- Reserved DL/UL slots: (TS=0)".......C"(TS=7)
+- Assigning DL TS 7
+PDCH(TS 7, TRX 0): Attaching TBF(TFI=3 TLLI=0x00000000 DIR=DL STATE=NULL), 1 TBFs, USFs = 00, TFIs = 00000008.
+- Setting Control TS 7
+Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=3 TLLI=0x00000000 DIR=DL STATE=NULL)
+Allocated TBF(TFI=3 TLLI=0x00000000 DIR=DL STATE=NULL): trx = 0, ul_slots = 80, dl_slots = 80
+********** TBF starts here **********
+Allocating DL TBF: MS_CLASS=1/1
+Creating MS object, TLLI = 0x00000000
+Modifying MS object, TLLI = 0x00000000, MS class 0 -> 1
+Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 1
+use_trx = -1
+trx(0) cur load(4) numpdch(4) prob1(4294966795) seleprob(0) btsnumpdch(5)
+selected pro(4294966795)selected_trx(0)
+trx(1) cur load(1) numpdch(1) prob1(4294966795) seleprob(4294966795) btsnumpdch(5)
+Searching for first unallocated TFI: TRX=0
+ Found TFI=4.
+FREE trx = 0 TFI = 4
+Slot Allocation (Algorithm B) for class 1
+- Rx=1 Tx=1 Sum Rx+Tx=2  Tta=3 Ttb=2  Tra=4 Trb=2 Type=1
+- Skipping TS 0, because not enabled
+- Skipping TS 1, because not enabled
+- Skipping TS 2, because not enabled
+- Skipping TS 3, because not enabled
+- Possible DL/UL slots: (TS=0)"....CCCC"(TS=7)
+- Selected DL slots: (TS=0)"....D..."(TS=7), single
+Using single slot at TS 4 for DL
+- Reserved DL/UL slots: (TS=0)"....C..."(TS=7)
+- Assigning DL TS 4
+PDCH(TS 4, TRX 0): Attaching TBF(TFI=4 TLLI=0x00000000 DIR=DL STATE=NULL), 2 TBFs, USFs = 00, TFIs = 00000011.
+- Setting Control TS 4
+Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=4 TLLI=0x00000000 DIR=DL STATE=NULL)
+Allocated TBF(TFI=4 TLLI=0x00000000 DIR=DL STATE=NULL): trx = 0, ul_slots = 10, dl_slots = 10
+********** TBF starts here **********
+Allocating DL TBF: MS_CLASS=1/1
+Creating MS object, TLLI = 0x00000000
+Modifying MS object, TLLI = 0x00000000, MS class 0 -> 1
+Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 1
+use_trx = -1
+trx(0) cur load(5) numpdch(4) prob1(4294966670) seleprob(0) btsnumpdch(5)
+selected pro(4294966670)selected_trx(0)
+trx(1) cur load(1) numpdch(1) prob1(4294966795) seleprob(4294966670) btsnumpdch(5)
+selected pro(4294966795)selected_trx(1)
+Searching for first unallocated TFI: TRX=1
+ Found TFI=1.
+FREE trx = 1 TFI = 1
+Slot Allocation (Algorithm B) for class 1
+- Rx=1 Tx=1 Sum Rx+Tx=2  Tta=3 Ttb=2  Tra=4 Trb=2 Type=1
+- Skipping TS 1, because not enabled
+- Skipping TS 2, because not enabled
+- Skipping TS 3, because not enabled
+- Skipping TS 4, because not enabled
+- Skipping TS 5, because not enabled
+- Skipping TS 6, because not enabled
+- Skipping TS 7, because not enabled
+- Possible DL/UL slots: (TS=0)"C......."(TS=7)
+- Selected DL slots: (TS=0)"D......."(TS=7), single
+Using single slot at TS 0 for DL
+- Reserved DL/UL slots: (TS=0)"C......."(TS=7)
+- Assigning DL TS 0
+PDCH(TS 0, TRX 1): Attaching TBF(TFI=1 TLLI=0x00000000 DIR=DL STATE=NULL), 2 TBFs, USFs = 00, TFIs = 00000003.
+- Setting Control TS 0
+Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=1 TLLI=0x00000000 DIR=DL STATE=NULL)
+Allocated TBF(TFI=1 TLLI=0x00000000 DIR=DL STATE=NULL): trx = 1, ul_slots = 01, dl_slots = 01
+********** TBF starts here **********
+Allocating DL TBF: MS_CLASS=1/1
+Creating MS object, TLLI = 0x00000000
+Modifying MS object, TLLI = 0x00000000, MS class 0 -> 1
+Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 1
+use_trx = -1
+trx(0) cur load(5) numpdch(4) prob1(4294966670) seleprob(0) btsnumpdch(5)
+selected pro(4294966670)selected_trx(0)
+trx(1) cur load(2) numpdch(1) prob1(4294966295) seleprob(4294966670) btsnumpdch(5)
+Searching for first unallocated TFI: TRX=0
+ Found TFI=5.
+FREE trx = 0 TFI = 5
+Slot Allocation (Algorithm B) for class 1
+- Rx=1 Tx=1 Sum Rx+Tx=2  Tta=3 Ttb=2  Tra=4 Trb=2 Type=1
+- Skipping TS 0, because not enabled
+- Skipping TS 1, because not enabled
+- Skipping TS 2, because not enabled
+- Skipping TS 3, because not enabled
+- Possible DL/UL slots: (TS=0)"....CCCC"(TS=7)
+- Selected DL slots: (TS=0)".....D.."(TS=7), single
+Using single slot at TS 5 for DL
+- Reserved DL/UL slots: (TS=0)".....C.."(TS=7)
+- Assigning DL TS 5
+PDCH(TS 5, TRX 0): Attaching TBF(TFI=5 TLLI=0x00000000 DIR=DL STATE=NULL), 2 TBFs, USFs = 00, TFIs = 00000022.
+- Setting Control TS 5
+Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=5 TLLI=0x00000000 DIR=DL STATE=NULL)
+Allocated TBF(TFI=5 TLLI=0x00000000 DIR=DL STATE=NULL): trx = 0, ul_slots = 20, dl_slots = 20
+********** TBF starts here **********
+Allocating DL TBF: MS_CLASS=1/1
+Creating MS object, TLLI = 0x00000000
+Modifying MS object, TLLI = 0x00000000, MS class 0 -> 1
+Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 1
+use_trx = -1
+trx(0) cur load(6) numpdch(4) prob1(4294966545) seleprob(0) btsnumpdch(5)
+selected pro(4294966545)selected_trx(0)
+trx(1) cur load(2) numpdch(1) prob1(4294966295) seleprob(4294966545) btsnumpdch(5)
+Searching for first unallocated TFI: TRX=0
+ Found TFI=6.
+FREE trx = 0 TFI = 6
+Slot Allocation (Algorithm B) for class 1
+- Rx=1 Tx=1 Sum Rx+Tx=2  Tta=3 Ttb=2  Tra=4 Trb=2 Type=1
+- Skipping TS 0, because not enabled
+- Skipping TS 1, because not enabled
+- Skipping TS 2, because not enabled
+- Skipping TS 3, because not enabled
+- Possible DL/UL slots: (TS=0)"....CCCC"(TS=7)
+- Selected DL slots: (TS=0)"......D."(TS=7), single
+Using single slot at TS 6 for DL
+- Reserved DL/UL slots: (TS=0)"......C."(TS=7)
+- Assigning DL TS 6
+PDCH(TS 6, TRX 0): Attaching TBF(TFI=6 TLLI=0x00000000 DIR=DL STATE=NULL), 2 TBFs, USFs = 00, TFIs = 00000044.
+- Setting Control TS 6
+Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=6 TLLI=0x00000000 DIR=DL STATE=NULL)
+Allocated TBF(TFI=6 TLLI=0x00000000 DIR=DL STATE=NULL): trx = 0, ul_slots = 40, dl_slots = 40
+********** TBF starts here **********
+Allocating DL TBF: MS_CLASS=1/1
+Creating MS object, TLLI = 0x00000000
+Modifying MS object, TLLI = 0x00000000, MS class 0 -> 1
+Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 1
+use_trx = -1
+trx(0) cur load(7) numpdch(4) prob1(4294966420) seleprob(0) btsnumpdch(5)
+selected pro(4294966420)selected_trx(0)
+trx(1) cur load(2) numpdch(1) prob1(4294966295) seleprob(4294966420) btsnumpdch(5)
+Searching for first unallocated TFI: TRX=0
+ Found TFI=7.
+FREE trx = 0 TFI = 7
+Slot Allocation (Algorithm B) for class 1
+- Rx=1 Tx=1 Sum Rx+Tx=2  Tta=3 Ttb=2  Tra=4 Trb=2 Type=1
+- Skipping TS 0, because not enabled
+- Skipping TS 1, because not enabled
+- Skipping TS 2, because not enabled
+- Skipping TS 3, because not enabled
+- Possible DL/UL slots: (TS=0)"....CCCC"(TS=7)
+- Selected DL slots: (TS=0)".......D"(TS=7), single
+Using single slot at TS 7 for DL
+- Reserved DL/UL slots: (TS=0)".......C"(TS=7)
+- Assigning DL TS 7
+PDCH(TS 7, TRX 0): Attaching TBF(TFI=7 TLLI=0x00000000 DIR=DL STATE=NULL), 2 TBFs, USFs = 00, TFIs = 00000088.
+- Setting Control TS 7
+Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=7 TLLI=0x00000000 DIR=DL STATE=NULL)
+Allocated TBF(TFI=7 TLLI=0x00000000 DIR=DL STATE=NULL): trx = 0, ul_slots = 80, dl_slots = 80
+********** TBF starts here **********
+Allocating DL TBF: MS_CLASS=1/1
+Creating MS object, TLLI = 0x00000000
+Modifying MS object, TLLI = 0x00000000, MS class 0 -> 1
+Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 1
+use_trx = -1
+trx(0) cur load(8) numpdch(4) prob1(4294966295) seleprob(0) btsnumpdch(5)
+selected pro(4294966295)selected_trx(0)
+trx(1) cur load(2) numpdch(1) prob1(4294966295) seleprob(4294966295) btsnumpdch(5)
+Searching for first unallocated TFI: TRX=0
+ Found TFI=8.
+FREE trx = 0 TFI = 8
+Slot Allocation (Algorithm B) for class 1
+- Rx=1 Tx=1 Sum Rx+Tx=2  Tta=3 Ttb=2  Tra=4 Trb=2 Type=1
+- Skipping TS 0, because not enabled
+- Skipping TS 1, because not enabled
+- Skipping TS 2, because not enabled
+- Skipping TS 3, because not enabled
+- Possible DL/UL slots: (TS=0)"....CCCC"(TS=7)
+- Selected DL slots: (TS=0)"....D..."(TS=7), single
+Using single slot at TS 4 for DL
+- Reserved DL/UL slots: (TS=0)"....C..."(TS=7)
+- Assigning DL TS 4
+PDCH(TS 4, TRX 0): Attaching TBF(TFI=8 TLLI=0x00000000 DIR=DL STATE=NULL), 3 TBFs, USFs = 00, TFIs = 00000111.
+- Setting Control TS 4
+Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=8 TLLI=0x00000000 DIR=DL STATE=NULL)
+Allocated TBF(TFI=8 TLLI=0x00000000 DIR=DL STATE=NULL): trx = 0, ul_slots = 10, dl_slots = 10
+********** TBF starts here **********
+Allocating DL TBF: MS_CLASS=1/1
+Creating MS object, TLLI = 0x00000000
+Modifying MS object, TLLI = 0x00000000, MS class 0 -> 1
+Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 1
+use_trx = -1
+trx(0) cur load(0) numpdch(2) prob1(4294967295) seleprob(0) btsnumpdch(3)
+selected pro(4294967295)selected_trx(0)
+trx(1) cur load(0) numpdch(1) prob1(4294967295) seleprob(4294967295) btsnumpdch(3)
+Searching for first unallocated TFI: TRX=0
+ Found TFI=0.
+FREE trx = 0 TFI = 0
+Slot Allocation (Algorithm B) for class 1
+- Rx=1 Tx=1 Sum Rx+Tx=2  Tta=3 Ttb=2  Tra=4 Trb=2 Type=1
+- Skipping TS 0, because not enabled
+- Skipping TS 1, because not enabled
+- Skipping TS 2, because not enabled
+- Skipping TS 3, because not enabled
+- Skipping TS 6, because not enabled
+- Skipping TS 7, because not enabled
+- Possible DL/UL slots: (TS=0)"....CC.."(TS=7)
+- Selected DL slots: (TS=0)"....D..."(TS=7), single
+Using single slot at TS 4 for DL
+- Reserved DL/UL slots: (TS=0)"....C..."(TS=7)
+- Assigning DL TS 4
+PDCH(TS 4, TRX 0): Attaching TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL), 1 TBFs, USFs = 00, TFIs = 00000001.
+- Setting Control TS 4
+Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL)
+Allocated TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL): trx = 0, ul_slots = 10, dl_slots = 10
+TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL) changes state from NULL to RELEASING
+TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=RELEASING) free
+PDCH(TS 4, TRX 0): Detaching TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=RELEASING), 0 TBFs, USFs = 00, TFIs = 00000000.
+Detaching TBF from MS object, TLLI = 0x00000000, TBF = TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=RELEASING)
+Destroying MS object, TLLI = 0x00000000
+********** TBF ends here **********
+********** TBF starts here **********
+Allocating DL TBF: MS_CLASS=1/1
+Creating MS object, TLLI = 0x00000000
+Modifying MS object, TLLI = 0x00000000, MS class 0 -> 1
+Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 1
+use_trx = -1
+trx(0) cur load(0) numpdch(2) prob1(4294967295) seleprob(0) btsnumpdch(3)
+selected pro(4294967295)selected_trx(0)
+trx(1) cur load(0) numpdch(1) prob1(4294967295) seleprob(4294967295) btsnumpdch(3)
+Searching for first unallocated TFI: TRX=0
+ Found TFI=0.
+FREE trx = 0 TFI = 0
+Slot Allocation (Algorithm B) for class 1
+- Rx=1 Tx=1 Sum Rx+Tx=2  Tta=3 Ttb=2  Tra=4 Trb=2 Type=1
+- Skipping TS 0, because not enabled
+- Skipping TS 1, because not enabled
+- Skipping TS 2, because not enabled
+- Skipping TS 3, because not enabled
+- Skipping TS 6, because not enabled
+- Skipping TS 7, because not enabled
+- Possible DL/UL slots: (TS=0)"....CC.."(TS=7)
+- Selected DL slots: (TS=0)"....D..."(TS=7), single
+Using single slot at TS 4 for DL
+- Reserved DL/UL slots: (TS=0)"....C..."(TS=7)
+- Assigning DL TS 4
+PDCH(TS 4, TRX 0): Attaching TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL), 1 TBFs, USFs = 00, TFIs = 00000001.
+- Setting Control TS 4
+Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL)
+Allocated TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL): trx = 0, ul_slots = 10, dl_slots = 10
+********** TBF starts here **********
+Allocating DL TBF: MS_CLASS=1/1
+Creating MS object, TLLI = 0x00000000
+Modifying MS object, TLLI = 0x00000000, MS class 0 -> 1
+Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 1
+use_trx = -1
+trx(0) cur load(1) numpdch(2) prob1(4294967145) seleprob(0) btsnumpdch(3)
+selected pro(4294967145)selected_trx(0)
+trx(1) cur load(0) numpdch(1) prob1(4294967295) seleprob(4294967145) btsnumpdch(3)
+selected pro(4294967295)selected_trx(1)
+Searching for first unallocated TFI: TRX=1
+ Found TFI=0.
+FREE trx = 1 TFI = 0
+Slot Allocation (Algorithm B) for class 1
+- Rx=1 Tx=1 Sum Rx+Tx=2  Tta=3 Ttb=2  Tra=4 Trb=2 Type=1
+- Skipping TS 1, because not enabled
+- Skipping TS 2, because not enabled
+- Skipping TS 3, because not enabled
+- Skipping TS 4, because not enabled
+- Skipping TS 5, because not enabled
+- Skipping TS 6, because not enabled
+- Skipping TS 7, because not enabled
+- Possible DL/UL slots: (TS=0)"C......."(TS=7)
+- Selected DL slots: (TS=0)"D......."(TS=7), single
+Using single slot at TS 0 for DL
+- Reserved DL/UL slots: (TS=0)"C......."(TS=7)
+- Assigning DL TS 0
+PDCH(TS 0, TRX 1): Attaching TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL), 1 TBFs, USFs = 00, TFIs = 00000001.
+- Setting Control TS 0
+Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL)
+Allocated TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL): trx = 1, ul_slots = 01, dl_slots = 01
+TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL) changes state from NULL to RELEASING
+TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=RELEASING) free
+PDCH(TS 0, TRX 1): Detaching TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=RELEASING), 0 TBFs, USFs = 00, TFIs = 00000000.
+Detaching TBF from MS object, TLLI = 0x00000000, TBF = TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=RELEASING)
+Destroying MS object, TLLI = 0x00000000
+********** TBF ends here **********
+********** TBF starts here **********
+Allocating DL TBF: MS_CLASS=1/1
+Creating MS object, TLLI = 0x00000000
+Modifying MS object, TLLI = 0x00000000, MS class 0 -> 1
+Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 1
+use_trx = -1
+trx(0) cur load(1) numpdch(2) prob1(4294967145) seleprob(0) btsnumpdch(3)
+selected pro(4294967145)selected_trx(0)
+trx(1) cur load(0) numpdch(1) prob1(4294967295) seleprob(4294967145) btsnumpdch(3)
+selected pro(4294967295)selected_trx(1)
+Searching for first unallocated TFI: TRX=1
+ Found TFI=0.
+FREE trx = 1 TFI = 0
+Slot Allocation (Algorithm B) for class 1
+- Rx=1 Tx=1 Sum Rx+Tx=2  Tta=3 Ttb=2  Tra=4 Trb=2 Type=1
+- Skipping TS 1, because not enabled
+- Skipping TS 2, because not enabled
+- Skipping TS 3, because not enabled
+- Skipping TS 4, because not enabled
+- Skipping TS 5, because not enabled
+- Skipping TS 6, because not enabled
+- Skipping TS 7, because not enabled
+- Possible DL/UL slots: (TS=0)"C......."(TS=7)
+- Selected DL slots: (TS=0)"D......."(TS=7), single
+Using single slot at TS 0 for DL
+- Reserved DL/UL slots: (TS=0)"C......."(TS=7)
+- Assigning DL TS 0
+PDCH(TS 0, TRX 1): Attaching TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL), 1 TBFs, USFs = 00, TFIs = 00000001.
+- Setting Control TS 0
+Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL)
+Allocated TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL): trx = 1, ul_slots = 01, dl_slots = 01
+********** TBF starts here **********
+Allocating DL TBF: MS_CLASS=1/1
+Creating MS object, TLLI = 0x00000000
+Modifying MS object, TLLI = 0x00000000, MS class 0 -> 1
+Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 1
+use_trx = -1
+trx(0) cur load(1) numpdch(2) prob1(4294967145) seleprob(0) btsnumpdch(3)
+selected pro(4294967145)selected_trx(0)
+trx(1) cur load(1) numpdch(1) prob1(4294966995) seleprob(4294967145) btsnumpdch(3)
+Searching for first unallocated TFI: TRX=0
+ Found TFI=1.
+FREE trx = 0 TFI = 1
+Slot Allocation (Algorithm B) for class 1
+- Rx=1 Tx=1 Sum Rx+Tx=2  Tta=3 Ttb=2  Tra=4 Trb=2 Type=1
+- Skipping TS 0, because not enabled
+- Skipping TS 1, because not enabled
+- Skipping TS 2, because not enabled
+- Skipping TS 3, because not enabled
+- Skipping TS 6, because not enabled
+- Skipping TS 7, because not enabled
+- Possible DL/UL slots: (TS=0)"....CC.."(TS=7)
+- Selected DL slots: (TS=0)".....D.."(TS=7), single
+Using single slot at TS 5 for DL
+- Reserved DL/UL slots: (TS=0)".....C.."(TS=7)
+- Assigning DL TS 5
+PDCH(TS 5, TRX 0): Attaching TBF(TFI=1 TLLI=0x00000000 DIR=DL STATE=NULL), 1 TBFs, USFs = 00, TFIs = 00000002.
+- Setting Control TS 5
+Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=1 TLLI=0x00000000 DIR=DL STATE=NULL)
+Allocated TBF(TFI=1 TLLI=0x00000000 DIR=DL STATE=NULL): trx = 0, ul_slots = 20, dl_slots = 20
+TBF(TFI=1 TLLI=0x00000000 DIR=DL STATE=NULL) changes state from NULL to RELEASING
+TBF(TFI=1 TLLI=0x00000000 DIR=DL STATE=RELEASING) free
+PDCH(TS 5, TRX 0): Detaching TBF(TFI=1 TLLI=0x00000000 DIR=DL STATE=RELEASING), 0 TBFs, USFs = 00, TFIs = 00000000.
+Detaching TBF from MS object, TLLI = 0x00000000, TBF = TBF(TFI=1 TLLI=0x00000000 DIR=DL STATE=RELEASING)
+Destroying MS object, TLLI = 0x00000000
+********** TBF ends here **********
+********** TBF starts here **********
+Allocating DL TBF: MS_CLASS=1/1
+Creating MS object, TLLI = 0x00000000
+Modifying MS object, TLLI = 0x00000000, MS class 0 -> 1
+Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 1
+use_trx = -1
+trx(0) cur load(1) numpdch(2) prob1(4294967145) seleprob(0) btsnumpdch(3)
+selected pro(4294967145)selected_trx(0)
+trx(1) cur load(1) numpdch(1) prob1(4294966995) seleprob(4294967145) btsnumpdch(3)
+Searching for first unallocated TFI: TRX=0
+ Found TFI=1.
+FREE trx = 0 TFI = 1
+Slot Allocation (Algorithm B) for class 1
+- Rx=1 Tx=1 Sum Rx+Tx=2  Tta=3 Ttb=2  Tra=4 Trb=2 Type=1
+- Skipping TS 0, because not enabled
+- Skipping TS 1, because not enabled
+- Skipping TS 2, because not enabled
+- Skipping TS 3, because not enabled
+- Skipping TS 6, because not enabled
+- Skipping TS 7, because not enabled
+- Possible DL/UL slots: (TS=0)"....CC.."(TS=7)
+- Selected DL slots: (TS=0)".....D.."(TS=7), single
+Using single slot at TS 5 for DL
+- Reserved DL/UL slots: (TS=0)".....C.."(TS=7)
+- Assigning DL TS 5
+PDCH(TS 5, TRX 0): Attaching TBF(TFI=1 TLLI=0x00000000 DIR=DL STATE=NULL), 1 TBFs, USFs = 00, TFIs = 00000002.
+- Setting Control TS 5
+Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=1 TLLI=0x00000000 DIR=DL STATE=NULL)
+Allocated TBF(TFI=1 TLLI=0x00000000 DIR=DL STATE=NULL): trx = 0, ul_slots = 20, dl_slots = 20
+********** TBF starts here **********
+Allocating DL TBF: MS_CLASS=1/1
+Creating MS object, TLLI = 0x00000000
+Modifying MS object, TLLI = 0x00000000, MS class 0 -> 1
+Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 1
+use_trx = -1
+trx(0) cur load(0) numpdch(1) prob1(4294967295) seleprob(0) btsnumpdch(2)
+selected pro(4294967295)selected_trx(0)
+trx(1) cur load(0) numpdch(1) prob1(4294967295) seleprob(4294967295) btsnumpdch(2)
+Searching for first unallocated TFI: TRX=0
+ Found TFI=0.
+FREE trx = 0 TFI = 0
+Slot Allocation (Algorithm B) for class 1
+- Rx=1 Tx=1 Sum Rx+Tx=2  Tta=3 Ttb=2  Tra=4 Trb=2 Type=1
+- Skipping TS 0, because not enabled
+- Skipping TS 1, because not enabled
+- Skipping TS 2, because not enabled
+- Skipping TS 3, because not enabled
+- Skipping TS 5, because not enabled
+- Skipping TS 6, because not enabled
+- Skipping TS 7, because not enabled
+- Possible DL/UL slots: (TS=0)"....C..."(TS=7)
+- Selected DL slots: (TS=0)"....D..."(TS=7), single
+Using single slot at TS 4 for DL
+- Reserved DL/UL slots: (TS=0)"....C..."(TS=7)
+- Assigning DL TS 4
+PDCH(TS 4, TRX 0): Attaching TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL), 1 TBFs, USFs = 00, TFIs = 00000001.
+- Setting Control TS 4
+Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL)
+Allocated TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL): trx = 0, ul_slots = 10, dl_slots = 10
+********** TBF starts here **********
+Allocating UL TBF: MS_CLASS=1/1
+use_trx = 0
+Searching for first unallocated TFI: TRX=0
+ Found TFI=0.
+FREE trx = 0 TFI = 0
+- Selected UL slots: (TS=0)"....U..."(TS=7)
+Using 1 slots for UL
+- Assigning UL TS 4
+PDCH(TS 4, TRX 0): Attaching TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=NULL), 1 TBFs, USFs = 01, TFIs = 00000001.
+- Setting Control TS 4
+Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=NULL)
+Allocated TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=NULL): trx = 0, ul_slots = 10, dl_slots = 00
+TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=NULL) changes state from NULL to ASSIGN
+TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=ASSIGN) starting timer 3169.
+********** TBF starts here **********
+Allocating DL TBF: MS_CLASS=1/1
+Creating MS object, TLLI = 0x00000000
+Modifying MS object, TLLI = 0x00000000, MS class 0 -> 1
+Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 1
+use_trx = -1
+trx(0) cur load(2) numpdch(1) prob1(4294966895) seleprob(0) btsnumpdch(2)
+selected pro(4294966895)selected_trx(0)
+trx(1) cur load(0) numpdch(1) prob1(4294967295) seleprob(4294966895) btsnumpdch(2)
+selected pro(4294967295)selected_trx(1)
+Searching for first unallocated TFI: TRX=1
+ Found TFI=0.
+FREE trx = 1 TFI = 0
+Slot Allocation (Algorithm B) for class 1
+- Rx=1 Tx=1 Sum Rx+Tx=2  Tta=3 Ttb=2  Tra=4 Trb=2 Type=1
+- Skipping TS 0, because not enabled
+- Skipping TS 1, because not enabled
+- Skipping TS 2, because not enabled
+- Skipping TS 3, because not enabled
+- Skipping TS 5, because not enabled
+- Skipping TS 6, because not enabled
+- Skipping TS 7, because not enabled
+- Possible DL/UL slots: (TS=0)"....C..."(TS=7)
+- Selected DL slots: (TS=0)"....D..."(TS=7), single
+Using single slot at TS 4 for DL
+- Reserved DL/UL slots: (TS=0)"....C..."(TS=7)
+- Assigning DL TS 4
+PDCH(TS 4, TRX 1): Attaching TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL), 1 TBFs, USFs = 00, TFIs = 00000001.
+- Setting Control TS 4
+Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL)
+Allocated TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL): trx = 1, ul_slots = 10, dl_slots = 10
+********** TBF starts here **********
+Allocating DL TBF: MS_CLASS=1/1
+Creating MS object, TLLI = 0x00000000
+Modifying MS object, TLLI = 0x00000000, MS class 0 -> 1
+Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 1
+use_trx = -1
+trx(0) cur load(2) numpdch(1) prob1(4294966895) seleprob(0) btsnumpdch(2)
+selected pro(4294966895)selected_trx(0)
+trx(1) cur load(1) numpdch(1) prob1(4294967095) seleprob(4294966895) btsnumpdch(2)
+selected pro(4294967095)selected_trx(1)
+Searching for first unallocated TFI: TRX=1
+ Found TFI=1.
+FREE trx = 1 TFI = 1
+Slot Allocation (Algorithm B) for class 1
+- Rx=1 Tx=1 Sum Rx+Tx=2  Tta=3 Ttb=2  Tra=4 Trb=2 Type=1
+- Skipping TS 0, because not enabled
+- Skipping TS 1, because not enabled
+- Skipping TS 2, because not enabled
+- Skipping TS 3, because not enabled
+- Skipping TS 5, because not enabled
+- Skipping TS 6, because not enabled
+- Skipping TS 7, because not enabled
+- Possible DL/UL slots: (TS=0)"....C..."(TS=7)
+- Selected DL slots: (TS=0)"....D..."(TS=7), single
+Using single slot at TS 4 for DL
+- Reserved DL/UL slots: (TS=0)"....C..."(TS=7)
+- Assigning DL TS 4
+PDCH(TS 4, TRX 1): Attaching TBF(TFI=1 TLLI=0x00000000 DIR=DL STATE=NULL), 2 TBFs, USFs = 00, TFIs = 00000003.
+- Setting Control TS 4
+Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=1 TLLI=0x00000000 DIR=DL STATE=NULL)
+Allocated TBF(TFI=1 TLLI=0x00000000 DIR=DL STATE=NULL): trx = 1, ul_slots = 10, dl_slots = 10
+********** TBF starts here **********
+Allocating DL TBF: MS_CLASS=1/1
+Creating MS object, TLLI = 0x00000000
+Modifying MS object, TLLI = 0x00000000, MS class 0 -> 1
+Modifying MS object, TLLI = 0x00000000, EGPRS MS class 0 -> 1
+use_trx = -1
+trx(0) cur load(2) numpdch(1) prob1(4294966895) seleprob(0) btsnumpdch(2)
+selected pro(4294966895)selected_trx(0)
+trx(1) cur load(2) numpdch(1) prob1(4294966895) seleprob(4294966895) btsnumpdch(2)
+Searching for first unallocated TFI: TRX=0
+ Found TFI=1.
+FREE trx = 0 TFI = 1
+Slot Allocation (Algorithm B) for class 1
+- Rx=1 Tx=1 Sum Rx+Tx=2  Tta=3 Ttb=2  Tra=4 Trb=2 Type=1
+- Skipping TS 0, because not enabled
+- Skipping TS 1, because not enabled
+- Skipping TS 2, because not enabled
+- Skipping TS 3, because not enabled
+- Skipping TS 5, because not enabled
+- Skipping TS 6, because not enabled
+- Skipping TS 7, because not enabled
+- Possible DL/UL slots: (TS=0)"....C..."(TS=7)
+- Selected DL slots: (TS=0)"....D..."(TS=7), single
+Using single slot at TS 4 for DL
+- Reserved DL/UL slots: (TS=0)"....C..."(TS=7)
+- Assigning DL TS 4
+PDCH(TS 4, TRX 0): Attaching TBF(TFI=1 TLLI=0x00000000 DIR=DL STATE=NULL), 2 TBFs, USFs = 01, TFIs = 00000003.
+- Setting Control TS 4
+Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=1 TLLI=0x00000000 DIR=DL STATE=NULL)
+Allocated TBF(TFI=1 TLLI=0x00000000 DIR=DL STATE=NULL): trx = 0, ul_slots = 10, dl_slots = 10
+********** TBF starts here **********
+Allocating UL TBF: MS_CLASS=1/1
+use_trx = 0
+Searching for first unallocated TFI: TRX=0
+ Found TFI=1.
+FREE trx = 0 TFI = 1
+- Selected UL slots: (TS=0)"....U..."(TS=7)
+Using 1 slots for UL
+- Assigning UL TS 4
+PDCH(TS 4, TRX 0): Attaching TBF(TFI=1 TLLI=0x00000000 DIR=UL STATE=NULL), 2 TBFs, USFs = 03, TFIs = 00000003.
+- Setting Control TS 4
+Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=1 TLLI=0x00000000 DIR=UL STATE=NULL)
+Allocated TBF(TFI=1 TLLI=0x00000000 DIR=UL STATE=NULL): trx = 0, ul_slots = 10, dl_slots = 00
+TBF(TFI=1 TLLI=0x00000000 DIR=UL STATE=NULL) changes state from NULL to ASSIGN
+TBF(TFI=1 TLLI=0x00000000 DIR=UL STATE=ASSIGN) starting timer 3169.
diff --git a/tests/tbf/TbfTest.ok b/tests/tbf/TbfTest.ok
index dc07fc7..f9dc63e 100644
--- a/tests/tbf/TbfTest.ok
+++ b/tests/tbf/TbfTest.ok
@@ -75,3 +75,15 @@
 === start test_packet_access_rej_epdan ===
 packet reject: 40 84 7f f7 6e e6 41 4b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 
 === end test_packet_access_rej_epdan ===
+=== start test_multi_trx_test ===
+=== start test_multi_trx_test_same_capacity ===
+=== end test_multi_trx_test_same_capacity ===
+=== start test_multi_trx_test_1_2_capacity ===
+=== end test_multi_trx_test_1_2_capacity ===
+=== start test_multi_trx_test_1_4_capacity ===
+=== end test_multi_trx_test_1_4_capacity ===
+=== start test_multi_trx_test_release_alloc ===
+=== end test_multi_trx_test_release_alloc ===
+=== start test_multi_trx_test_same_capacity_dl_ul_combined ===
+=== end test_multi_trx_test_same_capacity_dl_ul_combined ===
+=== end test_multi_trx_test ===

-- 
To view, visit https://gerrit.osmocom.org/1512
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newpatchset
Gerrit-Change-Id: I222c3340872ffa1dd6e8fabe5276d793e660f67d
Gerrit-PatchSet: 3
Gerrit-Project: osmo-pcu
Gerrit-Branch: master
Gerrit-Owner: arvind.sirsikar <arvind.sirsikar at radisys.com>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Max <msuraev at sysmocom.de>
Gerrit-Reviewer: Neels Hofmeyr <nhofmeyr at sysmocom.de>



More information about the gerrit-log mailing list