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


Change subject: tbf: Get rid of attribute poll_fn
......................................................................

tbf: Get rid of attribute poll_fn

That field is not needed anymore, and it works only under the assumption
that only 1 poll request can be active at a time per TBF, which is not
true.

Change-Id: I63a34a702f028b871530fb7caeb13e8ea1cc78ac
---
M src/bts.cpp
M src/pdch_ul_controller.c
M src/tbf.cpp
M src/tbf.h
M src/tbf_dl.cpp
M tests/tbf/TbfTest.cpp
M tests/tbf/TbfTest.err
7 files changed, 104 insertions(+), 100 deletions(-)



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

diff --git a/src/bts.cpp b/src/bts.cpp
index 0443df6..b61c6b4 100644
--- a/src/bts.cpp
+++ b/src/bts.cpp
@@ -1086,10 +1086,8 @@
                /* limit target TA in range 0..63 bits */
                ta_target = ta_limit(ta_adj);

-               LOGP(DL1IF, LOGL_INFO, "PH-DATA-IND is updating TLLI=0x%08x: TA 
%u -> %u on "
-                               "TRX = %d, TS = %d, FN = %d\n",
-                               tbf->tlli(), tbf->ta(), ta_target,
-                               tbf->trx->trx_no , tbf->poll_ts, tbf->poll_fn);
+               LOGP(DL1IF, LOGL_INFO, "PH-DATA-IND is updating %s: TA %u -> %u 
on "
+                    "TRX = %d\n", tbf_name(tbf), tbf->ta(), ta_target, 
tbf->trx->trx_no);
                tbf->set_ta(ta_target);
        }
 }
@@ -1103,10 +1101,8 @@
                /* limit target TA in range 0..63 bits */
                ta_target = ta_limit(ta);

-               LOGP(DL1IF, LOGL_INFO, "PH-RA-IND is updating TLLI=0x%08x: TA 
%u -> %u on "
-                               "TRX = %d, TS = %d, FN = %d\n",
-                               tbf->tlli(), tbf->ta(), ta_target,
-                               tbf->trx->trx_no , tbf->poll_ts, tbf->poll_fn);
+               LOGP(DL1IF, LOGL_INFO, "PH-RA-IND is updating %s: TA %u -> %u 
on "
+                    "TRX = %d\n", tbf_name(tbf), tbf->ta(), ta_target, 
tbf->trx->trx_no);
                tbf->set_ta(ta_target);
        }
 }
diff --git a/src/pdch_ul_controller.c b/src/pdch_ul_controller.c
index 8fb5582..5911080 100644
--- a/src/pdch_ul_controller.c
+++ b/src/pdch_ul_controller.c
@@ -318,7 +318,7 @@
                        LOGPDCH(ulc->pdch, DRLCMAC, LOGL_NOTICE,
                                "Timeout for registered POLL (FN=%u): %s\n",
                                item->fn, tbf_name(item->tbf_poll.poll_tbf));
-                       tbf_poll_timeout(item->tbf_poll.poll_tbf, 
item->tbf_poll.reason);
+                       tbf_poll_timeout(item->tbf_poll.poll_tbf, item->fn, 
item->tbf_poll.reason);
                        break;
                case PDCH_ULC_NODE_SBA:
                        sba = item->sba.sba;
diff --git a/src/tbf.cpp b/src/tbf.cpp
index 0ea0ceb..92dede5 100644
--- a/src/tbf.cpp
+++ b/src/tbf.cpp
@@ -125,7 +125,6 @@
        first_ts(0),
        first_common_ts(0),
        control_ts(0xff),
-       poll_fn(0),
        poll_ts(0),
        fT(0),
        num_fT_exp(0),
@@ -579,10 +578,9 @@
        /* schedule polling */
        if (pdch_ulc_reserve_tbf_poll(trx->pdch[ts].ulc, new_poll_fn, this, 
reason) < 0) {
                LOGPTBFDL(this, LOGL_ERROR, "Failed scheduling poll on %s 
(FN=%d, TS=%d)\n",
-                         chan, poll_fn, ts);
+                         chan, new_poll_fn, ts);
                return;
        }
-       poll_fn = new_poll_fn;
        poll_ts = ts;

        switch (reason) {
@@ -590,32 +588,32 @@
                ul_ass_state = GPRS_RLCMAC_UL_ASS_WAIT_ACK;

                LOGPTBFDL(this, LOGL_INFO, "Scheduled UL Assignment polling on 
%s (FN=%d, TS=%d)\n",
-                         chan, poll_fn, poll_ts);
+                         chan, new_poll_fn, poll_ts);
                break;
        case PDCH_ULC_POLL_DL_ASS:
                dl_ass_state = GPRS_RLCMAC_DL_ASS_WAIT_ACK;

                LOGPTBFDL(this, LOGL_INFO, "Scheduled DL Assignment polling on 
%s (FN=%d, TS=%d)\n",
-                         chan, poll_fn, poll_ts);
+                         chan, new_poll_fn, poll_ts);
                break;
        case PDCH_ULC_POLL_UL_ACK:
                ul_ack_state = GPRS_RLCMAC_UL_ACK_WAIT_ACK;

                LOGPTBFUL(this, LOGL_DEBUG, "Scheduled UL Acknowledgement 
polling on %s (FN=%d, TS=%d)\n",
-                         chan, poll_fn, poll_ts);
+                         chan, new_poll_fn, poll_ts);
                break;
        case PDCH_ULC_POLL_DL_ACK:
                LOGPTBFDL(this, LOGL_DEBUG, "Scheduled DL Acknowledgement 
polling on %s (FN=%d, TS=%d)\n",
-                         chan, poll_fn, poll_ts);
+                         chan, new_poll_fn, poll_ts);
                break;
        case PDCH_ULC_POLL_CELL_CHG_CONTINUE:
                LOGPTBFDL(this, LOGL_DEBUG, "Scheduled 'Packet Cell Change 
Continue' polling on %s (FN=%d, TS=%d)\n",
-                         chan, poll_fn, poll_ts);
+                         chan, new_poll_fn, poll_ts);
                break;
        }
 }

-void gprs_rlcmac_tbf::poll_timeout(enum pdch_ulc_tbf_poll_reason reason)
+void gprs_rlcmac_tbf::poll_timeout(uint32_t poll_fn, enum 
pdch_ulc_tbf_poll_reason reason)
 {
        uint16_t pgroup;
        gprs_rlcmac_ul_tbf *ul_tbf = as_ul_tbf(this);
@@ -1211,7 +1209,7 @@
        return tbf->set_polling(new_poll_fn, ts, t);
 }

-void tbf_poll_timeout(struct gprs_rlcmac_tbf *tbf, enum 
pdch_ulc_tbf_poll_reason reason)
+void tbf_poll_timeout(struct gprs_rlcmac_tbf *tbf, uint32_t poll_fn, enum 
pdch_ulc_tbf_poll_reason reason)
 {
-       tbf->poll_timeout(reason);
+       tbf->poll_timeout(poll_fn, reason);
 }
diff --git a/src/tbf.h b/src/tbf.h
index cb5aac4..b0bec31 100644
--- a/src/tbf.h
+++ b/src/tbf.h
@@ -193,7 +193,7 @@
 int tbf_assign_control_ts(struct gprs_rlcmac_tbf *tbf);
 int tbf_check_polling(const struct gprs_rlcmac_tbf *tbf, uint32_t fn, uint8_t 
ts, uint32_t *poll_fn, unsigned int *rrbp);
 void tbf_set_polling(struct gprs_rlcmac_tbf *tbf, uint32_t new_poll_fn, 
uint8_t ts, enum pdch_ulc_tbf_poll_reason t);
-void tbf_poll_timeout(struct gprs_rlcmac_tbf *tbf, enum 
pdch_ulc_tbf_poll_reason reason);
+void tbf_poll_timeout(struct gprs_rlcmac_tbf *tbf, uint32_t poll_fn, enum 
pdch_ulc_tbf_poll_reason reason);
 #ifdef __cplusplus
 }
 #endif
@@ -251,7 +251,7 @@
        int check_polling(uint32_t fn, uint8_t ts,
                uint32_t *poll_fn, unsigned int *rrbp) const;
        void set_polling(uint32_t poll_fn, uint8_t ts, enum 
pdch_ulc_tbf_poll_reason reason);
-       void poll_timeout(enum pdch_ulc_tbf_poll_reason reason);
+       void poll_timeout(uint32_t poll_fn, enum pdch_ulc_tbf_poll_reason 
reason);

        /** tlli handling */
        uint32_t tlli() const;
@@ -292,7 +292,6 @@

        gprs_llc m_llc;

-       uint32_t poll_fn; /* frame number to poll */
        uint8_t poll_ts; /* TS to poll */

        gprs_rlc m_rlc;
diff --git a/src/tbf_dl.cpp b/src/tbf_dl.cpp
index 19415f1..c122bba 100644
--- a/src/tbf_dl.cpp
+++ b/src/tbf_dl.cpp
@@ -990,11 +990,11 @@
                        rlc.rrbp = rrbp;
                        rlc.es_p = 1; /* Polling */

-                       m_last_dl_poll_fn = poll_fn;
+                       m_last_dl_poll_fn = new_poll_fn;

                        LOGPTBFDL(this, LOGL_INFO,
                                  "Scheduled Ack/Nack polling on FN=%d, 
TS=%d\n",
-                                 poll_fn, poll_ts);
+                                 new_poll_fn, poll_ts);
                }
        }

diff --git a/tests/tbf/TbfTest.cpp b/tests/tbf/TbfTest.cpp
index 46667b4..8fbdde6 100644
--- a/tests/tbf/TbfTest.cpp
+++ b/tests/tbf/TbfTest.cpp
@@ -651,11 +651,26 @@
        send_ul_mac_block_buf(bts, pdch, fn, &buf[0], num_bytes);
 }

+
+static uint32_t get_poll_fn(struct gprs_rlcmac_tbf *tbf, uint8_t poll_ts)
+{
+       struct gprs_rlcmac_pdch *pdch = &tbf->trx->pdch[poll_ts];
+       struct pdch_ulc *ulc = pdch->ulc;
+       struct rb_node *node;
+       struct pdch_ulc_node *item;
+
+       for (node = rb_first(&ulc->tree_root); node; node = rb_next(node)) {
+               item = container_of(node, struct pdch_ulc_node, node);
+               if (item->type == PDCH_ULC_NODE_TBF_POLL && 
item->tbf_poll.poll_tbf == tbf)
+                       return item->fn;
+       }
+       OSMO_ASSERT(0);
+}
+
 static void send_control_ack(gprs_rlcmac_tbf *tbf)
 {
        RlcMacUplink_t ulreq = {0};

-       OSMO_ASSERT(tbf->poll_fn != 0);
        OSMO_ASSERT(tbf->is_control_ts(tbf->poll_ts));

        ulreq.u.MESSAGE_TYPE = MT_PACKET_CONTROL_ACK;
@@ -665,7 +680,7 @@
        ctrl_ack->PayloadType = GPRS_RLCMAC_CONTROL_BLOCK;
        ctrl_ack->TLLI = tbf->tlli();
        send_ul_mac_block(tbf->bts, tbf->trx->trx_no, tbf->poll_ts,
-               &ulreq, tbf->poll_fn);
+               &ulreq, get_poll_fn(tbf, tbf->poll_ts));
 }

 static void send_empty_block(gprs_rlcmac_tbf *tbf, unsigned ts_no, unsigned fn)
@@ -1924,7 +1939,7 @@

        dl_tbf = ms_dl_tbf(ms1);
        OSMO_ASSERT(dl_tbf);
-       fn = dl_tbf->poll_fn;
+       fn = get_poll_fn(dl_tbf, dl_tbf->poll_ts);
        send_empty_block(dl_tbf, dl_tbf->poll_ts, fn);
        fn = fn_add_blocks(fn, 1);

@@ -2149,7 +2164,7 @@
        ack->DOWNLINK_TFI = dl_tbf1->tfi();
        ack->Ack_Nack_Description.FINAL_ACK_INDICATION = 1;

-       send_ul_mac_block(bts, 0, dl_tbf1->poll_ts, &ulreq, dl_tbf1->poll_fn);
+       send_ul_mac_block(bts, 0, dl_tbf1->poll_ts, &ulreq, 
get_poll_fn(dl_tbf1, dl_tbf1->poll_ts));

        OSMO_ASSERT(dl_tbf1->state_is(GPRS_RLCMAC_WAIT_RELEASE));

diff --git a/tests/tbf/TbfTest.err b/tests/tbf/TbfTest.err
index 811cfaa..b190c9a 100644
--- a/tests/tbf/TbfTest.err
+++ b/tests/tbf/TbfTest.err
@@ -2797,9 +2797,9 @@
 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=FINISHED) appending 21 bytes
 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=FINISHED) appending 21 bytes
 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=FINISHED) appending 21 bytes
-Detected FN jump! 2654288 -> 2654409
-PDCH(bts=0,trx=0,ts=7) FN=2654409 +++++++++++++++++++++++++ RX : Uplink 
Control Block +++++++++++++++++++++++++
-PDCH(bts=0,trx=0,ts=7) FN=2654409 ------------------------- RX : Uplink 
Control Block -------------------------
+Detected FN jump! 2654288 -> 2654379
+PDCH(bts=0,trx=0,ts=7) FN=2654379 +++++++++++++++++++++++++ RX : Uplink 
Control Block +++++++++++++++++++++++++
+PDCH(bts=0,trx=0,ts=7) FN=2654379 ------------------------- RX : Uplink 
Control Block -------------------------
 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=FINISHED) stopping timer T3191 
[ACK/NACK received]
 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=FINISHED) RX: [PCU <- BTS] Packet 
Downlink Ack/Nack
 PDCH(bts=0,trx=0,ts=7) Got GPRS DL ACK bitmap: SSN: 0, BSN 0 to 28 - 1 (28 
blocks), "RRRRRRRRRRRRRRRRRRRRRRRRRRRR"
@@ -2809,7 +2809,7 @@
 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=FINISHED) V(B): (V(A)=28)""(V(S)-1=27)  
A=Acked N=Nacked U=Unacked X=Resend-Unacked I=Invalid
 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=FINISHED) Final ACK received.
 TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=FINISHED) changes state from FINISHED 
to WAIT RELEASE
-TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=WAIT RELEASE) starting timer T3193 
[release (DL-TBF)] with 0 sec. 100000 microsec, cur_fn=2654409
+TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=WAIT RELEASE) starting timer T3193 
[release (DL-TBF)] with 0 sec. 100000 microsec, cur_fn=2654379
 MS(TLLI=0xf1223344, IMSI=0011223344, TA=7, 1/0, UL DL) ********** DL-TBF 
starts here **********
 MS(TLLI=0xf1223344, IMSI=0011223344, TA=7, 1/0, UL DL) Allocating DL TBF
 [DL] algo A <multi> (suggested TRX: 0): Alloc start
@@ -2830,79 +2830,94 @@
 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, cur_fn=2654409
-PDCH(bts=0,trx=0,ts=7) Expiring FN=2654409 but previous FN=2654283 is still 
reserved!
+TBF(TFI=1 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) starting timer T0 [assignment 
(PACCH)] with 2 sec. 0 microsec, cur_fn=2654379
+PDCH(bts=0,trx=0,ts=7) Expiring FN=2654379 but previous FN=2654283 is still 
reserved!
 PDCH(bts=0,trx=0,ts=7) Timeout for registered USF (FN=2654283): TBF(TFI=0 
TLLI=0xf1223344 DIR=UL STATE=FLOW)
 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) N3101 1 => 2 (< MAX 10)
-PDCH(bts=0,trx=0,ts=7) Expiring FN=2654409 but previous FN=2654288 is still 
reserved!
+PDCH(bts=0,trx=0,ts=7) Expiring FN=2654379 but previous FN=2654288 is still 
reserved!
 PDCH(bts=0,trx=0,ts=7) Timeout for registered USF (FN=2654288): TBF(TFI=0 
TLLI=0xf1223344 DIR=UL STATE=FLOW)
 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) N3101 2 => 3 (< MAX 10)
-PDCH(bts=0,trx=0,ts=7) Expiring FN=2654409 but previous FN=2654292 is still 
reserved!
+PDCH(bts=0,trx=0,ts=7) Expiring FN=2654379 but previous FN=2654292 is still 
reserved!
 PDCH(bts=0,trx=0,ts=7) Timeout for registered USF (FN=2654292): TBF(TFI=0 
TLLI=0xf1223344 DIR=UL STATE=FLOW)
 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) N3101 3 => 4 (< MAX 10)
-PDCH(bts=0,trx=0,ts=7) Expiring FN=2654409 but previous FN=2654296 is still 
reserved!
+PDCH(bts=0,trx=0,ts=7) Expiring FN=2654379 but previous FN=2654296 is still 
reserved!
 PDCH(bts=0,trx=0,ts=7) Timeout for registered USF (FN=2654296): TBF(TFI=0 
TLLI=0xf1223344 DIR=UL STATE=FLOW)
 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) N3101 4 => 5 (< MAX 10)
-PDCH(bts=0,trx=0,ts=7) Expiring FN=2654409 but previous FN=2654301 is still 
reserved!
+PDCH(bts=0,trx=0,ts=7) Expiring FN=2654379 but previous FN=2654301 is still 
reserved!
 PDCH(bts=0,trx=0,ts=7) Timeout for registered USF (FN=2654301): TBF(TFI=0 
TLLI=0xf1223344 DIR=UL STATE=FLOW)
 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) N3101 5 => 6 (< MAX 10)
-PDCH(bts=0,trx=0,ts=7) Expiring FN=2654409 but previous FN=2654305 is still 
reserved!
+PDCH(bts=0,trx=0,ts=7) Expiring FN=2654379 but previous FN=2654305 is still 
reserved!
 PDCH(bts=0,trx=0,ts=7) Timeout for registered USF (FN=2654305): TBF(TFI=0 
TLLI=0xf1223344 DIR=UL STATE=FLOW)
 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) N3101 6 => 7 (< MAX 10)
-PDCH(bts=0,trx=0,ts=7) Expiring FN=2654409 but previous FN=2654309 is still 
reserved!
+PDCH(bts=0,trx=0,ts=7) Expiring FN=2654379 but previous FN=2654309 is still 
reserved!
 PDCH(bts=0,trx=0,ts=7) Timeout for registered USF (FN=2654309): TBF(TFI=0 
TLLI=0xf1223344 DIR=UL STATE=FLOW)
 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) N3101 7 => 8 (< MAX 10)
-PDCH(bts=0,trx=0,ts=7) Expiring FN=2654409 but previous FN=2654314 is still 
reserved!
+PDCH(bts=0,trx=0,ts=7) Expiring FN=2654379 but previous FN=2654314 is still 
reserved!
 PDCH(bts=0,trx=0,ts=7) Timeout for registered USF (FN=2654314): TBF(TFI=0 
TLLI=0xf1223344 DIR=UL STATE=FLOW)
 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) N3101 8 => 9 (< MAX 10)
-PDCH(bts=0,trx=0,ts=7) Expiring FN=2654409 but previous FN=2654318 is still 
reserved!
+PDCH(bts=0,trx=0,ts=7) Expiring FN=2654379 but previous FN=2654318 is still 
reserved!
 PDCH(bts=0,trx=0,ts=7) Timeout for registered USF (FN=2654318): TBF(TFI=0 
TLLI=0xf1223344 DIR=UL STATE=FLOW)
 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) N3101 exceeded MAX (10)
 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=FLOW) changes state from FLOW to 
RELEASING
-PDCH(bts=0,trx=0,ts=7) Expiring FN=2654409 but previous FN=2654322 is still 
reserved!
+PDCH(bts=0,trx=0,ts=7) Expiring FN=2654379 but previous FN=2654322 is still 
reserved!
 PDCH(bts=0,trx=0,ts=7) Timeout for registered USF (FN=2654322): TBF(TFI=0 
TLLI=0xf1223344 DIR=UL STATE=RELEASING)
 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=RELEASING) N3101 10 => 11 (< MAX 10)
-PDCH(bts=0,trx=0,ts=7) Expiring FN=2654409 but previous FN=2654327 is still 
reserved!
+PDCH(bts=0,trx=0,ts=7) Expiring FN=2654379 but previous FN=2654327 is still 
reserved!
 PDCH(bts=0,trx=0,ts=7) Timeout for registered USF (FN=2654327): TBF(TFI=0 
TLLI=0xf1223344 DIR=UL STATE=RELEASING)
 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=RELEASING) N3101 11 => 12 (< MAX 10)
-PDCH(bts=0,trx=0,ts=7) Expiring FN=2654409 but previous FN=2654331 is still 
reserved!
+PDCH(bts=0,trx=0,ts=7) Expiring FN=2654379 but previous FN=2654331 is still 
reserved!
 PDCH(bts=0,trx=0,ts=7) Timeout for registered USF (FN=2654331): TBF(TFI=0 
TLLI=0xf1223344 DIR=UL STATE=RELEASING)
 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=RELEASING) N3101 12 => 13 (< MAX 10)
-PDCH(bts=0,trx=0,ts=7) Expiring FN=2654409 but previous FN=2654335 is still 
reserved!
+PDCH(bts=0,trx=0,ts=7) Expiring FN=2654379 but previous FN=2654335 is still 
reserved!
 PDCH(bts=0,trx=0,ts=7) Timeout for registered USF (FN=2654335): TBF(TFI=0 
TLLI=0xf1223344 DIR=UL STATE=RELEASING)
 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=RELEASING) N3101 13 => 14 (< MAX 10)
-PDCH(bts=0,trx=0,ts=7) Expiring FN=2654409 but previous FN=2654340 is still 
reserved!
+PDCH(bts=0,trx=0,ts=7) Expiring FN=2654379 but previous FN=2654340 is still 
reserved!
 PDCH(bts=0,trx=0,ts=7) Timeout for registered USF (FN=2654340): TBF(TFI=0 
TLLI=0xf1223344 DIR=UL STATE=RELEASING)
 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=RELEASING) N3101 14 => 15 (< MAX 10)
-PDCH(bts=0,trx=0,ts=7) Expiring FN=2654409 but previous FN=2654344 is still 
reserved!
+PDCH(bts=0,trx=0,ts=7) Expiring FN=2654379 but previous FN=2654344 is still 
reserved!
 PDCH(bts=0,trx=0,ts=7) Timeout for registered USF (FN=2654344): TBF(TFI=0 
TLLI=0xf1223344 DIR=UL STATE=RELEASING)
 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=RELEASING) N3101 15 => 16 (< MAX 10)
-PDCH(bts=0,trx=0,ts=7) Expiring FN=2654409 but previous FN=2654348 is still 
reserved!
+PDCH(bts=0,trx=0,ts=7) Expiring FN=2654379 but previous FN=2654348 is still 
reserved!
 PDCH(bts=0,trx=0,ts=7) Timeout for registered USF (FN=2654348): TBF(TFI=0 
TLLI=0xf1223344 DIR=UL STATE=RELEASING)
 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=RELEASING) N3101 16 => 17 (< MAX 10)
-PDCH(bts=0,trx=0,ts=7) Expiring FN=2654409 but previous FN=2654353 is still 
reserved!
+PDCH(bts=0,trx=0,ts=7) Expiring FN=2654379 but previous FN=2654353 is still 
reserved!
 PDCH(bts=0,trx=0,ts=7) Timeout for registered USF (FN=2654353): TBF(TFI=0 
TLLI=0xf1223344 DIR=UL STATE=RELEASING)
 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=RELEASING) N3101 17 => 18 (< MAX 10)
-PDCH(bts=0,trx=0,ts=7) Expiring FN=2654409 but previous FN=2654357 is still 
reserved!
+PDCH(bts=0,trx=0,ts=7) Expiring FN=2654379 but previous FN=2654357 is still 
reserved!
 PDCH(bts=0,trx=0,ts=7) Timeout for registered USF (FN=2654357): TBF(TFI=0 
TLLI=0xf1223344 DIR=UL STATE=RELEASING)
 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=RELEASING) N3101 18 => 19 (< MAX 10)
-PDCH(bts=0,trx=0,ts=7) Expiring FN=2654409 but previous FN=2654361 is still 
reserved!
+PDCH(bts=0,trx=0,ts=7) Expiring FN=2654379 but previous FN=2654361 is still 
reserved!
 PDCH(bts=0,trx=0,ts=7) Timeout for registered USF (FN=2654361): TBF(TFI=0 
TLLI=0xf1223344 DIR=UL STATE=RELEASING)
 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=RELEASING) N3101 19 => 20 (< MAX 10)
-PDCH(bts=0,trx=0,ts=7) Expiring FN=2654409 but previous FN=2654366 is still 
reserved!
+PDCH(bts=0,trx=0,ts=7) Expiring FN=2654379 but previous FN=2654366 is still 
reserved!
 PDCH(bts=0,trx=0,ts=7) Timeout for registered USF (FN=2654366): TBF(TFI=0 
TLLI=0xf1223344 DIR=UL STATE=RELEASING)
 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=RELEASING) N3101 20 => 21 (< MAX 10)
-PDCH(bts=0,trx=0,ts=7) Expiring FN=2654409 but previous FN=2654370 is still 
reserved!
+PDCH(bts=0,trx=0,ts=7) Expiring FN=2654379 but previous FN=2654370 is still 
reserved!
 PDCH(bts=0,trx=0,ts=7) Timeout for registered USF (FN=2654370): TBF(TFI=0 
TLLI=0xf1223344 DIR=UL STATE=RELEASING)
 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=RELEASING) N3101 21 => 22 (< MAX 10)
-PDCH(bts=0,trx=0,ts=7) Expiring FN=2654409 but previous FN=2654374 is still 
reserved!
+PDCH(bts=0,trx=0,ts=7) Expiring FN=2654379 but previous FN=2654374 is still 
reserved!
 PDCH(bts=0,trx=0,ts=7) Timeout for registered USF (FN=2654374): TBF(TFI=0 
TLLI=0xf1223344 DIR=UL STATE=RELEASING)
 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=RELEASING) N3101 22 => 23 (< MAX 10)
-PDCH(bts=0,trx=0,ts=7) Expiring FN=2654409 but previous FN=2654379 is still 
reserved!
-PDCH(bts=0,trx=0,ts=7) Timeout for registered POLL (FN=2654379): TBF(TFI=0 
TLLI=0xf1223344 DIR=DL STATE=WAIT RELEASE)
-TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=WAIT RELEASE) poll timeout for 
FN=2654409, TS=7 (curr FN 2654409)
-TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=WAIT RELEASE) Timeout for polling 
PACKET DOWNLINK ACK: |Assignment was on PACCH|Downlink ACK was received|
-TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=WAIT RELEASE) N3105 0 => 1 (< MAX 8)
+PDCH(bts=0,trx=0,ts=7) POLL scheduled at FN 2654400 + 13 = 2654413
+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 PACCH (FN=2654413, TS=7)
+PDCH(bts=0,trx=0,ts=7) FN=2654400 Scheduling control message at RTS for 
TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=WAIT RELEASE)
+Detected FN jump! 2654379 -> 2654409
+PDCH(bts=0,trx=0,ts=7) FN=2654409 +++++++++++++++++++++++++ RX : Uplink 
Control Block +++++++++++++++++++++++++
+PDCH(bts=0,trx=0,ts=7) FN=2654409 ------------------------- RX : Uplink 
Control Block -------------------------
+TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=WAIT RELEASE) RX: [PCU <- BTS] Packet 
Control Ack
+TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=WAIT RELEASE) [UPLINK] DOWNLINK ASSIGNED
+TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=WAIT RELEASE) changes DL ASS state from 
GPRS_RLCMAC_DL_ASS_WAIT_ACK to GPRS_RLCMAC_DL_ASS_NONE
+TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=WAIT RELEASE) changes state from WAIT 
RELEASE to RELEASING
+TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=RELEASING) free
+TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=RELEASING) stopping timer T3193 
[freeing TBF]
+PDCH(bts=0,trx=0,ts=7) Detaching TBF(TFI=0 TLLI=0xf1223344 DIR=DL 
STATE=RELEASING), 1 TBFs, USFs = 01, TFIs = 00000002.
+MS(TLLI=0xf1223344, IMSI=0011223344, TA=7, 1/0, UL DL) Detaching TBF: 
TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=RELEASING)
+********** DL-TBF ends here **********
+TBF(TFI=1 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) changes state from ASSIGN to 
FLOW
+TBF(TFI=1 TLLI=0xf1223344 DIR=DL STATE=FLOW) stopping timer T0 [control acked 
(DL-TBF)]
 PDCH(bts=0,trx=0,ts=7) Expiring FN=2654409 but previous FN=2654383 is still 
reserved!
 PDCH(bts=0,trx=0,ts=7) Timeout for registered USF (FN=2654383): TBF(TFI=0 
TLLI=0xf1223344 DIR=UL STATE=RELEASING)
 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=RELEASING) N3101 23 => 24 (< MAX 10)
@@ -2918,25 +2933,6 @@
 PDCH(bts=0,trx=0,ts=7) Expiring FN=2654409 but previous FN=2654400 is still 
reserved!
 PDCH(bts=0,trx=0,ts=7) Timeout for registered USF (FN=2654400): TBF(TFI=0 
TLLI=0xf1223344 DIR=UL STATE=RELEASING)
 TBF(TFI=0 TLLI=0xf1223344 DIR=UL STATE=RELEASING) N3101 27 => 28 (< MAX 10)
-PDCH(bts=0,trx=0,ts=7) POLL scheduled at FN 2654400 + 13 = 2654413
-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 PACCH (FN=2654413, TS=7)
-PDCH(bts=0,trx=0,ts=7) FN=2654400 Scheduling control message at RTS for 
TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=WAIT RELEASE)
-PDCH(bts=0,trx=0,ts=7) FN=2654413 +++++++++++++++++++++++++ RX : Uplink 
Control Block +++++++++++++++++++++++++
-PDCH(bts=0,trx=0,ts=7) FN=2654413 ------------------------- RX : Uplink 
Control Block -------------------------
-TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=WAIT RELEASE) RX: [PCU <- BTS] Packet 
Control Ack
-TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=WAIT RELEASE) [UPLINK] DOWNLINK ASSIGNED
-TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=WAIT RELEASE) changes DL ASS state from 
GPRS_RLCMAC_DL_ASS_WAIT_ACK to GPRS_RLCMAC_DL_ASS_NONE
-TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=WAIT RELEASE) changes state from WAIT 
RELEASE to RELEASING
-TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=RELEASING) free
-TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=RELEASING) stopping timer T3193 
[freeing TBF]
-PDCH(bts=0,trx=0,ts=7) Detaching TBF(TFI=0 TLLI=0xf1223344 DIR=DL 
STATE=RELEASING), 1 TBFs, USFs = 01, TFIs = 00000002.
-MS(TLLI=0xf1223344, IMSI=0011223344, TA=7, 1/0, UL DL) Detaching TBF: 
TBF(TFI=0 TLLI=0xf1223344 DIR=DL STATE=RELEASING)
-********** DL-TBF ends here **********
-TBF(TFI=1 TLLI=0xf1223344 DIR=DL STATE=ASSIGN) changes state from ASSIGN to 
FLOW
-TBF(TFI=1 TLLI=0xf1223344 DIR=DL STATE=FLOW) stopping timer T0 [control acked 
(DL-TBF)]
 Received RTS on disabled PDCH: TRX=0 TS=0
 Received RTS on disabled PDCH: TRX=0 TS=1
 Received RTS on disabled PDCH: TRX=0 TS=2
@@ -3125,7 +3121,7 @@
 TBF(TFI=1 TLLI=0xf1223344 DIR=DL STATE=FINISHED) Scheduling Ack/Nack polling, 
because it was requested explicitly (e.g. first final block sent).
 PDCH(bts=0,trx=0,ts=7) POLL scheduled at FN 2654448 + 13 = 2654461
 TBF(TFI=1 TLLI=0xf1223344 DIR=DL STATE=FINISHED) Scheduled DL Acknowledgement 
polling on PACCH (FN=2654461, TS=7)
-TBF(TFI=1 TLLI=0xf1223344 DIR=DL STATE=FINISHED) starting timer T3191 [final 
block (DL-TBF)] with 5 sec. 0 microsec, cur_fn=2654413
+TBF(TFI=1 TLLI=0xf1223344 DIR=DL STATE=FINISHED) starting timer T3191 [final 
block (DL-TBF)] with 5 sec. 0 microsec, cur_fn=2654409
 TBF(TFI=1 TLLI=0xf1223344 DIR=DL STATE=FINISHED) Scheduled Ack/Nack polling on 
FN=2654461, TS=7
 TBF(TFI=1 TLLI=0xf1223344 DIR=DL STATE=FINISHED) msg block (BSN 10, CS-1): 0f 
03 14 4d 43 20 50 41 43 4b 45 54 20 30 39 20 28 54 42 46 20 32 29
 === end test_tbf_dl_reuse ===
@@ -3814,17 +3810,17 @@
 Detected FN jump! 8 -> 112
 PDCH(bts=0,trx=0,ts=4) Expiring FN=112 but previous FN=13 is still reserved!
 PDCH(bts=0,trx=0,ts=4) Timeout for registered POLL (FN=13): TBF(TFI=0 
TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS)
-TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) poll timeout for FN=121, 
TS=4 (curr FN 112)
+TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) poll timeout for FN=13, 
TS=4 (curr FN 112)
 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Timeout for polling PACKET 
CONTROL ACK for PACKET DOWNLINK ASSIGNMENT: |No downlink ACK received yet|
 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) N3105 0 => 1 (< MAX 8)
 PDCH(bts=0,trx=0,ts=4) Expiring FN=112 but previous FN=17 is still reserved!
 PDCH(bts=0,trx=0,ts=4) Timeout for registered POLL (FN=17): TBF(TFI=0 
TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS)
-TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) poll timeout for FN=121, 
TS=4 (curr FN 112)
+TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) poll timeout for FN=17, 
TS=4 (curr FN 112)
 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Timeout for polling PACKET 
DOWNLINK ACK: |No downlink ACK received yet|
 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) N3105 1 => 2 (< MAX 8)
 PDCH(bts=0,trx=0,ts=4) Expiring FN=112 but previous FN=104 is still reserved!
 PDCH(bts=0,trx=0,ts=4) Timeout for registered POLL (FN=104): TBF(TFI=0 
TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS)
-TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) poll timeout for FN=121, 
TS=4 (curr FN 112)
+TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) poll timeout for FN=104, 
TS=4 (curr FN 112)
 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) N3105 2 => 3 (< MAX 8)
 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) downlink acknowledge
 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Final ACK received.
@@ -4056,12 +4052,12 @@
 Detected FN jump! 8 -> 91
 PDCH(bts=0,trx=0,ts=4) Expiring FN=91 but previous FN=13 is still reserved!
 PDCH(bts=0,trx=0,ts=4) Timeout for registered POLL (FN=13): TBF(TFI=0 
TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS)
-TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) poll timeout for FN=99, 
TS=4 (curr FN 91)
+TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) poll timeout for FN=13, 
TS=4 (curr FN 91)
 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Timeout for polling PACKET 
CONTROL ACK for PACKET DOWNLINK ASSIGNMENT: |No downlink ACK received yet|
 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) N3105 0 => 1 (< MAX 8)
 PDCH(bts=0,trx=0,ts=4) Expiring FN=91 but previous FN=17 is still reserved!
 PDCH(bts=0,trx=0,ts=4) Timeout for registered POLL (FN=17): TBF(TFI=0 
TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS)
-TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) poll timeout for FN=99, 
TS=4 (curr FN 91)
+TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) poll timeout for FN=17, 
TS=4 (curr FN 91)
 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Timeout for polling PACKET 
DOWNLINK ACK: |No downlink ACK received yet|
 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) N3105 1 => 2 (< MAX 8)
 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) downlink acknowledge
@@ -4254,12 +4250,12 @@
 Detected FN jump! 8 -> 69
 PDCH(bts=0,trx=0,ts=4) Expiring FN=69 but previous FN=13 is still reserved!
 PDCH(bts=0,trx=0,ts=4) Timeout for registered POLL (FN=13): TBF(TFI=0 
TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS)
-TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) poll timeout for FN=78, 
TS=4 (curr FN 69)
+TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) poll timeout for FN=13, 
TS=4 (curr FN 69)
 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Timeout for polling PACKET 
CONTROL ACK for PACKET DOWNLINK ASSIGNMENT: |No downlink ACK received yet|
 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) N3105 0 => 1 (< MAX 8)
 PDCH(bts=0,trx=0,ts=4) Expiring FN=69 but previous FN=17 is still reserved!
 PDCH(bts=0,trx=0,ts=4) Timeout for registered POLL (FN=17): TBF(TFI=0 
TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS)
-TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) poll timeout for FN=78, 
TS=4 (curr FN 69)
+TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) poll timeout for FN=17, 
TS=4 (curr FN 69)
 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Timeout for polling PACKET 
DOWNLINK ACK: |No downlink ACK received yet|
 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) N3105 1 => 2 (< MAX 8)
 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) downlink acknowledge
@@ -4436,12 +4432,12 @@
 Detected FN jump! 8 -> 60
 PDCH(bts=0,trx=0,ts=4) Expiring FN=60 but previous FN=13 is still reserved!
 PDCH(bts=0,trx=0,ts=4) Timeout for registered POLL (FN=13): TBF(TFI=0 
TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS)
-TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) poll timeout for FN=69, 
TS=4 (curr FN 60)
+TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) poll timeout for FN=13, 
TS=4 (curr FN 60)
 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Timeout for polling PACKET 
CONTROL ACK for PACKET DOWNLINK ASSIGNMENT: |No downlink ACK received yet|
 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) N3105 0 => 1 (< MAX 8)
 PDCH(bts=0,trx=0,ts=4) Expiring FN=60 but previous FN=17 is still reserved!
 PDCH(bts=0,trx=0,ts=4) Timeout for registered POLL (FN=17): TBF(TFI=0 
TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS)
-TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) poll timeout for FN=69, 
TS=4 (curr FN 60)
+TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) poll timeout for FN=17, 
TS=4 (curr FN 60)
 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Timeout for polling PACKET 
DOWNLINK ACK: |No downlink ACK received yet|
 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) N3105 1 => 2 (< MAX 8)
 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) downlink acknowledge
@@ -4602,12 +4598,12 @@
 Detected FN jump! 8 -> 52
 PDCH(bts=0,trx=0,ts=4) Expiring FN=52 but previous FN=13 is still reserved!
 PDCH(bts=0,trx=0,ts=4) Timeout for registered POLL (FN=13): TBF(TFI=0 
TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS)
-TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) poll timeout for FN=60, 
TS=4 (curr FN 52)
+TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) poll timeout for FN=13, 
TS=4 (curr FN 52)
 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Timeout for polling PACKET 
CONTROL ACK for PACKET DOWNLINK ASSIGNMENT: |No downlink ACK received yet|
 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) N3105 0 => 1 (< MAX 8)
 PDCH(bts=0,trx=0,ts=4) Expiring FN=52 but previous FN=17 is still reserved!
 PDCH(bts=0,trx=0,ts=4) Timeout for registered POLL (FN=17): TBF(TFI=0 
TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS)
-TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) poll timeout for FN=60, 
TS=4 (curr FN 52)
+TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) poll timeout for FN=17, 
TS=4 (curr FN 52)
 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Timeout for polling PACKET 
DOWNLINK ACK: |No downlink ACK received yet|
 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) N3105 1 => 2 (< MAX 8)
 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) downlink acknowledge
@@ -4744,12 +4740,12 @@
 Detected FN jump! 8 -> 39
 PDCH(bts=0,trx=0,ts=4) Expiring FN=39 but previous FN=13 is still reserved!
 PDCH(bts=0,trx=0,ts=4) Timeout for registered POLL (FN=13): TBF(TFI=0 
TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS)
-TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) poll timeout for FN=47, 
TS=4 (curr FN 39)
+TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) poll timeout for FN=13, 
TS=4 (curr FN 39)
 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Timeout for polling PACKET 
CONTROL ACK for PACKET DOWNLINK ASSIGNMENT: |No downlink ACK received yet|
 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) N3105 0 => 1 (< MAX 8)
 PDCH(bts=0,trx=0,ts=4) Expiring FN=39 but previous FN=17 is still reserved!
 PDCH(bts=0,trx=0,ts=4) Timeout for registered POLL (FN=17): TBF(TFI=0 
TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS)
-TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) poll timeout for FN=47, 
TS=4 (curr FN 39)
+TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) poll timeout for FN=17, 
TS=4 (curr FN 39)
 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Timeout for polling PACKET 
DOWNLINK ACK: |No downlink ACK received yet|
 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) N3105 1 => 2 (< MAX 8)
 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) downlink acknowledge
@@ -4895,12 +4891,12 @@
 Detected FN jump! 8 -> 34
 PDCH(bts=0,trx=0,ts=4) Expiring FN=34 but previous FN=13 is still reserved!
 PDCH(bts=0,trx=0,ts=4) Timeout for registered POLL (FN=13): TBF(TFI=0 
TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS)
-TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) poll timeout for FN=43, 
TS=4 (curr FN 34)
+TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) poll timeout for FN=13, 
TS=4 (curr FN 34)
 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Timeout for polling PACKET 
CONTROL ACK for PACKET DOWNLINK ASSIGNMENT: |No downlink ACK received yet|
 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) N3105 0 => 1 (< MAX 8)
 PDCH(bts=0,trx=0,ts=4) Expiring FN=34 but previous FN=17 is still reserved!
 PDCH(bts=0,trx=0,ts=4) Timeout for registered POLL (FN=17): TBF(TFI=0 
TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS)
-TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) poll timeout for FN=43, 
TS=4 (curr FN 34)
+TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) poll timeout for FN=17, 
TS=4 (curr FN 34)
 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Timeout for polling PACKET 
DOWNLINK ACK: |No downlink ACK received yet|
 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) N3105 1 => 2 (< MAX 8)
 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) downlink acknowledge
@@ -5037,12 +5033,12 @@
 Detected FN jump! 8 -> 30
 PDCH(bts=0,trx=0,ts=4) Expiring FN=30 but previous FN=13 is still reserved!
 PDCH(bts=0,trx=0,ts=4) Timeout for registered POLL (FN=13): TBF(TFI=0 
TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS)
-TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) poll timeout for FN=39, 
TS=4 (curr FN 30)
+TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) poll timeout for FN=13, 
TS=4 (curr FN 30)
 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Timeout for polling PACKET 
CONTROL ACK for PACKET DOWNLINK ASSIGNMENT: |No downlink ACK received yet|
 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) N3105 0 => 1 (< MAX 8)
 PDCH(bts=0,trx=0,ts=4) Expiring FN=30 but previous FN=17 is still reserved!
 PDCH(bts=0,trx=0,ts=4) Timeout for registered POLL (FN=17): TBF(TFI=0 
TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS)
-TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) poll timeout for FN=39, 
TS=4 (curr FN 30)
+TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) poll timeout for FN=17, 
TS=4 (curr FN 30)
 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Timeout for polling PACKET 
DOWNLINK ACK: |No downlink ACK received yet|
 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) N3105 1 => 2 (< MAX 8)
 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) downlink acknowledge
@@ -5168,12 +5164,12 @@
 Detected FN jump! 8 -> 26
 PDCH(bts=0,trx=0,ts=4) Expiring FN=26 but previous FN=13 is still reserved!
 PDCH(bts=0,trx=0,ts=4) Timeout for registered POLL (FN=13): TBF(TFI=0 
TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS)
-TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) poll timeout for FN=34, 
TS=4 (curr FN 26)
+TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) poll timeout for FN=13, 
TS=4 (curr FN 26)
 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Timeout for polling PACKET 
CONTROL ACK for PACKET DOWNLINK ASSIGNMENT: |No downlink ACK received yet|
 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) N3105 0 => 1 (< MAX 8)
 PDCH(bts=0,trx=0,ts=4) Expiring FN=26 but previous FN=17 is still reserved!
 PDCH(bts=0,trx=0,ts=4) Timeout for registered POLL (FN=17): TBF(TFI=0 
TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS)
-TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) poll timeout for FN=34, 
TS=4 (curr FN 26)
+TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) poll timeout for FN=17, 
TS=4 (curr FN 26)
 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) Timeout for polling PACKET 
DOWNLINK ACK: |No downlink ACK received yet|
 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) N3105 1 => 2 (< MAX 8)
 TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) downlink acknowledge

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

Gerrit-Project: osmo-pcu
Gerrit-Branch: master
Gerrit-Change-Id: I63a34a702f028b871530fb7caeb13e8ea1cc78ac
Gerrit-Change-Number: 23531
Gerrit-PatchSet: 1
Gerrit-Owner: pespin <[email protected]>
Gerrit-MessageType: newchange

Reply via email to