aboutsummaryrefslogtreecommitdiffstats
path: root/src/gprs_rlcmac.cpp
diff options
context:
space:
mode:
authorHolger Hans Peter Freyther <holger@moiji-mobile.com>2013-10-16 17:55:57 +0200
committerIvan Kluchnikov <kluchnikovi@gmail.com>2013-10-28 12:52:59 +0400
commit455613076aee24a70fb96ed858aac05b7241462f (patch)
treeecdd0488f11f9aff8e2514e2749226b15b9f2739 /src/gprs_rlcmac.cpp
parent4f6a4e5d6db39d2bb9825cf213165a07eb0e8ea8 (diff)
tbf: Move many routines related to the tbf from gprs_rlcmac to tbf.c
Diffstat (limited to 'src/gprs_rlcmac.cpp')
-rw-r--r--src/gprs_rlcmac.cpp153
1 files changed, 0 insertions, 153 deletions
diff --git a/src/gprs_rlcmac.cpp b/src/gprs_rlcmac.cpp
index 3dab44f4..d33dc8c9 100644
--- a/src/gprs_rlcmac.cpp
+++ b/src/gprs_rlcmac.cpp
@@ -888,159 +888,6 @@ int alloc_algorithm_b(struct gprs_rlcmac_bts *bts,
return 0;
}
-static void tbf_unlink_pdch(struct gprs_rlcmac_tbf *tbf)
-{
- struct gprs_rlcmac_bts *bts = gprs_rlcmac_bts;
- struct gprs_rlcmac_pdch *pdch;
- int ts;
-
- if (tbf->direction == GPRS_RLCMAC_UL_TBF) {
- bts->trx[tbf->trx].ul_tbf[tbf->tfi] = NULL;
- for (ts = 0; ts < 8; ts++) {
- pdch = tbf->pdch[ts];
- if (pdch)
- pdch->ul_tbf[tbf->tfi] = NULL;
- tbf->pdch[ts] = NULL;
- }
- } else {
- bts->trx[tbf->trx].dl_tbf[tbf->tfi] = NULL;
- for (ts = 0; ts < 8; ts++) {
- pdch = tbf->pdch[ts];
- if (pdch)
- pdch->dl_tbf[tbf->tfi] = NULL;
- tbf->pdch[ts] = NULL;
- }
- }
-}
-
-void tbf_free(struct gprs_rlcmac_tbf *tbf)
-{
- struct msgb *msg;
-
- /* Give final measurement report */
- gprs_rlcmac_rssi_rep(tbf);
- gprs_rlcmac_lost_rep(tbf);
-
- debug_diagram(tbf->diag, "+---------------+");
- debug_diagram(tbf->diag, "| THE END |");
- debug_diagram(tbf->diag, "+---------------+");
- LOGP(DRLCMAC, LOGL_INFO, "Free %s TBF=%d with TLLI=0x%08x.\n",
- (tbf->direction == GPRS_RLCMAC_UL_TBF) ? "UL" : "DL", tbf->tfi,
- tbf->tlli);
- if (tbf->ul_ass_state != GPRS_RLCMAC_UL_ASS_NONE)
- LOGP(DRLCMAC, LOGL_ERROR, "Software error: Pending uplink "
- "assignment. This may not happen, because the "
- "assignment message never gets transmitted. Please "
- "be shure not to free in this state. PLEASE FIX!\n");
- if (tbf->dl_ass_state != GPRS_RLCMAC_DL_ASS_NONE)
- LOGP(DRLCMAC, LOGL_ERROR, "Software error: Pending downlink "
- "assignment. This may not happen, because the "
- "assignment message never gets transmitted. Please "
- "be shure not to free in this state. PLEASE FIX!\n");
- tbf_timer_stop(tbf);
- while ((msg = msgb_dequeue(&tbf->llc_queue)))
- msgb_free(msg);
- tbf_unlink_pdch(tbf);
- llist_del(&tbf->list);
- LOGP(DRLCMAC, LOGL_DEBUG, "********** TBF ends here **********\n");
- talloc_free(tbf);
-}
-
-int tbf_update(struct gprs_rlcmac_tbf *tbf)
-{
- struct gprs_rlcmac_bts *bts = gprs_rlcmac_bts;
- struct gprs_rlcmac_tbf *ul_tbf = NULL;
- int rc;
-
- LOGP(DRLCMAC, LOGL_DEBUG, "********** TBF update **********\n");
-
- if (tbf->direction != GPRS_RLCMAC_DL_TBF)
- return -EINVAL;
-
- if (!tbf->ms_class) {
- LOGP(DRLCMAC, LOGL_DEBUG, "- Cannot update, no class\n");
- return -EINVAL;
- }
-
- ul_tbf = tbf_by_tlli(tbf->tlli, GPRS_RLCMAC_UL_TBF);
-
- tbf_unlink_pdch(tbf);
- rc = bts->alloc_algorithm(bts, ul_tbf, tbf, bts->alloc_algorithm_curst, 0);
- /* if no ressource */
- if (rc < 0) {
- LOGP(DRLCMAC, LOGL_ERROR, "No ressource after update???\n");
- return -rc;
- }
-
- return 0;
-}
-
-int tbf_assign_control_ts(struct gprs_rlcmac_tbf *tbf)
-{
- if (tbf->control_ts == 0xff)
- LOGP(DRLCMAC, LOGL_INFO, "- Setting Control TS %d\n",
- tbf->first_common_ts);
- else if (tbf->control_ts != tbf->first_common_ts)
- LOGP(DRLCMAC, LOGL_INFO, "- Changing Control TS %d\n",
- tbf->first_common_ts);
- tbf->control_ts = tbf->first_common_ts;
-
- return 0;
-}
-
-
-const char *tbf_state_name[] = {
- "NULL",
- "ASSIGN",
- "FLOW",
- "FINISHED",
- "WAIT RELEASE",
- "RELEASING",
-};
-
-void tbf_new_state(struct gprs_rlcmac_tbf *tbf,
- enum gprs_rlcmac_tbf_state state)
-{
- debug_diagram(tbf->diag, "->%s", tbf_state_name[state]);
- LOGP(DRLCMAC, LOGL_DEBUG, "%s TBF=%d changes state from %s to %s\n",
- (tbf->direction == GPRS_RLCMAC_UL_TBF) ? "UL" : "DL", tbf->tfi,
- tbf_state_name[tbf->state], tbf_state_name[state]);
- tbf->state = state;
-}
-
-void tbf_timer_start(struct gprs_rlcmac_tbf *tbf, unsigned int T,
- unsigned int seconds, unsigned int microseconds)
-{
- if (!osmo_timer_pending(&tbf->timer))
- LOGP(DRLCMAC, LOGL_DEBUG, "Starting %s TBF=%d timer %u.\n",
- (tbf->direction == GPRS_RLCMAC_UL_TBF) ? "UL" : "DL",
- tbf->tfi, T);
- else
- LOGP(DRLCMAC, LOGL_DEBUG, "Restarting %s TBF=%d timer %u "
- "while old timer %u pending \n",
- (tbf->direction == GPRS_RLCMAC_UL_TBF) ? "UL" : "DL",
- tbf->tfi, T, tbf->T);
-
- tbf->T = T;
- tbf->num_T_exp = 0;
-
- /* Tunning timers can be safely re-scheduled. */
- tbf->timer.data = tbf;
- tbf->timer.cb = &tbf_timer_cb;
-
- osmo_timer_schedule(&tbf->timer, seconds, microseconds);
-}
-
-void tbf_timer_stop(struct gprs_rlcmac_tbf *tbf)
-{
- if (osmo_timer_pending(&tbf->timer)) {
- LOGP(DRLCMAC, LOGL_DEBUG, "Stopping %s TBF=%d timer %u.\n",
- (tbf->direction == GPRS_RLCMAC_UL_TBF) ? "UL" : "DL",
- tbf->tfi, tbf->T);
- osmo_timer_del(&tbf->timer);
- }
-}
-
/* starting time for assigning single slot
* This offset must be a multiple of 13. */
#define AGCH_START_OFFSET 52