diff options
author | Max <msuraev@sysmocom.de> | 2017-07-07 13:49:29 +0200 |
---|---|---|
committer | Max <msuraev@sysmocom.de> | 2017-07-10 09:39:53 +0000 |
commit | aae1bfbbe0694db5df21073780fad964044dc4c1 (patch) | |
tree | 180d8903cef422c2d38956abca655a8b73df3cb8 /src/tbf_dl.cpp | |
parent | 557959546441ec1aa7667ddaf8fcfeccec23f493 (diff) |
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
Diffstat (limited to 'src/tbf_dl.cpp')
-rw-r--r-- | src/tbf_dl.cpp | 26 |
1 files changed, 24 insertions, 2 deletions
diff --git a/src/tbf_dl.cpp b/src/tbf_dl.cpp index 24c6385c..a894789e 100644 --- a/src/tbf_dl.cpp +++ b/src/tbf_dl.cpp @@ -609,6 +609,29 @@ int gprs_rlcmac_dl_tbf::create_new_bsn(const uint32_t fn, GprsCodingScheme cs) return bsn; } +void gprs_rlcmac_dl_tbf::clear_poll_timeout_flag() +{ + state_flags &= ~(1 << GPRS_RLCMAC_FLAG_TO_DL_ACK); +} + +bool gprs_rlcmac_dl_tbf::handle_ack_nack() +{ + bool ack_recovered = false; + + state_flags |= (1 << GPRS_RLCMAC_FLAG_DL_ACK); + if ((state_flags & (1 << GPRS_RLCMAC_FLAG_TO_DL_ACK))) { + clear_poll_timeout_flag(); + ack_recovered = true; + } + + /* reset N3105 */ + n3105 = 0; + stop_t3191(); + poll_state = GPRS_RLCMAC_POLL_NONE; + + return ack_recovered; +} + struct msgb *gprs_rlcmac_dl_tbf::create_dl_acked_block( const uint32_t fn, const uint8_t ts, int index, int index2) @@ -807,8 +830,7 @@ struct msgb *gprs_rlcmac_dl_tbf::create_dl_acked_block( if (is_final) tbf_timer_start(this, 3191, bts_data()->t3191, 0); - /* Clear poll timeout flag */ - state_flags &= ~(1 << GPRS_RLCMAC_FLAG_TO_DL_ACK); + clear_poll_timeout_flag(); /* Clear request flag */ m_dl_ack_requested = false; |