aboutsummaryrefslogtreecommitdiffstats
path: root/src/bts.cpp
diff options
context:
space:
mode:
authorMax <msuraev@sysmocom.de>2018-01-02 14:17:04 +0100
committerHarald Welte <laforge@gnumonks.org>2018-01-12 14:17:52 +0000
commit8dce1de6d2669023b715945cc58813380ac7f322 (patch)
treead32dcb8b1b16689fc09b4990541372a749f9b3f /src/bts.cpp
parent5081806f4d41ceccf5b5421c9644113ac41e2524 (diff)
TBF: cleanup state flag handling
* introduce generic function to check whether particular flag was set for'a TBF and clear it if necessary. Use this instead of clear_poll_timeout_flag() * add function to explicitly set assignment and appropriate state flags Overall this makes the code easier to read and debug. Related: OS#1759 Change-Id: Ic4560280c72f91700f2e19c6c7f6658dc29625c2
Diffstat (limited to 'src/bts.cpp')
-rw-r--r--src/bts.cpp17
1 files changed, 5 insertions, 12 deletions
diff --git a/src/bts.cpp b/src/bts.cpp
index 4bc792a5..37a9c80c 100644
--- a/src/bts.cpp
+++ b/src/bts.cpp
@@ -1031,23 +1031,19 @@ void gprs_rlcmac_pdch::rcv_control_ack(Packet_Control_Acknowledgement_t *packet,
tbf->direction == new_tbf->direction)
tbf_free(tbf);
- if ((new_tbf->state_flags & (1 << GPRS_RLCMAC_FLAG_CCCH))) {
+ if (new_tbf->check_n_clear(GPRS_RLCMAC_FLAG_CCCH)) {
/* We now know that the PACCH really existed */
LOGPTBF(new_tbf, LOGL_INFO,
"The TBF has been confirmed on the PACCH, "
"changed type from CCCH to PACCH\n");
- new_tbf->state_flags &= ~(1 << GPRS_RLCMAC_FLAG_CCCH);
new_tbf->state_flags |= (1 << GPRS_RLCMAC_FLAG_PACCH);
}
new_tbf->set_state(GPRS_RLCMAC_FLOW);
/* stop pending assignment timer */
new_tbf->t_stop(T0, "control acked (DL-TBF)");
- if ((new_tbf->state_flags &
- (1 << GPRS_RLCMAC_FLAG_TO_DL_ASS))) {
- new_tbf->state_flags &=
- ~(1 << GPRS_RLCMAC_FLAG_TO_DL_ASS);
+ if (new_tbf->check_n_clear(GPRS_RLCMAC_FLAG_TO_DL_ASS))
LOGPTBF(new_tbf, LOGL_NOTICE, "Recovered downlink assignment\n");
- }
+
tbf_assign_control_ts(new_tbf);
return;
}
@@ -1068,12 +1064,9 @@ void gprs_rlcmac_pdch::rcv_control_ack(Packet_Control_Acknowledgement_t *packet,
tbf_free(tbf);
new_tbf->set_state(GPRS_RLCMAC_FLOW);
- if ((new_tbf->state_flags &
- (1 << GPRS_RLCMAC_FLAG_TO_UL_ASS))) {
- new_tbf->state_flags &=
- ~(1 << GPRS_RLCMAC_FLAG_TO_UL_ASS);
+ if (new_tbf->check_n_clear(GPRS_RLCMAC_FLAG_TO_UL_ASS))
LOGPTBF(new_tbf, LOGL_NOTICE, "Recovered uplink assignment for UL\n");
- }
+
tbf_assign_control_ts(new_tbf);
/* there might be LLC packets waiting in the queue, but the DL
* TBF might have been released while the UL TBF has been