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/tbf.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/tbf.cpp')
-rw-r--r-- | src/tbf.cpp | 22 |
1 files changed, 10 insertions, 12 deletions
diff --git a/src/tbf.cpp b/src/tbf.cpp index bbed29ce..1ac33d7a 100644 --- a/src/tbf.cpp +++ b/src/tbf.cpp @@ -607,27 +607,25 @@ void gprs_rlcmac_tbf::set_polling(uint32_t new_poll_fn, uint8_t ts) void gprs_rlcmac_tbf::poll_timeout() { + gprs_rlcmac_ul_tbf *ul_tbf = as_ul_tbf(this); + LOGP(DRLCMAC, LOGL_NOTICE, "%s poll timeout for FN=%d, TS=%d (curr FN %d)\n", tbf_name(this), poll_fn, poll_ts, bts->current_frame_number()); poll_state = GPRS_RLCMAC_POLL_NONE; - if (ul_ack_state == GPRS_RLCMAC_UL_ACK_WAIT_ACK) { - if (!(state_flags & (1 << GPRS_RLCMAC_FLAG_TO_UL_ACK))) { - LOGP(DRLCMAC, LOGL_NOTICE, "- Timeout for polling " - "PACKET CONTROL ACK for PACKET UPLINK ACK\n"); + if (ul_tbf && ul_tbf->handle_ctrl_ack()) { + if (!ul_tbf->ctrl_ack_to_toggle()) { + LOGP(DRLCMAC, LOGL_NOTICE, "- Timeout for polling PACKET CONTROL ACK for PACKET UPLINK ACK\n"); rlcmac_diag(); - state_flags |= (1 << GPRS_RLCMAC_FLAG_TO_UL_ACK); } - ul_ack_state = GPRS_RLCMAC_UL_ACK_NONE; bts->rlc_ack_timedout(); bts->pkt_ul_ack_nack_poll_timedout(); if (state_is(GPRS_RLCMAC_FINISHED)) { - gprs_rlcmac_ul_tbf *ul_tbf = as_ul_tbf(this); ul_tbf->m_n3103++; if (ul_tbf->m_n3103 == ul_tbf->bts->bts_data()->n3103) { LOGP(DRLCMAC, LOGL_NOTICE, - "- N3103 exceeded\n"); + "- N3103 exceeded\n"); bts->pkt_ul_ack_nack_poll_failed(); ul_tbf->set_state(GPRS_RLCMAC_RELEASING); tbf_timer_start(ul_tbf, 3169, ul_tbf->bts->bts_data()->t3169, 0); @@ -640,10 +638,10 @@ void gprs_rlcmac_tbf::poll_timeout() } else if (ul_ass_state == GPRS_RLCMAC_UL_ASS_WAIT_ACK) { if (!(state_flags & (1 << GPRS_RLCMAC_FLAG_TO_UL_ASS))) { LOGP(DRLCMAC, LOGL_NOTICE, "- Timeout for polling " - "PACKET CONTROL ACK for PACKET UPLINK " - "ASSIGNMENT.\n"); - rlcmac_diag(); - state_flags |= (1 << GPRS_RLCMAC_FLAG_TO_UL_ASS); + "PACKET CONTROL ACK for PACKET UPLINK " + "ASSIGNMENT.\n"); + rlcmac_diag(); + state_flags |= (1 << GPRS_RLCMAC_FLAG_TO_UL_ASS); } ul_ass_state = GPRS_RLCMAC_UL_ASS_NONE; n3105++; |