aboutsummaryrefslogtreecommitdiffstats
path: root/src/tbf.cpp
diff options
context:
space:
mode:
authorMax <msuraev@sysmocom.de>2018-01-23 20:09:06 +0100
committerMax <msuraev@sysmocom.de>2018-01-24 11:06:22 +0100
commit0e5998087ee530d8b13e56ac8355693869cd7446 (patch)
tree1c85647057acdc7b34b2da6010981cfc1497be12 /src/tbf.cpp
parent0524e38d9ea519898a61256389c3a7277410ccb8 (diff)
TBF: make UL/DL state internal
* add functions/macros for setting TBF's UL/DL state * add functions for checking TBF's UL/DL state * move pre-free check into separate function N. B: this should not be confused with TBF-UL or TBF-DL state. Change-Id: Idcbf5775d17b1247f2ed01788f9b0788ce66e871 Related: OS#1539
Diffstat (limited to 'src/tbf.cpp')
-rw-r--r--src/tbf.cpp22
1 files changed, 4 insertions, 18 deletions
diff --git a/src/tbf.cpp b/src/tbf.cpp
index 699f960f..0cb54bc8 100644
--- a/src/tbf.cpp
+++ b/src/tbf.cpp
@@ -165,8 +165,6 @@ gprs_rlcmac_tbf::gprs_rlcmac_tbf(BTS *bts_, gprs_rlcmac_tbf_direction dir) :
first_ts(0),
first_common_ts(0),
control_ts(0xff),
- dl_ass_state(GPRS_RLCMAC_DL_ASS_NONE),
- ul_ass_state(GPRS_RLCMAC_UL_ASS_NONE),
ul_ack_state(GPRS_RLCMAC_UL_ACK_NONE),
poll_state(GPRS_RLCMAC_POLL_NONE),
poll_fn(0),
@@ -185,6 +183,8 @@ gprs_rlcmac_tbf::gprs_rlcmac_tbf(BTS *bts_, gprs_rlcmac_tbf_direction dir) :
m_ta(GSM48_TA_INVALID),
m_ms_class(0),
state(GPRS_RLCMAC_NULL),
+ dl_ass_state(GPRS_RLCMAC_DL_ASS_NONE),
+ ul_ass_state(GPRS_RLCMAC_UL_ASS_NONE),
m_list(this),
m_ms_list(this),
m_egprs_enabled(false)
@@ -452,21 +452,7 @@ void tbf_free(struct gprs_rlcmac_tbf *tbf)
}
LOGPTBF(tbf, LOGL_INFO, "free\n");
- if (tbf->ul_ass_state != GPRS_RLCMAC_UL_ASS_NONE)
- LOGPTBF(tbf, LOGL_ERROR, "Software error: Pending uplink "
- "assignment in state %s. This may not happen, because the "
- "assignment message never gets transmitted. Please "
- "be sure not to free in this state. PLEASE FIX!\n",
- get_value_string(gprs_rlcmac_tbf_ul_ass_state_names,
- tbf->ul_ass_state));
- if (tbf->dl_ass_state != GPRS_RLCMAC_DL_ASS_NONE)
- LOGPTBF(tbf, LOGL_ERROR, "Software error: Pending downlink "
- "assignment in state %s. This may not happen, because the "
- "assignment message never gets transmitted. Please "
- "be sure not to free in this state. PLEASE FIX!\n",
- get_value_string(gprs_rlcmac_tbf_dl_ass_state_names,
- tbf->dl_ass_state));
-
+ tbf->check_pending_ass();
tbf->stop_timers("freeing TBF");
/* TODO: Could/Should generate bssgp_tx_llc_discarded */
tbf_unlink_pdch(tbf);
@@ -1513,7 +1499,7 @@ struct gprs_rlcmac_ul_tbf *handle_tbf_reject(struct gprs_rlcmac_bts *bts,
ul_tbf->set_ms(ms);
ul_tbf->update_ms(tlli, GPRS_RLCMAC_UL_TBF);
- ul_tbf->ul_ass_state = GPRS_RLCMAC_UL_ASS_SEND_ASS_REJ;
+ TBF_SET_ASS_STATE_UL(ul_tbf, GPRS_RLCMAC_UL_ASS_SEND_ASS_REJ);
ul_tbf->control_ts = ts;
ul_tbf->trx = trx;
ul_tbf->m_ctrs = rate_ctr_group_alloc(ul_tbf, &tbf_ctrg_desc, 0);