diff options
author | Max <msuraev@sysmocom.de> | 2017-07-07 14:29:36 +0200 |
---|---|---|
committer | Max <msuraev@sysmocom.de> | 2017-08-14 15:48:37 +0200 |
commit | fd13f6c199d22a9f8a083c0e27fc2e8377894f6d (patch) | |
tree | 9ec71cb28dd7fa4aa4bb160dfcf44cbe15e954d1 /src/bts.cpp | |
parent | c4178e55ea5a0ac480f11e3352a3579cdb78025a (diff) |
Encapsulate handling of UL ACK timeout
Use helper methods instead checking and manipulating flag directly.
Change-Id: Ia3f009c52118db95b38a077e08eecda844e7f8d1
Related: OS#1539
Diffstat (limited to 'src/bts.cpp')
-rw-r--r-- | src/bts.cpp | 15 |
1 files changed, 6 insertions, 9 deletions
diff --git a/src/bts.cpp b/src/bts.cpp index 2bafd63d..e00bd761 100644 --- a/src/bts.cpp +++ b/src/bts.cpp @@ -998,6 +998,7 @@ void gprs_rlcmac_pdch::rcv_control_ack(Packet_Control_Acknowledgement_t *packet, struct gprs_rlcmac_tbf *tbf, *new_tbf; uint32_t tlli = packet->TLLI; GprsMs *ms = bts()->ms_by_tlli(tlli); + gprs_rlcmac_ul_tbf *ul_tbf; tbf = bts()->ul_tbf_by_poll_fn(fn, trx_no(), ts_no); if (!tbf) @@ -1024,16 +1025,12 @@ void gprs_rlcmac_pdch::rcv_control_ack(Packet_Control_Acknowledgement_t *packet, tbf->poll_state = GPRS_RLCMAC_POLL_NONE; /* check if this control ack belongs to packet uplink ack */ - if (tbf->ul_ack_state == GPRS_RLCMAC_UL_ACK_WAIT_ACK) { + ul_tbf = as_ul_tbf(tbf); + if (ul_tbf && ul_tbf->handle_ctrl_ack()) { LOGP(DRLCMAC, LOGL_DEBUG, "TBF: [UPLINK] END %s\n", tbf_name(tbf)); - tbf->ul_ack_state = GPRS_RLCMAC_UL_ACK_NONE; - if ((tbf->state_flags & - (1 << GPRS_RLCMAC_FLAG_TO_UL_ACK))) { - tbf->state_flags &= - ~(1 << GPRS_RLCMAC_FLAG_TO_UL_ACK); - LOGP(DRLCMAC, LOGL_NOTICE, "Recovered uplink " - "ack for UL %s\n", tbf_name(tbf)); - } + if (ul_tbf->ctrl_ack_to_toggle()) + LOGP(DRLCMAC, LOGL_NOTICE, "Recovered uplink ack for UL %s\n", tbf_name(tbf)); + tbf_free(tbf); return; } |