fixeria has uploaded this change for review. ( 
https://gerrit.osmocom.org/c/osmo-pcu/+/18386 )


Change subject: bts: refactor handling and parsing of RACH.ind
......................................................................

bts: refactor handling and parsing of RACH.ind

Change-Id: I5fe7e0f51bf5c9eac073935cc4f4edd667c67c6e
---
M src/bts.cpp
M src/bts.h
M src/pcu_l1_if.cpp
M tests/tbf/TbfTest.err
4 files changed, 232 insertions(+), 264 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/osmo-pcu refs/changes/86/18386/1

diff --git a/src/bts.cpp b/src/bts.cpp
index 2cf219a..934bdef 100644
--- a/src/bts.cpp
+++ b/src/bts.cpp
@@ -665,191 +665,168 @@
 }

 /* 3GPP TS 44.060:
- *   Table 11.2.5.3: PACKET CHANNEL REQUEST
- *   Table 11.2.5a.3: EGPRS PACKET CHANNEL REQUEST
- * Both GPRS and EGPRS use same MultislotClass coding, but since use of PCCCH 
is
+ *   Table 11.2.5.2: PACKET CHANNEL REQUEST
+ *   Table 11.2.5a.2: EGPRS PACKET CHANNEL REQUEST
+ * Both GPRS and EGPRS use same MultislotClass coding, but since PRACH is
  * deprecated, no PACKET CHANNEL REQUEST exists, which means for GPRS we will
  * receive CCCH RACH which doesn't contain any mslot class. Hence in the end we
- * can only receive EGPRS mslot class through 11-bit EGPRS PACKET CHANNEL
- * REQUEST.
- */
-static inline uint8_t egprs_mslot_class_from_ra(uint16_t ra, bool is_11bit)
+ * can only receive EGPRS mslot class through 11-bit EGPRS PACKET CHANNEL 
REQUEST. */
+static int parse_rach_ind(const struct rach_ind_params *rip,
+                         struct chan_req_params *chan_req)
 {
-       /* EGPRS multislot class is only present in One Phase Access Request */
-       if (is_11bit && (ra >> 10) == 0x00) /* .0xx xxx. .... */
-               return ((ra & 0x3e0) >> 5) + 1;
-
-       /* set EGPRS multislot class to 0 for 8-bit RACH, since we don't know 
it yet */
-       return 0;
-}
-
-static inline uint16_t priority_from_ra(uint16_t ra, bool is_11bit)
-{
-       if (is_11bit)
-               return (ra & 0x18) >> 3;
-
-       return 0;
-}
-
-static inline bool is_single_block(bool force_two_phase, uint16_t ra, enum 
ph_burst_type burst_type, bool is_11bit)
-{
-       bool sb = false;
-
-       if ((ra & 0xf8) == 0x70)
-               LOGP(DRLCMAC, LOGL_DEBUG, "MS requests single block 
allocation\n");
-       else if (force_two_phase)
-               LOGP(DRLCMAC, LOGL_DEBUG,
-                    "MS requests single phase access, but we force two phase 
access [RACH is %s bit]\n",
-                    is_11bit ? "11" : "8");
-
-       switch(burst_type) {
-       case GSM_L1_BURST_TYPE_ACCESS_0:
-               if (is_11bit) {
-                       LOGP(DRLCMAC, LOGL_ERROR, "Error: GPRS 11 bit RACH not 
supported\n");
-                       return false;
-               }
-
-               if ((ra & 0xf8) == 0x70)
-                       return true;
-
-               if (force_two_phase)
-                       return true;
-               break;
-       case GSM_L1_BURST_TYPE_ACCESS_1: /* deliberate fall-through */
-       case GSM_L1_BURST_TYPE_ACCESS_2:
-               if (is_11bit) {
-                       if (!(ra & (1 << 10))) {
-                               if (force_two_phase)
-                                       return true;
-
-                               return false;
-                       }
-
-                       return true;
-               }
-               LOGP(DRLCMAC, LOGL_ERROR, "Unexpected RACH burst type %u for 
8-bit RACH\n", burst_type);
-               break;
+       switch (rip->burst_type) {
        case GSM_L1_BURST_TYPE_NONE:
-               LOGP(DRLCMAC, LOGL_ERROR, "PCU has not received burst type from 
BTS\n");
+               LOGP(DRLCMAC, LOGL_ERROR, "RACH.ind contains no burst type, 
assuming TS0\n");
+               /* fall-through */
+       case GSM_L1_BURST_TYPE_ACCESS_0:
+               if (rip->is_11bit) { /* 11 bit Access Burst with TS0 => Packet 
Channel Request */
+                       LOGP(DRLCMAC, LOGL_ERROR, "11 bit Packet Channel 
Request "
+                            "is not supported (PBCCH is deprecated)\n");
+                       return -ENOTSUP;
+               }
+
+               /* 3GPP TS 44.018, table 9.1.8.1: 8 bit CHANNEL REQUEST.
+                * Mask 01110xxx indicates single block packet access. */
+               chan_req->single_block = ((rip->ra & 0xf8) == 0x70);
+               break;
+       case GSM_L1_BURST_TYPE_ACCESS_1:
+       case GSM_L1_BURST_TYPE_ACCESS_2:
+               if (!rip->is_11bit) { /* TS1/TS2 => EGPRS Packet Channel 
Request (always 11 bit) */
+                       LOGP(DRLCMAC, LOGL_ERROR, "11 bit Packet Channel 
Request "
+                            "is not supported (PBCCH is deprecated)\n");
+                       return -ENOTSUP;
+               }
+
+               /* EGPRS multislot class is only present in One Phase Access 
Request */
+               /* FIXME: properly parse EGPRS Packet Channel Request */
+               if ((rip->ra >> 10) == 0x00) /* .0xx xxx. .... */
+                       chan_req->egprs_mslot_class = ((rip->ra & 0x3e0) >> 5) 
+ 1;
                break;
        default:
-               LOGP(DRLCMAC, LOGL_ERROR, "Unexpected RACH burst type %u for 
%s-bit RACH\n",
-                    burst_type, is_11bit ? "11" : "8");
+               LOGP(DRLCMAC, LOGL_ERROR, "RACH.ind contains unknown burst type 
0x%02x "
+                    "(%u bit)\n", rip->burst_type, rip->is_11bit ? 11 : 8);
+               return -EINVAL;
        }

-       return sb;
+       return 0;
 }

+/* Old -> new API adapter for the unit tests */
 int BTS::rcv_rach(uint16_t ra, uint32_t Fn, int16_t qta, bool is_11bit,
-               enum ph_burst_type burst_type)
+                 enum ph_burst_type burst_type)
 {
+       struct rach_ind_params rip = {
+               .burst_type = burst_type,
+               .is_11bit = is_11bit,
+               .ra = ra,
+               .rfn = Fn,
+               .qta = qta,
+       };
+
+       return rcv_rach(&rip);
+}
+
+int BTS::rcv_rach(const struct rach_ind_params *rip)
+{
+       struct chan_req_params chan_req = { 0 };
        struct gprs_rlcmac_ul_tbf *tbf = NULL;
-       uint8_t trx_no, ts_no = 0;
-       uint8_t sb = 0;
+       uint8_t trx_no, ts_no;
        uint32_t sb_fn = 0;
-       int rc = 0;
-       int plen;
        uint8_t usf = 7;
-       uint8_t tsc = 0, ta = qta2ta(qta);
-       uint8_t egprs_ms_class = egprs_mslot_class_from_ra(ra, is_11bit);
-       bool failure = false;
-       GprsMs *ms;
+       uint8_t tsc = 0;
+       int plen, rc;

        do_rate_ctr_inc(CTR_RACH_REQUESTS);

-       if (is_11bit)
+       if (rip->is_11bit)
                do_rate_ctr_inc(CTR_11BIT_RACH_REQUESTS);

        /* Determine full frame number */
-       Fn = rfn_to_fn(Fn);
+       uint32_t Fn = rfn_to_fn(rip->rfn);
+       uint8_t ta = qta2ta(rip->qta);

-       send_gsmtap(PCU_GSMTAP_C_UL_RACH, true, 0, ts_no, GSMTAP_CHANNEL_RACH,
-                   Fn, (uint8_t*)&ra, is_11bit ? 2 : 1);
+       send_gsmtap(PCU_GSMTAP_C_UL_RACH, true, rip->trx_nr, rip->ts_nr,
+                   GSMTAP_CHANNEL_RACH, Fn, (uint8_t *) &rip->ra,
+                   rip->is_11bit ? 2 : 1);
+
+       /* Parse [EGPRS Packet] Channel Request from RACH.ind */
+       rc = parse_rach_ind(rip, &chan_req);
+       if (rc) /* Send RR Immediate Assignment Reject */
+               goto send_imm_ass;

        LOGP(DRLCMAC, LOGL_DEBUG, "MS requests UL TBF on RACH, "
                "so we provide one: ra=0x%02x Fn=%u qta=%d is_11bit=%d:\n",
-               ra, Fn, qta, is_11bit);
+               rip->ra, Fn, rip->qta, rip->is_11bit);

-       sb = is_single_block(m_bts.force_two_phase, ra, burst_type, is_11bit);
+       if (chan_req.single_block)
+               LOGP(DRLCMAC, LOGL_DEBUG, "MS requests single block 
allocation\n");
+       else if (m_bts.force_two_phase) {
+               LOGP(DRLCMAC, LOGL_DEBUG, "MS requests single block allocation, 
"
+                    "but we force two phase access\n");
+               chan_req.single_block = true;
+       }

-       if (sb) {
+       /* Should we allocate a single block or an Uplink TBF? */
+       if (chan_req.single_block) {
                rc = sba()->alloc(&trx_no, &ts_no, &sb_fn, ta);
                if (rc < 0) {
-                       failure = true;
                        LOGP(DRLCMAC, LOGL_NOTICE, "No PDCH resource for "
-                                       "single block allocation."
-                                       "sending Immediate "
-                                       "Assignment Uplink (AGCH) reject\n");
-               } else {
-                       tsc = m_bts.trx[trx_no].pdch[ts_no].tsc;
-
-                       LOGP(DRLCMAC, LOGL_DEBUG, "RX: [PCU <- BTS] RACH "
-                               " qbit-ta=%d ra=0x%02x, Fn=%d (%d,%d,%d),"
-                               " SBFn=%d\n",
-                               qta, ra,
-                               Fn, (Fn / (26 * 51)) % 32, Fn % 51, Fn % 26,
-                               sb_fn);
-                       LOGP(DRLCMAC, LOGL_INFO, "TX: Immediate Assignment "
-                               "Uplink (AGCH)\n");
+                            "single block allocation: rc=%d\n", rc);
+                       /* Send RR Immediate Assignment Reject */
+                       goto send_imm_ass;
                }
+
+               tsc = m_bts.trx[trx_no].pdch[ts_no].tsc;
+               LOGP(DRLCMAC, LOGL_DEBUG, "(TRX=%u TS=%u FN=%u) "
+                    "Allocated a single block\n", trx_no, ts_no, sb_fn);
        } else {
-               ms = ms_alloc(0, egprs_ms_class);
-               // Create new TBF
-               /* FIXME: Copy and paste with other routines.. */
+               GprsMs *ms = ms_alloc(0, chan_req.egprs_mslot_class);
                tbf = tbf_alloc_ul_tbf(&m_bts, ms, -1, true);
-
                if (!tbf) {
-                       LOGP(DRLCMAC, LOGL_NOTICE, "No PDCH resource sending "
-                                       "Immediate Assignment Uplink (AGCH) "
-                                       "reject\n");
+                       LOGP(DRLCMAC, LOGL_NOTICE, "No PDCH resource for Uplink 
TBF\n");
+                       /* Send RR Immediate Assignment Reject */
                        rc = -EBUSY;
-                       failure = true;
-               } else {
-                       tbf->set_ta(ta);
-                       TBF_SET_STATE(tbf, GPRS_RLCMAC_FLOW);
-                       TBF_ASS_TYPE_SET(tbf, GPRS_RLCMAC_FLAG_CCCH);
-                       T_START(tbf, T3169, 3169, "RACH (new UL-TBF)", true);
-                       LOGPTBF(tbf, LOGL_DEBUG, "[UPLINK] START\n");
-                       LOGPTBF(tbf, LOGL_DEBUG, "RX: [PCU <- BTS] RACH "
-                                       "qbit-ta=%d ra=0x%02x, Fn=%d "
-                                       " (%d,%d,%d)\n",
-                                       qta, ra, Fn, (Fn / (26 * 51)) % 32,
-                                       Fn % 51, Fn % 26);
-                       LOGPTBF(tbf, LOGL_INFO, "TX: START Immediate Assignment 
Uplink (AGCH)\n");
-                       trx_no = tbf->trx->trx_no;
-                       ts_no = tbf->first_ts;
-                       usf = tbf->m_usf[ts_no];
-                       tsc = tbf->tsc();
+                       goto send_imm_ass;
                }
+
+               /* FIXME: Copy and paste with other routines.. */
+               tbf->set_ta(ta);
+               TBF_SET_STATE(tbf, GPRS_RLCMAC_FLOW);
+               TBF_ASS_TYPE_SET(tbf, GPRS_RLCMAC_FLAG_CCCH);
+               T_START(tbf, T3169, 3169, "RACH (new UL-TBF)", true);
+               LOGPTBF(tbf, LOGL_INFO, "Allocated due to [EGPRS Packet] 
Channel Request on CCCH\n");
+               trx_no = tbf->trx->trx_no;
+               ts_no = tbf->first_ts;
+               usf = tbf->m_usf[ts_no];
+               tsc = tbf->tsc();
        }
-       bitvec *immediate_assignment = bitvec_alloc(22, tall_pcu_ctx) /* 
without plen */;
-       bitvec_unhex(immediate_assignment,
-               "2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b");

+send_imm_ass:
+       /* Allocate a bit-vector for RR Immediate Assignment [Reject] */
+       struct bitvec *bv = bitvec_alloc(22, tall_pcu_ctx); /* without plen */
+       bitvec_unhex(bv, "2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b");

-       if (failure) {
+       if (rc != 0) {
                plen = Encoding::write_immediate_assignment_reject(
-                       immediate_assignment, ra, Fn,
-                       burst_type);
+                       bv, rip->ra, Fn, rip->burst_type);
+               if (plen < 0)
+                       return plen;
                do_rate_ctr_inc(CTR_IMMEDIATE_ASSIGN_REJ);
-       }
-       else {
-               LOGP(DRLCMAC, LOGL_DEBUG,
-                       " - TRX=%d (%d) TS=%d TA=%d TSC=%d TFI=%d USF=%d\n",
-                       trx_no, m_bts.trx[trx_no].arfcn, ts_no, ta, tsc,
-                       tbf ? tbf->tfi() : -1, usf);
-               // N. B: if tbf == NULL then SBA is used for Imm. Ass. below
-               plen = Encoding::write_immediate_assignment(tbf, 
immediate_assignment, false, ra, Fn, ta,
-                                                           
m_bts.trx[trx_no].arfcn, ts_no, tsc, usf, false, sb_fn,
-                                                           m_bts.alpha, 
m_bts.gamma, -1, burst_type);
-       }
-
-       if (plen >= 0) {
+               LOGP(DRLCMAC, LOGL_DEBUG, "Tx RR Immediate Assignment Reject on 
AGCH\n");
+       } else {
+               /* FIXME: group all arguments into a structure */
+               plen = Encoding::write_immediate_assignment(
+                       tbf, bv, false, rip->ra, Fn, ta, 
m_bts.trx[trx_no].arfcn,
+                       ts_no, tsc, usf, false, sb_fn, m_bts.alpha, 
m_bts.gamma, -1,
+                       rip->burst_type);
+               if (plen < 0)
+                       return plen;
                do_rate_ctr_inc(CTR_IMMEDIATE_ASSIGN_UL_TBF);
-               pcu_l1if_tx_agch(immediate_assignment, plen);
+               LOGP(DRLCMAC, LOGL_DEBUG, "Tx RR Immediate Assignment on 
AGCH\n");
        }

-       bitvec_free(immediate_assignment);
+       pcu_l1if_tx_agch(bv, rc);
+       bitvec_free(bv);

        return rc;
 }
@@ -862,25 +839,25 @@
        324, 350, 376, 402,
 };

-int BTS::rcv_ptcch_rach(uint8_t trx_nr, uint8_t ts_nr, uint32_t fn, int16_t 
qta)
+int BTS::rcv_ptcch_rach(const struct rach_ind_params *rip)
 {
+       uint32_t fn416 = rfn_to_fn(rip->rfn) % 416;
        struct gprs_rlcmac_bts *bts = bts_data();
        struct gprs_rlcmac_pdch *pdch;
-       uint32_t fn416 = fn % 416;
        uint8_t ss;

        /* Prevent buffer overflow */
-       if (trx_nr >= ARRAY_SIZE(bts->trx) || ts_nr >= 8) {
-               LOGP(DRLCMAC, LOGL_ERROR, "Malformed RACH.ind message "
-                    "(TRX=%u TS=%u FN=%u)\n", trx_nr, ts_nr, fn);
+       if (rip->trx_nr >= ARRAY_SIZE(bts->trx) || rip->ts_nr >= 8) {
+               LOGP(DRLCMAC, LOGL_ERROR, "(TRX=%u TS=%u RFN=%u) Rx malformed "
+                    "RACH.ind (PTCCH/U)\n", rip->trx_nr, rip->ts_nr, rip->rfn);
                return -EINVAL;
        }

        /* Make sure PDCH time-slot is enabled */
-       pdch = &bts->trx[trx_nr].pdch[ts_nr];
+       pdch = &bts->trx[rip->trx_nr].pdch[rip->ts_nr];
        if (!pdch->m_is_enabled) {
-               LOGP(DRLCMAC, LOGL_NOTICE, "Rx PTCCH RACH.ind for inactive PDCH 
"
-                    "(TRX=%u TS=%u FN=%u)\n", trx_nr, ts_nr, fn);
+               LOGP(DRLCMAC, LOGL_NOTICE, "(TRX=%u TS=%u RFN=%u) Rx RACH.ind 
(PTCCH/U) "
+                    "for inactive PDCH\n", rip->trx_nr, rip->ts_nr, rip->rfn);
                return -EAGAIN;
        }

@@ -889,14 +866,15 @@
                if (ptcch_slot_map[ss] == fn416)
                        break;
        if (ss == PTCCH_TAI_NUM) {
-               LOGP(DRLCMAC, LOGL_ERROR, "Failed to map PTCCH/U sub-slot for 
fn=%u\n", fn);
+               LOGP(DRLCMAC, LOGL_ERROR, "(TRX=%u TS=%u RFN=%u) Failed to map "
+                    "PTCCH/U sub-slot\n", rip->trx_nr, rip->ts_nr, rip->rfn);
                return -ENODEV;
        }

        /* Apply the new Timing Advance value */
        LOGP(DRLCMAC, LOGL_INFO, "Continuous Timing Advance update "
-            "for TAI %u, new TA is %u\n", ss, qta2ta(qta));
-       pdch->update_ta(ss, qta2ta(qta));
+            "for TAI %u, new TA is %u\n", ss, qta2ta(rip->qta));
+       pdch->update_ta(ss, qta2ta(rip->qta));

        return 0;
 }
diff --git a/src/bts.h b/src/bts.h
index 9986bdc..614a270 100644
--- a/src/bts.h
+++ b/src/bts.h
@@ -267,6 +267,25 @@
        STAT_MS_PRESENT,
 };

+/* RACH.ind parameters (to be parsed) */
+struct rach_ind_params {
+       enum ph_burst_type burst_type;
+       bool is_11bit;
+       uint16_t ra;
+
+       uint8_t trx_nr;
+       uint8_t ts_nr;
+       uint32_t rfn;
+       int16_t qta;
+};
+
+/* [EGPRS Packet] Channel Request parameters (parsed) */
+struct chan_req_params {
+       unsigned int egprs_mslot_class;
+       unsigned int priority;
+       bool single_block;
+};
+
 #ifdef __cplusplus
 /**
  * I represent a GSM BTS. I have one or more TRX, I know the current
@@ -304,7 +323,8 @@
        uint32_t rfn_to_fn(int32_t rfn);
        int rcv_rach(uint16_t ra, uint32_t Fn, int16_t qta, bool is_11bit,
                enum ph_burst_type burst_type);
-       int rcv_ptcch_rach(uint8_t trx_nr, uint8_t ts_nr, uint32_t fn, int16_t 
qta);
+       int rcv_rach(const struct rach_ind_params *rip);
+       int rcv_ptcch_rach(const struct rach_ind_params *rip);

        void snd_dl_ass(gprs_rlcmac_tbf *tbf, bool poll, uint16_t pgroup);

diff --git a/src/pcu_l1_if.cpp b/src/pcu_l1_if.cpp
index 977a519..7334a39 100644
--- a/src/pcu_l1_if.cpp
+++ b/src/pcu_l1_if.cpp
@@ -432,10 +432,17 @@
 /* C -> C++ adapter for direct DSP access code (e.g. osmo-bts-sysmo) */
 extern "C" int pcu_rx_rach_ind_ptcch(uint8_t trx_nr, uint8_t ts_nr, uint32_t 
fn, int16_t qta)
 {
-       return BTS::main_bts()->rcv_ptcch_rach(trx_nr, ts_nr, fn, qta);
+       struct rach_ind_params rip = {
+               .trx_nr = trx_nr,
+               .ts_nr = ts_nr,
+               .rfn = fn,
+               .qta = qta,
+       };
+
+       return BTS::main_bts()->rcv_ptcch_rach(&rip);
 }

-static int pcu_rx_rach_ind(struct gsm_pcu_if_rach_ind *rach_ind)
+static int pcu_rx_rach_ind(const struct gsm_pcu_if_rach_ind *rach_ind)
 {
        int rc = 0;
        int current_fn = get_current_fn();
@@ -444,17 +451,22 @@
                "qta=%d, ra=0x%02x, fn=%u, cur_fn=%d, is_11bit=%d\n", 
rach_ind->sapi, rach_ind->qta,
                rach_ind->ra, rach_ind->fn, current_fn, rach_ind->is_11bit);

+       struct rach_ind_params rip = {
+               .burst_type = (enum ph_burst_type) rach_ind->burst_type,
+               .is_11bit = rach_ind->is_11bit > 0,
+               .ra = rach_ind->ra,
+               .trx_nr = rach_ind->trx_nr,
+               .ts_nr = rach_ind->ts_nr,
+               .rfn = rach_ind->fn,
+               .qta = rach_ind->qta,
+       };
+
        switch (rach_ind->sapi) {
        case PCU_IF_SAPI_RACH:
-               rc = BTS::main_bts()->rcv_rach(
-                       rach_ind->ra, rach_ind->fn,
-                       rach_ind->qta, rach_ind->is_11bit,
-                       (ph_burst_type)rach_ind->burst_type);
+               rc = BTS::main_bts()->rcv_rach(&rip);
                break;
        case PCU_IF_SAPI_PTCCH:
-               rc = BTS::main_bts()->rcv_ptcch_rach(
-                       rach_ind->trx_nr, rach_ind->ts_nr,
-                       rach_ind->fn, rach_ind->qta);
+               rc = BTS::main_bts()->rcv_ptcch_rach(&rip);
                break;
        default:
                LOGP(DL1IF, LOGL_ERROR, "Received PCU rach request with "
diff --git a/tests/tbf/TbfTest.err b/tests/tbf/TbfTest.err
index 57787c5..58a2ae1 100644
--- a/tests/tbf/TbfTest.err
+++ b/tests/tbf/TbfTest.err
@@ -1464,10 +1464,8 @@
 TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=NULL) changes state from NULL to FLOW
 TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) set ass. type CCCH [prev CCCH:0, 
PACCH:0]
 TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) starting timer T3169 [RACH (new 
UL-TBF)] with 5 sec. 0 microsec, cur_fn=0
-TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) [UPLINK] START
-TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) RX: [PCU <- BTS] RACH qbit-ta=31 
ra=0x03, Fn=2654167  (17,25,9)
-TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) TX: START Immediate Assignment 
Uplink (AGCH)
- - TRX=0 (0) TS=7 TA=7 TSC=0 TFI=0 USF=0
+TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) Allocated due to [EGPRS Packet] 
Channel Request on CCCH
+Tx RR Immediate Assignment on AGCH
 Got CS-1 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=184
 TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) UL DATA TFI=0 received (V(Q)=0 .. 
V(R)=0)
 MS (IMSI ): Link quality 12dB (old 12dB) left window [0, 0], modifying uplink 
CS level: CS-1 -> CS-2
@@ -1517,9 +1515,8 @@
 === start test_tbf_two_phase ===
 MS requests UL TBF on RACH, so we provide one: ra=0x73 Fn=2654167 qta=31 
is_11bit=0:
 MS requests single block allocation
-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
+(TRX=0 TS=7 FN=2654270) Allocated a single block
+Tx RR Immediate Assignment on AGCH
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
 +++++++++++++++++++++++++ RX : Uplink Control Block +++++++++++++++++++++++++
@@ -1599,9 +1596,8 @@
 === start test_tbf_ra_update_rach ===
 MS requests UL TBF on RACH, so we provide one: ra=0x73 Fn=2654167 qta=31 
is_11bit=0:
 MS requests single block allocation
-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
+(TRX=0 TS=7 FN=2654270) Allocated a single block
+Tx RR Immediate Assignment on AGCH
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
 +++++++++++++++++++++++++ RX : Uplink Control Block +++++++++++++++++++++++++
@@ -1725,9 +1721,8 @@
 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=FINISHED) msg block (BSN 0, CS-4): 07 
01 00 29 52 41 55 5f 41 43 43 45 50 54 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 
2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 00
 MS requests UL TBF on RACH, so we provide one: ra=0x73 Fn=2654232 qta=31 
is_11bit=0:
 MS requests single block allocation
-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
+(TRX=0 TS=7 FN=2654335) Allocated a single block
+Tx RR Immediate Assignment on AGCH
 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)
@@ -1796,9 +1791,8 @@
 === start test_tbf_dl_flow_and_rach_two_phase ===
 MS requests UL TBF on RACH, so we provide one: ra=0x73 Fn=2654167 qta=31 
is_11bit=0:
 MS requests single block allocation
-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
+(TRX=0 TS=7 FN=2654270) Allocated a single block
+Tx RR Immediate Assignment on AGCH
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
 +++++++++++++++++++++++++ RX : Uplink Control Block +++++++++++++++++++++++++
@@ -1886,9 +1880,8 @@
 ********** UL-TBF ends here **********
 MS requests UL TBF on RACH, so we provide one: ra=0x73 Fn=2654224 qta=31 
is_11bit=0:
 MS requests single block allocation
-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
+(TRX=0 TS=7 FN=2654327) Allocated a single block
+Tx RR Immediate Assignment on AGCH
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
 +++++++++++++++++++++++++ RX : Uplink Control Block +++++++++++++++++++++++++
@@ -1968,9 +1961,8 @@
 === start test_tbf_dl_flow_and_rach_single_phase ===
 MS requests UL TBF on RACH, so we provide one: ra=0x73 Fn=2654167 qta=31 
is_11bit=0:
 MS requests single block allocation
-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
+(TRX=0 TS=7 FN=2654270) Allocated a single block
+Tx RR Immediate Assignment on AGCH
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
 +++++++++++++++++++++++++ RX : Uplink Control Block +++++++++++++++++++++++++
@@ -2079,10 +2071,8 @@
 TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=NULL) changes state from NULL to FLOW
 TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) set ass. type CCCH [prev CCCH:0, 
PACCH:0]
 TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) starting timer T3169 [RACH (new 
UL-TBF)] with 5 sec. 0 microsec, cur_fn=0
-TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) [UPLINK] START
-TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) RX: [PCU <- BTS] RACH qbit-ta=31 
ra=0x03, Fn=2654275  (17,31,13)
-TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) TX: START Immediate Assignment 
Uplink (AGCH)
- - TRX=0 (0) TS=7 TA=7 TSC=0 TFI=0 USF=0
+TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) Allocated due to [EGPRS Packet] 
Channel Request on CCCH
+Tx RR Immediate Assignment on AGCH
 Got CS-1 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=184
 TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) UL DATA TFI=0 received (V(Q)=0 .. 
V(R)=0)
 MS (IMSI ): Link quality 12dB (old 12dB) left window [0, 0], modifying uplink 
CS level: CS-1 -> CS-2
@@ -2119,9 +2109,8 @@
 === start test_tbf_dl_reuse ===
 MS requests UL TBF on RACH, so we provide one: ra=0x73 Fn=2654167 qta=31 
is_11bit=0:
 MS requests single block allocation
-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
+(TRX=0 TS=7 FN=2654270) Allocated a single block
+Tx RR Immediate Assignment on AGCH
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
 +++++++++++++++++++++++++ RX : Uplink Control Block +++++++++++++++++++++++++
@@ -3142,9 +3131,8 @@
 === start test_tbf_egprs_two_phase ===
 MS requests UL TBF on RACH, so we provide one: ra=0x73 Fn=2654167 qta=31 
is_11bit=0:
 MS requests single block allocation
-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
+(TRX=0 TS=7 FN=2654270) Allocated a single block
+Tx RR Immediate Assignment on AGCH
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
 +++++++++++++++++++++++++ RX : Uplink Control Block +++++++++++++++++++++++++
@@ -3234,9 +3222,8 @@
 === start test_tbf_egprs_two_phase_spb ===
 MS requests UL TBF on RACH, so we provide one: ra=0x73 Fn=2654167 qta=31 
is_11bit=0:
 MS requests single block allocation
-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
+(TRX=0 TS=7 FN=2654270) Allocated a single block
+Tx RR Immediate Assignment on AGCH
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
 +++++++++++++++++++++++++ RX : Uplink Control Block +++++++++++++++++++++++++
@@ -5873,9 +5860,8 @@
 === start test_tbf_puan_urbb_len ===
 MS requests UL TBF on RACH, so we provide one: ra=0x73 Fn=2654167 qta=31 
is_11bit=0:
 MS requests single block allocation
-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
+(TRX=0 TS=7 FN=2654270) Allocated a single block
+Tx RR Immediate Assignment on AGCH
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
 +++++++++++++++++++++++++ RX : Uplink Control Block +++++++++++++++++++++++++
@@ -6038,9 +6024,8 @@
 === start test_tbf_li_decoding ===
 MS requests UL TBF on RACH, so we provide one: ra=0x73 Fn=2654167 qta=31 
is_11bit=0:
 MS requests single block allocation
-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
+(TRX=0 TS=7 FN=2654270) Allocated a single block
+Tx RR Immediate Assignment on AGCH
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
 +++++++++++++++++++++++++ RX : Uplink Control Block +++++++++++++++++++++++++
@@ -6203,10 +6188,8 @@
 TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=NULL) changes state from NULL to FLOW
 TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) set ass. type CCCH [prev CCCH:0, 
PACCH:0]
 TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) starting timer T3169 [RACH (new 
UL-TBF)] with 5 sec. 0 microsec, cur_fn=0
-TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) [UPLINK] START
-TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) RX: [PCU <- BTS] RACH qbit-ta=31 
ra=0x78, Fn=2654167  (17,25,9)
-TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) TX: START Immediate Assignment 
Uplink (AGCH)
- - TRX=0 (0) TS=7 TA=7 TSC=0 TFI=0 USF=0
+TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) Allocated due to [EGPRS Packet] 
Channel Request on CCCH
+Tx RR Immediate Assignment on AGCH
 MS requests UL TBF on RACH, so we provide one: ra=0x79 Fn=2654167 qta=31 
is_11bit=0:
 Creating MS object, TLLI = 0x00000000
 ********** UL-TBF starts here **********
@@ -6228,10 +6211,8 @@
 TBF(TFI=1 TLLI=0x00000000 DIR=UL STATE=NULL) changes state from NULL to FLOW
 TBF(TFI=1 TLLI=0x00000000 DIR=UL STATE=FLOW) set ass. type CCCH [prev CCCH:0, 
PACCH:0]
 TBF(TFI=1 TLLI=0x00000000 DIR=UL STATE=FLOW) starting timer T3169 [RACH (new 
UL-TBF)] with 5 sec. 0 microsec, cur_fn=0
-TBF(TFI=1 TLLI=0x00000000 DIR=UL STATE=FLOW) [UPLINK] START
-TBF(TFI=1 TLLI=0x00000000 DIR=UL STATE=FLOW) RX: [PCU <- BTS] RACH qbit-ta=31 
ra=0x79, Fn=2654167  (17,25,9)
-TBF(TFI=1 TLLI=0x00000000 DIR=UL STATE=FLOW) TX: START Immediate Assignment 
Uplink (AGCH)
- - TRX=0 (0) TS=7 TA=7 TSC=0 TFI=1 USF=1
+TBF(TFI=1 TLLI=0x00000000 DIR=UL STATE=FLOW) Allocated due to [EGPRS Packet] 
Channel Request on CCCH
+Tx RR Immediate Assignment on AGCH
 MS requests UL TBF on RACH, so we provide one: ra=0x7a Fn=2654167 qta=31 
is_11bit=0:
 Creating MS object, TLLI = 0x00000000
 ********** UL-TBF starts here **********
@@ -6253,10 +6234,8 @@
 TBF(TFI=2 TLLI=0x00000000 DIR=UL STATE=NULL) changes state from NULL to FLOW
 TBF(TFI=2 TLLI=0x00000000 DIR=UL STATE=FLOW) set ass. type CCCH [prev CCCH:0, 
PACCH:0]
 TBF(TFI=2 TLLI=0x00000000 DIR=UL STATE=FLOW) starting timer T3169 [RACH (new 
UL-TBF)] with 5 sec. 0 microsec, cur_fn=0
-TBF(TFI=2 TLLI=0x00000000 DIR=UL STATE=FLOW) [UPLINK] START
-TBF(TFI=2 TLLI=0x00000000 DIR=UL STATE=FLOW) RX: [PCU <- BTS] RACH qbit-ta=31 
ra=0x7a, Fn=2654167  (17,25,9)
-TBF(TFI=2 TLLI=0x00000000 DIR=UL STATE=FLOW) TX: START Immediate Assignment 
Uplink (AGCH)
- - TRX=0 (0) TS=7 TA=7 TSC=0 TFI=2 USF=2
+TBF(TFI=2 TLLI=0x00000000 DIR=UL STATE=FLOW) Allocated due to [EGPRS Packet] 
Channel Request on CCCH
+Tx RR Immediate Assignment on AGCH
 MS requests UL TBF on RACH, so we provide one: ra=0x7b Fn=2654167 qta=31 
is_11bit=0:
 Creating MS object, TLLI = 0x00000000
 ********** UL-TBF starts here **********
@@ -6278,10 +6257,8 @@
 TBF(TFI=3 TLLI=0x00000000 DIR=UL STATE=NULL) changes state from NULL to FLOW
 TBF(TFI=3 TLLI=0x00000000 DIR=UL STATE=FLOW) set ass. type CCCH [prev CCCH:0, 
PACCH:0]
 TBF(TFI=3 TLLI=0x00000000 DIR=UL STATE=FLOW) starting timer T3169 [RACH (new 
UL-TBF)] with 5 sec. 0 microsec, cur_fn=0
-TBF(TFI=3 TLLI=0x00000000 DIR=UL STATE=FLOW) [UPLINK] START
-TBF(TFI=3 TLLI=0x00000000 DIR=UL STATE=FLOW) RX: [PCU <- BTS] RACH qbit-ta=31 
ra=0x7b, Fn=2654167  (17,25,9)
-TBF(TFI=3 TLLI=0x00000000 DIR=UL STATE=FLOW) TX: START Immediate Assignment 
Uplink (AGCH)
- - TRX=0 (0) TS=7 TA=7 TSC=0 TFI=3 USF=3
+TBF(TFI=3 TLLI=0x00000000 DIR=UL STATE=FLOW) Allocated due to [EGPRS Packet] 
Channel Request on CCCH
+Tx RR Immediate Assignment on AGCH
 MS requests UL TBF on RACH, so we provide one: ra=0x7c Fn=2654167 qta=31 
is_11bit=0:
 Creating MS object, TLLI = 0x00000000
 ********** UL-TBF starts here **********
@@ -6303,10 +6280,8 @@
 TBF(TFI=4 TLLI=0x00000000 DIR=UL STATE=NULL) changes state from NULL to FLOW
 TBF(TFI=4 TLLI=0x00000000 DIR=UL STATE=FLOW) set ass. type CCCH [prev CCCH:0, 
PACCH:0]
 TBF(TFI=4 TLLI=0x00000000 DIR=UL STATE=FLOW) starting timer T3169 [RACH (new 
UL-TBF)] with 5 sec. 0 microsec, cur_fn=0
-TBF(TFI=4 TLLI=0x00000000 DIR=UL STATE=FLOW) [UPLINK] START
-TBF(TFI=4 TLLI=0x00000000 DIR=UL STATE=FLOW) RX: [PCU <- BTS] RACH qbit-ta=31 
ra=0x7c, Fn=2654167  (17,25,9)
-TBF(TFI=4 TLLI=0x00000000 DIR=UL STATE=FLOW) TX: START Immediate Assignment 
Uplink (AGCH)
- - TRX=0 (0) TS=7 TA=7 TSC=0 TFI=4 USF=4
+TBF(TFI=4 TLLI=0x00000000 DIR=UL STATE=FLOW) Allocated due to [EGPRS Packet] 
Channel Request on CCCH
+Tx RR Immediate Assignment on AGCH
 MS requests UL TBF on RACH, so we provide one: ra=0x7d Fn=2654167 qta=31 
is_11bit=0:
 Creating MS object, TLLI = 0x00000000
 ********** UL-TBF starts here **********
@@ -6328,10 +6303,8 @@
 TBF(TFI=5 TLLI=0x00000000 DIR=UL STATE=NULL) changes state from NULL to FLOW
 TBF(TFI=5 TLLI=0x00000000 DIR=UL STATE=FLOW) set ass. type CCCH [prev CCCH:0, 
PACCH:0]
 TBF(TFI=5 TLLI=0x00000000 DIR=UL STATE=FLOW) starting timer T3169 [RACH (new 
UL-TBF)] with 5 sec. 0 microsec, cur_fn=0
-TBF(TFI=5 TLLI=0x00000000 DIR=UL STATE=FLOW) [UPLINK] START
-TBF(TFI=5 TLLI=0x00000000 DIR=UL STATE=FLOW) RX: [PCU <- BTS] RACH qbit-ta=31 
ra=0x7d, Fn=2654167  (17,25,9)
-TBF(TFI=5 TLLI=0x00000000 DIR=UL STATE=FLOW) TX: START Immediate Assignment 
Uplink (AGCH)
- - TRX=0 (0) TS=7 TA=7 TSC=0 TFI=5 USF=5
+TBF(TFI=5 TLLI=0x00000000 DIR=UL STATE=FLOW) Allocated due to [EGPRS Packet] 
Channel Request on CCCH
+Tx RR Immediate Assignment on AGCH
 MS requests UL TBF on RACH, so we provide one: ra=0x7e Fn=2654167 qta=31 
is_11bit=0:
 Creating MS object, TLLI = 0x00000000
 ********** UL-TBF starts here **********
@@ -6353,10 +6326,8 @@
 TBF(TFI=6 TLLI=0x00000000 DIR=UL STATE=NULL) changes state from NULL to FLOW
 TBF(TFI=6 TLLI=0x00000000 DIR=UL STATE=FLOW) set ass. type CCCH [prev CCCH:0, 
PACCH:0]
 TBF(TFI=6 TLLI=0x00000000 DIR=UL STATE=FLOW) starting timer T3169 [RACH (new 
UL-TBF)] with 5 sec. 0 microsec, cur_fn=0
-TBF(TFI=6 TLLI=0x00000000 DIR=UL STATE=FLOW) [UPLINK] START
-TBF(TFI=6 TLLI=0x00000000 DIR=UL STATE=FLOW) RX: [PCU <- BTS] RACH qbit-ta=31 
ra=0x7e, Fn=2654167  (17,25,9)
-TBF(TFI=6 TLLI=0x00000000 DIR=UL STATE=FLOW) TX: START Immediate Assignment 
Uplink (AGCH)
- - TRX=0 (0) TS=7 TA=7 TSC=0 TFI=6 USF=6
+TBF(TFI=6 TLLI=0x00000000 DIR=UL STATE=FLOW) Allocated due to [EGPRS Packet] 
Channel Request on CCCH
+Tx RR Immediate Assignment on AGCH
 MS requests UL TBF on RACH, so we provide one: ra=0x7f Fn=2654167 qta=31 
is_11bit=0:
 Creating MS object, TLLI = 0x00000000
 ********** UL-TBF starts here **********
@@ -6371,21 +6342,22 @@
 - Skipping TS 6, because not enabled
 - Skipping TS 7, because no USF available
 [UL] algo A <single> (suggested TRX: -1): failed to allocate a TS, no USF 
available
-No PDCH resource sending Immediate Assignment Uplink (AGCH) reject
+No PDCH resource for Uplink TBF
+Tx RR Immediate Assignment Reject on AGCH
 === end test_immediate_assign_rej_multi_block ===
 Destroying MS object, TLLI = 0x00000000
 === start test_immediate_assign_rej_single_block ===
 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.
-No PDCH resource for single block allocation.sending Immediate Assignment 
Uplink (AGCH) reject
+No PDCH resource for single block allocation: rc=-22
+Tx RR Immediate Assignment Reject on AGCH
 === end test_immediate_assign_rej_single_block ===
 === start test_tbf_egprs_two_phase_puan ===
 MS requests UL TBF on RACH, so we provide one: ra=0x73 Fn=2654167 qta=31 
is_11bit=0:
 MS requests single block allocation
-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
+(TRX=0 TS=7 FN=2654270) Allocated a single block
+Tx RR Immediate Assignment on AGCH
 Searching for first unallocated TFI: TRX=0
  Found TFI=0.
 +++++++++++++++++++++++++ RX : Uplink Control Block +++++++++++++++++++++++++
@@ -7836,10 +7808,8 @@
 TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=NULL) changes state from NULL to FLOW
 TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) set ass. type CCCH [prev CCCH:0, 
PACCH:0]
 TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) starting timer T3169 [RACH (new 
UL-TBF)] with 5 sec. 0 microsec, cur_fn=0
-TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) [UPLINK] START
-TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) RX: [PCU <- BTS] RACH qbit-ta=31 
ra=0x78, Fn=2654167  (17,25,9)
-TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) TX: START Immediate Assignment 
Uplink (AGCH)
- - TRX=0 (0) TS=7 TA=7 TSC=0 TFI=0 USF=0
+TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=FLOW) Allocated due to [EGPRS Packet] 
Channel Request on CCCH
+Tx RR Immediate Assignment on AGCH
 MS requests UL TBF on RACH, so we provide one: ra=0x79 Fn=2654167 qta=31 
is_11bit=0:
 Creating MS object, TLLI = 0x00000000
 ********** UL-TBF starts here **********
@@ -7861,10 +7831,8 @@
 TBF(TFI=1 TLLI=0x00000000 DIR=UL STATE=NULL) changes state from NULL to FLOW
 TBF(TFI=1 TLLI=0x00000000 DIR=UL STATE=FLOW) set ass. type CCCH [prev CCCH:0, 
PACCH:0]
 TBF(TFI=1 TLLI=0x00000000 DIR=UL STATE=FLOW) starting timer T3169 [RACH (new 
UL-TBF)] with 5 sec. 0 microsec, cur_fn=0
-TBF(TFI=1 TLLI=0x00000000 DIR=UL STATE=FLOW) [UPLINK] START
-TBF(TFI=1 TLLI=0x00000000 DIR=UL STATE=FLOW) RX: [PCU <- BTS] RACH qbit-ta=31 
ra=0x79, Fn=2654167  (17,25,9)
-TBF(TFI=1 TLLI=0x00000000 DIR=UL STATE=FLOW) TX: START Immediate Assignment 
Uplink (AGCH)
- - TRX=0 (0) TS=7 TA=7 TSC=0 TFI=1 USF=1
+TBF(TFI=1 TLLI=0x00000000 DIR=UL STATE=FLOW) Allocated due to [EGPRS Packet] 
Channel Request on CCCH
+Tx RR Immediate Assignment on AGCH
 MS requests UL TBF on RACH, so we provide one: ra=0x7a Fn=2654167 qta=31 
is_11bit=0:
 Creating MS object, TLLI = 0x00000000
 ********** UL-TBF starts here **********
@@ -7886,10 +7854,8 @@
 TBF(TFI=2 TLLI=0x00000000 DIR=UL STATE=NULL) changes state from NULL to FLOW
 TBF(TFI=2 TLLI=0x00000000 DIR=UL STATE=FLOW) set ass. type CCCH [prev CCCH:0, 
PACCH:0]
 TBF(TFI=2 TLLI=0x00000000 DIR=UL STATE=FLOW) starting timer T3169 [RACH (new 
UL-TBF)] with 5 sec. 0 microsec, cur_fn=0
-TBF(TFI=2 TLLI=0x00000000 DIR=UL STATE=FLOW) [UPLINK] START
-TBF(TFI=2 TLLI=0x00000000 DIR=UL STATE=FLOW) RX: [PCU <- BTS] RACH qbit-ta=31 
ra=0x7a, Fn=2654167  (17,25,9)
-TBF(TFI=2 TLLI=0x00000000 DIR=UL STATE=FLOW) TX: START Immediate Assignment 
Uplink (AGCH)
- - TRX=0 (0) TS=7 TA=7 TSC=0 TFI=2 USF=2
+TBF(TFI=2 TLLI=0x00000000 DIR=UL STATE=FLOW) Allocated due to [EGPRS Packet] 
Channel Request on CCCH
+Tx RR Immediate Assignment on AGCH
 MS requests UL TBF on RACH, so we provide one: ra=0x7b Fn=2654167 qta=31 
is_11bit=0:
 Creating MS object, TLLI = 0x00000000
 ********** UL-TBF starts here **********
@@ -7911,10 +7877,8 @@
 TBF(TFI=3 TLLI=0x00000000 DIR=UL STATE=NULL) changes state from NULL to FLOW
 TBF(TFI=3 TLLI=0x00000000 DIR=UL STATE=FLOW) set ass. type CCCH [prev CCCH:0, 
PACCH:0]
 TBF(TFI=3 TLLI=0x00000000 DIR=UL STATE=FLOW) starting timer T3169 [RACH (new 
UL-TBF)] with 5 sec. 0 microsec, cur_fn=0
-TBF(TFI=3 TLLI=0x00000000 DIR=UL STATE=FLOW) [UPLINK] START
-TBF(TFI=3 TLLI=0x00000000 DIR=UL STATE=FLOW) RX: [PCU <- BTS] RACH qbit-ta=31 
ra=0x7b, Fn=2654167  (17,25,9)
-TBF(TFI=3 TLLI=0x00000000 DIR=UL STATE=FLOW) TX: START Immediate Assignment 
Uplink (AGCH)
- - TRX=0 (0) TS=7 TA=7 TSC=0 TFI=3 USF=3
+TBF(TFI=3 TLLI=0x00000000 DIR=UL STATE=FLOW) Allocated due to [EGPRS Packet] 
Channel Request on CCCH
+Tx RR Immediate Assignment on AGCH
 MS requests UL TBF on RACH, so we provide one: ra=0x7c Fn=2654167 qta=31 
is_11bit=0:
 Creating MS object, TLLI = 0x00000000
 ********** UL-TBF starts here **********
@@ -7936,10 +7900,8 @@
 TBF(TFI=4 TLLI=0x00000000 DIR=UL STATE=NULL) changes state from NULL to FLOW
 TBF(TFI=4 TLLI=0x00000000 DIR=UL STATE=FLOW) set ass. type CCCH [prev CCCH:0, 
PACCH:0]
 TBF(TFI=4 TLLI=0x00000000 DIR=UL STATE=FLOW) starting timer T3169 [RACH (new 
UL-TBF)] with 5 sec. 0 microsec, cur_fn=0
-TBF(TFI=4 TLLI=0x00000000 DIR=UL STATE=FLOW) [UPLINK] START
-TBF(TFI=4 TLLI=0x00000000 DIR=UL STATE=FLOW) RX: [PCU <- BTS] RACH qbit-ta=31 
ra=0x7c, Fn=2654167  (17,25,9)
-TBF(TFI=4 TLLI=0x00000000 DIR=UL STATE=FLOW) TX: START Immediate Assignment 
Uplink (AGCH)
- - TRX=0 (0) TS=7 TA=7 TSC=0 TFI=4 USF=4
+TBF(TFI=4 TLLI=0x00000000 DIR=UL STATE=FLOW) Allocated due to [EGPRS Packet] 
Channel Request on CCCH
+Tx RR Immediate Assignment on AGCH
 MS requests UL TBF on RACH, so we provide one: ra=0x7d Fn=2654167 qta=31 
is_11bit=0:
 Creating MS object, TLLI = 0x00000000
 ********** UL-TBF starts here **********
@@ -7961,10 +7923,8 @@
 TBF(TFI=5 TLLI=0x00000000 DIR=UL STATE=NULL) changes state from NULL to FLOW
 TBF(TFI=5 TLLI=0x00000000 DIR=UL STATE=FLOW) set ass. type CCCH [prev CCCH:0, 
PACCH:0]
 TBF(TFI=5 TLLI=0x00000000 DIR=UL STATE=FLOW) starting timer T3169 [RACH (new 
UL-TBF)] with 5 sec. 0 microsec, cur_fn=0
-TBF(TFI=5 TLLI=0x00000000 DIR=UL STATE=FLOW) [UPLINK] START
-TBF(TFI=5 TLLI=0x00000000 DIR=UL STATE=FLOW) RX: [PCU <- BTS] RACH qbit-ta=31 
ra=0x7d, Fn=2654167  (17,25,9)
-TBF(TFI=5 TLLI=0x00000000 DIR=UL STATE=FLOW) TX: START Immediate Assignment 
Uplink (AGCH)
- - TRX=0 (0) TS=7 TA=7 TSC=0 TFI=5 USF=5
+TBF(TFI=5 TLLI=0x00000000 DIR=UL STATE=FLOW) Allocated due to [EGPRS Packet] 
Channel Request on CCCH
+Tx RR Immediate Assignment on AGCH
 MS requests UL TBF on RACH, so we provide one: ra=0x7e Fn=2654167 qta=31 
is_11bit=0:
 Creating MS object, TLLI = 0x00000000
 ********** UL-TBF starts here **********
@@ -7986,10 +7946,8 @@
 TBF(TFI=6 TLLI=0x00000000 DIR=UL STATE=NULL) changes state from NULL to FLOW
 TBF(TFI=6 TLLI=0x00000000 DIR=UL STATE=FLOW) set ass. type CCCH [prev CCCH:0, 
PACCH:0]
 TBF(TFI=6 TLLI=0x00000000 DIR=UL STATE=FLOW) starting timer T3169 [RACH (new 
UL-TBF)] with 5 sec. 0 microsec, cur_fn=0
-TBF(TFI=6 TLLI=0x00000000 DIR=UL STATE=FLOW) [UPLINK] START
-TBF(TFI=6 TLLI=0x00000000 DIR=UL STATE=FLOW) RX: [PCU <- BTS] RACH qbit-ta=31 
ra=0x7e, Fn=2654167  (17,25,9)
-TBF(TFI=6 TLLI=0x00000000 DIR=UL STATE=FLOW) TX: START Immediate Assignment 
Uplink (AGCH)
- - TRX=0 (0) TS=7 TA=7 TSC=0 TFI=6 USF=6
+TBF(TFI=6 TLLI=0x00000000 DIR=UL STATE=FLOW) Allocated due to [EGPRS Packet] 
Channel Request on CCCH
+Tx RR Immediate Assignment on AGCH
 +++++++++++++++++++++++++ RX : Uplink Control Block +++++++++++++++++++++++++
 ------------------------- RX : Uplink Control Block -------------------------
 Creating MS object, TLLI = 0x00000000

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

Gerrit-Project: osmo-pcu
Gerrit-Branch: master
Gerrit-Change-Id: I5fe7e0f51bf5c9eac073935cc4f4edd667c67c6e
Gerrit-Change-Number: 18386
Gerrit-PatchSet: 1
Gerrit-Owner: fixeria <axilira...@gmail.com>
Gerrit-MessageType: newchange

Reply via email to