diff --git a/src/gprs_rlcmac_data.cpp b/src/gprs_rlcmac_data.cpp index 1f81201b..035c2035 100644 --- a/src/gprs_rlcmac_data.cpp +++ b/src/gprs_rlcmac_data.cpp @@ -838,7 +838,7 @@ int gprs_rlcmac_downlink_ack( memset(&tbf->dir.dl, 0, sizeof(tbf->dir.dl)); /* reset RLC states */ tbf->state_flags &= GPRS_RLCMAC_FLAG_TO_MASK; /* keep TO flags */ tbf->state_flags &= ~(1 << GPRS_RLCMAC_FLAG_CCCH); - tbf_update(tbf); + tbf->update(); gprs_rlcmac_trigger_downlink_assignment(tbf, tbf, NULL); return 0; diff --git a/src/tbf.cpp b/src/tbf.cpp index 259e4614..fc7791b8 100644 --- a/src/tbf.cpp +++ b/src/tbf.cpp @@ -78,7 +78,7 @@ static int tbf_append_data(struct gprs_rlcmac_tbf *tbf, tbf->state_flags &= GPRS_RLCMAC_FLAG_TO_MASK; tbf->state_flags &= ~(1 << GPRS_RLCMAC_FLAG_CCCH); tbf_update_ms_class(tbf, ms_class); - tbf_update(tbf); + tbf->update(); gprs_rlcmac_trigger_downlink_assignment(tbf, tbf, NULL); } else { /* the TBF exists, so we must write it in the queue @@ -306,26 +306,26 @@ void tbf_free(struct gprs_rlcmac_tbf *tbf) talloc_free(tbf); } -int tbf_update(struct gprs_rlcmac_tbf *tbf) +int gprs_rlcmac_tbf::update() { struct gprs_rlcmac_tbf *ul_tbf = NULL; - gprs_rlcmac_bts *bts = tbf->bts->bts_data(); + struct gprs_rlcmac_bts *bts_data = bts->bts_data(); int rc; LOGP(DRLCMAC, LOGL_DEBUG, "********** TBF update **********\n"); - if (tbf->direction != GPRS_RLCMAC_DL_TBF) + if (direction != GPRS_RLCMAC_DL_TBF) return -EINVAL; - if (!tbf->ms_class) { + if (!ms_class) { LOGP(DRLCMAC, LOGL_DEBUG, "- Cannot update, no class\n"); return -EINVAL; } - ul_tbf = bts->bts->tbf_by_tlli(tbf->tlli, GPRS_RLCMAC_UL_TBF); + ul_tbf = bts->tbf_by_tlli(tlli, GPRS_RLCMAC_UL_TBF); - tbf_unlink_pdch(tbf); - rc = bts->alloc_algorithm(bts, ul_tbf, tbf, bts->alloc_algorithm_curst, 0); + tbf_unlink_pdch(this); + rc = bts_data->alloc_algorithm(bts_data, ul_tbf, this, bts_data->alloc_algorithm_curst, 0); /* if no ressource */ if (rc < 0) { LOGP(DRLCMAC, LOGL_ERROR, "No ressource after update???\n"); diff --git a/src/tbf.h b/src/tbf.h index 10bff14a..bf70b2e9 100644 --- a/src/tbf.h +++ b/src/tbf.h @@ -101,6 +101,8 @@ struct gprs_rlcmac_tbf { int rlcmac_diag(); + int update(); + struct llist_head list; uint32_t state_flags; enum gprs_rlcmac_tbf_direction direction; @@ -228,8 +230,6 @@ struct gprs_rlcmac_tbf *tbf_by_tfi(struct gprs_rlcmac_bts *bts, void tbf_free(struct gprs_rlcmac_tbf *tbf); -int tbf_update(struct gprs_rlcmac_tbf *tbf); - int tbf_assign_control_ts(struct gprs_rlcmac_tbf *tbf); void tbf_new_state(struct gprs_rlcmac_tbf *tbf,