aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJacob Erlbeck <jerlbeck@sysmocom.de>2015-06-29 13:45:05 +0200
committerJacob Erlbeck <jerlbeck@sysmocom.de>2015-07-03 13:17:22 +0200
commitccc34e4d30b962a2963c004d003d3851801ffb3b (patch)
tree63ab4167148ae54cc8858e5cc6a5821e569e9a57
parentc6d4ceeda6e6b96cc5bbc07fb9489587ed181f60 (diff)
tbf: Maintain the number of TBF per PDCH
Currently the PDCH object do not know anything about the TBFs using them. To make the slot allocation load dependant, at least some numbers are required. This commit adds TBF counters (one per direction) and the related methods attach_tbf, detach_tbf, and num_tbfs to gprs_rlcmac_pdch. Sponsored-by: On-Waves ehf
-rw-r--r--src/bts.cpp16
-rw-r--r--src/bts.h12
-rw-r--r--src/gprs_rlcmac_ts_alloc.cpp14
-rw-r--r--src/tbf.cpp15
-rw-r--r--tests/tbf/TbfTest.err57
5 files changed, 106 insertions, 8 deletions
diff --git a/src/bts.cpp b/src/bts.cpp
index bc5ac94..6da8cdd 100644
--- a/src/bts.cpp
+++ b/src/bts.cpp
@@ -1131,3 +1131,19 @@ gprs_rlcmac_dl_tbf *gprs_rlcmac_pdch::dl_tbf_by_tfi(uint8_t tfi)
{
return static_cast<gprs_rlcmac_dl_tbf *>(tbf_from_list_by_tfi(&bts_data()->dl_tbfs, tfi, GPRS_RLCMAC_DL_TBF));
}
+
+void gprs_rlcmac_pdch::attach_tbf(gprs_rlcmac_tbf *tbf)
+{
+ m_num_tbfs[tbf->direction] += 1;
+ LOGP(DRLCMAC, LOGL_INFO, "PDCH(TS %d, TRX %d): Attaching %s, %d TBFs.\n",
+ ts_no, trx_no(), tbf->name(), m_num_tbfs[tbf->direction]);
+}
+
+void gprs_rlcmac_pdch::detach_tbf(gprs_rlcmac_tbf *tbf)
+{
+ OSMO_ASSERT(m_num_tbfs[tbf->direction] > 0);
+
+ m_num_tbfs[tbf->direction] -= 1;
+ LOGP(DRLCMAC, LOGL_INFO, "PDCH(TS %d, TRX %d): Detaching %s, %d TBFs.\n",
+ ts_no, trx_no(), tbf->name(), m_num_tbfs[tbf->direction]);
+}
diff --git a/src/bts.h b/src/bts.h
index 7e34db5..f6cc88f 100644
--- a/src/bts.h
+++ b/src/bts.h
@@ -66,6 +66,11 @@ struct gprs_rlcmac_pdch {
struct gprs_rlcmac_ul_tbf *ul_tbf_by_tfi(uint8_t tfi);
struct gprs_rlcmac_dl_tbf *dl_tbf_by_tfi(uint8_t tfi);
+
+ void attach_tbf(gprs_rlcmac_tbf *tbf);
+ void detach_tbf(gprs_rlcmac_tbf *tbf);
+
+ unsigned num_tbfs(enum gprs_rlcmac_tbf_direction dir) const;
#endif
uint8_t m_is_enabled; /* TS is enabled */
@@ -93,6 +98,8 @@ private:
gprs_rlcmac_tbf *tbf_from_list_by_tfi(struct llist_head *tbf_list, uint8_t tfi,
enum gprs_rlcmac_tbf_direction dir);
#endif
+
+ uint8_t m_num_tbfs[2];
};
struct gprs_rlcmac_trx {
@@ -299,6 +306,11 @@ inline BTS *gprs_rlcmac_pdch::bts() const
return trx->bts;
}
+inline unsigned gprs_rlcmac_pdch::num_tbfs(enum gprs_rlcmac_tbf_direction dir) const
+{
+ return m_num_tbfs[dir];
+}
+
inline struct rate_ctr_group *BTS::rate_counters() const
{
return m_ratectrs;
diff --git a/src/gprs_rlcmac_ts_alloc.cpp b/src/gprs_rlcmac_ts_alloc.cpp
index bae1ea5..29749b8 100644
--- a/src/gprs_rlcmac_ts_alloc.cpp
+++ b/src/gprs_rlcmac_ts_alloc.cpp
@@ -117,13 +117,23 @@ static int find_enabled_pdch(struct gprs_rlcmac_trx *trx, const uint8_t start_ts
return 8;
}
+static void attach_tbf_to_pdch(struct gprs_rlcmac_pdch *pdch,
+ struct gprs_rlcmac_tbf *tbf)
+{
+ if (tbf->pdch[pdch->ts_no])
+ tbf->pdch[pdch->ts_no]->detach_tbf(tbf);
+
+ tbf->pdch[pdch->ts_no] = pdch;
+ pdch->attach_tbf(tbf);
+}
+
static void assign_uplink_tbf_usf(
struct gprs_rlcmac_pdch *pdch,
struct gprs_rlcmac_ul_tbf *tbf, int8_t usf)
{
tbf->trx->ul_tbf[tbf->tfi()] = tbf;
- tbf->pdch[pdch->ts_no] = pdch;
tbf->m_usf[pdch->ts_no] = usf;
+ attach_tbf_to_pdch(pdch, tbf);
}
static void assign_dlink_tbf(
@@ -131,7 +141,7 @@ static void assign_dlink_tbf(
struct gprs_rlcmac_dl_tbf *tbf)
{
tbf->trx->dl_tbf[tbf->tfi()] = tbf;
- tbf->pdch[pdch->ts_no] = pdch;
+ attach_tbf_to_pdch(pdch, tbf);
}
diff --git a/src/tbf.cpp b/src/tbf.cpp
index 9bdc1f7..ddc3b91 100644
--- a/src/tbf.cpp
+++ b/src/tbf.cpp
@@ -209,14 +209,17 @@ static void tbf_unlink_pdch(struct gprs_rlcmac_tbf *tbf)
{
int ts;
- if (tbf->direction == GPRS_RLCMAC_UL_TBF) {
+ if (tbf->direction == GPRS_RLCMAC_UL_TBF)
tbf->trx->ul_tbf[tbf->tfi()] = NULL;
- for (ts = 0; ts < 8; ts++)
- tbf->pdch[ts] = NULL;
- } else {
+ else
tbf->trx->dl_tbf[tbf->tfi()] = NULL;
- for (ts = 0; ts < 8; ts++)
- tbf->pdch[ts] = NULL;
+
+ for (ts = 0; ts < 8; ts++) {
+ if (!tbf->pdch[ts])
+ continue;
+
+ tbf->pdch[ts]->detach_tbf(tbf);
+ tbf->pdch[ts] = NULL;
}
}
diff --git a/tests/tbf/TbfTest.err b/tests/tbf/TbfTest.err
index 5b8090d..7976870 100644
--- a/tests/tbf/TbfTest.err
+++ b/tests/tbf/TbfTest.err
@@ -5,6 +5,7 @@ Slot Allocation (Algorithm A) for class 0
- Skipping TS 0, because not enabled
- Skipping TS 1, because not enabled
- Assign downlink TS=2
+PDCH(TS 2, TRX 0): Attaching TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL), 1 TBFs.
- Setting Control TS 2
Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL)
The MS object cannot fully confirm an unexpected TLLI: 0x00002342, partly confirmed
@@ -15,6 +16,7 @@ Slot Allocation (Algorithm A) for class 0
- Skipping TS 0, because not enabled
- Skipping TS 1, because not enabled
- Assign uplink TS=2 USF=0
+PDCH(TS 2, TRX 0): Attaching TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=NULL), 1 TBFs.
- Setting Control TS 2
Attaching TBF to MS object, TLLI = 0x00002342, TBF = TBF(TFI=0 TLLI=0x00002342 DIR=UL STATE=NULL)
Modifying MS object, TLLI: 0x00000000 -> 0x00002342, already confirmed partly
@@ -33,6 +35,7 @@ Slot Allocation (Algorithm A) for class 45
- Skipping TS 2, because not enabled
- Skipping TS 3, because not enabled
- Assign downlink TS=4
+PDCH(TS 4, TRX 0): Attaching TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL), 1 TBFs.
- Setting Control TS 4
Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL)
TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL) changes state from NULL to FLOW
@@ -73,6 +76,7 @@ Slot Allocation (Algorithm A) for class 45
- Skipping TS 2, because not enabled
- Skipping TS 3, because not enabled
- Assign downlink TS=4
+PDCH(TS 4, TRX 0): Attaching TBF(TFI=1 TLLI=0x00000000 DIR=DL STATE=NULL), 2 TBFs.
- Setting Control TS 4
Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=1 TLLI=0x00000000 DIR=DL STATE=NULL)
Detaching TBF from MS object, TLLI = 0x00000000, TBF = TBF(TFI=1 TLLI=0x00000000 DIR=DL STATE=NULL)
@@ -80,21 +84,25 @@ Destroying MS object, TLLI = 0x00000000
Attaching TBF to MS object, TLLI = 0xffeeddcc, TBF = TBF(TFI=1 TLLI=0xffeeddcc DIR=DL STATE=NULL)
Detaching TBF from MS object, TLLI = 0xffeeddcc, TBF = TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE)
********** TBF update **********
+PDCH(TS 4, TRX 0): Detaching TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=WAIT RELEASE), 1 TBFs.
Slot Allocation (Algorithm A) for class 45
- Skipping TS 0, because not enabled
- Skipping TS 1, because not enabled
- Skipping TS 2, because not enabled
- Skipping TS 3, because not enabled
- Assign downlink TS=4
+PDCH(TS 4, TRX 0): Attaching TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=WAIT RELEASE), 2 TBFs.
TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=WAIT RELEASE) Trigger dowlink assignment on PACCH, because another LLC PDU has arrived in between
Send dowlink assignment on PACCH, because TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=WAIT RELEASE) exists
TBF(TFI=1 TLLI=0xffeeddcc DIR=DL STATE=NULL) changes state from NULL to ASSIGN
TBF(TFI=1 TLLI=0xffeeddcc DIR=DL STATE=ASSIGN) starting timer 0.
DL packet loss of IMSI= / TLLI=0x00000000: 0%
TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=WAIT RELEASE) free
+PDCH(TS 4, TRX 0): Detaching TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=WAIT RELEASE), 1 TBFs.
********** TBF ends here **********
TBF(TFI=1 TLLI=0xffeeddcc DIR=DL STATE=ASSIGN) free
TBF(TFI=1 TLLI=0xffeeddcc DIR=DL STATE=ASSIGN) stopping timer 0.
+PDCH(TS 4, TRX 0): Detaching TBF(TFI=1 TLLI=0xffeeddcc DIR=DL STATE=ASSIGN), 0 TBFs.
Detaching TBF from MS object, TLLI = 0xffeeddcc, TBF = TBF(TFI=1 TLLI=0xffeeddcc DIR=DL STATE=ASSIGN)
********** TBF ends here **********
Destroying MS object, TLLI = 0xffeeddcc
@@ -110,6 +118,7 @@ Slot Allocation (Algorithm A) for class 45
- Skipping TS 2, because not enabled
- Skipping TS 3, because not enabled
- Assign downlink TS=4
+PDCH(TS 4, TRX 0): Attaching TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL), 1 TBFs.
- Setting Control TS 4
Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL)
TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL) changes state from NULL to FLOW
@@ -150,6 +159,7 @@ Slot Allocation (Algorithm A) for class 45
- Skipping TS 2, because not enabled
- Skipping TS 3, because not enabled
- Assign downlink TS=4
+PDCH(TS 4, TRX 0): Attaching TBF(TFI=1 TLLI=0x00000000 DIR=DL STATE=NULL), 2 TBFs.
- Setting Control TS 4
Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=1 TLLI=0x00000000 DIR=DL STATE=NULL)
Detaching TBF from MS object, TLLI = 0x00000000, TBF = TBF(TFI=1 TLLI=0x00000000 DIR=DL STATE=NULL)
@@ -157,22 +167,26 @@ Destroying MS object, TLLI = 0x00000000
Attaching TBF to MS object, TLLI = 0xffeeddcc, TBF = TBF(TFI=1 TLLI=0xffeeddcc DIR=DL STATE=NULL)
Detaching TBF from MS object, TLLI = 0xffeeddcc, TBF = TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE)
********** TBF update **********
+PDCH(TS 4, TRX 0): Detaching TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=WAIT RELEASE), 1 TBFs.
Slot Allocation (Algorithm A) for class 45
- Skipping TS 0, because not enabled
- Skipping TS 1, because not enabled
- Skipping TS 2, because not enabled
- Skipping TS 3, because not enabled
- Assign downlink TS=4
+PDCH(TS 4, TRX 0): Attaching TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=WAIT RELEASE), 2 TBFs.
TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=WAIT RELEASE) Trigger dowlink assignment on PACCH, because another LLC PDU has arrived in between
Send dowlink assignment on PACCH, because TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=WAIT RELEASE) exists
TBF(TFI=1 TLLI=0xffeeddcc DIR=DL STATE=NULL) changes state from NULL to ASSIGN
TBF(TFI=1 TLLI=0xffeeddcc DIR=DL STATE=ASSIGN) starting timer 0.
TBF(TFI=1 TLLI=0xffeeddcc DIR=DL STATE=ASSIGN) free
TBF(TFI=1 TLLI=0xffeeddcc DIR=DL STATE=ASSIGN) stopping timer 0.
+PDCH(TS 4, TRX 0): Detaching TBF(TFI=1 TLLI=0xffeeddcc DIR=DL STATE=ASSIGN), 1 TBFs.
Detaching TBF from MS object, TLLI = 0xffeeddcc, TBF = TBF(TFI=1 TLLI=0xffeeddcc DIR=DL STATE=ASSIGN)
********** TBF ends here **********
DL packet loss of IMSI= / TLLI=0x00000000: 0%
TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=WAIT RELEASE) free
+PDCH(TS 4, TRX 0): Detaching TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=WAIT RELEASE), 0 TBFs.
********** TBF ends here **********
Destroying MS object, TLLI = 0xffeeddcc
Searching for first unallocated TFI: TRX=0 first TS=4
@@ -187,6 +201,7 @@ Slot Allocation (Algorithm A) for class 45
- Skipping TS 2, because not enabled
- Skipping TS 3, because not enabled
- Assign downlink TS=4
+PDCH(TS 4, TRX 0): Attaching TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL), 1 TBFs.
- Setting Control TS 4
Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL)
TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL) changes state from NULL to FLOW
@@ -395,6 +410,7 @@ TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE) starting timer 3193.
DL packet loss of IMSI= / TLLI=0xffeeddcc: 0%
TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE) free
TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE) stopping timer 3193.
+PDCH(TS 4, TRX 0): Detaching TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE), 0 TBFs.
Detaching TBF from MS object, TLLI = 0xffeeddcc, TBF = TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE)
Destroying MS object, TLLI = 0xffeeddcc
********** TBF ends here **********
@@ -410,6 +426,7 @@ Slot Allocation (Algorithm A) for class 45
- Skipping TS 2, because not enabled
- Skipping TS 3, because not enabled
- Assign downlink TS=4
+PDCH(TS 4, TRX 0): Attaching TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL), 1 TBFs.
- Setting Control TS 4
Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL)
TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL) changes state from NULL to FLOW
@@ -425,6 +442,7 @@ Slot Allocation (Algorithm A) for class 45
- Skipping TS 2, because not enabled
- Skipping TS 3, because not enabled
- Assign downlink TS=4
+PDCH(TS 4, TRX 0): Attaching TBF(TFI=1 TLLI=0x00000000 DIR=DL STATE=NULL), 2 TBFs.
- Setting Control TS 4
Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=1 TLLI=0x00000000 DIR=DL STATE=NULL)
TBF(TFI=1 TLLI=0x00000000 DIR=DL STATE=NULL) changes state from NULL to FLOW
@@ -437,11 +455,13 @@ Modifying MS object, TLLI = 0xf1000001, IMSI '001001000000002' -> ''
Modifying MS object, TLLI = 0xf1000002, IMSI '' -> '001001000000002'
TBF(TFI=1 TLLI=0xf1000002 DIR=DL STATE=FLOW) free
TBF(TFI=1 TLLI=0xf1000002 DIR=DL STATE=FLOW) Software error: Pending downlink assignment. This may not happen, because the assignment message never gets transmitted. Please be sure not to free in this state. PLEASE FIX!
+PDCH(TS 4, TRX 0): Detaching TBF(TFI=1 TLLI=0xf1000002 DIR=DL STATE=FLOW), 1 TBFs.
Detaching TBF from MS object, TLLI = 0xf1000002, TBF = TBF(TFI=1 TLLI=0xf1000002 DIR=DL STATE=FLOW)
Destroying MS object, TLLI = 0xf1000002
********** TBF ends here **********
TBF(TFI=0 TLLI=0xf1000001 DIR=DL STATE=FLOW) free
TBF(TFI=0 TLLI=0xf1000001 DIR=DL STATE=FLOW) Software error: Pending downlink assignment. This may not happen, because the assignment message never gets transmitted. Please be sure not to free in this state. PLEASE FIX!
+PDCH(TS 4, TRX 0): Detaching TBF(TFI=0 TLLI=0xf1000001 DIR=DL STATE=FLOW), 0 TBFs.
Detaching TBF from MS object, TLLI = 0xf1000001, TBF = TBF(TFI=0 TLLI=0xf1000001 DIR=DL STATE=FLOW)
Destroying MS object, TLLI = 0xf1000001
********** TBF ends here **********
@@ -457,6 +477,7 @@ Slot Allocation (Algorithm A) for class 45
- Skipping TS 2, because not enabled
- Skipping TS 3, because not enabled
- Assign downlink TS=4
+PDCH(TS 4, TRX 0): Attaching TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL), 1 TBFs.
- Setting Control TS 4
Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL)
The MS object cannot fully confirm an unexpected TLLI: 0xc0000000, partly confirmed
@@ -479,6 +500,7 @@ Slot Allocation (Algorithm A) for class 45
- Skipping TS 2, because not enabled
- Skipping TS 3, because not enabled
- Assign downlink TS=4
+PDCH(TS 4, TRX 0): Attaching TBF(TFI=1 TLLI=0x00000000 DIR=DL STATE=NULL), 2 TBFs.
- Setting Control TS 4
Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=1 TLLI=0x00000000 DIR=DL STATE=NULL)
The MS object cannot fully confirm an unexpected TLLI: 0xc0000001, partly confirmed
@@ -501,6 +523,7 @@ Slot Allocation (Algorithm A) for class 45
- Skipping TS 2, because not enabled
- Skipping TS 3, because not enabled
- Assign downlink TS=4
+PDCH(TS 4, TRX 0): Attaching TBF(TFI=2 TLLI=0x00000000 DIR=DL STATE=NULL), 3 TBFs.
- Setting Control TS 4
Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=2 TLLI=0x00000000 DIR=DL STATE=NULL)
The MS object cannot fully confirm an unexpected TLLI: 0xc0000002, partly confirmed
@@ -523,6 +546,7 @@ Slot Allocation (Algorithm A) for class 45
- Skipping TS 2, because not enabled
- Skipping TS 3, because not enabled
- Assign downlink TS=4
+PDCH(TS 4, TRX 0): Attaching TBF(TFI=3 TLLI=0x00000000 DIR=DL STATE=NULL), 4 TBFs.
- Setting Control TS 4
Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=3 TLLI=0x00000000 DIR=DL STATE=NULL)
The MS object cannot fully confirm an unexpected TLLI: 0xc0000003, partly confirmed
@@ -545,6 +569,7 @@ Slot Allocation (Algorithm A) for class 45
- Skipping TS 2, because not enabled
- Skipping TS 3, because not enabled
- Assign downlink TS=4
+PDCH(TS 4, TRX 0): Attaching TBF(TFI=4 TLLI=0x00000000 DIR=DL STATE=NULL), 5 TBFs.
- Setting Control TS 4
Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=4 TLLI=0x00000000 DIR=DL STATE=NULL)
The MS object cannot fully confirm an unexpected TLLI: 0xc0000004, partly confirmed
@@ -567,6 +592,7 @@ Slot Allocation (Algorithm A) for class 45
- Skipping TS 2, because not enabled
- Skipping TS 3, because not enabled
- Assign downlink TS=4
+PDCH(TS 4, TRX 0): Attaching TBF(TFI=5 TLLI=0x00000000 DIR=DL STATE=NULL), 6 TBFs.
- Setting Control TS 4
Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=5 TLLI=0x00000000 DIR=DL STATE=NULL)
The MS object cannot fully confirm an unexpected TLLI: 0xc0000005, partly confirmed
@@ -589,6 +615,7 @@ Slot Allocation (Algorithm A) for class 45
- Skipping TS 2, because not enabled
- Skipping TS 3, because not enabled
- Assign downlink TS=4
+PDCH(TS 4, TRX 0): Attaching TBF(TFI=6 TLLI=0x00000000 DIR=DL STATE=NULL), 7 TBFs.
- Setting Control TS 4
Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=6 TLLI=0x00000000 DIR=DL STATE=NULL)
The MS object cannot fully confirm an unexpected TLLI: 0xc0000006, partly confirmed
@@ -611,6 +638,7 @@ Slot Allocation (Algorithm A) for class 45
- Skipping TS 2, because not enabled
- Skipping TS 3, because not enabled
- Assign downlink TS=4
+PDCH(TS 4, TRX 0): Attaching TBF(TFI=7 TLLI=0x00000000 DIR=DL STATE=NULL), 8 TBFs.
- Setting Control TS 4
Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=7 TLLI=0x00000000 DIR=DL STATE=NULL)
The MS object cannot fully confirm an unexpected TLLI: 0xc0000007, partly confirmed
@@ -633,6 +661,7 @@ Slot Allocation (Algorithm A) for class 45
- Skipping TS 2, because not enabled
- Skipping TS 3, because not enabled
- Assign downlink TS=4
+PDCH(TS 4, TRX 0): Attaching TBF(TFI=8 TLLI=0x00000000 DIR=DL STATE=NULL), 9 TBFs.
- Setting Control TS 4
Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=8 TLLI=0x00000000 DIR=DL STATE=NULL)
The MS object cannot fully confirm an unexpected TLLI: 0xc0000008, partly confirmed
@@ -655,6 +684,7 @@ Slot Allocation (Algorithm A) for class 45
- Skipping TS 2, because not enabled
- Skipping TS 3, because not enabled
- Assign downlink TS=4
+PDCH(TS 4, TRX 0): Attaching TBF(TFI=9 TLLI=0x00000000 DIR=DL STATE=NULL), 10 TBFs.
- Setting Control TS 4
Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=9 TLLI=0x00000000 DIR=DL STATE=NULL)
The MS object cannot fully confirm an unexpected TLLI: 0xc0000009, partly confirmed
@@ -677,6 +707,7 @@ Slot Allocation (Algorithm A) for class 45
- Skipping TS 2, because not enabled
- Skipping TS 3, because not enabled
- Assign downlink TS=4
+PDCH(TS 4, TRX 0): Attaching TBF(TFI=10 TLLI=0x00000000 DIR=DL STATE=NULL), 11 TBFs.
- Setting Control TS 4
Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=10 TLLI=0x00000000 DIR=DL STATE=NULL)
The MS object cannot fully confirm an unexpected TLLI: 0xc000000a, partly confirmed
@@ -699,6 +730,7 @@ Slot Allocation (Algorithm A) for class 45
- Skipping TS 2, because not enabled
- Skipping TS 3, because not enabled
- Assign downlink TS=4
+PDCH(TS 4, TRX 0): Attaching TBF(TFI=11 TLLI=0x00000000 DIR=DL STATE=NULL), 12 TBFs.
- Setting Control TS 4
Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=11 TLLI=0x00000000 DIR=DL STATE=NULL)
The MS object cannot fully confirm an unexpected TLLI: 0xc000000b, partly confirmed
@@ -721,6 +753,7 @@ Slot Allocation (Algorithm A) for class 45
- Skipping TS 2, because not enabled
- Skipping TS 3, because not enabled
- Assign downlink TS=4
+PDCH(TS 4, TRX 0): Attaching TBF(TFI=12 TLLI=0x00000000 DIR=DL STATE=NULL), 13 TBFs.
- Setting Control TS 4
Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=12 TLLI=0x00000000 DIR=DL STATE=NULL)
The MS object cannot fully confirm an unexpected TLLI: 0xc000000c, partly confirmed
@@ -743,6 +776,7 @@ Slot Allocation (Algorithm A) for class 45
- Skipping TS 2, because not enabled
- Skipping TS 3, because not enabled
- Assign downlink TS=4
+PDCH(TS 4, TRX 0): Attaching TBF(TFI=13 TLLI=0x00000000 DIR=DL STATE=NULL), 14 TBFs.
- Setting Control TS 4
Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=13 TLLI=0x00000000 DIR=DL STATE=NULL)
The MS object cannot fully confirm an unexpected TLLI: 0xc000000d, partly confirmed
@@ -765,6 +799,7 @@ Slot Allocation (Algorithm A) for class 45
- Skipping TS 2, because not enabled
- Skipping TS 3, because not enabled
- Assign downlink TS=4
+PDCH(TS 4, TRX 0): Attaching TBF(TFI=14 TLLI=0x00000000 DIR=DL STATE=NULL), 15 TBFs.
- Setting Control TS 4
Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=14 TLLI=0x00000000 DIR=DL STATE=NULL)
The MS object cannot fully confirm an unexpected TLLI: 0xc000000e, partly confirmed
@@ -787,6 +822,7 @@ Slot Allocation (Algorithm A) for class 45
- Skipping TS 2, because not enabled
- Skipping TS 3, because not enabled
- Assign downlink TS=4
+PDCH(TS 4, TRX 0): Attaching TBF(TFI=15 TLLI=0x00000000 DIR=DL STATE=NULL), 16 TBFs.
- Setting Control TS 4
Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=15 TLLI=0x00000000 DIR=DL STATE=NULL)
The MS object cannot fully confirm an unexpected TLLI: 0xc000000f, partly confirmed
@@ -809,6 +845,7 @@ Slot Allocation (Algorithm A) for class 45
- Skipping TS 2, because not enabled
- Skipping TS 3, because not enabled
- Assign downlink TS=4
+PDCH(TS 4, TRX 0): Attaching TBF(TFI=16 TLLI=0x00000000 DIR=DL STATE=NULL), 17 TBFs.
- Setting Control TS 4
Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=16 TLLI=0x00000000 DIR=DL STATE=NULL)
The MS object cannot fully confirm an unexpected TLLI: 0xc0000010, partly confirmed
@@ -831,6 +868,7 @@ Slot Allocation (Algorithm A) for class 45
- Skipping TS 2, because not enabled
- Skipping TS 3, because not enabled
- Assign downlink TS=4
+PDCH(TS 4, TRX 0): Attaching TBF(TFI=17 TLLI=0x00000000 DIR=DL STATE=NULL), 18 TBFs.
- Setting Control TS 4
Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=17 TLLI=0x00000000 DIR=DL STATE=NULL)
The MS object cannot fully confirm an unexpected TLLI: 0xc0000011, partly confirmed
@@ -853,6 +891,7 @@ Slot Allocation (Algorithm A) for class 45
- Skipping TS 2, because not enabled
- Skipping TS 3, because not enabled
- Assign downlink TS=4
+PDCH(TS 4, TRX 0): Attaching TBF(TFI=18 TLLI=0x00000000 DIR=DL STATE=NULL), 19 TBFs.
- Setting Control TS 4
Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=18 TLLI=0x00000000 DIR=DL STATE=NULL)
The MS object cannot fully confirm an unexpected TLLI: 0xc0000012, partly confirmed
@@ -875,6 +914,7 @@ Slot Allocation (Algorithm A) for class 45
- Skipping TS 2, because not enabled
- Skipping TS 3, because not enabled
- Assign downlink TS=4
+PDCH(TS 4, TRX 0): Attaching TBF(TFI=19 TLLI=0x00000000 DIR=DL STATE=NULL), 20 TBFs.
- Setting Control TS 4
Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=19 TLLI=0x00000000 DIR=DL STATE=NULL)
The MS object cannot fully confirm an unexpected TLLI: 0xc0000013, partly confirmed
@@ -897,6 +937,7 @@ Slot Allocation (Algorithm A) for class 45
- Skipping TS 2, because not enabled
- Skipping TS 3, because not enabled
- Assign downlink TS=4
+PDCH(TS 4, TRX 0): Attaching TBF(TFI=20 TLLI=0x00000000 DIR=DL STATE=NULL), 21 TBFs.
- Setting Control TS 4
Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=20 TLLI=0x00000000 DIR=DL STATE=NULL)
The MS object cannot fully confirm an unexpected TLLI: 0xc0000014, partly confirmed
@@ -919,6 +960,7 @@ Slot Allocation (Algorithm A) for class 45
- Skipping TS 2, because not enabled
- Skipping TS 3, because not enabled
- Assign downlink TS=4
+PDCH(TS 4, TRX 0): Attaching TBF(TFI=21 TLLI=0x00000000 DIR=DL STATE=NULL), 22 TBFs.
- Setting Control TS 4
Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=21 TLLI=0x00000000 DIR=DL STATE=NULL)
The MS object cannot fully confirm an unexpected TLLI: 0xc0000015, partly confirmed
@@ -941,6 +983,7 @@ Slot Allocation (Algorithm A) for class 45
- Skipping TS 2, because not enabled
- Skipping TS 3, because not enabled
- Assign downlink TS=4
+PDCH(TS 4, TRX 0): Attaching TBF(TFI=22 TLLI=0x00000000 DIR=DL STATE=NULL), 23 TBFs.
- Setting Control TS 4
Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=22 TLLI=0x00000000 DIR=DL STATE=NULL)
The MS object cannot fully confirm an unexpected TLLI: 0xc0000016, partly confirmed
@@ -963,6 +1006,7 @@ Slot Allocation (Algorithm A) for class 45
- Skipping TS 2, because not enabled
- Skipping TS 3, because not enabled
- Assign downlink TS=4
+PDCH(TS 4, TRX 0): Attaching TBF(TFI=23 TLLI=0x00000000 DIR=DL STATE=NULL), 24 TBFs.
- Setting Control TS 4
Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=23 TLLI=0x00000000 DIR=DL STATE=NULL)
The MS object cannot fully confirm an unexpected TLLI: 0xc0000017, partly confirmed
@@ -985,6 +1029,7 @@ Slot Allocation (Algorithm A) for class 45
- Skipping TS 2, because not enabled
- Skipping TS 3, because not enabled
- Assign downlink TS=4
+PDCH(TS 4, TRX 0): Attaching TBF(TFI=24 TLLI=0x00000000 DIR=DL STATE=NULL), 25 TBFs.
- Setting Control TS 4
Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=24 TLLI=0x00000000 DIR=DL STATE=NULL)
The MS object cannot fully confirm an unexpected TLLI: 0xc0000018, partly confirmed
@@ -1007,6 +1052,7 @@ Slot Allocation (Algorithm A) for class 45
- Skipping TS 2, because not enabled
- Skipping TS 3, because not enabled
- Assign downlink TS=4
+PDCH(TS 4, TRX 0): Attaching TBF(TFI=25 TLLI=0x00000000 DIR=DL STATE=NULL), 26 TBFs.
- Setting Control TS 4
Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=25 TLLI=0x00000000 DIR=DL STATE=NULL)
The MS object cannot fully confirm an unexpected TLLI: 0xc0000019, partly confirmed
@@ -1029,6 +1075,7 @@ Slot Allocation (Algorithm A) for class 45
- Skipping TS 2, because not enabled
- Skipping TS 3, because not enabled
- Assign downlink TS=4
+PDCH(TS 4, TRX 0): Attaching TBF(TFI=26 TLLI=0x00000000 DIR=DL STATE=NULL), 27 TBFs.
- Setting Control TS 4
Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=26 TLLI=0x00000000 DIR=DL STATE=NULL)
The MS object cannot fully confirm an unexpected TLLI: 0xc000001a, partly confirmed
@@ -1051,6 +1098,7 @@ Slot Allocation (Algorithm A) for class 45
- Skipping TS 2, because not enabled
- Skipping TS 3, because not enabled
- Assign downlink TS=4
+PDCH(TS 4, TRX 0): Attaching TBF(TFI=27 TLLI=0x00000000 DIR=DL STATE=NULL), 28 TBFs.
- Setting Control TS 4
Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=27 TLLI=0x00000000 DIR=DL STATE=NULL)
The MS object cannot fully confirm an unexpected TLLI: 0xc000001b, partly confirmed
@@ -1073,6 +1121,7 @@ Slot Allocation (Algorithm A) for class 45
- Skipping TS 2, because not enabled
- Skipping TS 3, because not enabled
- Assign downlink TS=4
+PDCH(TS 4, TRX 0): Attaching TBF(TFI=28 TLLI=0x00000000 DIR=DL STATE=NULL), 29 TBFs.
- Setting Control TS 4
Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=28 TLLI=0x00000000 DIR=DL STATE=NULL)
The MS object cannot fully confirm an unexpected TLLI: 0xc000001c, partly confirmed
@@ -1095,6 +1144,7 @@ Slot Allocation (Algorithm A) for class 45
- Skipping TS 2, because not enabled
- Skipping TS 3, because not enabled
- Assign downlink TS=4
+PDCH(TS 4, TRX 0): Attaching TBF(TFI=29 TLLI=0x00000000 DIR=DL STATE=NULL), 30 TBFs.
- Setting Control TS 4
Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=29 TLLI=0x00000000 DIR=DL STATE=NULL)
The MS object cannot fully confirm an unexpected TLLI: 0xc000001d, partly confirmed
@@ -1117,6 +1167,7 @@ Slot Allocation (Algorithm A) for class 45
- Skipping TS 2, because not enabled
- Skipping TS 3, because not enabled
- Assign downlink TS=4
+PDCH(TS 4, TRX 0): Attaching TBF(TFI=30 TLLI=0x00000000 DIR=DL STATE=NULL), 31 TBFs.
- Setting Control TS 4
Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=30 TLLI=0x00000000 DIR=DL STATE=NULL)
The MS object cannot fully confirm an unexpected TLLI: 0xc000001e, partly confirmed
@@ -1139,6 +1190,7 @@ Slot Allocation (Algorithm A) for class 45
- Skipping TS 2, because not enabled
- Skipping TS 3, because not enabled
- Assign downlink TS=4
+PDCH(TS 4, TRX 0): Attaching TBF(TFI=31 TLLI=0x00000000 DIR=DL STATE=NULL), 32 TBFs.
- Setting Control TS 4
Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=31 TLLI=0x00000000 DIR=DL STATE=NULL)
The MS object cannot fully confirm an unexpected TLLI: 0xc000001f, partly confirmed
@@ -1164,6 +1216,7 @@ Slot Allocation (Algorithm A) for class 45
- Skipping TS 2, because not enabled
- Skipping TS 3, because not enabled
- Assign downlink TS=4
+PDCH(TS 4, TRX 0): Attaching TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL), 1 TBFs.
- Setting Control TS 4
Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL)
The MS object cannot fully confirm an unexpected TLLI: 0xc0123456, partly confirmed
@@ -1176,6 +1229,7 @@ Sending data request: trx=0 ts=0 sapi=3 arfcn=0 fn=0 block=0 data=34 35 36 2d 06
TBF(TFI=0 TLLI=0xc0123456 DIR=DL STATE=ASSIGN) append
TBF(TFI=0 TLLI=0xc0123456 DIR=DL STATE=ASSIGN) append
TBF(TFI=0 TLLI=0xc0123456 DIR=DL STATE=ASSIGN) free
+PDCH(TS 4, TRX 0): Detaching TBF(TFI=0 TLLI=0xc0123456 DIR=DL STATE=ASSIGN), 0 TBFs.
Detaching TBF from MS object, TLLI = 0xc0123456, TBF = TBF(TFI=0 TLLI=0xc0123456 DIR=DL STATE=ASSIGN)
********** TBF ends here **********
Searching for first unallocated TFI: TRX=0 first TS=4
@@ -1188,6 +1242,7 @@ Slot Allocation (Algorithm A) for class 45
- Skipping TS 2, because not enabled
- Skipping TS 3, because not enabled
- Assign downlink TS=4
+PDCH(TS 4, TRX 0): Attaching TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=NULL), 1 TBFs.
- Setting Control TS 4
Attaching TBF to MS object, TLLI = 0xc0123456, TBF = TBF(TFI=0 TLLI=0xc0123456 DIR=DL STATE=NULL)
TBF(TFI=0 TLLI=0xc0123456 DIR=DL STATE=NULL) [DOWNLINK] START
@@ -1240,6 +1295,7 @@ Slot Allocation (Algorithm A) for class 0
- Skipping TS 5, because not enabled
- Skipping TS 6, because not enabled
- Assign uplink TS=7 USF=0
+PDCH(TS 7, TRX 0): Attaching TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=NULL), 1 TBFs.
- Setting Control TS 7
Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=NULL)
Modifying MS object, TLLI = 0x00000000, TA 0 -> 7
@@ -1296,6 +1352,7 @@ Slot Allocation (Algorithm A) for class 0
- Skipping TS 5, because not enabled
- Skipping TS 6, because not enabled
- Assign uplink TS=7 USF=0
+PDCH(TS 7, TRX 0): Attaching TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=NULL), 1 TBFs.
- Setting Control TS 7
Attaching TBF to MS object, TLLI = 0x00000000, TBF = TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=NULL)
TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=NULL) changes state from NULL to ASSIGN