edge: Remove GPRS RBB based window handling methods
These methods have been replaced and are no longer used since the commit "edge: Use bitvec based window methods for EGPRS", with the only exception of TbfTest.cpp. Remove the methods and update TbfTest.cpp by using the bitvec based methods instead. Sponsored-by: On-Waves ehf
This commit is contained in:
parent
7f28c97fcc
commit
308c861054
24
src/rlc.cpp
24
src/rlc.cpp
|
@ -129,30 +129,6 @@ void gprs_rlc_dl_window::update(BTS *bts, const struct bitvec *rbb,
|
|||
}
|
||||
}
|
||||
|
||||
void gprs_rlc_dl_window::update(BTS *bts, char *show_rbb, uint16_t ssn,
|
||||
uint16_t *lost, uint16_t *received)
|
||||
{
|
||||
/* SSN - 1 is in range V(A)..V(S)-1 */
|
||||
for (int bitpos = 0; bitpos < ws(); bitpos++) {
|
||||
uint16_t bsn = mod_sns(bitnum_to_bsn(bitpos, ssn));
|
||||
|
||||
if (bsn == mod_sns(v_a() - 1))
|
||||
break;
|
||||
|
||||
if (show_rbb[ws() - 1 - bitpos] == 'R') {
|
||||
LOGP(DRLCMACDL, LOGL_DEBUG, "- got ack for BSN=%d\n", bsn);
|
||||
if (!m_v_b.is_acked(bsn))
|
||||
*received += 1;
|
||||
m_v_b.mark_acked(bsn);
|
||||
} else {
|
||||
LOGP(DRLCMACDL, LOGL_DEBUG, "- got NACK for BSN=%d\n", bsn);
|
||||
m_v_b.mark_nacked(bsn);
|
||||
bts->rlc_nacked();
|
||||
*lost += 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int gprs_rlc_dl_window::move_window()
|
||||
{
|
||||
int i;
|
||||
|
|
|
@ -190,8 +190,6 @@ struct gprs_rlc_dl_window: public gprs_rlc_window {
|
|||
/* Methods to manage reception */
|
||||
int resend_needed();
|
||||
int mark_for_resend();
|
||||
void update(BTS *bts, char *show_rbb, uint16_t ssn,
|
||||
uint16_t *lost, uint16_t *received);
|
||||
void update(BTS *bts, const struct bitvec *rbb,
|
||||
uint16_t first_bsn, uint16_t *lost,
|
||||
uint16_t *received);
|
||||
|
|
|
@ -360,7 +360,6 @@ struct gprs_rlcmac_dl_tbf : public gprs_rlcmac_tbf {
|
|||
const uint16_t pdu_delay_csec,
|
||||
const uint8_t *data, const uint16_t len);
|
||||
|
||||
int rcvd_dl_ack(uint8_t final, uint8_t ssn, uint8_t *rbb);
|
||||
int rcvd_dl_ack(uint8_t final_ack, unsigned first_bsn, struct bitvec *rbb);
|
||||
struct msgb *create_dl_acked_block(uint32_t fn, uint8_t ts);
|
||||
void request_dl_ack();
|
||||
|
@ -412,7 +411,6 @@ protected:
|
|||
int create_new_bsn(const uint32_t fn, GprsCodingScheme cs);
|
||||
struct msgb *create_dl_acked_block(const uint32_t fn, const uint8_t ts,
|
||||
int index, int index2 = -1);
|
||||
int update_window(const uint8_t ssn, const uint8_t *rbb);
|
||||
int update_window(unsigned first_bsn, const struct bitvec *rbb);
|
||||
int maybe_start_new_window();
|
||||
bool dl_window_stalled() const;
|
||||
|
|
|
@ -898,71 +898,6 @@ int gprs_rlcmac_dl_tbf::update_window(unsigned first_bsn,
|
|||
return 0;
|
||||
}
|
||||
|
||||
int gprs_rlcmac_dl_tbf::update_window(const uint8_t ssn, const uint8_t *rbb)
|
||||
{
|
||||
int16_t dist; /* must be signed */
|
||||
uint16_t lost = 0, received = 0;
|
||||
char show_rbb[65];
|
||||
char show_v_b[RLC_MAX_SNS + 1];
|
||||
int error_rate;
|
||||
struct ana_result ana_res;
|
||||
|
||||
Decoding::extract_rbb(rbb, show_rbb);
|
||||
/* show received array in debug (bit 64..1) */
|
||||
LOGP(DRLCMACDL, LOGL_DEBUG, "- ack: (BSN=%d)\"%s\""
|
||||
"(BSN=%d) R=ACK I=NACK\n", m_window.mod_sns(ssn - 64),
|
||||
show_rbb, m_window.mod_sns(ssn - 1));
|
||||
|
||||
/* apply received array to receive state (SSN-64..SSN-1) */
|
||||
/* calculate distance of ssn from V(S) */
|
||||
dist = m_window.mod_sns(m_window.v_s() - ssn);
|
||||
/* check if distance is less than distance V(A)..V(S) */
|
||||
if (dist >= m_window.distance()) {
|
||||
/* this might happpen, if the downlink assignment
|
||||
* was not received by ms and the ack refers
|
||||
* to previous TBF
|
||||
* FIXME: we should implement polling for
|
||||
* control ack!*/
|
||||
LOGP(DRLCMACDL, LOGL_NOTICE, "- ack range is out of "
|
||||
"V(A)..V(S) range %s Free TBF!\n", tbf_name(this));
|
||||
return 1; /* indicate to free TBF */
|
||||
}
|
||||
|
||||
error_rate = analyse_errors(show_rbb, ssn, &ana_res);
|
||||
|
||||
if (bts_data()->cs_adj_enabled && ms())
|
||||
ms()->update_error_rate(this, error_rate);
|
||||
|
||||
m_window.update(bts, show_rbb, ssn,
|
||||
&lost, &received);
|
||||
|
||||
/* report lost and received packets */
|
||||
gprs_rlcmac_received_lost(this, received, lost);
|
||||
|
||||
/* Used to measure the leak rate */
|
||||
gprs_bssgp_update_bytes_received(ana_res.received_bytes,
|
||||
ana_res.received_packets + ana_res.lost_packets);
|
||||
|
||||
/* raise V(A), if possible */
|
||||
m_window.raise(m_window.move_window());
|
||||
|
||||
/* show receive state array in debug (V(A)..V(S)-1) */
|
||||
m_window.show_state(show_v_b);
|
||||
LOGP(DRLCMACDL, LOGL_DEBUG, "- V(B): (V(A)=%d)\"%s\""
|
||||
"(V(S)-1=%d) A=Acked N=Nacked U=Unacked "
|
||||
"X=Resend-Unacked I=Invalid\n",
|
||||
m_window.v_a(), show_v_b,
|
||||
m_window.v_s_mod(-1));
|
||||
|
||||
if (state_is(GPRS_RLCMAC_FINISHED) && m_window.window_empty()) {
|
||||
LOGP(DRLCMACDL, LOGL_NOTICE, "Received acknowledge of "
|
||||
"all blocks, but without final ack "
|
||||
"inidcation (don't worry)\n");
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
int gprs_rlcmac_dl_tbf::maybe_start_new_window()
|
||||
{
|
||||
release();
|
||||
|
@ -1052,17 +987,6 @@ int gprs_rlcmac_dl_tbf::rcvd_dl_ack(uint8_t final_ack, unsigned first_bsn,
|
|||
return rc;
|
||||
}
|
||||
|
||||
int gprs_rlcmac_dl_tbf::rcvd_dl_ack(uint8_t final_ack, uint8_t ssn, uint8_t *rbb)
|
||||
{
|
||||
LOGP(DRLCMACDL, LOGL_DEBUG, "%s downlink acknowledge\n", tbf_name(this));
|
||||
|
||||
if (!final_ack)
|
||||
return update_window(ssn, rbb);
|
||||
|
||||
LOGP(DRLCMACDL, LOGL_DEBUG, "- Final ACK received.\n");
|
||||
return maybe_start_new_window();
|
||||
}
|
||||
|
||||
bool gprs_rlcmac_dl_tbf::dl_window_stalled() const
|
||||
{
|
||||
return m_window.window_stalled();
|
||||
|
|
|
@ -241,13 +241,18 @@ static void test_tbf_final_ack(enum test_tbf_final_ack_mode test_mode)
|
|||
GprsMs *ms;
|
||||
uint32_t tlli = 0xffeeddcc;
|
||||
|
||||
uint8_t rbb[64/8];
|
||||
uint8_t rbb_data[64/8];
|
||||
struct bitvec rbb;
|
||||
|
||||
printf("=== start %s ===\n", __func__);
|
||||
|
||||
gprs_rlcmac_dl_tbf *dl_tbf;
|
||||
gprs_rlcmac_tbf *new_tbf;
|
||||
|
||||
rbb.cur_bit = 0;
|
||||
rbb.data = rbb_data;
|
||||
rbb.data_len = sizeof(rbb_data);
|
||||
|
||||
setup_bts(&the_bts, ts_no);
|
||||
dl_tbf = create_dl_tbf(&the_bts, ms_class, 0, &trx_no);
|
||||
dl_tbf->update_ms(tlli, GPRS_RLCMAC_DL_TBF);
|
||||
|
@ -271,10 +276,11 @@ static void test_tbf_final_ack(enum test_tbf_final_ack_mode test_mode)
|
|||
OSMO_ASSERT(dl_tbf->have_data());
|
||||
OSMO_ASSERT(dl_tbf->state_is(GPRS_RLCMAC_FLOW));
|
||||
|
||||
/* Queue a final ACK */
|
||||
memset(rbb, 0, sizeof(rbb));
|
||||
/* Receive a final ACK */
|
||||
dl_tbf->rcvd_dl_ack(1, 1, rbb);
|
||||
memset(rbb.data, 0xff, sizeof(rbb.data_len));
|
||||
rbb.cur_bit = dl_tbf->m_window.mod_sns(
|
||||
dl_tbf->m_window.v_s() - dl_tbf->m_window.v_a());
|
||||
dl_tbf->rcvd_dl_ack(1, dl_tbf->m_window.v_a(), &rbb);
|
||||
|
||||
/* Clean up and ensure tbfs are in the correct state */
|
||||
OSMO_ASSERT(dl_tbf->state_is(GPRS_RLCMAC_WAIT_RELEASE));
|
||||
|
@ -313,7 +319,8 @@ static void test_tbf_delayed_release()
|
|||
uint8_t trx_no;
|
||||
uint32_t tlli = 0xffeeddcc;
|
||||
|
||||
uint8_t rbb[64/8];
|
||||
uint8_t rbb_data[64/8];
|
||||
struct bitvec rbb;
|
||||
|
||||
gprs_rlcmac_dl_tbf *dl_tbf;
|
||||
|
||||
|
@ -346,16 +353,22 @@ static void test_tbf_delayed_release()
|
|||
OSMO_ASSERT(dl_tbf->state_is(GPRS_RLCMAC_FLOW));
|
||||
|
||||
/* ACK all blocks */
|
||||
memset(rbb, 0xff, sizeof(rbb));
|
||||
memset(rbb_data, 0xff, sizeof(rbb_data));
|
||||
rbb.cur_bit = dl_tbf->m_window.mod_sns(
|
||||
dl_tbf->m_window.v_s() - dl_tbf->m_window.v_a());
|
||||
rbb.data = rbb_data;
|
||||
rbb.data_len = sizeof(rbb_data);
|
||||
/* Receive an ACK */
|
||||
dl_tbf->rcvd_dl_ack(0, dl_tbf->m_window.v_s(), rbb);
|
||||
dl_tbf->rcvd_dl_ack(0, dl_tbf->m_window.v_a(), &rbb);
|
||||
OSMO_ASSERT(dl_tbf->m_window.window_empty());
|
||||
|
||||
/* Force sending of a single block containing an LLC dummy command */
|
||||
request_dl_rlc_block(dl_tbf, &fn);
|
||||
|
||||
/* Receive an ACK */
|
||||
dl_tbf->rcvd_dl_ack(0, dl_tbf->m_window.v_s(), rbb);
|
||||
rbb.cur_bit = dl_tbf->m_window.mod_sns(
|
||||
dl_tbf->m_window.v_s() - dl_tbf->m_window.v_a());
|
||||
dl_tbf->rcvd_dl_ack(0, dl_tbf->m_window.v_a(), &rbb);
|
||||
OSMO_ASSERT(dl_tbf->m_window.window_empty());
|
||||
|
||||
/* Timeout (make sure fn % 52 remains valid) */
|
||||
|
@ -365,7 +378,9 @@ static void test_tbf_delayed_release()
|
|||
OSMO_ASSERT(dl_tbf->state_is(GPRS_RLCMAC_FINISHED));
|
||||
|
||||
/* Receive a final ACK */
|
||||
dl_tbf->rcvd_dl_ack(1, dl_tbf->m_window.v_s(), rbb);
|
||||
rbb.cur_bit = dl_tbf->m_window.mod_sns(
|
||||
dl_tbf->m_window.v_s() - dl_tbf->m_window.v_a());
|
||||
dl_tbf->rcvd_dl_ack(1, dl_tbf->m_window.v_a(), &rbb);
|
||||
|
||||
/* Clean up and ensure tbfs are in the correct state */
|
||||
OSMO_ASSERT(dl_tbf->state_is(GPRS_RLCMAC_WAIT_RELEASE));
|
||||
|
@ -1223,12 +1238,16 @@ static void establish_and_use_egprs_dl_tbf(BTS *the_bts, int mcs)
|
|||
uint32_t tlli = 0xffeeddcc;
|
||||
uint8_t test_data[512];
|
||||
|
||||
uint8_t rbb[64/8];
|
||||
uint8_t rbb_data[64/8];
|
||||
struct bitvec rbb;
|
||||
|
||||
gprs_rlcmac_dl_tbf *dl_tbf;
|
||||
|
||||
printf("Testing MCS-%d\n", mcs);
|
||||
|
||||
rbb.data = rbb_data;
|
||||
rbb.data_len = sizeof(rbb_data);
|
||||
|
||||
memset(test_data, 1, sizeof(test_data));
|
||||
the_bts->bts_data()->initial_mcs_dl = mcs;
|
||||
|
||||
|
@ -1263,7 +1282,10 @@ static void establish_and_use_egprs_dl_tbf(BTS *the_bts, int mcs)
|
|||
OSMO_ASSERT(dl_tbf->state_is(GPRS_RLCMAC_FLOW));
|
||||
|
||||
/* Receive a final ACK */
|
||||
dl_tbf->rcvd_dl_ack(1, dl_tbf->m_window.v_s(), rbb);
|
||||
memset(rbb.data, 0xff, sizeof(rbb.data_len));
|
||||
rbb.cur_bit = dl_tbf->m_window.mod_sns(
|
||||
dl_tbf->m_window.v_s() - dl_tbf->m_window.v_a());
|
||||
dl_tbf->rcvd_dl_ack(1, dl_tbf->m_window.v_a(), &rbb);
|
||||
|
||||
/* Clean up and ensure tbfs are in the correct state */
|
||||
OSMO_ASSERT(dl_tbf->state_is(GPRS_RLCMAC_WAIT_RELEASE));
|
||||
|
|
|
@ -85,6 +85,11 @@ data block (BSN 1, CS-1): 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20 21 22 23 24 25
|
|||
msg block (BSN 1, CS-1): 07 00 03 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20 21 22 23 24 25 26 27
|
||||
Sending data request: trx=0 ts=4 sapi=5 arfcn=0 fn=8 block=2 data=07 00 03 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20 21 22 23 24 25 26 27
|
||||
TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW) downlink acknowledge
|
||||
- ack: (BSN=0)"RR"(BSN=1) R=ACK I=NACK
|
||||
TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW) DL analysis, range=0:2, lost=0, recv=2, skipped=0, bsn=0, info='RR..............................................................'
|
||||
- got ack for BSN=0
|
||||
- got ack for BSN=1
|
||||
- V(B): (V(A)=2)""(V(S)-1=1) A=Acked N=Nacked U=Unacked X=Resend-Unacked I=Invalid
|
||||
- Final ACK received.
|
||||
TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW) changes state from FLOW to WAIT RELEASE
|
||||
TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE) starting timer 3193.
|
||||
|
@ -170,6 +175,11 @@ data block (BSN 1, CS-1): 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20 21 22 23 24 25
|
|||
msg block (BSN 1, CS-1): 07 00 03 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20 21 22 23 24 25 26 27
|
||||
Sending data request: trx=0 ts=4 sapi=5 arfcn=0 fn=8 block=2 data=07 00 03 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20 21 22 23 24 25 26 27
|
||||
TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW) downlink acknowledge
|
||||
- ack: (BSN=0)"RR"(BSN=1) R=ACK I=NACK
|
||||
TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW) DL analysis, range=0:2, lost=0, recv=2, skipped=0, bsn=0, info='RR..............................................................'
|
||||
- got ack for BSN=0
|
||||
- got ack for BSN=1
|
||||
- V(B): (V(A)=2)""(V(S)-1=1) A=Acked N=Nacked U=Unacked X=Resend-Unacked I=Invalid
|
||||
- Final ACK received.
|
||||
TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW) changes state from FLOW to WAIT RELEASE
|
||||
TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE) starting timer 3193.
|
||||
|
@ -417,29 +427,29 @@ Polling is already scheduled for TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW)
|
|||
msg block (BSN 20, CS-1): 07 00 28 0a 41 c6 c7 43 c0 01 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b
|
||||
Sending data request: trx=0 ts=4 sapi=5 arfcn=0 fn=91 block=9 data=07 00 28 0a 41 c6 c7 43 c0 01 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b
|
||||
TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW) downlink acknowledge
|
||||
- ack: (BSN=85)"RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR"(BSN=20) R=ACK I=NACK
|
||||
TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW) DL analysis, range=0:21, lost=0, recv=21, skipped=0, bsn=127, info='RRRRRRRRRRRRRRRRRRRRR$..........................................'
|
||||
- got ack for BSN=20
|
||||
- got ack for BSN=19
|
||||
- got ack for BSN=18
|
||||
- got ack for BSN=17
|
||||
- got ack for BSN=16
|
||||
- got ack for BSN=15
|
||||
- got ack for BSN=14
|
||||
- got ack for BSN=13
|
||||
- got ack for BSN=12
|
||||
- got ack for BSN=11
|
||||
- got ack for BSN=10
|
||||
- got ack for BSN=9
|
||||
- got ack for BSN=8
|
||||
- got ack for BSN=7
|
||||
- got ack for BSN=6
|
||||
- got ack for BSN=5
|
||||
- got ack for BSN=4
|
||||
- got ack for BSN=3
|
||||
- got ack for BSN=2
|
||||
- got ack for BSN=1
|
||||
- ack: (BSN=0)"RRRRRRRRRRRRRRRRRRRRR"(BSN=20) R=ACK I=NACK
|
||||
TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW) DL analysis, range=0:21, lost=0, recv=21, skipped=0, bsn=0, info='RRRRRRRRRRRRRRRRRRRRR...........................................'
|
||||
- got ack for BSN=0
|
||||
- got ack for BSN=1
|
||||
- got ack for BSN=2
|
||||
- got ack for BSN=3
|
||||
- got ack for BSN=4
|
||||
- got ack for BSN=5
|
||||
- got ack for BSN=6
|
||||
- got ack for BSN=7
|
||||
- got ack for BSN=8
|
||||
- got ack for BSN=9
|
||||
- got ack for BSN=10
|
||||
- got ack for BSN=11
|
||||
- got ack for BSN=12
|
||||
- got ack for BSN=13
|
||||
- got ack for BSN=14
|
||||
- got ack for BSN=15
|
||||
- got ack for BSN=16
|
||||
- got ack for BSN=17
|
||||
- got ack for BSN=18
|
||||
- got ack for BSN=19
|
||||
- got ack for BSN=20
|
||||
- V(B): (V(A)=21)""(V(S)-1=20) A=Acked N=Nacked U=Unacked X=Resend-Unacked I=Invalid
|
||||
Scheduling data message at RTS for DL TFI=0 (TRX=0, TS=4) prio=4
|
||||
TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW) downlink (V(A)==21 .. V(S)==21)
|
||||
|
@ -455,8 +465,8 @@ Polling is already scheduled for TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW)
|
|||
msg block (BSN 21, CS-1): 07 00 2a 4d 43 c0 01 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b
|
||||
Sending data request: trx=0 ts=4 sapi=5 arfcn=0 fn=95 block=10 data=07 00 2a 4d 43 c0 01 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b
|
||||
TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW) downlink acknowledge
|
||||
- ack: (BSN=86)"RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR"(BSN=21) R=ACK I=NACK
|
||||
TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW) DL analysis, range=21:22, lost=0, recv=1, skipped=0, bsn=20, info='R$..............................................................'
|
||||
- ack: (BSN=21)"R"(BSN=21) R=ACK I=NACK
|
||||
TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW) DL analysis, range=21:22, lost=0, recv=1, skipped=0, bsn=21, info='R...............................................................'
|
||||
- got ack for BSN=21
|
||||
- V(B): (V(A)=22)""(V(S)-1=21) A=Acked N=Nacked U=Unacked X=Resend-Unacked I=Invalid
|
||||
Scheduling data message at RTS for DL TFI=0 (TRX=0, TS=4) prio=4
|
||||
|
@ -474,6 +484,10 @@ Polling is already scheduled for TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FINISHED
|
|||
msg block (BSN 22, CS-1): 07 01 2c 4d 43 c0 01 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b
|
||||
Sending data request: trx=0 ts=4 sapi=5 arfcn=0 fn=203 block=11 data=07 01 2c 4d 43 c0 01 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b 2b
|
||||
TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FINISHED) downlink acknowledge
|
||||
- ack: (BSN=22)"R"(BSN=22) R=ACK I=NACK
|
||||
TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FINISHED) DL analysis, range=22:23, lost=0, recv=1, skipped=0, bsn=22, info='R...............................................................'
|
||||
- got ack for BSN=22
|
||||
- V(B): (V(A)=23)""(V(S)-1=22) A=Acked N=Nacked U=Unacked X=Resend-Unacked I=Invalid
|
||||
- Final ACK received.
|
||||
TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FINISHED) changes state from FINISHED to WAIT RELEASE
|
||||
TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE) starting timer 3193.
|
||||
|
@ -3696,6 +3710,34 @@ Polling is already scheduled for TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGP
|
|||
msg block (BSN 24, MCS-1): 07 00 06 16 18 3a 02 02 02 02 02 02 86 80 03 56 56 56 56 56 56 56 56 56 56 56 00
|
||||
Sending data request: trx=0 ts=4 sapi=5 arfcn=0 fn=108 block=1 data=07 00 06 16 18 3a 02 02 02 02 02 02 86 80 03 56 56 56 56 56 56 56 56 56 56 56 00
|
||||
TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) downlink acknowledge
|
||||
- ack: (BSN=0)"RRRRRRRRRRRRRRRRRRRRRRRRR"(BSN=24) R=ACK I=NACK
|
||||
TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) DL analysis, range=0:25, lost=0, recv=25, skipped=0, bsn=0, info='RRRRRRRRRRRRRRRRRRRRRRRRR.......................................'
|
||||
- got ack for BSN=0
|
||||
- got ack for BSN=1
|
||||
- got ack for BSN=2
|
||||
- got ack for BSN=3
|
||||
- got ack for BSN=4
|
||||
- got ack for BSN=5
|
||||
- got ack for BSN=6
|
||||
- got ack for BSN=7
|
||||
- got ack for BSN=8
|
||||
- got ack for BSN=9
|
||||
- got ack for BSN=10
|
||||
- got ack for BSN=11
|
||||
- got ack for BSN=12
|
||||
- got ack for BSN=13
|
||||
- got ack for BSN=14
|
||||
- got ack for BSN=15
|
||||
- got ack for BSN=16
|
||||
- got ack for BSN=17
|
||||
- got ack for BSN=18
|
||||
- got ack for BSN=19
|
||||
- got ack for BSN=20
|
||||
- got ack for BSN=21
|
||||
- got ack for BSN=22
|
||||
- got ack for BSN=23
|
||||
- got ack for BSN=24
|
||||
- V(B): (V(A)=25)""(V(S)-1=24) A=Acked N=Nacked U=Unacked X=Resend-Unacked I=Invalid
|
||||
- Final ACK received.
|
||||
TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) changes state from FLOW to WAIT RELEASE
|
||||
TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer 3193.
|
||||
|
@ -3954,6 +3996,29 @@ Polling is already scheduled for TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGP
|
|||
msg block (BSN 19, MCS-2): 07 c0 04 12 20 4a 02 02 02 02 02 02 02 02 86 80 03 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 00
|
||||
Sending data request: trx=0 ts=4 sapi=5 arfcn=0 fn=86 block=8 data=07 c0 04 12 20 4a 02 02 02 02 02 02 02 02 86 80 03 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 00
|
||||
TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) downlink acknowledge
|
||||
- ack: (BSN=0)"RRRRRRRRRRRRRRRRRRRR"(BSN=19) R=ACK I=NACK
|
||||
TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) DL analysis, range=0:20, lost=0, recv=20, skipped=0, bsn=0, info='RRRRRRRRRRRRRRRRRRRR............................................'
|
||||
- got ack for BSN=0
|
||||
- got ack for BSN=1
|
||||
- got ack for BSN=2
|
||||
- got ack for BSN=3
|
||||
- got ack for BSN=4
|
||||
- got ack for BSN=5
|
||||
- got ack for BSN=6
|
||||
- got ack for BSN=7
|
||||
- got ack for BSN=8
|
||||
- got ack for BSN=9
|
||||
- got ack for BSN=10
|
||||
- got ack for BSN=11
|
||||
- got ack for BSN=12
|
||||
- got ack for BSN=13
|
||||
- got ack for BSN=14
|
||||
- got ack for BSN=15
|
||||
- got ack for BSN=16
|
||||
- got ack for BSN=17
|
||||
- got ack for BSN=18
|
||||
- got ack for BSN=19
|
||||
- V(B): (V(A)=20)""(V(S)-1=19) A=Acked N=Nacked U=Unacked X=Resend-Unacked I=Invalid
|
||||
- Final ACK received.
|
||||
TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) changes state from FLOW to WAIT RELEASE
|
||||
TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer 3193.
|
||||
|
@ -4175,6 +4240,25 @@ Polling is already scheduled for TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGP
|
|||
msg block (BSN 15, MCS-3): 07 c0 03 06 04 8a 56 86 80 03 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 00
|
||||
Sending data request: trx=0 ts=4 sapi=5 arfcn=0 fn=69 block=4 data=07 c0 03 06 04 8a 56 86 80 03 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 00
|
||||
TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) downlink acknowledge
|
||||
- ack: (BSN=0)"RRRRRRRRRRRRRRRR"(BSN=15) R=ACK I=NACK
|
||||
TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) DL analysis, range=0:16, lost=0, recv=16, skipped=0, bsn=0, info='RRRRRRRRRRRRRRRR................................................'
|
||||
- got ack for BSN=0
|
||||
- got ack for BSN=1
|
||||
- got ack for BSN=2
|
||||
- got ack for BSN=3
|
||||
- got ack for BSN=4
|
||||
- got ack for BSN=5
|
||||
- got ack for BSN=6
|
||||
- got ack for BSN=7
|
||||
- got ack for BSN=8
|
||||
- got ack for BSN=9
|
||||
- got ack for BSN=10
|
||||
- got ack for BSN=11
|
||||
- got ack for BSN=12
|
||||
- got ack for BSN=13
|
||||
- got ack for BSN=14
|
||||
- got ack for BSN=15
|
||||
- V(B): (V(A)=16)""(V(S)-1=15) A=Acked N=Nacked U=Unacked X=Resend-Unacked I=Invalid
|
||||
- Final ACK received.
|
||||
TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) changes state from FLOW to WAIT RELEASE
|
||||
TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer 3193.
|
||||
|
@ -4363,6 +4447,22 @@ Polling is already scheduled for TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGP
|
|||
msg block (BSN 12, MCS-4): 07 00 03 00 70 3a 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 86 80 03 56 56 56 56 56 56 56 56 56 56 56 00
|
||||
Sending data request: trx=0 ts=4 sapi=5 arfcn=0 fn=56 block=1 data=07 00 03 00 70 3a 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 02 86 80 03 56 56 56 56 56 56 56 56 56 56 56 00
|
||||
TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) downlink acknowledge
|
||||
- ack: (BSN=0)"RRRRRRRRRRRRR"(BSN=12) R=ACK I=NACK
|
||||
TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) DL analysis, range=0:13, lost=0, recv=13, skipped=0, bsn=0, info='RRRRRRRRRRRRR...................................................'
|
||||
- got ack for BSN=0
|
||||
- got ack for BSN=1
|
||||
- got ack for BSN=2
|
||||
- got ack for BSN=3
|
||||
- got ack for BSN=4
|
||||
- got ack for BSN=5
|
||||
- got ack for BSN=6
|
||||
- got ack for BSN=7
|
||||
- got ack for BSN=8
|
||||
- got ack for BSN=9
|
||||
- got ack for BSN=10
|
||||
- got ack for BSN=11
|
||||
- got ack for BSN=12
|
||||
- V(B): (V(A)=13)""(V(S)-1=12) A=Acked N=Nacked U=Unacked X=Resend-Unacked I=Invalid
|
||||
- Final ACK received.
|
||||
TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) changes state from FLOW to WAIT RELEASE
|
||||
TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer 3193.
|
||||
|
@ -4531,6 +4631,20 @@ Polling is already scheduled for TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGP
|
|||
msg block (BSN 10, MCS-5): 07 80 02 08 44 57 40 40 40 40 40 40 40 c0 10 70 c0 ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca 0a
|
||||
Sending data request: trx=0 ts=4 sapi=5 arfcn=0 fn=47 block=11 data=07 80 02 08 44 57 40 40 40 40 40 40 40 c0 10 70 c0 ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca 0a
|
||||
TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) downlink acknowledge
|
||||
- ack: (BSN=0)"RRRRRRRRRRR"(BSN=10) R=ACK I=NACK
|
||||
TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) DL analysis, range=0:11, lost=0, recv=11, skipped=0, bsn=0, info='RRRRRRRRRRR.....................................................'
|
||||
- got ack for BSN=0
|
||||
- got ack for BSN=1
|
||||
- got ack for BSN=2
|
||||
- got ack for BSN=3
|
||||
- got ack for BSN=4
|
||||
- got ack for BSN=5
|
||||
- got ack for BSN=6
|
||||
- got ack for BSN=7
|
||||
- got ack for BSN=8
|
||||
- got ack for BSN=9
|
||||
- got ack for BSN=10
|
||||
- V(B): (V(A)=11)""(V(S)-1=10) A=Acked N=Nacked U=Unacked X=Resend-Unacked I=Invalid
|
||||
- Final ACK received.
|
||||
TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) changes state from FLOW to WAIT RELEASE
|
||||
TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer 3193.
|
||||
|
@ -4682,6 +4796,18 @@ Polling is already scheduled for TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGP
|
|||
msg block (BSN 8, MCS-6): 07 00 02 80 c0 e3 ca 10 70 c0 ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca 0a
|
||||
Sending data request: trx=0 ts=4 sapi=5 arfcn=0 fn=39 block=9 data=07 00 02 80 c0 e3 ca 10 70 c0 ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca 0a
|
||||
TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) downlink acknowledge
|
||||
- ack: (BSN=0)"RRRRRRRRR"(BSN=8) R=ACK I=NACK
|
||||
TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) DL analysis, range=0:9, lost=0, recv=9, skipped=0, bsn=0, info='RRRRRRRRR.......................................................'
|
||||
- got ack for BSN=0
|
||||
- got ack for BSN=1
|
||||
- got ack for BSN=2
|
||||
- got ack for BSN=3
|
||||
- got ack for BSN=4
|
||||
- got ack for BSN=5
|
||||
- got ack for BSN=6
|
||||
- got ack for BSN=7
|
||||
- got ack for BSN=8
|
||||
- V(B): (V(A)=9)""(V(S)-1=8) A=Acked N=Nacked U=Unacked X=Resend-Unacked I=Invalid
|
||||
- Final ACK received.
|
||||
TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) changes state from FLOW to WAIT RELEASE
|
||||
TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer 3193.
|
||||
|
@ -4830,6 +4956,20 @@ Polling is already scheduled for TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGP
|
|||
msg block (BSN 10, MCS-5): 07 80 02 08 44 57 40 40 40 40 40 40 40 c0 10 70 c0 ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca 0a
|
||||
Sending data request: trx=0 ts=4 sapi=5 arfcn=0 fn=30 block=7 data=07 80 02 08 44 57 40 40 40 40 40 40 40 c0 10 70 c0 ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca 0a
|
||||
TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) downlink acknowledge
|
||||
- ack: (BSN=0)"RRRRRRRRRRR"(BSN=10) R=ACK I=NACK
|
||||
TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) DL analysis, range=0:11, lost=0, recv=11, skipped=0, bsn=0, info='RRRRRRRRRRR.....................................................'
|
||||
- got ack for BSN=0
|
||||
- got ack for BSN=1
|
||||
- got ack for BSN=2
|
||||
- got ack for BSN=3
|
||||
- got ack for BSN=4
|
||||
- got ack for BSN=5
|
||||
- got ack for BSN=6
|
||||
- got ack for BSN=7
|
||||
- got ack for BSN=8
|
||||
- got ack for BSN=9
|
||||
- got ack for BSN=10
|
||||
- V(B): (V(A)=11)""(V(S)-1=10) A=Acked N=Nacked U=Unacked X=Resend-Unacked I=Invalid
|
||||
- Final ACK received.
|
||||
TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) changes state from FLOW to WAIT RELEASE
|
||||
TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer 3193.
|
||||
|
@ -4966,6 +5106,18 @@ Polling is already scheduled for TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGP
|
|||
msg block (BSN 8, MCS-8): 07 00 02 00 60 20 f5 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 0c 01 07 ac ac ac ac ac ac ac ac ac ac ac ac ac ac ac ac ac ac ac ac ac ac ac ac ac ac ac 80 d4 13 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 30 04 1c b0 b2 b2 b2 b2 b2 b2 b2 b2 b2 b2 b2 b2 b2 b2 b2 b2 b2 b2 b2 b2 b2 b2 b2 b2 b2 b2 02
|
||||
Sending data request: trx=0 ts=4 sapi=5 arfcn=0 fn=26 block=6 data=07 00 02 00 60 20 f5 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 0c 01 07 ac ac ac ac ac ac ac ac ac ac ac ac ac ac ac ac ac ac ac ac ac ac ac ac ac ac ac 80 d4 13 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 30 04 1c b0 b2 b2 b2 b2 b2 b2 b2 b2 b2 b2 b2 b2 b2 b2 b2 b2 b2 b2 b2 b2 b2 b2 b2 b2 b2 b2 02
|
||||
TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) downlink acknowledge
|
||||
- ack: (BSN=0)"RRRRRRRRR"(BSN=8) R=ACK I=NACK
|
||||
TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) DL analysis, range=0:9, lost=0, recv=9, skipped=0, bsn=0, info='RRRRRRRRR.......................................................'
|
||||
- got ack for BSN=0
|
||||
- got ack for BSN=1
|
||||
- got ack for BSN=2
|
||||
- got ack for BSN=3
|
||||
- got ack for BSN=4
|
||||
- got ack for BSN=5
|
||||
- got ack for BSN=6
|
||||
- got ack for BSN=7
|
||||
- got ack for BSN=8
|
||||
- V(B): (V(A)=9)""(V(S)-1=8) A=Acked N=Nacked U=Unacked X=Resend-Unacked I=Invalid
|
||||
- Final ACK received.
|
||||
TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) changes state from FLOW to WAIT RELEASE
|
||||
TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer 3193.
|
||||
|
@ -5103,6 +5255,18 @@ Polling is already scheduled for TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGP
|
|||
msg block (BSN 8, MCS-6): 07 00 02 80 c0 e3 ca 10 70 c0 ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca 0a
|
||||
Sending data request: trx=0 ts=4 sapi=5 arfcn=0 fn=26 block=6 data=07 00 02 80 c0 e3 ca 10 70 c0 ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca ca 0a
|
||||
TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) downlink acknowledge
|
||||
- ack: (BSN=0)"RRRRRRRRR"(BSN=8) R=ACK I=NACK
|
||||
TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) DL analysis, range=0:9, lost=0, recv=9, skipped=0, bsn=0, info='RRRRRRRRR.......................................................'
|
||||
- got ack for BSN=0
|
||||
- got ack for BSN=1
|
||||
- got ack for BSN=2
|
||||
- got ack for BSN=3
|
||||
- got ack for BSN=4
|
||||
- got ack for BSN=5
|
||||
- got ack for BSN=6
|
||||
- got ack for BSN=7
|
||||
- got ack for BSN=8
|
||||
- V(B): (V(A)=9)""(V(S)-1=8) A=Acked N=Nacked U=Unacked X=Resend-Unacked I=Invalid
|
||||
- Final ACK received.
|
||||
TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=FLOW EGPRS) changes state from FLOW to WAIT RELEASE
|
||||
TBF(TFI=0 TLLI=0xffeeddcc DIR=DL STATE=WAIT RELEASE EGPRS) starting timer 3193.
|
||||
|
|
Loading…
Reference in New Issue