osmo-bsc/doc
Vadim Yanitskiy ff9d3a64dc lchan_select: prepare a list of timeslots once, iterate over it
The lchan_avail_by_type() attempts to find an unused lchan for the
given GSM_LCHAN_* value: TCH/F, TCH/H, or SDCCH.  This is achieved
by looking up timeslots with compatible GSM_PCHAN_* values.

For instance, finding an unused SDCCH lchan may involve:

* attempt to find a timeslot with pchan=GSM_PCHAN_CCCH_SDCCH4,
* attempt to find a timeslot with pchan=GSM_PCHAN_CCCH_SDCCH4_CBCH,
* attempt to find a timeslot with pchan=GSM_PCHAN_SDCCH8_SACCH8C,
* attempt to find a timeslot with pchan=GSM_PCHAN_SDCCH8_SACCH8C_CBCH,
* attempt to find a timeslot with pchan=GSM_PCHAN_OSMO_DYN (switched),
* attempt to find a timeslot with pchan=GSM_PCHAN_OSMO_DYN (not switched).

Each attempt involves iterating over all timeslots of each TRX,
either in ascending or in descending order (see _lc_dyn_find_bts()
and _lc_find_trx()).

This patch simplifies the lookup logic by preparing a monolithic
array of timeslot pointers once, and then using that array for
each GSM_PCHAN_* lookup attempt.  This change is required for the
upcoming dynamic channel allocation mode, which is fa more complex
than the existing ascending/descending ones.

A side effect of this change is that the interference aware mode
of allocation is not limited by the scope of a single TRX anymore.
Interference levels are now compared within the scope of the whole
BTS, so that lchans on the other TRXes may be picked if they are
better according to the interference reports from the BTS.

Change-Id: I7ccc56856bfd40fd7c63b7437736de60c2b516ff
Related: SYS#5460
2022-06-30 16:36:41 +00:00
..
examples doc/examples: add a confmerge file with example hopping parameters 2022-04-01 06:33:42 +03:00
manuals lchan_select: prepare a list of timeslots once, iterate over it 2022-06-30 16:36:41 +00:00
BS11-OML.txt move openbsc/* to repos root 2017-08-27 03:52:43 +02:00
Makefile.am add doc/location_services_ta.msc 2020-10-10 16:23:52 +02:00
assignment-fsm.dot lchan and assignment FSMs: make Channel Mode Modify more sane 2021-05-21 15:43:30 +02:00
assignment.msc cosmetic: rename FOR_* to ACTIVATE_FOR_* 2021-05-21 15:43:30 +02:00
bts-features.txt Check VTY config against features reported by BTS 2022-05-02 15:21:28 +02:00
e1-data-model.txt Fix some typos 2019-11-13 22:10:41 +01:00
handover-inter-bsc-in-fsm.dot handover dot charts: fix wrong transitions regarding MGW 2021-05-27 17:06:21 +02:00
handover-inter-bsc-in.msc cosmetic: rename FOR_* to ACTIVATE_FOR_* 2021-05-21 15:43:30 +02:00
handover-inter-bsc-out-fsm.dot doc: update/fix FSM charts 2018-07-28 12:18:23 +02:00
handover-inter-bsc-out.msc doc: update/fix FSM charts 2018-07-28 12:18:23 +02:00
handover-intra-bsc-fsm.dot handover dot charts: fix wrong transitions regarding MGW 2021-05-27 17:06:21 +02:00
handover.msc cosmetic: rename FOR_* to ACTIVATE_FOR_* 2021-05-21 15:43:30 +02:00
handover.txt Fix some typos 2019-11-13 22:10:41 +01:00
lchan-fsm.dot lchan_fsm: make rsl mode-modify working again 2020-09-03 21:35:25 +02:00
lchan-rtp-fsm.dot lchan_rtp_fsm: Deferr IPACC MDCX after BTS side MGCP MDCX 2020-09-09 12:39:14 +02:00
lchan.msc cosmetic: rename FOR_* to ACTIVATE_FOR_* 2021-05-21 15:43:30 +02:00
legend_for_fsm_diagrams.dot doc: update/fix FSM charts 2018-07-28 12:18:23 +02:00
legend_for_ladder_diagrams.msc doc: update/fix FSM charts 2018-07-28 12:18:23 +02:00
location_services_ta.msc add doc/location_services_ta.msc 2020-10-10 16:23:52 +02:00
mgw-endpoint-fsm.dot doc: update/fix FSM charts 2018-07-28 12:18:23 +02:00
mgw-endpoint.msc doc: update/fix FSM charts 2018-07-28 12:18:23 +02:00
timeslot-fsm.dot doc: update/fix FSM charts 2018-07-28 12:18:23 +02:00
timeslot.msc doc: update/fix FSM charts 2018-07-28 12:18:23 +02:00
ts-and-lchan-fsm-lifecycle.msc doc: update/fix FSM charts 2018-07-28 12:18:23 +02:00