diff options
author | Holger Hans Peter Freyther <holger@moiji-mobile.com> | 2013-10-27 20:31:47 +0100 |
---|---|---|
committer | Holger Hans Peter Freyther <holger@moiji-mobile.com> | 2013-10-30 21:24:13 +0100 |
commit | 34f6e5ebe63f46ccf4ce97899c66a83f6f39d355 (patch) | |
tree | 9845e5068beffa43e5e1a9f03ba799489d4746d4 /src | |
parent | 474685e26ec4574aa2fab782b93bc50c23104905 (diff) |
tbf: Make tfi private and update the code
All logging code that used tbf->tfi is now using tbf_name to
print the the TBF. External code is now using tfi() which is
inlined and should result in the same code being generated as
before (+debug code that can be stripped).
Diffstat (limited to 'src')
-rw-r--r-- | src/bts.cpp | 35 | ||||
-rw-r--r-- | src/encoding.cpp | 10 | ||||
-rw-r--r-- | src/gprs_rlcmac_sched.cpp | 10 | ||||
-rw-r--r-- | src/gprs_rlcmac_ts_alloc.cpp | 8 | ||||
-rw-r--r-- | src/tbf.cpp | 63 | ||||
-rw-r--r-- | src/tbf.h | 9 |
6 files changed, 71 insertions, 64 deletions
diff --git a/src/bts.cpp b/src/bts.cpp index 261b5d20..285c184a 100644 --- a/src/bts.cpp +++ b/src/bts.cpp @@ -424,13 +424,14 @@ int BTS::rcv_rach(uint8_t ra, uint32_t Fn, int16_t qta) tbf_new_state(tbf, GPRS_RLCMAC_FLOW); tbf->state_flags |= (1 << GPRS_RLCMAC_FLAG_CCCH); tbf_timer_start(tbf, 3169, m_bts.t3169, 0); - LOGP(DRLCMAC, LOGL_DEBUG, "TBF: [UPLINK] START TFI: %u\n", - tbf->tfi); - LOGP(DRLCMAC, LOGL_DEBUG, "RX: [PCU <- BTS] TFI: %u RACH " - "qbit-ta=%d ra=0x%02x, Fn=%d (%d,%d,%d)\n", tbf->tfi, + LOGP(DRLCMAC, LOGL_DEBUG, "%s [UPLINK] START\n", + tbf_name(tbf)); + LOGP(DRLCMAC, LOGL_DEBUG, "%s RX: [PCU <- BTS] RACH " + "qbit-ta=%d ra=0x%02x, Fn=%d (%d,%d,%d)\n", + tbf_name(tbf), qta, ra, Fn, (Fn / (26 * 51)) % 32, Fn % 51, Fn % 26); - LOGP(DRLCMAC, LOGL_INFO, "TX: START TFI: %u Immediate " - "Assignment Uplink (AGCH)\n", tbf->tfi); + LOGP(DRLCMAC, LOGL_INFO, "%s TX: START Immediate " + "Assignment Uplink (AGCH)\n", tbf_name(tbf)); } bitvec *immediate_assignment = bitvec_alloc(22) /* without plen */; bitvec_unhex(immediate_assignment, @@ -443,7 +444,7 @@ int BTS::rcv_rach(uint8_t ra, uint32_t Fn, int16_t qta) else plen = Encoding::write_immediate_assignment(&m_bts, immediate_assignment, 0, ra, Fn, tbf->ta, tbf->trx->arfcn, tbf->first_ts, tbf->tsc, - tbf->tfi, tbf->dir.ul.usf[tbf->first_ts], 0, 0, 0, 0, + tbf->tfi(), tbf->dir.ul.usf[tbf->first_ts], 0, 0, 0, 0, m_bts.alpha, m_bts.gamma, -1); pcu_l1if_tx_agch(immediate_assignment, plen); bitvec_free(immediate_assignment); @@ -499,7 +500,7 @@ void BTS::snd_dl_ass(gprs_rlcmac_tbf *tbf, uint8_t poll, const char *imsi) * so the assignment will not conflict with possible RACH requests. */ plen = Encoding::write_immediate_assignment(&m_bts, immediate_assignment, 1, 125, (tbf->pdch[tbf->first_ts]->last_rts_fn + 21216) % 2715648, tbf->ta, - tbf->trx->arfcn, tbf->first_ts, tbf->tsc, tbf->tfi, 0, tbf->tlli(), poll, + tbf->trx->arfcn, tbf->first_ts, tbf->tsc, tbf->tfi(), 0, tbf->tlli(), poll, tbf->poll_fn, 0, m_bts.alpha, m_bts.gamma, -1); pcu_l1if_tx_pch(immediate_assignment, plen, imsi); bitvec_free(immediate_assignment); @@ -712,9 +713,9 @@ int gprs_rlcmac_pdch::rcv_data_block_acknowledged(uint8_t *data, uint8_t len, in "UL DATA TFI=%d.\n", tbf->tlli(), rh->tfi); if ((dl_tbf = bts()->tbf_by_tlli(tbf->tlli(), GPRS_RLCMAC_DL_TBF))) { LOGP(DRLCMACUL, LOGL_NOTICE, "Got RACH from " - "TLLI=0x%08x while DL TFI=%d still exists. " + "TLLI=0x%08x while %s still exists. " "Killing pending DL TBF\n", tbf->tlli(), - dl_tbf->tfi); + tbf_name(dl_tbf)); tbf_free(dl_tbf); } /* tbf_by_tlli will not find your TLLI, because it is not @@ -920,7 +921,7 @@ void gprs_rlcmac_pdch::rcv_control_ack(Packet_Control_Acknowledgement_t *packet, tbf->state_flags &= ~(1 << GPRS_RLCMAC_FLAG_TO_DL_ASS); LOGP(DRLCMAC, LOGL_NOTICE, "Recovered downlink " - "assignment for DL TFI=%d\n", tbf->tfi); + "assignment for %s\n", tbf_name(tbf)); } tbf_assign_control_ts(tbf); return; @@ -969,7 +970,7 @@ void gprs_rlcmac_pdch::rcv_control_dl_ack_nack(Packet_Downlink_Ack_Nack_t *ack_n fn, tfi, trx_no(), ts_no); return; } - if (tbf->tfi != tfi) { + if (tbf->tfi() != tfi) { LOGP(DRLCMAC, LOGL_NOTICE, "PACKET DOWNLINK ACK with " "wrong TFI=%d, ignoring!\n", tfi); return; @@ -978,7 +979,7 @@ void gprs_rlcmac_pdch::rcv_control_dl_ack_nack(Packet_Downlink_Ack_Nack_t *ack_n if ((tbf->state_flags & (1 << GPRS_RLCMAC_FLAG_TO_DL_ACK))) { tbf->state_flags &= ~(1 << GPRS_RLCMAC_FLAG_TO_DL_ACK); LOGP(DRLCMAC, LOGL_NOTICE, "Recovered downlink ack " - "for DL TFI=%d\n", tbf->tfi); + "for %s\n", tbf_name(tbf)); } /* reset N3105 */ tbf->n3105 = 0; @@ -1020,18 +1021,18 @@ void gprs_rlcmac_pdch::rcv_resource_request(Packet_Resource_Request_t *request, tbf = bts()->tbf_by_tlli(tlli, GPRS_RLCMAC_UL_TBF); if (tbf) { LOGP(DRLCMACUL, LOGL_NOTICE, "Got RACH from " - "TLLI=0x%08x while UL TFI=%d still " + "TLLI=0x%08x while %s still " "exists. Killing pending DL TBF\n", - tlli, tbf->tfi); + tlli, tbf_name(tbf)); tbf_free(tbf); tbf = NULL; } if ((dl_tbf = bts()->tbf_by_tlli(tlli, GPRS_RLCMAC_DL_TBF))) { LOGP(DRLCMACUL, LOGL_NOTICE, "Got RACH from " - "TLLI=0x%08x while DL TFI=%d still exists. " + "TLLI=0x%08x while %s still exists. " "Killing pending DL TBF\n", tlli, - dl_tbf->tfi); + tbf_name(dl_tbf)); tbf_free(dl_tbf); } LOGP(DRLCMAC, LOGL_DEBUG, "MS requests UL TBF " diff --git a/src/encoding.cpp b/src/encoding.cpp index 9eda8efb..4604cb81 100644 --- a/src/encoding.cpp +++ b/src/encoding.cpp @@ -219,7 +219,7 @@ void Encoding::write_packet_uplink_assignment( bitvec_write_field(dest, wp,0x0,1); // USF_GRANULARITY bitvec_write_field(dest, wp,0x1,1); // switch TFI : on - bitvec_write_field(dest, wp,tbf->tfi,5);// TFI + bitvec_write_field(dest, wp,tbf->tfi(),5);// TFI bitvec_write_field(dest, wp,0x0,1); // bitvec_write_field(dest, wp,0x0,1); // TBF Starting Time = off @@ -292,7 +292,7 @@ void Encoding::write_packet_downlink_assignment(RlcMacDownlink_t * block, uint8_ block->u.Packet_Downlink_Assignment.Frequency_Parameters.u.ARFCN = tbf->trx->arfcn; // ARFCN block->u.Packet_Downlink_Assignment.Exist_DOWNLINK_TFI_ASSIGNMENT = 0x1; // DOWNLINK TFI ASSIGNMENT = on - block->u.Packet_Downlink_Assignment.DOWNLINK_TFI_ASSIGNMENT = tbf->tfi; // TFI + block->u.Packet_Downlink_Assignment.DOWNLINK_TFI_ASSIGNMENT = tbf->tfi(); // TFI block->u.Packet_Downlink_Assignment.Exist_Power_Control_Parameters = 0x1; // Power Control Parameters = on block->u.Packet_Downlink_Assignment.Power_Control_Parameters.ALPHA = alpha; // ALPHA @@ -366,8 +366,8 @@ void Encoding::write_packet_uplink_ack(struct gprs_rlcmac_bts *bts, uint16_t mod_sns_half = (tbf->sns >> 1) - 1; char bit; - LOGP(DRLCMACUL, LOGL_DEBUG, "Sending Ack/Nack for TFI=%d " - "(final=%d)\n", tbf->tfi, final); + LOGP(DRLCMACUL, LOGL_DEBUG, "Encoding Ack/Nack for %s " + "(final=%d)\n", tbf_name(tbf), final); block->PAYLOAD_TYPE = 0x1; // RLC/MAC control block that does not include the optional octets of the RLC/MAC control header block->RRBP = 0x0; // N+13 @@ -376,7 +376,7 @@ void Encoding::write_packet_uplink_ack(struct gprs_rlcmac_bts *bts, block->u.Packet_Uplink_Ack_Nack.MESSAGE_TYPE = 0x9; // Packet Downlink Assignment block->u.Packet_Uplink_Ack_Nack.PAGE_MODE = 0x0; // Normal Paging - block->u.Packet_Uplink_Ack_Nack.UPLINK_TFI = tbf->tfi; // Uplink TFI + block->u.Packet_Uplink_Ack_Nack.UPLINK_TFI = tbf->tfi(); // Uplink TFI block->u.Packet_Uplink_Ack_Nack.UnionType = 0x0; // PU_AckNack_GPRS = on block->u.Packet_Uplink_Ack_Nack.u.PU_AckNack_GPRS_Struct.CHANNEL_CODING_COMMAND = bts->initial_cs_ul - 1; // CS1 diff --git a/src/gprs_rlcmac_sched.cpp b/src/gprs_rlcmac_sched.cpp index 504f6b78..02330cb1 100644 --- a/src/gprs_rlcmac_sched.cpp +++ b/src/gprs_rlcmac_sched.cpp @@ -134,9 +134,8 @@ static struct msgb *sched_select_ctrl_msg(struct gprs_rlcmac_bts *bts, /* any message */ if (msg) { LOGP(DRLCMACSCHED, LOGL_DEBUG, "Scheduling control " - "message at RTS for %s TFI=%d (TRX=%d, TS=%d)\n", - (tbf->direction == GPRS_RLCMAC_UL_TBF) - ? "UL" : "DL", tbf->tfi, trx, ts); + "message at RTS for %s (TRX=%d, TS=%d)\n", + tbf_name(tbf), trx, ts); return msg; } /* schedule PACKET PAGING REQUEST */ @@ -240,10 +239,9 @@ int gprs_rlcmac_rcv_rts_block(struct gprs_rlcmac_bts *bts, if (poll_tbf) LOGP(DRLCMACSCHED, LOGL_DEBUG, "Received RTS for PDCH: TRX=%d " "TS=%d FN=%d block_nr=%d scheduling free USF for " - "polling at FN=%d of %s TFI=%d\n", trx, ts, fn, + "polling at FN=%d of %s\n", trx, ts, fn, block_nr, poll_fn, - (poll_tbf->direction == GPRS_RLCMAC_UL_TBF) - ? "UL" : "DL", poll_tbf->tfi); + tbf_name(poll_tbf)); /* use free USF */ /* else. check for sba */ else if ((sba_fn = bts->bts->sba()->sched(trx, ts, fn, block_nr) != 0xffffffff)) diff --git a/src/gprs_rlcmac_ts_alloc.cpp b/src/gprs_rlcmac_ts_alloc.cpp index c92192c6..8d8e7f04 100644 --- a/src/gprs_rlcmac_ts_alloc.cpp +++ b/src/gprs_rlcmac_ts_alloc.cpp @@ -120,8 +120,8 @@ static void assign_uplink_tbf_usf( struct gprs_rlcmac_pdch *pdch, struct gprs_rlcmac_tbf *tbf, int8_t usf) { - tbf->trx->ul_tbf[tbf->tfi] = tbf; - pdch->ul_tbf[tbf->tfi] = tbf; + tbf->trx->ul_tbf[tbf->tfi()] = tbf; + pdch->ul_tbf[tbf->tfi()] = tbf; tbf->pdch[pdch->ts_no] = pdch; tbf->dir.ul.usf[pdch->ts_no] = usf; } @@ -130,8 +130,8 @@ static void assign_dlink_tbf( struct gprs_rlcmac_pdch *pdch, struct gprs_rlcmac_tbf *tbf) { - tbf->trx->dl_tbf[tbf->tfi] = tbf; - pdch->dl_tbf[tbf->tfi] = tbf; + tbf->trx->dl_tbf[tbf->tfi()] = tbf; + pdch->dl_tbf[tbf->tfi()] = tbf; tbf->pdch[pdch->ts_no] = pdch; } diff --git a/src/tbf.cpp b/src/tbf.cpp index 9c61ca1f..0e2481b5 100644 --- a/src/tbf.cpp +++ b/src/tbf.cpp @@ -279,19 +279,19 @@ static void tbf_unlink_pdch(struct gprs_rlcmac_tbf *tbf) int ts; if (tbf->direction == GPRS_RLCMAC_UL_TBF) { - tbf->trx->ul_tbf[tbf->tfi] = NULL; + tbf->trx->ul_tbf[tbf->tfi()] = NULL; for (ts = 0; ts < 8; ts++) { pdch = tbf->pdch[ts]; if (pdch) - pdch->ul_tbf[tbf->tfi] = NULL; + pdch->ul_tbf[tbf->tfi()] = NULL; tbf->pdch[ts] = NULL; } } else { - tbf->trx->dl_tbf[tbf->tfi] = NULL; + tbf->trx->dl_tbf[tbf->tfi()] = NULL; for (ts = 0; ts < 8; ts++) { pdch = tbf->pdch[ts]; if (pdch) - pdch->dl_tbf[tbf->tfi] = NULL; + pdch->dl_tbf[tbf->tfi()] = NULL; tbf->pdch[ts] = NULL; } } @@ -524,7 +524,8 @@ void gprs_rlcmac_tbf::poll_timeout() if ((state_flags & (1 << GPRS_RLCMAC_FLAG_CCCH)) && !(state_flags & (1 << GPRS_RLCMAC_FLAG_DL_ACK))) { LOGP(DRLCMAC, LOGL_DEBUG, "Re-send dowlink assignment " - "for TFI=%d on PCH (IMSI=%s)\n", tfi, + "for %s on PCH (IMSI=%s)\n", + tbf_name(this), dir.dl.imsi); /* send immediate assignment */ bts->snd_dl_ass(this, 0, dir.dl.imsi); @@ -577,7 +578,7 @@ next_diagram: tbf->diag = diagram_num; #endif tbf->direction = dir; - tbf->tfi = tfi; + tbf->m_tfi = tfi; tbf->trx = &bts->trx[trx]; tbf->ms_class = ms_class; tbf->ws = 64; @@ -926,8 +927,8 @@ struct msgb *gprs_rlcmac_tbf::create_dl_acked_block(uint32_t fn, uint8_t ts) uint16_t space, chunk; int first_fin_ack = 0; - LOGP(DRLCMACDL, LOGL_DEBUG, "DL DATA TFI=%d downlink (V(A)==%d .. " - "V(S)==%d)\n", tfi, dir.dl.v_a, dir.dl.v_s); + LOGP(DRLCMACDL, LOGL_DEBUG, "%s downlink (V(A)==%d .. " + "V(S)==%d)\n", tbf_name(this), dir.dl.v_a, dir.dl.v_s); do_resend: /* check if there is a block with negative acknowledgement */ @@ -1015,7 +1016,7 @@ do_resend: rh->rrbp = rh->s_p = 0; /* Polling, set later, if required */ rh->usf = 7; /* will be set at scheduler */ rh->pr = 0; /* FIXME: power reduction */ - rh->tfi = tfi; /* TFI */ + rh->tfi = m_tfi; /* TFI */ rh->fbi = 0; /* Final Block Indicator, set late, if true */ rh->bsn = dir.dl.v_s; /* Block Sequence Number */ rh->e = 0; /* Extension bit, maybe set later */ @@ -1047,8 +1048,8 @@ do_resend: "this is a final block, we don't add length " "header, and we are done\n", chunk, space); LOGP(DRLCMACDL, LOGL_INFO, "Complete DL frame for " - "TFI=%d that fits precisely in last block: " - "len=%d\n", tfi, llc_length); + "%s that fits precisely in last block: " + "len=%d\n", tbf_name(this), llc_length); gprs_rlcmac_dl_bw(this, llc_length); /* block is filled, so there is no extension */ *e_pointer |= 0x01; @@ -1107,8 +1108,8 @@ do_resend: memcpy(data, llc_frame + llc_index, chunk); data += chunk; space -= chunk; - LOGP(DRLCMACDL, LOGL_INFO, "Complete DL frame for TFI=%d: " - "len=%d\n", tfi, llc_length); + LOGP(DRLCMACDL, LOGL_INFO, "Complete DL frame for %s" + "len=%d\n", tbf_name(this), llc_length); gprs_rlcmac_dl_bw(this, llc_length); /* reset LLC frame */ llc_index = llc_length = 0; @@ -1116,7 +1117,7 @@ do_resend: msg = llc_dequeue(gprs_bssgp_pcu_current_bctx()); if (msg) { LOGP(DRLCMACDL, LOGL_INFO, "- Dequeue next LLC for " - "TFI=%d (len=%d)\n", tfi, msg->len); + "%s (len=%d)\n", tbf_name(this), msg->len); update_llc_frame(msg); msgb_free(msg); } @@ -1174,8 +1175,8 @@ tx_block: /* scheduling not possible, because: */ if (poll_state != GPRS_RLCMAC_POLL_NONE) LOGP(DRLCMAC, LOGL_DEBUG, "Polling is already " - "sheduled for TFI=%d, so we must wait for " - "requesting downlink ack\n", tfi); + "sheduled for %s, so we must wait for " + "requesting downlink ack\n", tbf_name(this)); else if (control_ts != ts) LOGP(DRLCMAC, LOGL_DEBUG, "Polling cannot be " "sheduled in this TS %d, waiting for " @@ -1242,8 +1243,8 @@ struct msgb *gprs_rlcmac_tbf::create_dl_ass(uint32_t fn) if (poll_ass_dl) { if (poll_state != GPRS_RLCMAC_POLL_NONE) { LOGP(DRLCMAC, LOGL_DEBUG, "Polling is already sheduled " - "for TFI=%d, so we must wait for downlink " - "assignment...\n", tfi); + "for %s, so we must wait for downlink " + "assignment...\n", tbf_name(this)); return NULL; } if (bts->sba()->find(trx->trx_no, control_ts, (fn + 13) % 2715648)) { @@ -1269,8 +1270,8 @@ struct msgb *gprs_rlcmac_tbf::create_dl_ass(uint32_t fn) new_tbf = this; if (!new_tbf) { LOGP(DRLCMACDL, LOGL_ERROR, "We have a schedule for downlink " - "assignment at uplink TFI=%d, but there is no downlink " - "TBF\n", tfi); + "assignment at uplink %s, but there is no downlink " + "TBF\n", tbf_name(this)); dl_ass_state = GPRS_RLCMAC_DL_ASS_NONE; return NULL; } @@ -1287,7 +1288,7 @@ struct msgb *gprs_rlcmac_tbf::create_dl_ass(uint32_t fn) "2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b"); LOGP(DRLCMAC, LOGL_INFO, "%s start Packet Downlink Assignment (PACCH)\n", tbf_name(new_tbf)); RlcMacDownlink_t * mac_control_block = (RlcMacDownlink_t *)talloc_zero(tall_pcu_ctx, RlcMacDownlink_t); - Encoding::write_packet_downlink_assignment(mac_control_block, tfi, + Encoding::write_packet_downlink_assignment(mac_control_block, m_tfi, (direction == GPRS_RLCMAC_DL_TBF), new_tbf, poll_ass_dl, bts_data()->alpha, bts_data()->gamma, -1, 0); LOGP(DRLCMAC, LOGL_DEBUG, "+++++++++++++++++++++++++ TX : Packet Downlink Assignment +++++++++++++++++++++++++\n"); @@ -1323,8 +1324,8 @@ struct msgb *gprs_rlcmac_tbf::create_ul_ass(uint32_t fn) #if POLLING_ASSIGNMENT_UL == 1 if (poll_state != GPRS_RLCMAC_POLL_NONE) { LOGP(DRLCMACUL, LOGL_DEBUG, "Polling is already " - "sheduled for TFI=%d, so we must wait for uplink " - "assignment...\n", tfi); + "sheduled for %s, so we must wait for uplink " + "assignment...\n", tbf_name(this)); return NULL; } if (bts->sba()->find(trx->trx_no, control_ts, (fn + 13) % 2715648)) { @@ -1343,8 +1344,8 @@ struct msgb *gprs_rlcmac_tbf::create_ul_ass(uint32_t fn) if (!new_tbf) { LOGP(DRLCMACUL, LOGL_ERROR, "We have a schedule for uplink " - "assignment at downlink TFI=%d, but there is no uplink " - "TBF\n", tfi); + "assignment at downlink %s, but there is no uplink " + "TBF\n", tbf_name(this)); ul_ass_state = GPRS_RLCMAC_UL_ASS_NONE; return NULL; } @@ -1360,7 +1361,7 @@ struct msgb *gprs_rlcmac_tbf::create_ul_ass(uint32_t fn) } bitvec_unhex(ass_vec, "2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b"); - Encoding::write_packet_uplink_assignment(bts_data(), ass_vec, tfi, + Encoding::write_packet_uplink_assignment(bts_data(), ass_vec, m_tfi, (direction == GPRS_RLCMAC_DL_TBF), m_tlli, m_tlli_valid, new_tbf, POLLING_ASSIGNMENT_UL, bts_data()->alpha, bts_data()->gamma, -1); @@ -1395,8 +1396,8 @@ struct msgb *gprs_rlcmac_tbf::create_ul_ack(uint32_t fn) if (final) { if (poll_state != GPRS_RLCMAC_POLL_NONE) { LOGP(DRLCMACUL, LOGL_DEBUG, "Polling is already " - "sheduled for TFI=%d, so we must wait for " - "final uplink ack...\n", tfi); + "sheduled for %s, so we must wait for " + "final uplink ack...\n", tbf_name(this)); return NULL; } if (bts->sba()->find(trx->trx_no, control_ts, (fn + 13) % 2715648)) { @@ -1452,7 +1453,7 @@ int gprs_rlcmac_tbf::snd_dl_ack(uint8_t final, uint8_t ssn, uint8_t *rbb) struct msgb *msg; uint16_t lost = 0, received = 0; - LOGP(DRLCMACDL, LOGL_DEBUG, "TFI=%d downlink acknowledge\n", tfi); + LOGP(DRLCMACDL, LOGL_DEBUG, "%s downlink acknowledge\n", tbf_name(this)); if (!final) { /* show received array in debug (bit 64..1) */ @@ -1476,7 +1477,7 @@ int gprs_rlcmac_tbf::snd_dl_ack(uint8_t final, uint8_t ssn, uint8_t *rbb) * FIXME: we should implement polling for * control ack!*/ LOGP(DRLCMACDL, LOGL_NOTICE, "- ack range is out of " - "V(A)..V(S) range (DL TFI=%d) Free TBF!\n", tfi); + "V(A)..V(S) range %s Free TBF!\n", tbf_name(this)); return 1; /* indicate to free TBF */ } /* SSN - 1 is in range V(A)..V(S)-1 */ @@ -1627,7 +1628,7 @@ const char *tbf_name(gprs_rlcmac_tbf *tbf) { static char buf[40]; snprintf(buf, sizeof(buf), "TBF(TFI=%d TLLI=0x%08x DIR=%s)", - tbf->tfi, tbf->m_tlli, + tbf->m_tfi, tbf->m_tlli, tbf->direction == GPRS_RLCMAC_UL_TBF ? "UL" : "DL"); buf[sizeof(buf) - 1] = '\0'; return buf; @@ -120,10 +120,11 @@ struct gprs_rlcmac_tbf { bool is_tlli_valid() const; void tlli_mark_valid(); + uint8_t tfi() const; + struct llist_head list; uint32_t state_flags; enum gprs_rlcmac_tbf_direction direction; - uint8_t tfi; struct gprs_rlcmac_trx *trx; uint8_t tsc; uint8_t first_ts; /* first TS used by TBF */ @@ -224,6 +225,7 @@ struct gprs_rlcmac_tbf { */ uint32_t m_tlli; uint8_t m_tlli_valid; + uint8_t m_tfi; protected: gprs_rlcmac_bts *bts_data() const; @@ -280,4 +282,9 @@ inline bool gprs_rlcmac_tbf::is_tlli_valid() const return m_tlli_valid; } +inline uint8_t gprs_rlcmac_tbf::tfi() const +{ + return m_tfi; +} + const char *tbf_name(gprs_rlcmac_tbf *tbf); |