aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/bts.cpp20
-rw-r--r--src/encoding.cpp4
-rw-r--r--src/gprs_ms.cpp13
-rw-r--r--src/gprs_ms.h9
-rw-r--r--src/tbf.cpp32
-rw-r--r--src/tbf.h6
-rw-r--r--src/tbf_dl.cpp25
-rw-r--r--tests/tbf/TbfTest.cpp29
-rw-r--r--tests/tbf/TbfTest.err41
9 files changed, 93 insertions, 86 deletions
diff --git a/src/bts.cpp b/src/bts.cpp
index 6bcfea0d..010b8e88 100644
--- a/src/bts.cpp
+++ b/src/bts.cpp
@@ -438,7 +438,7 @@ int BTS::rcv_rach(uint8_t ra, uint32_t Fn, int16_t qta)
/* FIXME: send reject */
return -EBUSY;
}
- tbf->ta = qta >> 2;
+ tbf->set_ta(qta >> 2);
tbf->set_state(GPRS_RLCMAC_FLOW);
tbf->state_flags |= (1 << GPRS_RLCMAC_FLAG_CCCH);
tbf_timer_start(tbf, 3169, m_bts.t3169, 0);
@@ -461,7 +461,7 @@ int BTS::rcv_rach(uint8_t ra, uint32_t Fn, int16_t qta)
m_bts.alpha, m_bts.gamma, -1);
else
plen = Encoding::write_immediate_assignment(&m_bts, immediate_assignment, 0, ra,
- Fn, tbf->ta, tbf->trx->arfcn, tbf->first_ts, tbf->tsc(),
+ Fn, tbf->ta(), tbf->trx->arfcn, tbf->first_ts, tbf->tsc(),
tbf->tfi(), tbf->m_usf[tbf->first_ts], 0, 0, 0, 0,
m_bts.alpha, m_bts.gamma, -1);
pcu_l1if_tx_agch(immediate_assignment, plen);
@@ -486,8 +486,6 @@ void BTS::trigger_dl_ass(
old_tbf->was_releasing = old_tbf->state_is(GPRS_RLCMAC_WAIT_RELEASE);
- /* use TA from old TBF */
- dl_tbf->ta = old_tbf->ta;
/* change state */
dl_tbf->set_state(GPRS_RLCMAC_ASSIGN);
dl_tbf->state_flags |= (1 << GPRS_RLCMAC_FLAG_PACCH);
@@ -515,7 +513,7 @@ void BTS::snd_dl_ass(gprs_rlcmac_tbf *tbf, uint8_t poll, const char *imsi)
/* use request reference that has maximum distance to current time,
* so the assignment will not conflict with possible RACH requests. */
plen = Encoding::write_immediate_assignment(&m_bts, immediate_assignment, 1, 125,
- (tbf->pdch[tbf->first_ts]->last_rts_fn + 21216) % 2715648, tbf->ta,
+ (tbf->pdch[tbf->first_ts]->last_rts_fn + 21216) % 2715648, tbf->ta(),
tbf->trx->arfcn, tbf->first_ts, tbf->tsc(), tbf->tfi(), 0, tbf->tlli(), poll,
tbf->poll_fn, 0, m_bts.alpha, m_bts.gamma, -1);
pcu_l1if_tx_pch(immediate_assignment, plen, imsi);
@@ -836,7 +834,7 @@ void gprs_rlcmac_pdch::rcv_control_dl_ack_nack(Packet_Downlink_Ack_Nack_t *ack_n
/* This call will register the new TBF with the MS on success */
tbf_alloc_ul(bts_data(), tbf->trx->trx_no, tbf->ms_class,
- tbf->tlli(), tbf->ta, tbf);
+ tbf->tlli(), tbf->ta(), tbf);
/* schedule uplink assignment */
tbf->ul_ass_state = GPRS_RLCMAC_UL_ASS_SEND_ASS;
@@ -846,14 +844,13 @@ void gprs_rlcmac_pdch::rcv_control_dl_ack_nack(Packet_Downlink_Ack_Nack_t *ack_n
void gprs_rlcmac_pdch::rcv_resource_request(Packet_Resource_Request_t *request, uint32_t fn)
{
struct gprs_rlcmac_sba *sba;
- int rc;
if (request->ID.UnionType) {
struct gprs_rlcmac_ul_tbf *ul_tbf = NULL;
struct gprs_rlcmac_dl_tbf *dl_tbf = NULL;
uint32_t tlli = request->ID.u.TLLI;
uint8_t ms_class = 0;
- uint8_t ta;
+ uint8_t ta = 0;
GprsMs *ms = bts()->ms_by_tlli(tlli);
/* Keep the ms, even if it gets idle temporarily */
@@ -862,6 +859,7 @@ void gprs_rlcmac_pdch::rcv_resource_request(Packet_Resource_Request_t *request,
if (ms) {
ul_tbf = ms->ul_tbf();
dl_tbf = ms->dl_tbf();
+ ta = ms->ta();
}
if (ul_tbf) {
@@ -890,14 +888,8 @@ void gprs_rlcmac_pdch::rcv_resource_request(Packet_Resource_Request_t *request,
"in packet resource request of single "
"block, but there is no resource request "
"scheduled!\n");
- rc = bts()->timing_advance()->recall(tlli);
- if (rc >= 0)
- ta = rc;
- else
- ta = 0;
} else {
ta = sba->ta;
- bts()->timing_advance()->remember(tlli, ta);
bts()->sba()->free_sba(sba);
}
if (request->Exist_MS_Radio_Access_capability)
diff --git a/src/encoding.cpp b/src/encoding.cpp
index ffd61080..167bfd4c 100644
--- a/src/encoding.cpp
+++ b/src/encoding.cpp
@@ -195,7 +195,7 @@ void Encoding::write_packet_uplink_assignment(
bitvec_write_field(dest, wp,bts->initial_cs_ul-1, 2); // CHANNEL_CODING_COMMAND
bitvec_write_field(dest, wp,0x1,1); // TLLI_BLOCK_CHANNEL_CODING
bitvec_write_field(dest, wp,0x1,1); // switch TIMING_ADVANCE_VALUE = on
- bitvec_write_field(dest, wp,tbf->ta,6); // TIMING_ADVANCE_VALUE
+ bitvec_write_field(dest, wp,tbf->ta(),6); // TIMING_ADVANCE_VALUE
if (ta_idx < 0) {
bitvec_write_field(dest, wp,0x0,1); // switch TIMING_ADVANCE_INDEX = off
} else {
@@ -275,7 +275,7 @@ void Encoding::write_packet_downlink_assignment(RlcMacDownlink_t * block, uint8_
}
block->u.Packet_Downlink_Assignment.Packet_Timing_Advance.Exist_TIMING_ADVANCE_VALUE = 0x1; // TIMING_ADVANCE_VALUE = on
- block->u.Packet_Downlink_Assignment.Packet_Timing_Advance.TIMING_ADVANCE_VALUE = tbf->ta; // TIMING_ADVANCE_VALUE
+ block->u.Packet_Downlink_Assignment.Packet_Timing_Advance.TIMING_ADVANCE_VALUE = tbf->ta(); // TIMING_ADVANCE_VALUE
if (ta_idx < 0) {
block->u.Packet_Downlink_Assignment.Packet_Timing_Advance.Exist_IndexAndtimeSlot = 0x0; // TIMING_ADVANCE_INDEX = off
} else {
diff --git a/src/gprs_ms.cpp b/src/gprs_ms.cpp
index c2320a29..d6520c31 100644
--- a/src/gprs_ms.cpp
+++ b/src/gprs_ms.cpp
@@ -60,6 +60,7 @@ GprsMs::GprsMs(uint32_t tlli) :
m_tlli(tlli),
m_new_ul_tlli(0),
m_new_dl_tlli(0),
+ m_ta(0),
m_is_idle(true),
m_ref(0),
m_list(this)
@@ -263,3 +264,15 @@ void GprsMs::set_imsi(const char *imsi)
m_imsi[sizeof(m_imsi) - 1] = '\0';
}
+void GprsMs::set_ta(uint8_t ta_)
+{
+ if (ta_ == m_ta)
+ return;
+
+ LOGP(DRLCMAC, LOGL_INFO,
+ "Modifying MS object, TLLI = 0x%08x, TA %d -> %d\n",
+ tlli(), m_ta, ta_);
+
+ m_ta = ta_;
+}
+
diff --git a/src/gprs_ms.h b/src/gprs_ms.h
index 7f8af414..9c3acb4f 100644
--- a/src/gprs_ms.h
+++ b/src/gprs_ms.h
@@ -59,6 +59,9 @@ public:
const char *imsi() const;
void set_imsi(const char *imsi);
+ uint8_t ta() const;
+ void set_ta(uint8_t ta);
+
void attach_tbf(gprs_rlcmac_tbf *tbf);
void attach_ul_tbf(gprs_rlcmac_ul_tbf *tbf);
void attach_dl_tbf(gprs_rlcmac_dl_tbf *tbf);
@@ -88,6 +91,7 @@ private:
/* store IMSI for look-up and PCH retransmission */
char m_imsi[16];
+ uint8_t m_ta;
bool m_is_idle;
int m_ref;
@@ -111,3 +115,8 @@ inline const char *GprsMs::imsi() const
{
return m_imsi;
}
+
+inline uint8_t GprsMs::ta() const
+{
+ return m_ta;
+}
diff --git a/src/tbf.cpp b/src/tbf.cpp
index ac0cdf3f..53f1ae13 100644
--- a/src/tbf.cpp
+++ b/src/tbf.cpp
@@ -89,13 +89,32 @@ void gprs_rlcmac_tbf::assign_imsi(const char *imsi_)
m_ms->set_imsi(imsi_);
}
+uint8_t gprs_rlcmac_tbf::ta() const
+{
+ return m_ms ? m_ms->ta() : m_ta;
+}
+
+void gprs_rlcmac_tbf::set_ta(uint8_t ta)
+{
+ if (ms())
+ ms()->set_ta(ta);
+
+ m_ta = ta;
+}
+
void gprs_rlcmac_tbf::set_ms(GprsMs *ms)
{
if (m_ms == ms)
return;
- if (m_ms)
+ if (m_ms) {
+ /* Save the TA locally. This will also be called, if the MS
+ * object detaches itself from the TBF, for instance if
+ * attach_tbf() is called */
+ m_ta = m_ms->ta();
+
m_ms->detach_tbf(this);
+ }
m_ms = ms;
@@ -110,6 +129,9 @@ void gprs_rlcmac_tbf::update_ms(uint32_t tlli, enum gprs_rlcmac_tbf_direction di
if (!new_ms)
new_ms = bts->ms_store().create_ms(tlli, dir);
+ if (dir == GPRS_RLCMAC_UL_TBF)
+ new_ms->set_ta(m_ta);
+
set_ms(new_ms);
return;
}
@@ -144,11 +166,13 @@ gprs_rlcmac_ul_tbf *tbf_alloc_ul(struct gprs_rlcmac_bts *bts,
return NULL;
}
tbf->m_contention_resolution_done = 1;
- tbf->ta = ta; /* use current TA */
tbf->set_state(GPRS_RLCMAC_ASSIGN);
tbf->state_flags |= (1 << GPRS_RLCMAC_FLAG_PACCH);
tbf_timer_start(tbf, 3169, bts->t3169, 0);
tbf->update_ms(tlli, GPRS_RLCMAC_UL_TBF);
+ OSMO_ASSERT(tbf->ms());
+
+ tbf->ms()->set_ta(ta);
return tbf;
}
@@ -786,8 +810,6 @@ void gprs_rlcmac_tbf::free_all(struct gprs_rlcmac_pdch *pdch)
void gprs_rlcmac_tbf::update_tlli(uint32_t tlli)
{
- /* update the timing advance for the new tlli */
- bts->timing_advance()->update(0, tlli, ta);
}
int gprs_rlcmac_tbf::extract_tlli(const uint8_t *data, const size_t len)
@@ -843,8 +865,6 @@ int gprs_rlcmac_tbf::extract_tlli(const uint8_t *data, const size_t len)
tbf_free(ul_tbf);
ul_tbf = NULL;
}
- /* store current timing advance */
- bts->timing_advance()->remember(tlli(), ta);
return 1;
}
diff --git a/src/tbf.h b/src/tbf.h
index 5ea6d4ef..d288669d 100644
--- a/src/tbf.h
+++ b/src/tbf.h
@@ -149,6 +149,8 @@ struct gprs_rlcmac_tbf {
const char *imsi() const;
void assign_imsi(const char *imsi);
+ uint8_t ta() const;
+ void set_ta(uint8_t);
time_t created_ts() const;
@@ -165,7 +167,6 @@ struct gprs_rlcmac_tbf {
uint8_t control_ts; /* timeslot control messages and polling */
uint8_t ms_class;
struct gprs_rlcmac_pdch *pdch[8]; /* list of PDCHs allocated to TBF */
- uint16_t ta;
gprs_llc m_llc;
@@ -225,6 +226,9 @@ protected:
static const char *tbf_state_name[6];
class GprsMs *m_ms;
+
+ /* Field to take the TA value if no MS is associated */
+ uint8_t m_ta;
private:
mutable char m_name_buf[60];
};
diff --git a/src/tbf_dl.cpp b/src/tbf_dl.cpp
index edaf2987..2289e3f0 100644
--- a/src/tbf_dl.cpp
+++ b/src/tbf_dl.cpp
@@ -151,42 +151,30 @@ static int tbf_new_dl_assignment(struct gprs_rlcmac_bts *bts,
const uint8_t ms_class,
const uint8_t *data, const uint16_t len)
{
- uint8_t trx, ta, ss;
+ uint8_t trx, ss;
int8_t use_trx;
+ uint16_t ta = 0;
struct gprs_rlcmac_ul_tbf *ul_tbf = NULL, *old_ul_tbf;
struct gprs_rlcmac_dl_tbf *dl_tbf = NULL;
int8_t tfi; /* must be signed */
- int rc;
GprsMs *ms;
/* check for uplink data, so we copy our informations */
#warning "Do the same look up for IMSI, TLLI and OLD_TLLI"
#warning "Refactor the below lines... into a new method"
ms = bts->bts->ms_store().get_ms(tlli, tlli_old, imsi);
- if (ms)
+ if (ms) {
ul_tbf = ms->ul_tbf();
+ ta = ms->ta();
+ }
if (ul_tbf && ul_tbf->m_contention_resolution_done
&& !ul_tbf->m_final_ack_sent) {
use_trx = ul_tbf->trx->trx_no;
- ta = ul_tbf->ta;
ss = 0;
old_ul_tbf = ul_tbf;
} else {
use_trx = -1;
- /* we already have an uplink TBF, so we use that TA */
- if (ul_tbf)
- ta = ul_tbf->ta;
- else {
- /* recall TA */
- rc = bts->bts->timing_advance()->recall(tlli);
- if (rc < 0) {
- LOGP(DRLCMAC, LOGL_NOTICE, "TA unknown"
- ", assuming 0\n");
- ta = 0;
- } else
- ta = rc;
- }
ss = 1; /* PCH assignment only allows one timeslot */
old_ul_tbf = NULL;
}
@@ -205,8 +193,8 @@ static int tbf_new_dl_assignment(struct gprs_rlcmac_bts *bts,
bts->bts->llc_dropped_frame();
return -EBUSY;
}
- dl_tbf->ta = ta;
dl_tbf->update_ms(tlli, GPRS_RLCMAC_DL_TBF);
+ dl_tbf->ms()->set_ta(ta);
LOGP(DRLCMAC, LOGL_DEBUG, "%s [DOWNLINK] START\n", tbf_name(dl_tbf));
@@ -801,7 +789,6 @@ void gprs_rlcmac_dl_tbf::reuse_tbf(const uint8_t *data, const uint16_t len)
}
new_tbf->set_ms(ms());
- new_tbf->ta = ta;
/* Copy over all data to the new TBF */
new_tbf->m_llc.put_frame(data, len);
diff --git a/tests/tbf/TbfTest.cpp b/tests/tbf/TbfTest.cpp
index e25f3447..2184b324 100644
--- a/tests/tbf/TbfTest.cpp
+++ b/tests/tbf/TbfTest.cpp
@@ -78,8 +78,7 @@ static void test_tbf_tlli_update()
0, 0, 0);
dl_tbf->update_tlli(0x2342);
dl_tbf->update_ms(0x2342, GPRS_RLCMAC_DL_TBF);
- dl_tbf->ta = 4;
- the_bts.timing_advance()->remember(0x2342, dl_tbf->ta);
+ dl_tbf->set_ta(4);
gprs_rlcmac_tbf *ul_tbf = tbf_alloc_ul_tbf(the_bts.bts_data(),
dl_tbf, 0,
@@ -114,7 +113,17 @@ static void test_tbf_tlli_update()
ms_new = the_bts.ms_by_tlli(0x2342);
OSMO_ASSERT(ms_new == NULL);
- OSMO_ASSERT(the_bts.timing_advance()->recall(0x4232) == 4);
+ ms_new = the_bts.ms_by_tlli(0x4232);
+ OSMO_ASSERT(ms_new != NULL);
+ OSMO_ASSERT(ms_new->ta() == 4);
+
+ OSMO_ASSERT(ul_tbf->ta() == 4);
+ OSMO_ASSERT(dl_tbf->ta() == 4);
+
+ ul_tbf->set_ta(6);
+
+ OSMO_ASSERT(ul_tbf->ta() == 6);
+ OSMO_ASSERT(dl_tbf->ta() == 6);
}
static uint8_t llc_data[200];
@@ -439,9 +448,9 @@ static void test_tbf_single_phase()
OSMO_ASSERT(ul_tbf != NULL);
fprintf(stderr, "Got '%s', TA=%d\n",
- ul_tbf->name(), ul_tbf->ta);
+ ul_tbf->name(), ul_tbf->ta());
- OSMO_ASSERT(ul_tbf->ta == qta / 4);
+ OSMO_ASSERT(ul_tbf->ta() == qta / 4);
uint8_t data_msg[23] = {
0x00, /* GPRS_RLCMAC_DATA_BLOCK << 6 */
@@ -455,7 +464,8 @@ static void test_tbf_single_phase()
ms = the_bts.ms_by_tlli(0xf1223344);
OSMO_ASSERT(ms != NULL);
- fprintf(stderr, "Got MS: TLLI = 0x%08x\n", ms->tlli());
+ fprintf(stderr, "Got MS: TLLI = 0x%08x, TA = %d\n", ms->tlli(), ms->ta());
+ OSMO_ASSERT(ms->ta() == qta/4);
printf("=== end %s ===\n", __func__);
}
@@ -515,9 +525,9 @@ static void test_tbf_two_phase()
OSMO_ASSERT(ul_tbf != NULL);
fprintf(stderr, "Got '%s', TA=%d\n",
- ul_tbf->name(), ul_tbf->ta);
+ ul_tbf->name(), ul_tbf->ta());
- OSMO_ASSERT(ul_tbf->ta == qta / 4);
+ OSMO_ASSERT(ul_tbf->ta() == qta / 4);
/* send packet uplink assignment */
rts_fn += 52;
@@ -535,7 +545,8 @@ static void test_tbf_two_phase()
ms = the_bts.ms_by_tlli(0xf1223344);
OSMO_ASSERT(ms != NULL);
- fprintf(stderr, "Got MS: TLLI = 0x%08x\n", ms->tlli());
+ fprintf(stderr, "Got MS: TLLI = 0x%08x, TA = %d\n", ms->tlli(), ms->ta());
+ OSMO_ASSERT(ms->ta() == qta/4);
printf("=== end %s ===\n", __func__);
}
diff --git a/tests/tbf/TbfTest.err b/tests/tbf/TbfTest.err
index 20b1a724..d919b89a 100644
--- a/tests/tbf/TbfTest.err
+++ b/tests/tbf/TbfTest.err
@@ -8,6 +8,7 @@ Slot Allocation (Algorithm A) for class 0
Creating MS object, TLLI = 0x00000000
The MS object cannot fully confirm an unexpected TLLI: 0x00002342, partly confirmed
Attaching TBF to MS object, TLLI = 0x00002342, TBF = TBF(TFI=0 TLLI=0x00002342 DIR=DL STATE=NULL)
+Modifying MS object, TLLI = 0x00002342, TA 0 -> 4
********** TBF starts here **********
Allocating UL TBF: TFI=0 TRX=0 MS_CLASS=0
Slot Allocation (Algorithm A) for class 0
@@ -19,6 +20,7 @@ Attaching TBF to MS object, TLLI = 0x00002342, TBF = TBF(TFI=0 TLLI=0x00002342 D
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
Searching for first unallocated TFI: TRX=0 first TS=4
Found TFI=0.
********** TBF starts here **********
@@ -425,7 +427,6 @@ TBF(TFI=0 TLLI=0xf1000001 DIR=DL STATE=FLOW) Software error: Pending downlink as
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 **********
-TA unknown, assuming 0
Searching for first unallocated TFI: TRX=0 first TS=4
Found TFI=0.
********** TBF starts here **********
@@ -446,7 +447,6 @@ Send dowlink assignment for TBF(TFI=0 TLLI=0xc0000000 DIR=DL STATE=NULL) on PCH,
TBF(TFI=0 TLLI=0xc0000000 DIR=DL STATE=NULL) changes state from NULL to ASSIGN
TX: START TBF(TFI=0 TLLI=0xc0000000 DIR=DL STATE=ASSIGN) Immediate Assignment Downlink (PCH)
Sending data request: trx=0 ts=0 sapi=3 arfcn=0 fn=0 block=0 data=30 30 30 2d 06 3f 30 0c 00 00 7d 80 00 00 00 dc 00 00 00 08 00 23 2b 2b 2b 2b
-TA unknown, assuming 0
Searching for first unallocated TFI: TRX=0 first TS=4
Found TFI=1.
********** TBF starts here **********
@@ -467,7 +467,6 @@ Send dowlink assignment for TBF(TFI=1 TLLI=0xc0000001 DIR=DL STATE=NULL) on PCH,
TBF(TFI=1 TLLI=0xc0000001 DIR=DL STATE=NULL) changes state from NULL to ASSIGN
TX: START TBF(TFI=1 TLLI=0xc0000001 DIR=DL STATE=ASSIGN) Immediate Assignment Downlink (PCH)
Sending data request: trx=0 ts=0 sapi=3 arfcn=0 fn=0 block=0 data=30 30 31 2d 06 3f 30 0c 00 00 7d 80 00 00 00 dc 00 00 00 18 40 23 2b 2b 2b 2b
-TA unknown, assuming 0
Searching for first unallocated TFI: TRX=0 first TS=4
Found TFI=2.
********** TBF starts here **********
@@ -488,7 +487,6 @@ Send dowlink assignment for TBF(TFI=2 TLLI=0xc0000002 DIR=DL STATE=NULL) on PCH,
TBF(TFI=2 TLLI=0xc0000002 DIR=DL STATE=NULL) changes state from NULL to ASSIGN
TX: START TBF(TFI=2 TLLI=0xc0000002 DIR=DL STATE=ASSIGN) Immediate Assignment Downlink (PCH)
Sending data request: trx=0 ts=0 sapi=3 arfcn=0 fn=0 block=0 data=30 30 32 2d 06 3f 30 0c 00 00 7d 80 00 00 00 dc 00 00 00 28 80 23 2b 2b 2b 2b
-TA unknown, assuming 0
Searching for first unallocated TFI: TRX=0 first TS=4
Found TFI=3.
********** TBF starts here **********
@@ -509,7 +507,6 @@ Send dowlink assignment for TBF(TFI=3 TLLI=0xc0000003 DIR=DL STATE=NULL) on PCH,
TBF(TFI=3 TLLI=0xc0000003 DIR=DL STATE=NULL) changes state from NULL to ASSIGN
TX: START TBF(TFI=3 TLLI=0xc0000003 DIR=DL STATE=ASSIGN) Immediate Assignment Downlink (PCH)
Sending data request: trx=0 ts=0 sapi=3 arfcn=0 fn=0 block=0 data=30 30 33 2d 06 3f 30 0c 00 00 7d 80 00 00 00 dc 00 00 00 38 c0 23 2b 2b 2b 2b
-TA unknown, assuming 0
Searching for first unallocated TFI: TRX=0 first TS=4
Found TFI=4.
********** TBF starts here **********
@@ -530,7 +527,6 @@ Send dowlink assignment for TBF(TFI=4 TLLI=0xc0000004 DIR=DL STATE=NULL) on PCH,
TBF(TFI=4 TLLI=0xc0000004 DIR=DL STATE=NULL) changes state from NULL to ASSIGN
TX: START TBF(TFI=4 TLLI=0xc0000004 DIR=DL STATE=ASSIGN) Immediate Assignment Downlink (PCH)
Sending data request: trx=0 ts=0 sapi=3 arfcn=0 fn=0 block=0 data=30 30 34 2d 06 3f 30 0c 00 00 7d 80 00 00 00 dc 00 00 00 49 00 23 2b 2b 2b 2b
-TA unknown, assuming 0
Searching for first unallocated TFI: TRX=0 first TS=4
Found TFI=5.
********** TBF starts here **********
@@ -551,7 +547,6 @@ Send dowlink assignment for TBF(TFI=5 TLLI=0xc0000005 DIR=DL STATE=NULL) on PCH,
TBF(TFI=5 TLLI=0xc0000005 DIR=DL STATE=NULL) changes state from NULL to ASSIGN
TX: START TBF(TFI=5 TLLI=0xc0000005 DIR=DL STATE=ASSIGN) Immediate Assignment Downlink (PCH)
Sending data request: trx=0 ts=0 sapi=3 arfcn=0 fn=0 block=0 data=30 30 35 2d 06 3f 30 0c 00 00 7d 80 00 00 00 dc 00 00 00 59 40 23 2b 2b 2b 2b
-TA unknown, assuming 0
Searching for first unallocated TFI: TRX=0 first TS=4
Found TFI=6.
********** TBF starts here **********
@@ -572,7 +567,6 @@ Send dowlink assignment for TBF(TFI=6 TLLI=0xc0000006 DIR=DL STATE=NULL) on PCH,
TBF(TFI=6 TLLI=0xc0000006 DIR=DL STATE=NULL) changes state from NULL to ASSIGN
TX: START TBF(TFI=6 TLLI=0xc0000006 DIR=DL STATE=ASSIGN) Immediate Assignment Downlink (PCH)
Sending data request: trx=0 ts=0 sapi=3 arfcn=0 fn=0 block=0 data=30 30 36 2d 06 3f 30 0c 00 00 7d 80 00 00 00 dc 00 00 00 69 80 23 2b 2b 2b 2b
-TA unknown, assuming 0
Searching for first unallocated TFI: TRX=0 first TS=4
Found TFI=7.
********** TBF starts here **********
@@ -593,7 +587,6 @@ Send dowlink assignment for TBF(TFI=7 TLLI=0xc0000007 DIR=DL STATE=NULL) on PCH,
TBF(TFI=7 TLLI=0xc0000007 DIR=DL STATE=NULL) changes state from NULL to ASSIGN
TX: START TBF(TFI=7 TLLI=0xc0000007 DIR=DL STATE=ASSIGN) Immediate Assignment Downlink (PCH)
Sending data request: trx=0 ts=0 sapi=3 arfcn=0 fn=0 block=0 data=30 30 37 2d 06 3f 30 0c 00 00 7d 80 00 00 00 dc 00 00 00 79 c0 23 2b 2b 2b 2b
-TA unknown, assuming 0
Searching for first unallocated TFI: TRX=0 first TS=4
Found TFI=8.
********** TBF starts here **********
@@ -614,7 +607,6 @@ Send dowlink assignment for TBF(TFI=8 TLLI=0xc0000008 DIR=DL STATE=NULL) on PCH,
TBF(TFI=8 TLLI=0xc0000008 DIR=DL STATE=NULL) changes state from NULL to ASSIGN
TX: START TBF(TFI=8 TLLI=0xc0000008 DIR=DL STATE=ASSIGN) Immediate Assignment Downlink (PCH)
Sending data request: trx=0 ts=0 sapi=3 arfcn=0 fn=0 block=0 data=30 30 38 2d 06 3f 30 0c 00 00 7d 80 00 00 00 dc 00 00 00 8a 00 23 2b 2b 2b 2b
-TA unknown, assuming 0
Searching for first unallocated TFI: TRX=0 first TS=4
Found TFI=9.
********** TBF starts here **********
@@ -635,7 +627,6 @@ Send dowlink assignment for TBF(TFI=9 TLLI=0xc0000009 DIR=DL STATE=NULL) on PCH,
TBF(TFI=9 TLLI=0xc0000009 DIR=DL STATE=NULL) changes state from NULL to ASSIGN
TX: START TBF(TFI=9 TLLI=0xc0000009 DIR=DL STATE=ASSIGN) Immediate Assignment Downlink (PCH)
Sending data request: trx=0 ts=0 sapi=3 arfcn=0 fn=0 block=0 data=30 30 39 2d 06 3f 30 0c 00 00 7d 80 00 00 00 dc 00 00 00 9a 40 23 2b 2b 2b 2b
-TA unknown, assuming 0
Searching for first unallocated TFI: TRX=0 first TS=4
Found TFI=10.
********** TBF starts here **********
@@ -656,7 +647,6 @@ Send dowlink assignment for TBF(TFI=10 TLLI=0xc000000a DIR=DL STATE=NULL) on PCH
TBF(TFI=10 TLLI=0xc000000a DIR=DL STATE=NULL) changes state from NULL to ASSIGN
TX: START TBF(TFI=10 TLLI=0xc000000a DIR=DL STATE=ASSIGN) Immediate Assignment Downlink (PCH)
Sending data request: trx=0 ts=0 sapi=3 arfcn=0 fn=0 block=0 data=30 31 30 2d 06 3f 30 0c 00 00 7d 80 00 00 00 dc 00 00 00 aa 80 23 2b 2b 2b 2b
-TA unknown, assuming 0
Searching for first unallocated TFI: TRX=0 first TS=4
Found TFI=11.
********** TBF starts here **********
@@ -677,7 +667,6 @@ Send dowlink assignment for TBF(TFI=11 TLLI=0xc000000b DIR=DL STATE=NULL) on PCH
TBF(TFI=11 TLLI=0xc000000b DIR=DL STATE=NULL) changes state from NULL to ASSIGN
TX: START TBF(TFI=11 TLLI=0xc000000b DIR=DL STATE=ASSIGN) Immediate Assignment Downlink (PCH)
Sending data request: trx=0 ts=0 sapi=3 arfcn=0 fn=0 block=0 data=30 31 31 2d 06 3f 30 0c 00 00 7d 80 00 00 00 dc 00 00 00 ba c0 23 2b 2b 2b 2b
-TA unknown, assuming 0
Searching for first unallocated TFI: TRX=0 first TS=4
Found TFI=12.
********** TBF starts here **********
@@ -698,7 +687,6 @@ Send dowlink assignment for TBF(TFI=12 TLLI=0xc000000c DIR=DL STATE=NULL) on PCH
TBF(TFI=12 TLLI=0xc000000c DIR=DL STATE=NULL) changes state from NULL to ASSIGN
TX: START TBF(TFI=12 TLLI=0xc000000c DIR=DL STATE=ASSIGN) Immediate Assignment Downlink (PCH)
Sending data request: trx=0 ts=0 sapi=3 arfcn=0 fn=0 block=0 data=30 31 32 2d 06 3f 30 0c 00 00 7d 80 00 00 00 dc 00 00 00 cb 00 23 2b 2b 2b 2b
-TA unknown, assuming 0
Searching for first unallocated TFI: TRX=0 first TS=4
Found TFI=13.
********** TBF starts here **********
@@ -719,7 +707,6 @@ Send dowlink assignment for TBF(TFI=13 TLLI=0xc000000d DIR=DL STATE=NULL) on PCH
TBF(TFI=13 TLLI=0xc000000d DIR=DL STATE=NULL) changes state from NULL to ASSIGN
TX: START TBF(TFI=13 TLLI=0xc000000d DIR=DL STATE=ASSIGN) Immediate Assignment Downlink (PCH)
Sending data request: trx=0 ts=0 sapi=3 arfcn=0 fn=0 block=0 data=30 31 33 2d 06 3f 30 0c 00 00 7d 80 00 00 00 dc 00 00 00 db 40 23 2b 2b 2b 2b
-TA unknown, assuming 0
Searching for first unallocated TFI: TRX=0 first TS=4
Found TFI=14.
********** TBF starts here **********
@@ -740,7 +727,6 @@ Send dowlink assignment for TBF(TFI=14 TLLI=0xc000000e DIR=DL STATE=NULL) on PCH
TBF(TFI=14 TLLI=0xc000000e DIR=DL STATE=NULL) changes state from NULL to ASSIGN
TX: START TBF(TFI=14 TLLI=0xc000000e DIR=DL STATE=ASSIGN) Immediate Assignment Downlink (PCH)
Sending data request: trx=0 ts=0 sapi=3 arfcn=0 fn=0 block=0 data=30 31 34 2d 06 3f 30 0c 00 00 7d 80 00 00 00 dc 00 00 00 eb 80 23 2b 2b 2b 2b
-TA unknown, assuming 0
Searching for first unallocated TFI: TRX=0 first TS=4
Found TFI=15.
********** TBF starts here **********
@@ -761,7 +747,6 @@ Send dowlink assignment for TBF(TFI=15 TLLI=0xc000000f DIR=DL STATE=NULL) on PCH
TBF(TFI=15 TLLI=0xc000000f DIR=DL STATE=NULL) changes state from NULL to ASSIGN
TX: START TBF(TFI=15 TLLI=0xc000000f DIR=DL STATE=ASSIGN) Immediate Assignment Downlink (PCH)
Sending data request: trx=0 ts=0 sapi=3 arfcn=0 fn=0 block=0 data=30 31 35 2d 06 3f 30 0c 00 00 7d 80 00 00 00 dc 00 00 00 fb c0 23 2b 2b 2b 2b
-TA unknown, assuming 0
Searching for first unallocated TFI: TRX=0 first TS=4
Found TFI=16.
********** TBF starts here **********
@@ -782,7 +767,6 @@ Send dowlink assignment for TBF(TFI=16 TLLI=0xc0000010 DIR=DL STATE=NULL) on PCH
TBF(TFI=16 TLLI=0xc0000010 DIR=DL STATE=NULL) changes state from NULL to ASSIGN
TX: START TBF(TFI=16 TLLI=0xc0000010 DIR=DL STATE=ASSIGN) Immediate Assignment Downlink (PCH)
Sending data request: trx=0 ts=0 sapi=3 arfcn=0 fn=0 block=0 data=30 31 36 2d 06 3f 30 0c 00 00 7d 80 00 00 00 dc 00 00 01 0c 00 23 2b 2b 2b 2b
-TA unknown, assuming 0
Searching for first unallocated TFI: TRX=0 first TS=4
Found TFI=17.
********** TBF starts here **********
@@ -803,7 +787,6 @@ Send dowlink assignment for TBF(TFI=17 TLLI=0xc0000011 DIR=DL STATE=NULL) on PCH
TBF(TFI=17 TLLI=0xc0000011 DIR=DL STATE=NULL) changes state from NULL to ASSIGN
TX: START TBF(TFI=17 TLLI=0xc0000011 DIR=DL STATE=ASSIGN) Immediate Assignment Downlink (PCH)
Sending data request: trx=0 ts=0 sapi=3 arfcn=0 fn=0 block=0 data=30 31 37 2d 06 3f 30 0c 00 00 7d 80 00 00 00 dc 00 00 01 1c 40 23 2b 2b 2b 2b
-TA unknown, assuming 0
Searching for first unallocated TFI: TRX=0 first TS=4
Found TFI=18.
********** TBF starts here **********
@@ -824,7 +807,6 @@ Send dowlink assignment for TBF(TFI=18 TLLI=0xc0000012 DIR=DL STATE=NULL) on PCH
TBF(TFI=18 TLLI=0xc0000012 DIR=DL STATE=NULL) changes state from NULL to ASSIGN
TX: START TBF(TFI=18 TLLI=0xc0000012 DIR=DL STATE=ASSIGN) Immediate Assignment Downlink (PCH)
Sending data request: trx=0 ts=0 sapi=3 arfcn=0 fn=0 block=0 data=30 31 38 2d 06 3f 30 0c 00 00 7d 80 00 00 00 dc 00 00 01 2c 80 23 2b 2b 2b 2b
-TA unknown, assuming 0
Searching for first unallocated TFI: TRX=0 first TS=4
Found TFI=19.
********** TBF starts here **********
@@ -845,7 +827,6 @@ Send dowlink assignment for TBF(TFI=19 TLLI=0xc0000013 DIR=DL STATE=NULL) on PCH
TBF(TFI=19 TLLI=0xc0000013 DIR=DL STATE=NULL) changes state from NULL to ASSIGN
TX: START TBF(TFI=19 TLLI=0xc0000013 DIR=DL STATE=ASSIGN) Immediate Assignment Downlink (PCH)
Sending data request: trx=0 ts=0 sapi=3 arfcn=0 fn=0 block=0 data=30 31 39 2d 06 3f 30 0c 00 00 7d 80 00 00 00 dc 00 00 01 3c c0 23 2b 2b 2b 2b
-TA unknown, assuming 0
Searching for first unallocated TFI: TRX=0 first TS=4
Found TFI=20.
********** TBF starts here **********
@@ -866,7 +847,6 @@ Send dowlink assignment for TBF(TFI=20 TLLI=0xc0000014 DIR=DL STATE=NULL) on PCH
TBF(TFI=20 TLLI=0xc0000014 DIR=DL STATE=NULL) changes state from NULL to ASSIGN
TX: START TBF(TFI=20 TLLI=0xc0000014 DIR=DL STATE=ASSIGN) Immediate Assignment Downlink (PCH)
Sending data request: trx=0 ts=0 sapi=3 arfcn=0 fn=0 block=0 data=30 32 30 2d 06 3f 30 0c 00 00 7d 80 00 00 00 dc 00 00 01 4d 00 23 2b 2b 2b 2b
-TA unknown, assuming 0
Searching for first unallocated TFI: TRX=0 first TS=4
Found TFI=21.
********** TBF starts here **********
@@ -887,7 +867,6 @@ Send dowlink assignment for TBF(TFI=21 TLLI=0xc0000015 DIR=DL STATE=NULL) on PCH
TBF(TFI=21 TLLI=0xc0000015 DIR=DL STATE=NULL) changes state from NULL to ASSIGN
TX: START TBF(TFI=21 TLLI=0xc0000015 DIR=DL STATE=ASSIGN) Immediate Assignment Downlink (PCH)
Sending data request: trx=0 ts=0 sapi=3 arfcn=0 fn=0 block=0 data=30 32 31 2d 06 3f 30 0c 00 00 7d 80 00 00 00 dc 00 00 01 5d 40 23 2b 2b 2b 2b
-TA unknown, assuming 0
Searching for first unallocated TFI: TRX=0 first TS=4
Found TFI=22.
********** TBF starts here **********
@@ -908,7 +887,6 @@ Send dowlink assignment for TBF(TFI=22 TLLI=0xc0000016 DIR=DL STATE=NULL) on PCH
TBF(TFI=22 TLLI=0xc0000016 DIR=DL STATE=NULL) changes state from NULL to ASSIGN
TX: START TBF(TFI=22 TLLI=0xc0000016 DIR=DL STATE=ASSIGN) Immediate Assignment Downlink (PCH)
Sending data request: trx=0 ts=0 sapi=3 arfcn=0 fn=0 block=0 data=30 32 32 2d 06 3f 30 0c 00 00 7d 80 00 00 00 dc 00 00 01 6d 80 23 2b 2b 2b 2b
-TA unknown, assuming 0
Searching for first unallocated TFI: TRX=0 first TS=4
Found TFI=23.
********** TBF starts here **********
@@ -929,7 +907,6 @@ Send dowlink assignment for TBF(TFI=23 TLLI=0xc0000017 DIR=DL STATE=NULL) on PCH
TBF(TFI=23 TLLI=0xc0000017 DIR=DL STATE=NULL) changes state from NULL to ASSIGN
TX: START TBF(TFI=23 TLLI=0xc0000017 DIR=DL STATE=ASSIGN) Immediate Assignment Downlink (PCH)
Sending data request: trx=0 ts=0 sapi=3 arfcn=0 fn=0 block=0 data=30 32 33 2d 06 3f 30 0c 00 00 7d 80 00 00 00 dc 00 00 01 7d c0 23 2b 2b 2b 2b
-TA unknown, assuming 0
Searching for first unallocated TFI: TRX=0 first TS=4
Found TFI=24.
********** TBF starts here **********
@@ -950,7 +927,6 @@ Send dowlink assignment for TBF(TFI=24 TLLI=0xc0000018 DIR=DL STATE=NULL) on PCH
TBF(TFI=24 TLLI=0xc0000018 DIR=DL STATE=NULL) changes state from NULL to ASSIGN
TX: START TBF(TFI=24 TLLI=0xc0000018 DIR=DL STATE=ASSIGN) Immediate Assignment Downlink (PCH)
Sending data request: trx=0 ts=0 sapi=3 arfcn=0 fn=0 block=0 data=30 32 34 2d 06 3f 30 0c 00 00 7d 80 00 00 00 dc 00 00 01 8e 00 23 2b 2b 2b 2b
-TA unknown, assuming 0
Searching for first unallocated TFI: TRX=0 first TS=4
Found TFI=25.
********** TBF starts here **********
@@ -971,7 +947,6 @@ Send dowlink assignment for TBF(TFI=25 TLLI=0xc0000019 DIR=DL STATE=NULL) on PCH
TBF(TFI=25 TLLI=0xc0000019 DIR=DL STATE=NULL) changes state from NULL to ASSIGN
TX: START TBF(TFI=25 TLLI=0xc0000019 DIR=DL STATE=ASSIGN) Immediate Assignment Downlink (PCH)
Sending data request: trx=0 ts=0 sapi=3 arfcn=0 fn=0 block=0 data=30 32 35 2d 06 3f 30 0c 00 00 7d 80 00 00 00 dc 00 00 01 9e 40 23 2b 2b 2b 2b
-TA unknown, assuming 0
Searching for first unallocated TFI: TRX=0 first TS=4
Found TFI=26.
********** TBF starts here **********
@@ -992,7 +967,6 @@ Send dowlink assignment for TBF(TFI=26 TLLI=0xc000001a DIR=DL STATE=NULL) on PCH
TBF(TFI=26 TLLI=0xc000001a DIR=DL STATE=NULL) changes state from NULL to ASSIGN
TX: START TBF(TFI=26 TLLI=0xc000001a DIR=DL STATE=ASSIGN) Immediate Assignment Downlink (PCH)
Sending data request: trx=0 ts=0 sapi=3 arfcn=0 fn=0 block=0 data=30 32 36 2d 06 3f 30 0c 00 00 7d 80 00 00 00 dc 00 00 01 ae 80 23 2b 2b 2b 2b
-TA unknown, assuming 0
Searching for first unallocated TFI: TRX=0 first TS=4
Found TFI=27.
********** TBF starts here **********
@@ -1013,7 +987,6 @@ Send dowlink assignment for TBF(TFI=27 TLLI=0xc000001b DIR=DL STATE=NULL) on PCH
TBF(TFI=27 TLLI=0xc000001b DIR=DL STATE=NULL) changes state from NULL to ASSIGN
TX: START TBF(TFI=27 TLLI=0xc000001b DIR=DL STATE=ASSIGN) Immediate Assignment Downlink (PCH)
Sending data request: trx=0 ts=0 sapi=3 arfcn=0 fn=0 block=0 data=30 32 37 2d 06 3f 30 0c 00 00 7d 80 00 00 00 dc 00 00 01 be c0 23 2b 2b 2b 2b
-TA unknown, assuming 0
Searching for first unallocated TFI: TRX=0 first TS=4
Found TFI=28.
********** TBF starts here **********
@@ -1034,7 +1007,6 @@ Send dowlink assignment for TBF(TFI=28 TLLI=0xc000001c DIR=DL STATE=NULL) on PCH
TBF(TFI=28 TLLI=0xc000001c DIR=DL STATE=NULL) changes state from NULL to ASSIGN
TX: START TBF(TFI=28 TLLI=0xc000001c DIR=DL STATE=ASSIGN) Immediate Assignment Downlink (PCH)
Sending data request: trx=0 ts=0 sapi=3 arfcn=0 fn=0 block=0 data=30 32 38 2d 06 3f 30 0c 00 00 7d 80 00 00 00 dc 00 00 01 cf 00 23 2b 2b 2b 2b
-TA unknown, assuming 0
Searching for first unallocated TFI: TRX=0 first TS=4
Found TFI=29.
********** TBF starts here **********
@@ -1055,7 +1027,6 @@ Send dowlink assignment for TBF(TFI=29 TLLI=0xc000001d DIR=DL STATE=NULL) on PCH
TBF(TFI=29 TLLI=0xc000001d DIR=DL STATE=NULL) changes state from NULL to ASSIGN
TX: START TBF(TFI=29 TLLI=0xc000001d DIR=DL STATE=ASSIGN) Immediate Assignment Downlink (PCH)
Sending data request: trx=0 ts=0 sapi=3 arfcn=0 fn=0 block=0 data=30 32 39 2d 06 3f 30 0c 00 00 7d 80 00 00 00 dc 00 00 01 df 40 23 2b 2b 2b 2b
-TA unknown, assuming 0
Searching for first unallocated TFI: TRX=0 first TS=4
Found TFI=30.
********** TBF starts here **********
@@ -1076,7 +1047,6 @@ Send dowlink assignment for TBF(TFI=30 TLLI=0xc000001e DIR=DL STATE=NULL) on PCH
TBF(TFI=30 TLLI=0xc000001e DIR=DL STATE=NULL) changes state from NULL to ASSIGN
TX: START TBF(TFI=30 TLLI=0xc000001e DIR=DL STATE=ASSIGN) Immediate Assignment Downlink (PCH)
Sending data request: trx=0 ts=0 sapi=3 arfcn=0 fn=0 block=0 data=30 33 30 2d 06 3f 30 0c 00 00 7d 80 00 00 00 dc 00 00 01 ef 80 23 2b 2b 2b 2b
-TA unknown, assuming 0
Searching for first unallocated TFI: TRX=0 first TS=4
Found TFI=31.
********** TBF starts here **********
@@ -1097,7 +1067,6 @@ Send dowlink assignment for TBF(TFI=31 TLLI=0xc000001f DIR=DL STATE=NULL) on PCH
TBF(TFI=31 TLLI=0xc000001f DIR=DL STATE=NULL) changes state from NULL to ASSIGN
TX: START TBF(TFI=31 TLLI=0xc000001f DIR=DL STATE=ASSIGN) Immediate Assignment Downlink (PCH)
Sending data request: trx=0 ts=0 sapi=3 arfcn=0 fn=0 block=0 data=30 33 31 2d 06 3f 30 0c 00 00 7d 80 00 00 00 dc 00 00 01 ff c0 23 2b 2b 2b 2b
-TA unknown, assuming 0
Searching for first unallocated TFI: TRX=0 first TS=4
No TFI available.
No PDCH resource
@@ -1129,6 +1098,7 @@ Got 'TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW)', TA=7
UL DATA TFI=0 received (V(Q)=0 .. V(R)=0)
Creating MS object, TLLI = 0x00000000
Modifying MS object, UL TLLI: 0x00000000 -> 0xf1223344, not yet confirmed
+Modifying MS object, TLLI = 0xf1223344, TA 0 -> 7
Attaching TBF to MS object, TLLI = 0xf1223344, TBF = TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW)
Decoded premier TLLI=0xf1223344 of UL DATA TFI=0.
TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) restarting timer 3169 while old timer 3169 pending
@@ -1147,7 +1117,7 @@ No bctx
TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) changes state from FLOW to FINISHED
- Scheduling Ack/Nack, because TLLI is included.
- Scheduling Ack/Nack, because last block has CV==0.
-Got MS: TLLI = 0xf1223344
+Got MS: TLLI = 0xf1223344, TA = 7
Sending data request: trx=0 ts=7 sapi=5 arfcn=0 fn=2654218 block=8 data=47 94 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b
MS requests UL TBF on RACH, so we provide one:
MS requests single block allocation
@@ -1179,6 +1149,7 @@ TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=ASSIGN) starting timer 3169.
Creating MS object, TLLI = 0x00000000
Modifying MS object, UL TLLI: 0x00000000 -> 0xf1223344, not yet confirmed
Attaching TBF to MS object, TLLI = 0xf1223344, TBF = TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=ASSIGN)
+Modifying MS object, TLLI = 0xf1223344, TA 0 -> 7
Change control TS to 7 until assinment is complete.
Got 'TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=ASSIGN)', TA=7
TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=ASSIGN)s start Packet Uplink Assignment (PACCH)
@@ -1197,4 +1168,4 @@ TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=ASSIGN) restarting timer 3169 while old t
TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=ASSIGN) complete UL frame that fits precisely in last block: len=20
LLC [PCU -> SGSN] TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=ASSIGN) len=20
No bctx
-Got MS: TLLI = 0xf1223344
+Got MS: TLLI = 0xf1223344, TA = 7