aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHolger Hans Peter Freyther <holger@moiji-mobile.com>2013-10-27 20:31:47 +0100
committerHolger Hans Peter Freyther <holger@moiji-mobile.com>2013-10-30 21:24:13 +0100
commit34f6e5ebe63f46ccf4ce97899c66a83f6f39d355 (patch)
tree9845e5068beffa43e5e1a9f03ba799489d4746d4
parent474685e26ec4574aa2fab782b93bc50c23104905 (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).
-rw-r--r--src/bts.cpp35
-rw-r--r--src/encoding.cpp10
-rw-r--r--src/gprs_rlcmac_sched.cpp10
-rw-r--r--src/gprs_rlcmac_ts_alloc.cpp8
-rw-r--r--src/tbf.cpp63
-rw-r--r--src/tbf.h9
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;
diff --git a/src/tbf.h b/src/tbf.h
index 5d2a10bd..e8b66c94 100644
--- a/src/tbf.h
+++ b/src/tbf.h
@@ -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);