AgeCommit message (Collapse)AuthorFilesLines
2021-11-15struct gsm_bts: s/temporary_overpower/top_acch_cap/gVadim Yanitskiy4-15/+15
Let's have a short and consistent naming for both ACCH repetition and temporary ACCH overpower structures, like it's done in osmo-bts. Change-Id: I39b98dcd14219402959646524315d5afea7c08cf Related: Ib1d51f91139b4c2fe794e37fc8543b2d7a9b9c07
2021-11-15struct gsm_bts: s/repeated_acch_policy/rep_acch_cap/gVadim Yanitskiy4-22/+22
Let's have a short and consistent naming for both ACCH repetition and temporary ACCH overpower structures, like it's done in osmo-bts. Change-Id: Ia12c83ad1af4744ce28ba655ac806784f746e88a Related: Ib1d51f91139b4c2fe794e37fc8543b2d7a9b9c07
2021-11-15struct gsm_bts: simplify comments for ACCH repetition/overpowerVadim Yanitskiy1-5/+2
Change-Id: I75b0e289c47841aea22b5966487535cbe855c84f
2021-11-15bts_vty: fix tabs-vs-spaces issues in cfg_bts_rep_dl_facchVadim Yanitskiy1-4/+4
The linter (executed by Jenkins) complains: src/osmo-bsc/bts_vty.c:653: ERROR:CODE_INDENT: code indent should use tabs where possible src/osmo-bsc/bts_vty.c:654: ERROR:CODE_INDENT: code indent should use tabs where possible src/osmo-bsc/bts_vty.c:656: ERROR:CODE_INDENT: code indent should use tabs where possible src/osmo-bsc/bts_vty.c:657: ERROR:CODE_INDENT: code indent should use tabs where possible and blocks changes, adding V-1 when I am changing the related code. Change-Id: If3c8c09ddff7cb945425e74344ceb4da989ddffc
2021-11-15abis_rsl: cosmetic: fix coding style rep_acch_cap_for_bts()Vadim Yanitskiy1-1/+1
The linter (executed by Jenkins) complains: src/osmo-bsc/abis_rsl.c:543: ERROR:POINTER_LOCATION: "(foo*)" should be "(foo *)" and blocks changes, adding V-1 when I am changing the related code. Change-Id: I0cf00ff898e69734850659e8ba0e2ff023f9b2dd
2021-11-15abis_rsl: simplify checking if channel mode is AMRVadim Yanitskiy1-2/+2
Change-Id: If933ce0fa0a162c4518ddab840f186ebaa1bcff9
2021-11-15Properly handle dyn TS TCH with vamos after updating subslots_per_pchanPau Espin Pedrol1-5/+10
In the case of ts->pchan_from_config=GSM_PCHAN_OSMO_DYN, ts->max_primary_lchans will be 8 due to SDCCH8 support, and we don't want to set lchan->vamos.is_secondary=true for lchans at the end of the array. Related: OS#5278 Change-Id: If86af5fafe059d5e830c1f6d37034f7325d9a96c
2021-11-15tests/Makefile.am: do not try removing non-existing filesVadim Yanitskiy1-1/+0
Change-Id: I4be60c858cea891aa49fd9b8ca1dec9a6e3fc305
2021-11-14doc/manuals: fix wrong CI in the inter-BSC handover diagramVadim Yanitskiy1-1/+1
The 'bts0' in BSS 'Beta' has LAC=42/CI=3. There is no LAC=42/CI=6. Change-Id: I0f2e351e802311d4601579c2e755ca13a9056348
2021-11-12doc/manuals: add documentation for Temporary ACCH OverpowerVadim Yanitskiy1-0/+58
Change-Id: Ie995dac6c7083a2b0b4d582f71f55b3736381edb Related: SYS#5319
2021-11-11osmo_bsc_ctrl: make sure strtok results are checkedPhilipp Maier1-7/+14
The function set_bts_loc does not check the string pointers resturned by strtok_r. In this particular case this is not a problem because the function set_bts_lock will only see verfied input. However, lets check the results anyway to avoid creating false positives in coverity scan. Change-Id: Ie21c392e0405fc45811c6d55bf5508e9eb6784de Fixes: CID#240849
2021-11-10implement bts.N.cm_serv_rej:<cause> rate countersNeels Hofmeyr3-0/+202
Related: I0214b27da18af87eca9715ebf7eeeff945e3e12a (osmo-ttcn3-hacks) Related: SYS#4878 Change-Id: I79b1261e5a281d9797eaaf9c27d90edd8e27c78b
2021-11-10osmo_bsc_main: move inp_sig_cb() below check_bts and bootstrap_btsPhilipp Maier1-47/+47
In order to be able to call check_bts() and bootstrap_bts() from inp_sig_cb(), we must move it below bootstrap_bts. Change-Id: I1a365bc2278368ec1f5c0db3f3e466b124b16e83 Related: SYS#5369
2021-11-10osmo_bsc_main: separate checks from bootstrap_btsPhilipp Maier1-6/+11
The function bootstrap_bts does a few checks before it does the actual initialization. To make the code more modular, lets split the function into two functions, check_bts and bootstrap_bts. Also be sure that we print the BTS number when the check failes. Change-Id: Id2b26f147d2f35e156e2da8ee58d2bbbb93de4ac Related: SYS#5369
2021-11-10osmo_bsc_main: bootstrap_bts: print errornous ARFCN numberPhilipp Maier1-9/+9
The function bootstrap_bts verifies that the ARFCN number is within the valid range of the current band. In case of error it prints that the ARFCN is out of range, but it does not print the BTS number, nor the ARFCN number. Change-Id: I432448b4bd5ea1a209838a6c5105cc1e9f7d80ee
2021-11-10implement all_allocated:{static_sdcch,static_tch} rate countersNeels Hofmeyr6-0/+82
Same as all_allocated:{sdcch,tch}, but already trigger when all non-dynamic timeslots are allocated. Related: SYS#4878 Related: Ib3997a827c9cc43d1361bb0cf3bfab9f6d91bf82 (osmo-ttcn3-hacks) Change-Id: I2fa14531f16d3f07085620f1c50eb839c420da6a
2021-11-10implement all_allocated:{sdcch,tch} rate countersNeels Hofmeyr9-0/+137
Based on allAvailable{SDCCH,TCH}Allocated performance indicators, see 3GPP TS 52.402. Related: SYS#4878 Related: Ib3997a827c9cc43d1361bb0cf3bfab9f6d91bf82 (osmo-ttcn3-hacks) Change-Id: I8b06e435a224c8708cd6c67e97ee5413718fc1ed
2021-11-10add time_cc API: cumlative counter for time, reported as rate_ctrNeels Hofmeyr10-0/+1508
This is a candidate for adding to libosmocore (as osmo_time_cc), but let's first use this in osmo-bsc to make sure that it works as intended. I started out expecting to be done with this in half an hour, but I found out that accumulating elapsed time to an integer counter has a staggering amount of complexity to it, and a million pitfalls. The intended use is to report allAvailableSDCCHAllocated and allAvailableTCHAllocated performance indicators in OsmoBSC. Hopefully this will also be generally useful elsewhere, to be worth the effort. Related: SYS#4878 Change-Id: Icdd36f27cb54b2e1b940c9e6404ba9dd3692a310
2021-11-10refactor lchan countingNeels Hofmeyr10-72/+238
Add chan_counts_for_trx() and chan_counts_for_bts(). Drop bts_count_free_ts() and trx_count_free_ts(). Rationale: The bts_count_free_ts() and trx_count_free_ts() always returned the number of free lchans, not timeslots. Hence, passing the pchan type as argument never really matched the semantics. Especially, when looking for free SDCCH, there is no clear match on a gsm_phys_chan_config enum value: SDCCH8_SACCH8C, CCCH_SDCCH4, CCCH_SDCCH4_CBCH, SDCCH8_SACCH8C_CBCH? -- GSM_LCHAN_SDCCH is clear. ==> Rather count free lchans by enum gsm_chan_t. Counting lchans of distinct types required separate iterations for each lchan type. ==> Rather compose an array of counts for all types, in one go. I need to count the amount of free SDCCH lchans in an upcoming patch to implement the performance indicator allAvailableAllocatedSDCCH (cumulate time for which no SDCCH are available). To implement allAvailableAllocated{SDCCH,TCH}, I need a count of both the used as well as the total lchans for a type: it does not make sense to flag "all available allocated" if none are ever available. To properly count dynamic ts, I need the maximum total that can be possible at any time. And to count currently free lchans, I need the current total. This may seem counter intuitive, but consider, e.g.: - Obviously, if a cell has only static TCH/F timeslots, it does not make sense to flag that all available TCH/H are occupied, because no TCH/H are available ever. Just stating this as contrast to dyn TS. - If a cell has OSMO_DYN timeslots, I *do* want to flag that all TCH/H are occupied when all dyn timeslots are fully occupied. - If those OSMO_DYN however are all used as TCH/F, the current total of TCH/H becomes zero, and it seems like TCH/H should not be considered. - To count the nr of currently free lchans, I need the currently possible total of lchans and the nr of occupied lchans. So return both a maximum total and a current total of lchans. In above example, the maximum total shows that there would be TCH/H possible. BTW, it would be nice to keep a chan_counts array on trx, bts and bsc level and update as channels are allocated and released, instead of counting them all over periodically. But it's less error prone this way. Related: SYS#4878 Change-Id: I2fb48c549186db812b1e9d6b735a92e80f27b8d3
2021-11-10gsm_data: use ascending order for interference boundariesVadim Yanitskiy4-16/+16
It's more logical to have the boundaries sorted in ascending order: * band 1 represents lowest interference levels, * band 5 represents highest interference levels. Change-Id: Ie9bf4bf0c89418685b8ea5096332d22cfba7c521 Related: SYS#5313
2021-11-10doc/manuals: add documentation for interference reportingVadim Yanitskiy2-0/+74
Change-Id: I3c15b11bbcba0811e3a15fe64365067bf8ad0dae Related: SYS#5313
2021-11-08ipaccess-config: warn about unknown flag nameVadim Yanitskiy1-1/+3
Change-Id: Iab3bae3af9e1cac992b1f8947cda25fcff647992
2021-11-08ipaccess-config: fix wrong flag name in ipa_nvflag_strs[]Vadim Yanitskiy1-1/+1
Change-Id: Idf8e3a9ee6d9a8801d53254c772548586d4a9c60
2021-11-08ipaccess-config: reduce verbosity of the OML loggingVadim Yanitskiy1-1/+1
Change-Id: Ie52db9236da15da540e14cad56e01c2246b3e82e
2021-11-08abis_rsl: permit simultaneous ACCH repetition and overpowerVadim Yanitskiy1-18/+3
As stated in "GSM/EDGE Evolution and Performance", section 12.3, both features *can* be enabled simultaneously. Change-Id: I2189f01bd78625dab3d642597240338ee581fc98 Related: SYS#5319
2021-11-07abis_rsl: print_meas_rep_{buf,uni}() accept const *mrVadim Yanitskiy1-5/+7
Change-Id: I5c3e27a00cd84f102558499072965ec538f5a87f
2021-11-07abis_rsl: do not pass lchan to print_meas_rep_buf()Vadim Yanitskiy1-16/+11
Change-Id: If965c7dc6b989ee758ddec0190ec1cce8363b240
2021-11-06implement incoming_intra_bsc_ho:* rate countersNeels Hofmeyr3-0/+34
We have lots of counters for intra-BSC handover *away from* a given BTS, but still missing are counters indicating how many handovers *targeted* a given BTS. Also count incoming HO. Related: SYS#4878 Related: Iba229313d73fa20266f6d4eac5820579fb14c604 (osmo-ttcn3-hacks) Change-Id: Id9f2c6e2865ebe680879018fff08d283ce24c983
2021-11-06tweak intra-bsc ho counter descriptionsNeels Hofmeyr2-10/+10
Related: SYS#4878 Change-Id: I00eaf42fcd705cf3f4e06e8c7434fd05dbad4b84
2021-11-06cosmetic tweaks on handover counting codeNeels Hofmeyr1-3/+25
I was a bit confused that grep did not find HO counters being used, so let's add some comments to better explain and provide a grep hook. Related: SYS#4878 Change-Id: I242de13e657286e09428a8ca6e583d8b5155faa2
2021-11-06for linter: s/while(0)/while (0)Neels Hofmeyr14-22/+22
Change-Id: Ib422e7d1a7d543dcd8738581839ce55bb8fc29d2
2021-11-05drop unused gsm48_tx_mm_serv_ack()Neels Hofmeyr2-20/+0
Related: SYS#4878 Change-Id: Ia9d841a8243adca347e7ea79d31e3cd65eab27ea
2021-11-05add chreq:successful_<reason> rate countersNeels Hofmeyr5-1/+65
Related: SYS#4878 Change-Id: I32c2c197a6199617a82986480b686c515fa40d62
2021-11-05lchan_fsm: Fix possible NULL ptr dereference in _lchan_on_mode_modify_failure()Pau Espin Pedrol1-0/+5
_lchan_on_activation_failure(), which calls lchan_on_mode_modify_failure(), already checks for !for_conn in other paths. Hence, it can be that for_conn being passed to _lchan_on_mode_modify_failure() may be null. """ Stack trace of thread 7077: #0 0x000055d25a463842 _lchan_on_mode_modify_failure (osmo-bsc) #1 0x000055d25a46b57c _lchan_on_activation_failure (osmo-bsc) #2 0x00007fe8b2083be4 state_chg (libosmocore.so.17) #3 0x00007fe8b208409d _osmo_fsm_inst_state_chg (libosmocore.so.17) #4 0x000055d25a46825a lchan_fsm_wait_rll_rtp_establish (osmo-bsc) #5 0x00007fe8b2084239 _osmo_fsm_inst_dispatch (libosmocore.so.17) #6 0x00007fe8b2083be4 state_chg (libosmocore.so.17) #7 0x00007fe8b208409d _osmo_fsm_inst_state_chg (libosmocore.so.17) #8 0x000055d25a46dbdc lchan_rtp_fsm_wait_ipacc_mdcx_ack (osmo-bsc) #9 0x00007fe8b2084239 _osmo_fsm_inst_dispatch (libosmocore.so.17) #10 0x000055d25a411d69 abis_rsl_rx_ipacc_mdcx_ack (osmo-bsc) """ Related: SYS#5698 Change-Id: If8b2895feef6e30f9c1db97394dd16d892b277f2
2021-11-05assignment_fsm: Log modified lchan in assignment_fsm_allstate_action()Pau Espin Pedrol1-1/+1
Change-Id: I579c265e9d18402ce806e4d0ea836042185dedaa
2021-11-05rsl_tx_chan_activ(): fix manual channel activation for nanoBTSVadim Yanitskiy1-0/+6
nanoBTS would NACK a CHANnel ACTIVation message for an 'intra cell channel change' if it does not contain the Timing Advance IE. And this is right, because according to 3GPP TS 48.058, section 8.4.1, point '4)', it *must* be included. Indeed, the actual Timing Advance value is not known during the manual channel activation triggered from the VTY interface. So let's merely indicate 0 if it's not known. Change-Id: Iee7ddb4cf1a9a7bb9b34e6c9f6f9899da480fbd0
2021-11-05lchan_fsm: cosmetic: move a 'case' below the 'default' branchVadim Yanitskiy1-1/+1
It's unusual to have 'case' statements below the 'default' statement. Change-Id: I523a6d55d9a103ba69351d9dc6d0c000a422a765
2021-11-05.gitignore: remove non-existing ipaccess-firmware binaryVadim Yanitskiy1-1/+0
Change-Id: I4fb706ace67216f51a8e052b0ef72d944cefd88f
2021-11-05.gitignore: also ignore *.la filesVadim Yanitskiy1-0/+1
I started to see 'src/osmo-bsc/libbsc.la' in 'Untracked files'. Change-Id: I6e4a88e3bf92a1c0e1ccb92f8ff91e24d4e99926
2021-11-04Revert "Turn some compiler warnings into errors"Oliver Smith1-12/+0
Do not turn some compiler warnings into errors by default. This patch was added before --enable-werror was available. We build with --enable-werror during development and in CI. If the code is built with a different compiler that throws additional warnings, it should not stop the build. This reverts commit 34f012639ddf41470714ae74ae961d158670a4c7. Related: OS#5289 Change-Id: I6b143b803349b97e783c586615d7f2ed4e1ff058
2021-11-04bsc_ctrl_commands: fix uninitialized value (mode)Oliver Smith1-1/+1
Fixes: CID#240848 Change-Id: I571055b350d343318ef1ae469ae92475925d1910
2021-11-03control.adoc: comment out fixme notePhilipp Maier1-1/+1
The fixme note: "FIXME: add variables defined in src/ctrl/control_if.c?" is not directed at the reader of the manual. It should stay in the source, but it should not be visible in the pdf. Lets comment it out. Change-Id: Id68f53d18f0873af3c07a0ae52cd12bc94bc0b96
2021-11-03bsc_ctrl_commands: change neighbor-list mode/arfcn via control interfacePhilipp Maier3-0/+160
It is possible to change the neighbor-list mode via the VTY from automatic mode to manual neighbor-list configuration. In the manual mode, the user can add ARFCN values manually. This command can be found under the bts node. Lets add pendant of this command on the control interface as well. Change-Id: Id97bc0d31a358db6221c385761773fb48670c921 Related: SYS#5641
2021-11-03heighbor_ident: add/del neighbor cells via ctrl interfacePhilipp Maier7-29/+958
The VTY allows flexible control over the neighbor cell information via the neighbor command, which can be found in the configure terminal under the bts node. Lets add pendant of this command on the control interface as well. Change-Id: I343a40e18fa9b91e6c381912c0426a002841e079 Related: SYS#5641
2021-11-02control.adoc: improve description of command bts.N.send-new-system-informationsPhilipp Maier1-1/+1
Change-Id: I48bdb7fd991dac2d5112440c879d0ded5b726715 Related: SYS#5641
2021-11-01constify lchan_state_is()Neels Hofmeyr1-1/+1
An upcoming patch would rather pass a const struct gsm_lchan*. See I2fb48c549186db812b1e9d6b735a92e80f27b8d3. Related: OS#4878 Change-Id: I523cbf04e77f43924c3f09094d56f815d3de640d
2021-11-01neighbor_ident: add comment about Neighbor Address Resolution ServicePhilipp Maier1-0/+1
The Neighbor Address Resolution Service is using the control interface API as well. Lets add a comment to indicate that this service is not related to the normal control interface. Change-Id: Iec86f72548bfc54a2c86dadec69dd1c64813d852
2021-10-29bsc_subscr_conn_fsm: fix mgw-pool ref countingPhilipp Maier1-0/+6
When the gsm_subscr_conn_fsm (GSCO) terminates abormally it might not go through the forget-mgw-endpoint mechanism. It might be terminated forcefully, which means only the pre_term callback runs. The pre_term callback clears the endpoint, but it does not put the mgcp_client reference back into the pool. This results into a wrong ref-count in the mgw-pool. Change-Id: I5a7ce6a1880a1060df74d03dd4eb38b51fd85c69 Related: SYS#5675
2021-10-28osmo_bsc_main: remove unused option -t --testmodePhilipp Maier1-3/+1
The option -t --testmode is defined, but not evaluated. It seems that the code of this option was removed long ago. Lets remove it now. Change-Id: Ie11173f5a7aab568b9a25102ad7dcf37fd49f318
2021-10-25Set subslots_per_pchan_vamos[GSM_PCHAN_OSMO_DYN] = 0Pau Espin Pedrol1-1/+1
VAMOS secondary lchans are to be used specifically when the osmocom dyn TS is set to pchan_is=TCH_{F,H}. Setting secondary subslots for OSMO_DYN TS is not needed since it's only used to initialize the TS, and OSMO DYN already initializes 8 subslots (subslots_per_pchan[GSM_PCHAN_OSMO_DYN]=8). Otherwise, ts_setup_lchans() will try to initialize 8+2 lchans on the TS, which is more than needed and will access out of bounds in the array. Related: OS#5278 Change-Id: I8727d5b446179c0ebcd8738507efe5a50afaf1e2