From aae1bfbbe0694db5df21073780fad964044dc4c1 Mon Sep 17 00:00:00 2001 From: Max Date: Fri, 7 Jul 2017 13:49:29 +0200 Subject: Remove TBF knowledge from rcv_control*dl_ack_nack Do not access TBF internals directly from rcv_control*dl_ack_nack() - wrap corresponding code into TBF-DL method. Change-Id: I3d1b5782001e45617b4a960612fcfc249904b37c Related: OS#1539 --- src/bts.cpp | 28 ++++++++-------------------- 1 file changed, 8 insertions(+), 20 deletions(-) (limited to 'src/bts.cpp') diff --git a/src/bts.cpp b/src/bts.cpp index 1d27284b..5192646f 100644 --- a/src/bts.cpp +++ b/src/bts.cpp @@ -1175,17 +1175,11 @@ void gprs_rlcmac_pdch::rcv_control_dl_ack_nack(Packet_Downlink_Ack_Nack_t *ack_n "wrong TFI=%d, ignoring!\n", tfi); return; } - tbf->state_flags |= (1 << GPRS_RLCMAC_FLAG_DL_ACK); - 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 %s\n", tbf_name(tbf)); - } - /* reset N3105 */ - tbf->n3105 = 0; - tbf->stop_t3191(); + + if (tbf->handle_ack_nack()) + LOGP(DRLCMAC, LOGL_NOTICE, "Recovered downlink ack for %s\n", tbf_name(tbf)); + LOGP(DRLCMAC, LOGL_DEBUG, "RX: [PCU <- BTS] %s Packet Downlink Ack/Nack\n", tbf_name(tbf)); - tbf->poll_state = GPRS_RLCMAC_POLL_NONE; bits.data = bits_data; bits.data_len = sizeof(bits_data); @@ -1263,19 +1257,13 @@ void gprs_rlcmac_pdch::rcv_control_egprs_dl_ack_nack(EGPRS_PD_AckNack_t *ack_nac "wrong TFI=%d, ignoring!\n", tfi); return; } - tbf->state_flags |= (1 << GPRS_RLCMAC_FLAG_DL_ACK); - 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 EGPRS downlink ack " - "for %s\n", tbf_name(tbf)); - } - /* reset N3105 */ - tbf->n3105 = 0; - tbf->stop_t3191(); + + if (tbf->handle_ack_nack()) + LOGP(DRLCMAC, LOGL_NOTICE, "Recovered EGPRS downlink ack for %s\n", tbf_name(tbf)); + LOGP(DRLCMAC, LOGL_DEBUG, "RX: [PCU <- BTS] %s EGPRS Packet Downlink Ack/Nack\n", tbf_name(tbf)); - tbf->poll_state = GPRS_RLCMAC_POLL_NONE; LOGP(DRLCMAC, LOGL_DEBUG, "EGPRS ACK/NACK: " "ut: %d, final: %d, bow: %d, eow: %d, ssn: %d, have_crbb: %d, " -- cgit v1.2.3