diff options
author | Holger Hans Peter Freyther <holger@moiji-mobile.com> | 2013-09-29 07:50:50 +0200 |
---|---|---|
committer | Holger Hans Peter Freyther <holger@moiji-mobile.com> | 2013-10-30 14:45:57 +0100 |
commit | 743bafa50ca4b577416774ecc2ac3b3986bfc97e (patch) | |
tree | 3d4ad64c78f432c71723262d3c115c9106d2e9d9 | |
parent | 96efa70a9e4df47f98fe6ce2450d33e0c0e27294 (diff) |
alloc: Introduce a backpointer from the tbf to the trx and simplify code
Kill all the level of indirections where one needs to have the BTS
the TBF to find the TRX.
-rw-r--r-- | src/gprs_rlcmac_ts_alloc.cpp | 24 | ||||
-rw-r--r-- | src/tbf.cpp | 1 | ||||
-rw-r--r-- | src/tbf.h | 1 |
3 files changed, 14 insertions, 12 deletions
diff --git a/src/gprs_rlcmac_ts_alloc.cpp b/src/gprs_rlcmac_ts_alloc.cpp index 949041a1..0cc0f379 100644 --- a/src/gprs_rlcmac_ts_alloc.cpp +++ b/src/gprs_rlcmac_ts_alloc.cpp @@ -98,12 +98,12 @@ static inline int8_t find_free_usf(struct gprs_rlcmac_pdch *pdch, uint8_t ts) } -static void assign_uplink_tbf_usf(struct gprs_rlcmac_bts *bts, +static void assign_uplink_tbf_usf( struct gprs_rlcmac_pdch *pdch, int ts, struct gprs_rlcmac_tbf *tbf, int8_t usf) { - bts->trx[tbf->trx_no].ul_tbf[tbf->tfi] = tbf; + tbf->trx->ul_tbf[tbf->tfi] = tbf; pdch->ul_tbf[tbf->tfi] = tbf; tbf->pdch[ts] = pdch; tbf->dir.ul.usf[ts] = usf; @@ -126,7 +126,7 @@ int alloc_algorithm_a(struct gprs_rlcmac_bts *bts, "%d\n", tbf->ms_class); for (ts = 0; ts < 8; ts++) { - pdch = &bts->trx[tbf->trx_no].pdch[ts]; + pdch = &tbf->trx->pdch[ts]; if (!pdch->enable) { LOGP(DRLCMAC, LOGL_DEBUG, "- Skipping TS %d, because " "not enabled\n", ts); @@ -148,10 +148,10 @@ int alloc_algorithm_a(struct gprs_rlcmac_bts *bts, } LOGP(DRLCMAC, LOGL_DEBUG, "- Assign uplink " "TS=%d USF=%d\n", ts, usf); - assign_uplink_tbf_usf(bts, pdch, ts, tbf, usf); + assign_uplink_tbf_usf(pdch, ts, tbf, usf); } else { LOGP(DRLCMAC, LOGL_DEBUG, "- Assign downlink TS=%d\n", ts); - bts->trx[tbf->trx_no].dl_tbf[tbf->tfi] = tbf; + tbf->trx->dl_tbf[tbf->tfi] = tbf; pdch->dl_tbf[tbf->tfi] = tbf; tbf->pdch[ts] = pdch; } @@ -280,7 +280,7 @@ int alloc_algorithm_b(struct gprs_rlcmac_bts *bts, * This must be done for uplink TBF also, because it is the basis * for calculating control slot and uplink slot(s). */ for (ts = 0, i = 0; ts < 8; ts++) { - pdch = &bts->trx[tbf->trx_no].pdch[ts]; + pdch = &tbf->trx->pdch[ts]; /* check if enabled */ if (!pdch->enable) { LOGP(DRLCMAC, LOGL_DEBUG, "- Skipping TS %d, because " @@ -436,7 +436,7 @@ int alloc_algorithm_b(struct gprs_rlcmac_bts *bts, * slot. */ if (tbf->direction == GPRS_RLCMAC_UL_TBF) { for (ts = tx_win_min, i = 0; i < tx_range; ts = (ts + 1) & 7) { - pdch = &bts->trx[tbf->trx_no].pdch[ts]; + pdch = &tbf->trx->pdch[ts]; /* check if enabled */ if (!pdch->enable) { LOGP(DRLCMAC, LOGL_DEBUG, "- Skipping TS %d, " @@ -508,7 +508,7 @@ int alloc_algorithm_b(struct gprs_rlcmac_bts *bts, /* assign the first common ts, which is used for control or * single slot. */ for (ts = tx_win_min, i = 0; i < tx_range; ts = (ts + 1) & 7) { - pdch = &bts->trx[tbf->trx_no].pdch[ts]; + pdch = &tbf->trx->pdch[ts]; /* check if enabled */ if (!pdch->enable) { LOGP(DRLCMAC, LOGL_DEBUG, "- Skipping TS %d, " @@ -541,8 +541,8 @@ int alloc_algorithm_b(struct gprs_rlcmac_bts *bts, continue; LOGP(DRLCMAC, LOGL_DEBUG, "- Assigning DL TS " "%d\n", ts); - pdch = &bts->trx[tbf->trx_no].pdch[ts]; - bts->trx[tbf->trx_no].dl_tbf[tbf->tfi] = tbf; + pdch = &tbf->trx->pdch[ts]; + tbf->trx->dl_tbf[tbf->tfi] = tbf; pdch->dl_tbf[tbf->tfi] = tbf; tbf->pdch[ts] = pdch; slotcount++; @@ -563,8 +563,8 @@ int alloc_algorithm_b(struct gprs_rlcmac_bts *bts, if ((tx_window & (1 << ts))) { LOGP(DRLCMAC, LOGL_DEBUG, "- Assigning UL TS " "%d\n", ts); - pdch = &bts->trx[tbf->trx_no].pdch[ts]; - assign_uplink_tbf_usf(bts, pdch, ts, tbf, usf[ts]); + pdch = &tbf->trx->pdch[ts]; + assign_uplink_tbf_usf(pdch, ts, tbf, usf[ts]); slotcount++; if (slotcount == 1) tbf->first_ts = ts; diff --git a/src/tbf.cpp b/src/tbf.cpp index ddb3fbb8..9afa85d1 100644 --- a/src/tbf.cpp +++ b/src/tbf.cpp @@ -503,6 +503,7 @@ next_diagram: tbf->direction = dir; tbf->tfi = tfi; tbf->trx_no = trx; + tbf->trx = &bts->trx[trx]; tbf->arfcn = bts->trx[trx].arfcn; tbf->ms_class = ms_class; tbf->ws = 64; @@ -103,6 +103,7 @@ struct gprs_rlcmac_tbf { uint8_t tfi; uint32_t tlli; uint8_t tlli_valid; + struct gprs_rlcmac_trx *trx; uint8_t trx_no; uint16_t arfcn; uint8_t tsc; |