aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/bts.cpp158
-rw-r--r--src/bts.h28
-rw-r--r--src/gprs_rlcmac_ts_alloc.cpp10
-rw-r--r--src/sba.cpp42
-rw-r--r--src/tbf.cpp2
-rw-r--r--tests/tbf/TbfTest.cpp258
-rw-r--r--tests/tbf/TbfTest.err1535
-rw-r--r--tests/tbf/TbfTest.ok12
8 files changed, 2007 insertions, 38 deletions
diff --git a/src/bts.cpp b/src/bts.cpp
index cfccec9..c116eed 100644
--- a/src/bts.cpp
+++ b/src/bts.cpp
@@ -188,11 +188,13 @@ BTS::BTS()
{
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) {
@@ -417,9 +419,82 @@ 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 = 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;
+}
+
+/*
+ * 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.
+ */
+int BTS::get_possible_trxs_sba(
+ bool *_trx)
+{
+ uint8_t trx;
+ bool has_pdch = false;
+
+ 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;
+}
+
+/*
+ * This method loops through all possible TRX and
+ * returns subset of possible TRXs based on availability.
+ */
+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, tfi;
+ uint8_t trx_from, trx_to, trx, ts;
if (use_trx >= 0 && use_trx < 8)
trx_from = trx_to = use_trx;
@@ -442,8 +517,12 @@ int BTS::tfi_find_free(enum gprs_rlcmac_tbf_direction dir,
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 +531,69 @@ int BTS::tfi_find_free(enum gprs_rlcmac_tbf_direction dir,
return -EINVAL;
}
- if (!free_tfis) {
+ if (!is_tfis_available) {
LOGP(DRLCMAC, LOGL_NOTICE, "No TFI available.\n");
return -EBUSY;
}
+ return 0;
+}
+/*
+ * This method loops through all subset of TRXs provided by
+ * get_possible_trxs and does the load balancing algorithm. and
+ * selects best TRX possible based on load and capacity
+ */
+int BTS::get_suitable_trx(bool *avail_trx)
+{
+ uint8_t trx_from, trx_to, 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);
+ trx_from = 0;
+ trx_to = 7;
- /* find the first */
- for (tfi = 0; tfi < 32; tfi++) {
- if (free_tfis & 1 << tfi)
- break;
- }
+ for (trx = trx_from; trx <= trx_to; trx++) {
+ /* Check if this TRX is in possible list */
+ if (!avail_trx[trx])
+ continue;
- OSMO_ASSERT(tfi < 32);
+ 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);
+ }
+ }
- 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 +905,17 @@ void gprs_rlcmac_pdch::enable()
{
/* 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 @@ extern "C" {
#define LLC_CODEL_USE_DEFAULT (-1)
#define MAX_GPRS_CS 9
+#define MAX_LOAD_PROBABILITY 0xffffffff
struct BTS;
struct GprsMs;
@@ -136,7 +137,8 @@ struct gprs_rlcmac_trx {
/* 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 @@ public:
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 @@ public:
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 @@ private:
/* 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 @@ inline int BTS::current_frame_number() const
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..df65767 100644
--- a/src/gprs_rlcmac_ts_alloc.cpp
+++ b/src/gprs_rlcmac_ts_alloc.cpp
@@ -383,8 +383,11 @@ static int tfi_find_free(BTS *bts, const GprsMs *ms,
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)
@@ -393,6 +396,8 @@ static int tfi_find_free(BTS *bts, const GprsMs *ms,
if (trx_no_)
*trx_no_ = trx_no;
+ LOGP(DRLCMAC, LOGL_DEBUG, " TREE trx = %d TFI = %d\n", *trx_no_, tfi);
+
return tfi;
}
@@ -479,6 +484,7 @@ int alloc_algorithm_a(struct gprs_rlcmac_bts *bts,
}
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 +1006,7 @@ int alloc_algorithm_b(struct gprs_rlcmac_bts *bts,
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 +1019,7 @@ int alloc_algorithm_b(struct gprs_rlcmac_bts *bts,
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 46c1431..117aa34 100644
--- a/src/sba.cpp
+++ b/src/sba.cpp
@@ -49,8 +49,27 @@ int SBAController::alloc(
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 @@ int SBAController::alloc(
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,11 @@ int SBAController::alloc(
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 cbb7e30..fd39fe8 100644
--- a/src/tbf.cpp
+++ b/src/tbf.cpp
@@ -395,7 +395,7 @@ static void tbf_unlink_pdch(struct gprs_rlcmac_tbf *tbf)
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 675cc8a..4bca8a8 100644
--- a/tests/tbf/TbfTest.cpp
+++ b/tests/tbf/TbfTest.cpp
@@ -3350,6 +3350,263 @@ static void test_packet_access_rej_prr()
printf("=== end %s ===\n", __func__);
}
+void test_multi_trx_test_same_capacity()
+{
+ BTS the_bts;
+ static gprs_rlcmac_dl_tbf *dl_tbf;
+ uint8_t trx_no = 0xff;
+ uint8_t ms_class = 1;
+ uint8_t egprs_ms_class = 1;
+
+ printf("=== start %s ===\n", __func__);
+
+ setup_bts(&the_bts, 4);
+ the_bts.bts_data()->trx[0].pdch[5].enable();
+ the_bts.bts_data()->alloc_algorithm = alloc_algorithm_b;
+ the_bts.bts_data()->trx[1].pdch[4].enable();
+ the_bts.bts_data()->trx[1].pdch[5].enable();
+
+ dl_tbf = tbf_alloc_dl_tbf(the_bts.bts_data(), NULL, trx_no,
+ ms_class, egprs_ms_class, 1);
+ OSMO_ASSERT(dl_tbf->trx->trx_no == 0);
+ dl_tbf = tbf_alloc_dl_tbf(the_bts.bts_data(), NULL, trx_no,
+ ms_class, egprs_ms_class, 1);
+ OSMO_ASSERT(dl_tbf->trx->trx_no == 1);
+ dl_tbf = tbf_alloc_dl_tbf(the_bts.bts_data(), NULL, trx_no,
+ ms_class, egprs_ms_class, 1);
+ OSMO_ASSERT(dl_tbf->trx->trx_no == 0);
+ dl_tbf = tbf_alloc_dl_tbf(the_bts.bts_data(), NULL, trx_no,
+ ms_class, egprs_ms_class, 1);
+ OSMO_ASSERT(dl_tbf->trx->trx_no == 1);
+ dl_tbf = tbf_alloc_dl_tbf(the_bts.bts_data(), NULL, trx_no,
+ ms_class, egprs_ms_class, 1);
+ OSMO_ASSERT(dl_tbf->trx->trx_no == 0);
+ dl_tbf = tbf_alloc_dl_tbf(the_bts.bts_data(), NULL, trx_no,
+ ms_class, egprs_ms_class, 1);
+ OSMO_ASSERT(dl_tbf->trx->trx_no == 1);
+ dl_tbf = tbf_alloc_dl_tbf(the_bts.bts_data(), NULL, trx_no,
+ ms_class, egprs_ms_class, 1);
+ OSMO_ASSERT(dl_tbf->trx->trx_no == 0);
+ dl_tbf = tbf_alloc_dl_tbf(the_bts.bts_data(), NULL, trx_no,
+ ms_class, egprs_ms_class, 1);
+ OSMO_ASSERT(dl_tbf->trx->trx_no == 1);
+ dl_tbf = tbf_alloc_dl_tbf(the_bts.bts_data(), NULL, trx_no,
+ ms_class, egprs_ms_class, 1);
+ OSMO_ASSERT(dl_tbf->trx->trx_no == 0);
+ dl_tbf = tbf_alloc_dl_tbf(the_bts.bts_data(), NULL, trx_no,
+ ms_class, egprs_ms_class, 1);
+ OSMO_ASSERT(dl_tbf->trx->trx_no == 1);
+ dl_tbf = tbf_alloc_dl_tbf(the_bts.bts_data(), NULL, trx_no,
+ ms_class, egprs_ms_class, 1);
+ OSMO_ASSERT(dl_tbf->trx->trx_no == 0);
+
+ printf("=== end %s ===\n", __func__);
+
+}
+
+void test_multi_trx_test_1_2_capacity()
+{
+ BTS the_bts;
+ static gprs_rlcmac_dl_tbf *dl_tbf;
+ uint8_t trx_no = 0xff;
+ uint8_t ms_class = 1;
+ uint8_t egprs_ms_class = 1;
+
+ printf("=== start %s ===\n", __func__);
+
+ setup_bts(&the_bts, 4);
+ the_bts.bts_data()->alloc_algorithm = alloc_algorithm_b;
+ the_bts.bts_data()->trx[0].pdch[5].enable();
+ the_bts.bts_data()->trx[1].pdch[4].enable();
+
+ dl_tbf = tbf_alloc_dl_tbf(the_bts.bts_data(), NULL, trx_no,
+ ms_class, egprs_ms_class, 1);
+ OSMO_ASSERT(dl_tbf->trx->trx_no == 0);
+ dl_tbf = tbf_alloc_dl_tbf(the_bts.bts_data(), NULL, trx_no,
+ ms_class, egprs_ms_class, 1);
+ OSMO_ASSERT(dl_tbf->trx->trx_no == 1);
+ dl_tbf = tbf_alloc_dl_tbf(the_bts.bts_data(), NULL, trx_no,
+ ms_class, egprs_ms_class, 1);
+ OSMO_ASSERT(dl_tbf->trx->trx_no == 0);
+ dl_tbf = tbf_alloc_dl_tbf(the_bts.bts_data(), NULL, trx_no,
+ ms_class, egprs_ms_class, 1);
+ OSMO_ASSERT(dl_tbf->trx->trx_no == 0);
+ dl_tbf = tbf_alloc_dl_tbf(the_bts.bts_data(), NULL, trx_no,
+ ms_class, egprs_ms_class, 1);
+ OSMO_ASSERT(dl_tbf->trx->trx_no == 1);
+ dl_tbf = tbf_alloc_dl_tbf(the_bts.bts_data(), NULL, trx_no,
+ ms_class, egprs_ms_class, 1);
+ OSMO_ASSERT(dl_tbf->trx->trx_no == 0);
+ dl_tbf = tbf_alloc_dl_tbf(the_bts.bts_data(), NULL, trx_no,
+ ms_class, egprs_ms_class, 1);
+ OSMO_ASSERT(dl_tbf->trx->trx_no == 0);
+ dl_tbf = tbf_alloc_dl_tbf(the_bts.bts_data(), NULL, trx_no,
+ ms_class, egprs_ms_class, 1);
+ OSMO_ASSERT(dl_tbf->trx->trx_no == 1);
+ dl_tbf = tbf_alloc_dl_tbf(the_bts.bts_data(), NULL, trx_no,
+ ms_class, egprs_ms_class, 1);
+ OSMO_ASSERT(dl_tbf->trx->trx_no == 0);
+ dl_tbf = tbf_alloc_dl_tbf(the_bts.bts_data(), NULL, trx_no,
+ ms_class, egprs_ms_class, 1);
+ OSMO_ASSERT(dl_tbf->trx->trx_no == 0);
+ dl_tbf = tbf_alloc_dl_tbf(the_bts.bts_data(), NULL, trx_no,
+ ms_class, egprs_ms_class, 1);
+ OSMO_ASSERT(dl_tbf->trx->trx_no == 1);
+
+ printf("=== end %s ===\n", __func__);
+
+}
+
+void test_multi_trx_test_1_4_capacity()
+{
+ BTS the_bts;
+ static gprs_rlcmac_dl_tbf *dl_tbf;
+ uint8_t trx_no = 0xff;
+ uint8_t ms_class = 1;
+ uint8_t egprs_ms_class = 1;
+
+ printf("=== start %s ===\n", __func__);
+
+ setup_bts(&the_bts, 4);
+ the_bts.bts_data()->alloc_algorithm = alloc_algorithm_b;
+
+ the_bts.bts_data()->trx[0].pdch[5].enable();
+ the_bts.bts_data()->trx[0].pdch[6].enable();
+ the_bts.bts_data()->trx[0].pdch[7].enable();
+ the_bts.bts_data()->trx[1].pdch[0].enable();
+
+ dl_tbf = tbf_alloc_dl_tbf(the_bts.bts_data(), NULL, trx_no,
+ ms_class, egprs_ms_class, 1);
+ OSMO_ASSERT(dl_tbf->trx->trx_no == 0);
+ dl_tbf = tbf_alloc_dl_tbf(the_bts.bts_data(), NULL, trx_no,
+ ms_class, egprs_ms_class, 1);
+ OSMO_ASSERT(dl_tbf->trx->trx_no == 1);
+ dl_tbf = tbf_alloc_dl_tbf(the_bts.bts_data(), NULL, trx_no,
+ ms_class, egprs_ms_class, 1);
+ OSMO_ASSERT(dl_tbf->trx->trx_no == 0);
+ dl_tbf = tbf_alloc_dl_tbf(the_bts.bts_data(), NULL, trx_no,
+ ms_class, egprs_ms_class, 1);
+ OSMO_ASSERT(dl_tbf->trx->trx_no == 0);
+ dl_tbf = tbf_alloc_dl_tbf(the_bts.bts_data(), NULL, trx_no,
+ ms_class, egprs_ms_class, 1);
+ OSMO_ASSERT(dl_tbf->trx->trx_no == 0);
+ dl_tbf = tbf_alloc_dl_tbf(the_bts.bts_data(), NULL, trx_no,
+ ms_class, egprs_ms_class, 1);
+ OSMO_ASSERT(dl_tbf->trx->trx_no == 0);
+ dl_tbf = tbf_alloc_dl_tbf(the_bts.bts_data(), NULL, trx_no,
+ ms_class, egprs_ms_class, 1);
+ OSMO_ASSERT(dl_tbf->trx->trx_no == 1);
+ dl_tbf = tbf_alloc_dl_tbf(the_bts.bts_data(), NULL, trx_no,
+ ms_class, egprs_ms_class, 1);
+ OSMO_ASSERT(dl_tbf->trx->trx_no == 0);
+ dl_tbf = tbf_alloc_dl_tbf(the_bts.bts_data(), NULL, trx_no,
+ ms_class, egprs_ms_class, 1);
+ OSMO_ASSERT(dl_tbf->trx->trx_no == 0);
+ dl_tbf = tbf_alloc_dl_tbf(the_bts.bts_data(), NULL, trx_no,
+ ms_class, egprs_ms_class, 1);
+ OSMO_ASSERT(dl_tbf->trx->trx_no == 0);
+ dl_tbf = tbf_alloc_dl_tbf(the_bts.bts_data(), NULL, trx_no,
+ ms_class, egprs_ms_class, 1);
+ OSMO_ASSERT(dl_tbf->trx->trx_no == 0);
+
+ printf("=== end %s ===\n", __func__);
+}
+
+void test_multi_trx_test_release_alloc()
+{
+ BTS the_bts;
+ static gprs_rlcmac_dl_tbf *dl_tbf;
+ uint8_t trx_no = 0xff;
+ uint8_t ms_class = 1;
+ uint8_t egprs_ms_class = 1;
+
+ printf("=== start %s ===\n", __func__);
+
+ setup_bts(&the_bts, 4);
+ the_bts.bts_data()->alloc_algorithm = alloc_algorithm_b;
+
+ the_bts.bts_data()->trx[0].pdch[5].enable();
+ the_bts.bts_data()->trx[1].pdch[0].enable();
+
+ dl_tbf = tbf_alloc_dl_tbf(the_bts.bts_data(), NULL, trx_no,
+ ms_class, egprs_ms_class, 1);
+ OSMO_ASSERT(dl_tbf->trx->trx_no == 0);
+ tbf_free(dl_tbf);
+ dl_tbf = tbf_alloc_dl_tbf(the_bts.bts_data(), NULL, trx_no,
+ ms_class, egprs_ms_class, 1);
+ OSMO_ASSERT(dl_tbf->trx->trx_no == 0);
+ dl_tbf = tbf_alloc_dl_tbf(the_bts.bts_data(), NULL, trx_no,
+ ms_class, egprs_ms_class, 1);
+ OSMO_ASSERT(dl_tbf->trx->trx_no == 1);
+ tbf_free(dl_tbf);
+ dl_tbf = tbf_alloc_dl_tbf(the_bts.bts_data(), NULL, trx_no,
+ ms_class, egprs_ms_class, 1);
+ OSMO_ASSERT(dl_tbf->trx->trx_no == 1);
+ dl_tbf = tbf_alloc_dl_tbf(the_bts.bts_data(), NULL, trx_no,
+ ms_class, egprs_ms_class, 1);
+ OSMO_ASSERT(dl_tbf->trx->trx_no == 0);
+ tbf_free(dl_tbf);
+ dl_tbf = tbf_alloc_dl_tbf(the_bts.bts_data(), NULL, trx_no,
+ ms_class, egprs_ms_class, 1);
+ OSMO_ASSERT(dl_tbf->trx->trx_no == 0);
+
+ printf("=== end %s ===\n", __func__);
+}
+
+void test_multi_trx_test_same_capacity_dl_ul_combined()
+{
+ BTS the_bts;
+ static gprs_rlcmac_dl_tbf *dl_tbf;
+ static gprs_rlcmac_ul_tbf *ul_tbf;
+ uint8_t trx_no = 0xff;
+ uint8_t ms_class = 1;
+ uint8_t egprs_ms_class = 1;
+
+ printf("=== start %s ===\n", __func__);
+
+ setup_bts(&the_bts, 4);
+ the_bts.bts_data()->alloc_algorithm = alloc_algorithm_b;
+ the_bts.bts_data()->trx[1].pdch[4].enable();
+
+ dl_tbf = tbf_alloc_dl_tbf(the_bts.bts_data(), NULL, trx_no,
+ ms_class, egprs_ms_class, 1);
+ OSMO_ASSERT(dl_tbf->trx->trx_no == 0);
+ ul_tbf = tbf_alloc_ul(the_bts.bts_data(),
+ 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);
+
+ dl_tbf = tbf_alloc_dl_tbf(the_bts.bts_data(), NULL, trx_no,
+ ms_class, egprs_ms_class, 1);
+ OSMO_ASSERT(dl_tbf->trx->trx_no == 1);
+ dl_tbf = tbf_alloc_dl_tbf(the_bts.bts_data(), NULL, trx_no,
+ ms_class, egprs_ms_class, 1);
+ OSMO_ASSERT(dl_tbf->trx->trx_no == 1);
+ dl_tbf = tbf_alloc_dl_tbf(the_bts.bts_data(), NULL, trx_no,
+ ms_class, egprs_ms_class, 1);
+ OSMO_ASSERT(dl_tbf->trx->trx_no == 0);
+ ul_tbf = tbf_alloc_ul(the_bts.bts_data(),
+ 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;
@@ -3420,6 +3677,7 @@ int main(int argc, char **argv)
test_tbf_egprs_two_phase_puan();
test_packet_access_rej_prr();
test_packet_access_rej_prr_no_other_tbfs();
+ 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 1464703..0e5f072 100644
--- a/tests/tbf/TbfTest.err
+++ b/tests/tbf/TbfTest.err
@@ -35,6 +35,8 @@ Modifying MS object, TLLI: 0x00000000 -> 0x00002342, already confirmed partly
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 @@ PDCH(TS 4, TRX 0): Detaching TBF(TFI=1 TLLI=0xffeeddcc DIR=DL STATE=RELEASING),
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 @@ PDCH(TS 4, TRX 0): Detaching TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING),
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 @@ PDCH(TS 4, TRX 0): Detaching TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING),
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 @@ Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=0 TLLI=0x00000000 D
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 @@ data block (BSN 2, CS-1): 4d 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03
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 @@ Sending data request: trx=0 ts=7 sapi=5 arfcn=0 fn=2654218 block=8 data=47 94 2b
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 @@ Sending data request: trx=0 ts=7 sapi=5 arfcn=0 fn=2654218 block=8 data=47 94 2b
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 @@ Sending data request: trx=0 ts=7 sapi=5 arfcn=0 fn=2654283 block=11 data=00 01 0
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 @@ Sending data request: trx=0 ts=7 sapi=5 arfcn=0 fn=2654218 block=8 data=47 94 2b
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 @@ Sending data request: trx=0 ts=7 sapi=5 arfcn=0 fn=2654275 block=9 data=47 94 2b
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 @@ Sending data request: trx=0 ts=7 sapi=5 arfcn=0 fn=2654218 block=8 data=47 94 2b
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 @@ TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) stopping timer 3169.
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 @@ Sending data request: trx=0 ts=7 sapi=5 arfcn=0 fn=2654218 block=8 data=47 94 2b
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 @@ No PDCH resource
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.
+ TREE 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 @@ Creating MS object, TLLI = 0x00000000
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.
+ TREE 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 @@ Sending data request: trx=0 ts=7 sapi=5 arfcn=0 fn=2654218 block=8 data=47 94 2b
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 @@ Sending data request: trx=0 ts=7 sapi=5 arfcn=0 fn=2654218 block=8 data=47 94 2b
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 @@ Send dowlink assignment on PACCH, because TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE
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 @@ PDCH(TS 4, TRX 0): Detaching TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EG
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 @@ PDCH(TS 4, TRX 0): Detaching TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EG
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 @@ PDCH(TS 4, TRX 0): Detaching TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EG
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 @@ PDCH(TS 4, TRX 0): Detaching TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EG
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 @@ PDCH(TS 4, TRX 0): Detaching TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EG
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 @@ PDCH(TS 4, TRX 0): Detaching TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EG
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 @@ PDCH(TS 4, TRX 0): Detaching TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EG
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 **********
@@ -5409,6 +5560,8 @@ PDCH(TS 4, TRX 0): Detaching TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EG
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 **********
@@ -5555,6 +5708,8 @@ PDCH(TS 4, TRX 0): Detaching TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EG
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 **********
@@ -5607,6 +5762,8 @@ PDCH(TS 4, TRX 0): Detaching TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EG
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 **********
@@ -5659,6 +5816,8 @@ PDCH(TS 4, TRX 0): Detaching TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EG
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 **********
@@ -5711,6 +5870,8 @@ PDCH(TS 4, TRX 0): Detaching TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EG
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 **********
@@ -5782,6 +5943,8 @@ PDCH(TS 4, TRX 0): Detaching TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EG
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 **********
@@ -5853,6 +6016,8 @@ PDCH(TS 4, TRX 0): Detaching TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EG
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 **********
@@ -5924,6 +6089,8 @@ PDCH(TS 4, TRX 0): Detaching TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EG
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 **********
@@ -5995,6 +6162,8 @@ PDCH(TS 4, TRX 0): Detaching TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EG
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 **********
@@ -6053,6 +6222,8 @@ PDCH(TS 4, TRX 0): Detaching TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EG
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 **********
@@ -6111,6 +6282,8 @@ PDCH(TS 4, TRX 0): Detaching TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EG
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 **********
@@ -6169,6 +6342,8 @@ PDCH(TS 4, TRX 0): Detaching TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=RELEASING EG
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 **********
@@ -6237,10 +6412,23 @@ Sending data request: trx=0 ts=7 sapi=5 arfcn=0 fn=2654218 block=8 data=47 94 2b
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))
@@ -6365,8 +6553,10 @@ Creating MS object, TLLI = 0x00000000
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.
+ TREE 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
@@ -6387,8 +6577,10 @@ ws(192)
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.
+ TREE trx = 0 TFI = 0
- Selected DL slots: (TS=0)"..DDDD.."(TS=7)
Using 4 slots for DL
- Assigning DL TS 2
@@ -6415,10 +6607,23 @@ Sending data request: trx=0 ts=7 sapi=5 arfcn=0 fn=2654218 block=8 data=47 94 2b
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))
@@ -6525,6 +6730,8 @@ Send dowlink assignment on PACCH, because TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE
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 **********
@@ -6879,9 +7086,18 @@ Destroying MS object, TLLI = 0x00000000
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 **********
@@ -6910,10 +7126,23 @@ Sending data request: trx=0 ts=7 sapi=5 arfcn=0 fn=2654218 block=8 data=47 94 2b
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))
@@ -9098,3 +9327,1307 @@ TBF(TFI=0 TLLI=0xffeeddcc DIR=UL STATE=ASSIGN) stopping timer 0.
Detaching TBF from MS object, TLLI = 0xffeeddcc, TBF = TBF(TFI=0 TLLI=0xffeeddcc DIR=UL STATE=ASSIGN)
Destroying MS object, TLLI = 0xffeeddcc
********** 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(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.
+ TREE 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.
+ TREE 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.
+ TREE 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.
+ TREE 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.
+ TREE 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.
+ TREE 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.
+ TREE 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.
+ TREE 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.
+ TREE 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.
+ TREE 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.
+ TREE 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.
+ TREE 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.
+ TREE 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.
+ TREE 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.
+ TREE 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.
+ TREE 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.
+ TREE 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.
+ TREE 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.
+ TREE 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.
+ TREE 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.
+ TREE 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.
+ TREE 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.
+ TREE 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.
+ TREE 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.
+ TREE 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.
+ TREE 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.
+ TREE 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.
+ TREE 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.
+ TREE 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.
+ TREE 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.
+ TREE 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.
+ TREE 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.
+ TREE 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.
+ TREE 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.
+ TREE 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.
+ TREE 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.
+ TREE 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.
+ TREE 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.
+ TREE 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.
+ TREE 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.
+ TREE 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.
+ TREE 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.
+ TREE 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.
+ TREE 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.
+ TREE 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 f7512eb..fe34008 100644
--- a/tests/tbf/TbfTest.ok
+++ b/tests/tbf/TbfTest.ok
@@ -81,3 +81,15 @@ packet reject: 40 84 7f f7 6e e6 41 4b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b
=== end test_packet_access_rej_prr ===
=== start test_packet_access_rej_prr_no_other_tbfs ===
=== end test_packet_access_rej_prr_no_other_tbfs ===
+=== 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 ===