diff options
author | Jacob Erlbeck <jerlbeck@sysmocom.de> | 2015-05-20 12:06:46 +0200 |
---|---|---|
committer | Jacob Erlbeck <jerlbeck@sysmocom.de> | 2015-05-27 13:29:59 +0200 |
commit | 767193e20b4172dfb0e76ec63444115dc5ae8806 (patch) | |
tree | db3cf75b01e916afa5ce994e239111c454113382 /src/bts.cpp | |
parent | d1cb41bfd020eb9b94b17e5bcaa5be36bceccc12 (diff) |
tbf: Remove the TLLI from the TBFs
Currently the TLLI is stored in each TBF. Since each MS is now
represented by a GprsMs object which takes care of TLLI updating,
and each TBF that has been associated with an TLLI also contains a
reference to a GprsMs object, per TBF TLLI handling is no longer
needed. Keeping all TBF m_tlli members up to date is complex and
doesn't currently work correctly in all circumstances.
This commit removes m_tlli and related members from the TBF class and
the tbf_by_tlli functions from the BTS class.
Ticket: #1674
Sponsored-by: On-Waves ehf
Diffstat (limited to 'src/bts.cpp')
-rw-r--r-- | src/bts.cpp | 40 |
1 files changed, 5 insertions, 35 deletions
diff --git a/src/bts.cpp b/src/bts.cpp index 72c33ed4..371d3691 100644 --- a/src/bts.cpp +++ b/src/bts.cpp @@ -217,39 +217,6 @@ int BTS::add_paging(uint8_t chan_needed, uint8_t *identity_lv) return 0; } -/* search for active downlink tbf */ -gprs_rlcmac_dl_tbf *BTS::dl_tbf_by_tlli(uint32_t tlli) -{ - return static_cast<gprs_rlcmac_dl_tbf *>(tbf_by_tlli(tlli, GPRS_RLCMAC_DL_TBF)); -} - -/* search for active uplink tbf */ -gprs_rlcmac_ul_tbf *BTS::ul_tbf_by_tlli(uint32_t tlli) -{ - return static_cast<gprs_rlcmac_ul_tbf *>(tbf_by_tlli(tlli, GPRS_RLCMAC_UL_TBF)); -} - -/* search for active downlink or uplink tbf */ -gprs_rlcmac_tbf *BTS::tbf_by_tlli(uint32_t tlli, enum gprs_rlcmac_tbf_direction dir) -{ - struct gprs_rlcmac_tbf *tbf; - struct llist_pods *lpods; - if (dir == GPRS_RLCMAC_UL_TBF) { - llist_pods_for_each_entry(tbf, &m_bts.ul_tbfs, list, lpods) { - if (tbf->state_is_not(GPRS_RLCMAC_RELEASING) - && tbf->tlli() == tlli && tbf->is_tlli_valid()) - return tbf; - } - } else { - llist_pods_for_each_entry(tbf, &m_bts.dl_tbfs, list, lpods) { - if (tbf->state_is_not(GPRS_RLCMAC_RELEASING) - && tbf->tlli() == tlli && tbf->is_tlli_valid()) - return tbf; - } - } - return NULL; -} - gprs_rlcmac_dl_tbf *BTS::dl_tbf_by_poll_fn(uint32_t fn, uint8_t trx, uint8_t ts) { struct gprs_rlcmac_dl_tbf *tbf; @@ -377,9 +344,10 @@ int BTS::tfi_find_free(enum gprs_rlcmac_tbf_direction dir, int BTS::rcv_imm_ass_cnf(const uint8_t *data, uint32_t fn) { - struct gprs_rlcmac_dl_tbf *dl_tbf; + struct gprs_rlcmac_dl_tbf *dl_tbf = NULL; uint8_t plen; uint32_t tlli; + GprsMs *ms; /* move to IA Rest Octets */ plen = data[0] >> 2; @@ -399,7 +367,9 @@ int BTS::rcv_imm_ass_cnf(const uint8_t *data, uint32_t fn) tlli |= (*data++) << 4; tlli |= (*data++) >> 4; - dl_tbf = dl_tbf_by_tlli(tlli); + ms = ms_by_tlli(tlli); + if (ms) + dl_tbf = ms->dl_tbf(); if (!dl_tbf) { LOGP(DRLCMAC, LOGL_ERROR, "Got IMM.ASS confirm, but TLLI=%08x " "does not exit\n", tlli); |