Harald Welte has submitted this change and it was merged.

Change subject: TBF: add helpers for assignment type handling
......................................................................


TBF: add helpers for assignment type handling

* add function to set/unset given assignment type
* log assignment type flag changes
* update tests output with additional logs

This enables us to carefully track the TBF assignment type transitions.

Change-Id: I3fe9d52472be8b7f257e8326b2f84e8e7d7bd1f4
Related: OS#1759
---
M src/bts.cpp
M src/tbf.h
M src/tbf_dl.cpp
M tests/tbf/TbfTest.err
4 files changed, 86 insertions(+), 10 deletions(-)

Approvals:
  Harald Welte: Looks good to me, approved
  Jenkins Builder: Verified



diff --git a/src/bts.cpp b/src/bts.cpp
index 72e1621..3d29ad6 100644
--- a/src/bts.cpp
+++ b/src/bts.cpp
@@ -759,7 +759,7 @@
                } else {
                        tbf->set_ta(ta);
                        TBF_SET_STATE(tbf, GPRS_RLCMAC_FLOW);
-                       tbf->state_flags |= (1 << GPRS_RLCMAC_FLAG_CCCH);
+                       TBF_ASS_TYPE_SET(tbf, GPRS_RLCMAC_FLAG_CCCH);
                        T_START(tbf, T3169, m_bts.t3169, 0, "RACH (new 
UL-TBF)", true);
                        LOGPTBF(tbf, LOGL_DEBUG, "[UPLINK] START\n");
                        LOGPTBF(tbf, LOGL_DEBUG, "RX: [PCU <- BTS] RACH "
@@ -1042,7 +1042,7 @@
                        LOGPTBF(new_tbf, LOGL_INFO,
                                "The TBF has been confirmed on the PACCH, "
                                "changed type from CCCH to PACCH\n");
-                       new_tbf->state_flags |= (1 << GPRS_RLCMAC_FLAG_PACCH);
+                       TBF_ASS_TYPE_SET(new_tbf, GPRS_RLCMAC_FLAG_PACCH);
                }
                TBF_SET_STATE(new_tbf, GPRS_RLCMAC_FLOW);
                /* stop pending assignment timer */
diff --git a/src/tbf.h b/src/tbf.h
index 803ea33..2ed63f9 100644
--- a/src/tbf.h
+++ b/src/tbf.h
@@ -191,6 +191,8 @@
 #define TBF_POLL_SCHED_SET(t) do { t->poll_sched_set(__FILE__, __LINE__); } 
while(0)
 #define TBF_POLL_SCHED_UNSET(t) do { t->poll_sched_unset(__FILE__, __LINE__); 
} while(0)
 #define TBF_SET_ASS_ON(t, fl, chk) do { t->set_assigned_on(fl, chk, __FILE__, 
__LINE__); } while(0)
+#define TBF_ASS_TYPE_SET(t, kind) do { t->ass_type_mod(kind, false, __FILE__, 
__LINE__); } while(0)
+#define TBF_ASS_TYPE_UNSET(t, kind) do { t->ass_type_mod(kind, true, __FILE__, 
__LINE__); } while(0)
 
 struct gprs_rlcmac_tbf {
        gprs_rlcmac_tbf(BTS *bts_, gprs_rlcmac_tbf_direction dir);
@@ -213,6 +215,7 @@
        void check_pending_ass();
        bool check_n_clear(uint8_t state_flag);
        void set_assigned_on(uint8_t state_flag, bool check_ccch, const char 
*file, int line);
+       void ass_type_mod(uint8_t t, bool unset, const char *file, int line);
        const char *state_name() const;
 
        const char *name() const;
@@ -422,11 +425,57 @@
        set_state(GPRS_RLCMAC_ASSIGN, file, line);
        if (check_ccch) {
                if (!(state_flags & (1 << GPRS_RLCMAC_FLAG_CCCH)))
-                       state_flags |= (1 << state_flag);
+                       ass_type_mod(state_flag, false, file, line);
        } else
                state_flags |= (1 << state_flag);
 }
 
+inline void gprs_rlcmac_tbf::ass_type_mod(uint8_t t, bool unset, const char 
*file, int line)
+{
+       const char *ch = "UNKNOWN";
+       switch (t) {
+       case GPRS_RLCMAC_FLAG_CCCH:
+               if (unset) {
+                       if (!(state_flags & (1 << GPRS_RLCMAC_FLAG_CCCH)))
+                               return;
+               } else {
+                       if (state_flags & (1 << GPRS_RLCMAC_FLAG_CCCH))
+                               LOGPSRC(DTBF, LOGL_ERROR, file, line,
+                                       "%s attempted to set ass. type CCCH 
which is already set.\n",
+                                       tbf_name(this));
+               }
+               ch = "CCCH";
+               break;
+       case GPRS_RLCMAC_FLAG_PACCH:
+               if (unset) {
+                       if (!(state_flags & (1 << GPRS_RLCMAC_FLAG_PACCH)))
+                               return;
+               } else {
+                       if (state_flags & (1 << GPRS_RLCMAC_FLAG_PACCH))
+                               LOGPSRC(DTBF, LOGL_ERROR, file, line,
+                                       "%s attempted to set ass. type PACCH 
which is already set.\n",
+                                       tbf_name(this));
+               }
+               ch = "PACCH";
+               break;
+       default:
+               LOGPSRC(DTBF, LOGL_ERROR, file, line, "%s attempted to %sset 
unexpected ass. type %d - FIXME!\n",
+                       tbf_name(this), unset ? "un" : "", t);
+               return;
+       }
+
+       LOGPSRC(DTBF, LOGL_INFO, file, line, "%s %sset ass. type %s [prev 
CCCH:%u, PACCH:%u]\n",
+               tbf_name(this), unset ? "un" : "", ch,
+               state_flags & (1 << GPRS_RLCMAC_FLAG_CCCH),
+               state_flags & (1 << GPRS_RLCMAC_FLAG_PACCH));
+
+       if (unset) {
+               state_flags &= GPRS_RLCMAC_FLAG_TO_MASK; /* keep to flags */
+               state_flags &= ~(1 << t);
+       } else
+               state_flags |= (1 << t);
+}
+
 inline void gprs_rlcmac_tbf::set_state(enum gprs_rlcmac_tbf_state new_state, 
const char *file, int line)
 {
        LOGPSRC(DTBF, LOGL_DEBUG, file, line, "%s changes state from %s to 
%s\n",
diff --git a/src/tbf_dl.cpp b/src/tbf_dl.cpp
index 0587a4a..dc4fa6a 100644
--- a/src/tbf_dl.cpp
+++ b/src/tbf_dl.cpp
@@ -1104,9 +1104,7 @@
        m_wait_confirm = 0;
        m_window.reset();
 
-       /* keep to flags */
-       state_flags &= GPRS_RLCMAC_FLAG_TO_MASK;
-       state_flags &= ~(1 << GPRS_RLCMAC_FLAG_CCCH);
+       TBF_ASS_TYPE_UNSET(this, GPRS_RLCMAC_FLAG_CCCH);
 
        return 0;
 }
@@ -1132,9 +1130,7 @@
        /* reset rlc states */
        m_window.reset();
 
-       /* keep to flags */
-       state_flags &= GPRS_RLCMAC_FLAG_TO_MASK;
-       state_flags &= ~(1 << GPRS_RLCMAC_FLAG_CCCH);
+       TBF_ASS_TYPE_UNSET(this, GPRS_RLCMAC_FLAG_CCCH);
 
        return 0;
 }
diff --git a/tests/tbf/TbfTest.err b/tests/tbf/TbfTest.err
index d207a1d..dd1c9e4 100644
--- a/tests/tbf/TbfTest.err
+++ b/tests/tbf/TbfTest.err
@@ -107,6 +107,7 @@
 TBF(TFI=1 TLLI=0xffeeddcc DIR=DL STATE=NULL) Send dowlink assignment on PACCH, 
because TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE) exists
 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE) changes DL ASS state from 
GPRS_RLCMAC_DL_ASS_WAIT_ACK to GPRS_RLCMAC_DL_ASS_SEND_ASS
 TBF(TFI=1 TLLI=0xffeeddcc DIR=DL STATE=NULL) changes state from NULL to ASSIGN
+TBF(TFI=1 TLLI=0xffeeddcc DIR=DL STATE=ASSIGN) set ass. type PACCH [prev 
CCCH:0, PACCH:0]
 TBF(TFI=1 TLLI=0xffeeddcc DIR=DL STATE=ASSIGN) starting timer T0 [assignment 
(PACCH)] with 2 sec. 0 microsec.
 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE) changes DL ASS state from 
GPRS_RLCMAC_DL_ASS_SEND_ASS to GPRS_RLCMAC_DL_ASS_NONE
 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE) changes state from WAIT 
RELEASE to RELEASING
@@ -194,6 +195,7 @@
 TBF(TFI=1 TLLI=0xffeeddcc DIR=DL STATE=NULL) Send dowlink assignment on PACCH, 
because TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE) exists
 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE) changes DL ASS state from 
GPRS_RLCMAC_DL_ASS_WAIT_ACK to GPRS_RLCMAC_DL_ASS_SEND_ASS
 TBF(TFI=1 TLLI=0xffeeddcc DIR=DL STATE=NULL) changes state from NULL to ASSIGN
+TBF(TFI=1 TLLI=0xffeeddcc DIR=DL STATE=ASSIGN) set ass. type PACCH [prev 
CCCH:0, PACCH:0]
 TBF(TFI=1 TLLI=0xffeeddcc DIR=DL STATE=ASSIGN) starting timer T0 [assignment 
(PACCH)] with 2 sec. 0 microsec.
 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE) changes DL ASS state from 
GPRS_RLCMAC_DL_ASS_SEND_ASS to GPRS_RLCMAC_DL_ASS_NONE
 TBF(TFI=1 TLLI=0xffeeddcc DIR=DL STATE=ASSIGN) changes state from ASSIGN to 
RELEASING
@@ -1363,6 +1365,7 @@
 Modifying MS object, TLLI = 0xc0123456, TA 220 -> 0
 TBF(TFI=0 TLLI=0xc0123456 DIR=DL STATE=ASSIGN) appending 19 bytes
 TBF(TFI=0 TLLI=0xc0123456 DIR=DL STATE=ASSIGN) changes state from ASSIGN to 
RELEASING
+TBF(TFI=0 TLLI=0xc0123456 DIR=DL STATE=RELEASING) unset ass. type CCCH [prev 
CCCH:1, PACCH:0]
 TBF(TFI=0 TLLI=0xc0123456 DIR=DL STATE=RELEASING) free
 PDCH(TS 4, TRX 0): Detaching TBF(TFI=0 TLLI=0xc0123456 DIR=DL 
STATE=RELEASING), 0 TBFs, USFs = 00, TFIs = 00000000.
 Detaching TBF from MS object, TLLI = 0xc0123456, TBF = TBF(TFI=0 
TLLI=0xc0123456 DIR=DL STATE=RELEASING)
@@ -1442,6 +1445,7 @@
 TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=NULL) Allocated: trx = 0, ul_slots = 
80, dl_slots = 00
 Modifying MS object, TLLI = 0x00000000, TA 220 -> 7
 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 0 sec. 0 microsec.
 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)
@@ -1568,6 +1572,7 @@
 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=NULL) Send dowlink assignment on PACCH, 
because TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) exists
 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) changes DL ASS state from 
GPRS_RLCMAC_DL_ASS_NONE to GPRS_RLCMAC_DL_ASS_SEND_ASS
 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=NULL) changes state from NULL to ASSIGN
+TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) set ass. type PACCH [prev 
CCCH:0, PACCH:0]
 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) starting timer T0 [assignment 
(PACCH)] with 2 sec. 0 microsec.
 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) appending 4 bytes
 MS requests UL TBF on RACH, so we provide one: ra=0x73 Fn=2654167 qta=31 
is_11bit=0:
@@ -1646,6 +1651,7 @@
 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=NULL) Send dowlink assignment on PACCH, 
because TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) exists
 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) changes DL ASS state from 
GPRS_RLCMAC_DL_ASS_NONE to GPRS_RLCMAC_DL_ASS_SEND_ASS
 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=NULL) changes state from NULL to ASSIGN
+TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) set ass. type PACCH [prev 
CCCH:0, PACCH:0]
 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) starting timer T0 [assignment 
(PACCH)] with 2 sec. 0 microsec.
 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) appending 10 bytes
 Old MS: TLLI = 0xf1223344, TA = 7, IMSI = 0011223344, LLC = 1
@@ -1840,6 +1846,7 @@
 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=NULL) Send dowlink assignment on PACCH, 
because TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) exists
 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) changes DL ASS state from 
GPRS_RLCMAC_DL_ASS_NONE to GPRS_RLCMAC_DL_ASS_SEND_ASS
 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=NULL) changes state from NULL to ASSIGN
+TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) set ass. type PACCH [prev 
CCCH:0, PACCH:0]
 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) starting timer T0 [assignment 
(PACCH)] with 2 sec. 0 microsec.
 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) appending 20 bytes
 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) appending 20 bytes
@@ -1918,6 +1925,7 @@
 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=NULL) Send dowlink assignment on PACCH, 
because TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) exists
 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) changes DL ASS state from 
GPRS_RLCMAC_DL_ASS_NONE to GPRS_RLCMAC_DL_ASS_SEND_ASS
 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=NULL) changes state from NULL to ASSIGN
+TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) set ass. type PACCH [prev 
CCCH:0, PACCH:0]
 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) starting timer T0 [assignment 
(PACCH)] with 2 sec. 0 microsec.
 Got CS-1 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=184
 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) UL DATA TFI=0 received (V(Q)=0 .. 
V(R)=0)
@@ -2005,6 +2013,7 @@
 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=NULL) Send dowlink assignment on PACCH, 
because TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) exists
 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) changes DL ASS state from 
GPRS_RLCMAC_DL_ASS_NONE to GPRS_RLCMAC_DL_ASS_SEND_ASS
 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=NULL) changes state from NULL to ASSIGN
+TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) set ass. type PACCH [prev 
CCCH:0, PACCH:0]
 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) starting timer T0 [assignment 
(PACCH)] with 2 sec. 0 microsec.
 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) appending 20 bytes
 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) appending 20 bytes
@@ -2037,6 +2046,7 @@
 TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=NULL) Allocated: trx = 0, ul_slots = 
80, dl_slots = 00
 Modifying MS object, TLLI = 0x00000000, TA 220 -> 7
 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 0 sec. 0 microsec.
 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)
@@ -2149,6 +2159,7 @@
 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=NULL) Send dowlink assignment on PACCH, 
because TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) exists
 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) changes DL ASS state from 
GPRS_RLCMAC_DL_ASS_NONE to GPRS_RLCMAC_DL_ASS_SEND_ASS
 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=NULL) changes state from NULL to ASSIGN
+TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) set ass. type PACCH [prev 
CCCH:0, PACCH:0]
 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) starting timer T0 [assignment 
(PACCH)] with 2 sec. 0 microsec.
 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) appending 13 bytes
 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) appending 13 bytes
@@ -2780,12 +2791,13 @@
 TBF(TFI=1 TLLI=0xf1223344 DIR=DL STATE=NULL) Send dowlink assignment on PACCH, 
because TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=WAIT RELEASE) exists
 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=WAIT RELEASE) changes DL ASS state from 
GPRS_RLCMAC_DL_ASS_NONE to GPRS_RLCMAC_DL_ASS_SEND_ASS
 TBF(TFI=1 TLLI=0xf1223344 DIR=DL STATE=NULL) changes state from NULL to ASSIGN
+TBF(TFI=1 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) set ass. type PACCH [prev 
CCCH:0, PACCH:0]
 TBF(TFI=1 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) starting timer T0 [assignment 
(PACCH)] with 2 sec. 0 microsec.
 Received RTS for PDCH: TRX=0 TS=7 FN=2654400 block_nr=2 scheduling USF=0 for 
required uplink resource of UL TFI=0
 TBF(TFI=1 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) start Packet Downlink 
Assignment (PACCH)
 +++++++++++++++++++++++++ TX : Packet Downlink Assignment 
+++++++++++++++++++++++++
 ------------------------- TX : Packet Downlink Assignment 
-------------------------
-TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=WAIT RELEASE) Scheduled DL Assignment 
polling on UNKNOWN (FN=2654413, TS=7)
+TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=WAIT RELEASE) Scheduled DL Assignment 
polling on PACCH (FN=2654413, TS=7)
 Scheduling control message at RTS for TBF(TFI=0 TLLI=0xf1223344 DIR=DL 
STATE=WAIT RELEASE) (TRX=0, TS=7)
 +++++++++++++++++++++++++ RX : Uplink Control Block +++++++++++++++++++++++++
 ------------------------- RX : Uplink Control Block -------------------------
@@ -3169,6 +3181,7 @@
 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=NULL EGPRS) Send dowlink assignment on 
PACCH, because TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) exists
 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) changes DL ASS state from 
GPRS_RLCMAC_DL_ASS_NONE to GPRS_RLCMAC_DL_ASS_SEND_ASS
 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=NULL EGPRS) changes state from NULL to 
ASSIGN
+TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) set ass. type PACCH [prev 
CCCH:0, PACCH:0]
 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) starting timer T0 
[assignment (PACCH)] with 2 sec. 0 microsec.
 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) appending 256 bytes
 MS requests UL TBF on RACH, so we provide one: ra=0x73 Fn=2654167 qta=31 
is_11bit=0:
@@ -3388,6 +3401,7 @@
 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=NULL EGPRS) Send dowlink assignment on 
PACCH, because TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) exists
 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) changes DL ASS state from 
GPRS_RLCMAC_DL_ASS_NONE to GPRS_RLCMAC_DL_ASS_SEND_ASS
 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=NULL EGPRS) changes state from NULL to 
ASSIGN
+TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) set ass. type PACCH [prev 
CCCH:0, PACCH:0]
 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) starting timer T0 
[assignment (PACCH)] with 2 sec. 0 microsec.
 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) appending 256 bytes
 Searching for first unallocated TFI: TRX=0
@@ -5887,6 +5901,7 @@
 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=NULL EGPRS) Send dowlink assignment on 
PACCH, because TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) exists
 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) changes DL ASS state from 
GPRS_RLCMAC_DL_ASS_NONE to GPRS_RLCMAC_DL_ASS_SEND_ASS
 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=NULL EGPRS) changes state from NULL to 
ASSIGN
+TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) set ass. type PACCH [prev 
CCCH:0, PACCH:0]
 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) starting timer T0 
[assignment (PACCH)] with 2 sec. 0 microsec.
 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) appending 256 bytes
 ********** DL-TBF starts here **********
@@ -6041,6 +6056,7 @@
 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=NULL EGPRS) Send dowlink assignment on 
PACCH, because TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) exists
 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) changes DL ASS state from 
GPRS_RLCMAC_DL_ASS_NONE to GPRS_RLCMAC_DL_ASS_SEND_ASS
 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=NULL EGPRS) changes state from NULL to 
ASSIGN
+TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) set ass. type PACCH [prev 
CCCH:0, PACCH:0]
 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) starting timer T0 
[assignment (PACCH)] with 2 sec. 0 microsec.
 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) appending 256 bytes
 Searching for first unallocated TFI: TRX=0
@@ -6102,6 +6118,7 @@
 TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=NULL) Allocated: trx = 0, ul_slots = 
80, dl_slots = 00
 Modifying MS object, TLLI = 0x00000000, TA 220 -> 7
 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 0 sec. 0 microsec.
 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)
@@ -6126,6 +6143,7 @@
 TBF(TFI=1 TLLI=0x00000000 DIR=UL STATE=NULL) Allocated: trx = 0, ul_slots = 
80, dl_slots = 00
 Modifying MS object, TLLI = 0x00000000, TA 220 -> 7
 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 0 sec. 0 microsec.
 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)
@@ -6150,6 +6168,7 @@
 TBF(TFI=2 TLLI=0x00000000 DIR=UL STATE=NULL) Allocated: trx = 0, ul_slots = 
80, dl_slots = 00
 Modifying MS object, TLLI = 0x00000000, TA 220 -> 7
 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 0 sec. 0 microsec.
 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)
@@ -6174,6 +6193,7 @@
 TBF(TFI=3 TLLI=0x00000000 DIR=UL STATE=NULL) Allocated: trx = 0, ul_slots = 
80, dl_slots = 00
 Modifying MS object, TLLI = 0x00000000, TA 220 -> 7
 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 0 sec. 0 microsec.
 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)
@@ -6198,6 +6218,7 @@
 TBF(TFI=4 TLLI=0x00000000 DIR=UL STATE=NULL) Allocated: trx = 0, ul_slots = 
80, dl_slots = 00
 Modifying MS object, TLLI = 0x00000000, TA 220 -> 7
 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 0 sec. 0 microsec.
 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)
@@ -6222,6 +6243,7 @@
 TBF(TFI=5 TLLI=0x00000000 DIR=UL STATE=NULL) Allocated: trx = 0, ul_slots = 
80, dl_slots = 00
 Modifying MS object, TLLI = 0x00000000, TA 220 -> 7
 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 0 sec. 0 microsec.
 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)
@@ -6246,6 +6268,7 @@
 TBF(TFI=6 TLLI=0x00000000 DIR=UL STATE=NULL) Allocated: trx = 0, ul_slots = 
80, dl_slots = 00
 Modifying MS object, TLLI = 0x00000000, TA 220 -> 7
 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 0 sec. 0 microsec.
 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)
@@ -6927,6 +6950,7 @@
 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=NULL EGPRS) Send dowlink assignment on 
PACCH, because TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) exists
 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW EGPRS) changes DL ASS state from 
GPRS_RLCMAC_DL_ASS_NONE to GPRS_RLCMAC_DL_ASS_SEND_ASS
 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=NULL EGPRS) changes state from NULL to 
ASSIGN
+TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) set ass. type PACCH [prev 
CCCH:0, PACCH:0]
 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) starting timer T0 
[assignment (PACCH)] with 2 sec. 0 microsec.
 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=ASSIGN EGPRS) appending 256 bytes
 Got MCS-4 RLC block: R=0, SI=0, TFI=0, CPS=0, RSB=0, rc=385
@@ -7715,6 +7739,7 @@
 TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=NULL) Allocated: trx = 0, ul_slots = 
80, dl_slots = 00
 Modifying MS object, TLLI = 0x00000000, TA 220 -> 7
 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 0 sec. 0 microsec.
 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)
@@ -7739,6 +7764,7 @@
 TBF(TFI=1 TLLI=0x00000000 DIR=UL STATE=NULL) Allocated: trx = 0, ul_slots = 
80, dl_slots = 00
 Modifying MS object, TLLI = 0x00000000, TA 220 -> 7
 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 0 sec. 0 microsec.
 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)
@@ -7763,6 +7789,7 @@
 TBF(TFI=2 TLLI=0x00000000 DIR=UL STATE=NULL) Allocated: trx = 0, ul_slots = 
80, dl_slots = 00
 Modifying MS object, TLLI = 0x00000000, TA 220 -> 7
 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 0 sec. 0 microsec.
 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)
@@ -7787,6 +7814,7 @@
 TBF(TFI=3 TLLI=0x00000000 DIR=UL STATE=NULL) Allocated: trx = 0, ul_slots = 
80, dl_slots = 00
 Modifying MS object, TLLI = 0x00000000, TA 220 -> 7
 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 0 sec. 0 microsec.
 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)
@@ -7811,6 +7839,7 @@
 TBF(TFI=4 TLLI=0x00000000 DIR=UL STATE=NULL) Allocated: trx = 0, ul_slots = 
80, dl_slots = 00
 Modifying MS object, TLLI = 0x00000000, TA 220 -> 7
 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 0 sec. 0 microsec.
 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)
@@ -7835,6 +7864,7 @@
 TBF(TFI=5 TLLI=0x00000000 DIR=UL STATE=NULL) Allocated: trx = 0, ul_slots = 
80, dl_slots = 00
 Modifying MS object, TLLI = 0x00000000, TA 220 -> 7
 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 0 sec. 0 microsec.
 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)
@@ -7859,6 +7889,7 @@
 TBF(TFI=6 TLLI=0x00000000 DIR=UL STATE=NULL) Allocated: trx = 0, ul_slots = 
80, dl_slots = 00
 Modifying MS object, TLLI = 0x00000000, TA 220 -> 7
 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 0 sec. 0 microsec.
 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)

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

Gerrit-MessageType: merged
Gerrit-Change-Id: I3fe9d52472be8b7f257e8326b2f84e8e7d7bd1f4
Gerrit-PatchSet: 2
Gerrit-Project: osmo-pcu
Gerrit-Branch: master
Gerrit-Owner: Max <msur...@sysmocom.de>
Gerrit-Reviewer: Harald Welte <lafo...@gnumonks.org>
Gerrit-Reviewer: Jenkins Builder

Reply via email to