Feature #5132

Get rid of gprs_rlcmac_bts lists: ul_tbfs, dl_tbfs

Added by pespin 18 days ago. Updated 1 day ago.

Target version:
Start date:
Due date:
% Done:


Spec Reference:


Since a while ago, osmo-pcu code architecture was refactored so that tbf objects are always assigned to a GprsMS object.
However, gprs_rlcmac_bts still manages 2 lists of tbfs directly, on top of the ms_list, as heritage from old code.

struct gprs_rlcmac_bts {
    struct GprsMsStorage *ms_store;
    /* list of uplink TBFs */
    struct llist_head ul_tbfs; /* list of gprs_rlcmac_tbf */
    /* list of downlink TBFs */
    struct llist_head dl_tbfs; /* list of gprs_rlcmac_tbf */

Nowadays, those lists are seldom used, and we can get rid of the few places where it is used by using the ms_list indirectly to access the TBFs. This way, we simplify the code furthermore.

The lists are mainly being used in 3 places nowadays:

(A) src/pcu_vty_functions.cpp
110:    llist_for_each_entry(iter, &bts->ul_tbfs, list) {

(B) src/gprs_rlcmac_sched.cpp
51:    llist_for_each_entry(pos, &bts->ul_tbfs, list) {

(C) src/bts.cpp
349:            &bts->ul_tbfs,

(A): pcu_vty_show_tbf_all() -> Can be easily changed to iterate over MS, and then print ms->ul_tbf and ms->dl_tbf
(B): get_tbf_candidates() -> Same, can be easily changed to iterate over MS, then over ms->ul_tbf or ms->dl_tbf
(C): bts_add_paging() -> I still need to figure out what/how does this work, but should be feasible to move it to the ms_list too.


#1 Updated by pespin 15 days ago

There's a gprs_rlcmac_tbf::rotate_in_list() I missed, which is used in gprs_rlcmac_sched.cpp to move the tbf of the selected ctrl to the end of the list of tbf to avoid selecting always with higher prio the first tbfs in the list in get_ctrl_msg_tbf_candidates().

void gprs_rlcmac_tbf::rotate_in_list()
    llist_del(tbf_bts_list((struct gprs_rlcmac_tbf *)this));
    if (direction == GPRS_RLCMAC_UL_TBF)
        llist_add(tbf_bts_list((struct gprs_rlcmac_tbf *)this), &bts->ul_tbfs);
        llist_add(tbf_bts_list((struct gprs_rlcmac_tbf *)this), &bts->dl_tbfs);

#2 Updated by pespin 1 day ago

WIP patch available in osmo-pcu.git branch "pespin/tbf-list".

#3 Updated by pespin 1 day ago

We may want to keep the tbf_list for reasons exposed above, but move it to the bts_trx structure, as Holger suggests in #1541.

Also available in: Atom PDF

Add picture from clipboard (Maximum size: 48.8 MB)