aboutsummaryrefslogtreecommitdiffstats
path: root/src
AgeCommit message (Collapse)AuthorFilesLines
2021-09-13Support Neighbor Address Resolution over PCUIF IPA multiplexPau Espin Pedrol3-42/+128
While NACC was initially developed, it became clear there was need for a way to interact PCU<->BSC in order resolve ARFCN+BSIC into CGI-PS for later RIM usage. Hence, this resolution was first (until today) implemented using an out of bands RPC system using the CTRL interface, which required specific config to be written and matches in osmo-pcu and osmo-bsc VTY (ip+port of the CTRL interface to use). However, this has several shortcomings: * As explained above, specific configuration is required * Since recently, we do support BSC redundancy in osmo-bts. Hence the BTS may switch to a BSC other than first one. If that happened, that'd mean the CTRL interface would still point to the initially configured one, which may not be the same currently serving the PCU. During recent development of ANR related features, a similar need for PCU<->BSC was required, but this time it was decided to extend the IPA multiplex of the Abis OML connection to pass PCUIF messages, transparently forwarded to each side by the BTS. This has the advantage that connection PCU<->BTS is handled by BTS and both sides send messages transparently. Let's switch by default to using this new interface, while still maintaing the old way for a while (announcing them as deprecated) to avoid breaking existing deployments until they are upgraded to new versions of osmo-pcu and osmo-bsc. Change-Id: I9073a121564503f483c84263ac72476041e47c03 Related: SYS#4971
2021-09-09lchan_fsm: Avoid inheriting bs_power from old lchanPau Espin Pedrol1-15/+9
So far we were inherting the bs_power in used when activating an lchan for an MS for which we already had previous lchan. For instance, when an MS is first assigned an SDCCH, and later on, it is assigned a TCH to place a voice call. Doing so is, however, not correct because current and old lchans may be placed on different TS or even on different TRX, which means they will have different BS Power restrictions. In the scenario described above, for instance, an SDCCH could have been assigned on C0 and hence have a bs_power of 0, and later on, whenever the TCH lchan as created, it would have inherited the C0 bs_power despite it may have been possible to use a different (lower) max bs power. Furthermore, the lchan->bs_power_db basically stores the *maximum* bs power reduction. Hence it makes not sense at all to copy over the value, since it is anyway not updated from MS measurement reports so far anyway. Fixes: 997a257f8dabe5dd940a1271e56e676a871896d7 Related: SYS#4919 Change-Id: I4a7736aa9a1395e0cc118b98b69896bd0f1e94e6
2021-09-09lchan_fsm: Fix commentPau Espin Pedrol1-3/+2
A previous commit (Feb 05 2021) moved copy of TA value to some other place to fix some related issues, but forgot to update the comment. Fixes: b03e73f27b26449864296fdab84f6fb6e1978c45 Change-Id: Ia10038919b6650dff45b7233f58fea94e9808712
2021-09-09fixup for Early IMM ASS: use proper TSCNeels Hofmeyr1-16/+40
Testing has shown that the Training Sequence Code in pre-chan-ack mode is inaccurate (only worked with a BSIC that incidentally yielded the same TSC value as the wrong TSC value sent in the IMM ASS msg). Move the code setting the correct TSC and TSC-Set to the first stage of channel activation (lchan_fsm_wait_ts_ready_onenter()) so that it is available for both pre-chan-ack and pre-ts-ack Early-IA modes. Have a separate function for setting the preliminary values requested in Channel Activation (lchan->activate.*) into the accepted operative places (lchan->*). Call this early for early-IA modes. Hence the TSC and TSC-Set used in the early IMM ASS message is now the correct one, and the same as sent during Channel Activation. There shouldn't be any, but if there are other values besides TSC suffering from the same problem, they are now also set to the right values before sending IMM ASS early. Related: SYS#5559 Related: I4479244b0c53648e62e84e1ebf986f51d659484f (osmo-ttcn3-hacks) Change-Id: I9f26074154600d854a0b3baee2f38a6666f4cb56
2021-09-08lchan_fsm: Fix commentPau Espin Pedrol1-1/+1
bs_power_db, as its name suggests (also check vty code and rsl_tx_chan_activ()) contains value in dB, not in 2dB steps. Change-Id: I76bd6bb1b307ab75ba1292865747419228e0687a
2021-09-06MS Power Control Loop: Support set up of C/I parameters for osmo-btsPau Espin Pedrol4-37/+482
This commit extends existing VTY and RSL infrastructure to configure and manage MS Power Parameters used in MS Power Control loop, by adding support to set up Carrier-to-Interference (CI) parameters. Using C/I instead of existing RxQual is preferred due to extended granularity of C/I (bigger range than RxQual's 0-7). Furthermore, existing literature (such as "GSM/EDGE: Evolution and Performance" Table 10.3) provides detailed information about expected target values, even different values for different channel types. Hence, it was decided to support setting different MS Power Parameters for different channel types. These MS Power Parameters are Osmocom specific, ie. supported only by newish versions of osmo-bts. Older versions of osmo-bts should ignore the new IEs added just fine. The new IEs containing the MS POwer Parameters are not send for non osmo-bts BTSs, hence this commit is secure with regards to running osmo-bsc against an ip.access BTS such as nanoBTS. Related: SYS#4917 Depends: libosmocore.git Change-Id Iffef0611430ad6c90606149c398d80158633bbca Change-Id: I7e76ec47b323d469f777624b74b08752d1f5584f
2021-09-06cosmetic: power_ctrl_params_def: Fix typo in commentPau Espin Pedrol1-2/+2
Change-Id: Ibbbb073fa674666f47d84d8e670790c4028ba874
2021-09-05add stat_items for BTS and TRX connection statiNeels Hofmeyr3-1/+73
So far we have stat items per BTS. Add stat items summing overall BTS status. Add stat items: - num_bts:oml_connected - num_bts:all_trx_rsl_connected - num_bts:total - num_trx:rsl_connected - num_trx:total Related: SYS#5542 Related: Ic1b35b7406547f92818afe399a2383d154576409 (osmo-ttcn3-hacks) Change-Id: I2057a798e681a169cc03243a09b3d6449734c010
2021-09-04osmo_bsc_msc: do not initalize MGCP proxy for AoIP MSCsPhilipp Maier1-0/+4
The MGCP proxy which is built into osmo-bsc is used to tunnel MGCP messages through an SCCP-lite link. This is an SCCP-lite specific implementation detail that is not present in SCCP/AoIP. Change-Id: Id3a8c45ae38d6b9d9c106a9e83b3cbfff919650d Related: SYS#5091
2021-09-03osmo_bsc_main: integrate MGW pooling into osmo-bscPhilipp Maier3-17/+66
Since the libosmo-mgcp-client now supports MGW pooling, lets use this feature in osmo-bsc. Large RAN installations may benefit from distributing the RTP voice stream load on multiple media gateways. Depends: osmo-mgw Icaaba0e470e916eefddfee750b83f5f65291a6b0 Change-Id: I8f33ab2cea04b545c403a6fe479aa963a0fc0d0d Related: SYS#5091
2021-09-02bty_vty: add VTY settungs for temporary overpowerPhilipp Maier2-0/+71
To configure temporary overpower, new VTY commands are added. This patch also addes the logic needed to attach the temporary overpower IE to the RSL CHANNEL ACTIVATE message. Change-Id: I488a91bb4ed86f630db56564a0cd293f39f0f690 Related: SYS#5319
2021-09-01vty: Fix wrongs params passed in vty warning messagePau Espin Pedrol1-2/+2
Change-Id: If1cc4c7fb70bd69cf8d1c0509e6be60ecae33685
2021-08-31vty: Fix wrong TSC sent when activating lchan through VTYPau Espin Pedrol1-29/+7
TSC was initially set to -1 (to be picked by callee), but erased when using designated initializers later on in the function, hence TSC being set to 0. As a result, TSC 0 would be requested to the BTS, which may have configured a different BSIC containing BCC!=0. Related: OS#5219 Change-Id: I26813561ee9e7783a4004f32225f19296bd6319c
2021-08-30add stat items bsc.0.num_msc:connected, .num_msc:totalNeels Hofmeyr2-0/+6
We already have MSC connection stat items, but for hysterical raisins there are separate such stats for each MSC. Hence we have N connection counters, each being either 0 or 1, for a single MSC. Add a new stat counting the *overall* MSCs that are connected, and one indicating the total number of configured MSCs. Related: SYS#5542 Related: I178dcf4516606aa561d47b06061b8a416d3c40cf (osmo-ttcn3-hacks) Change-Id: If76bbf9b3adb64c68d5c31c6b526fa71a99996ae
2021-08-30move BSC level stats and rate counters to new bsc_stats.[hc]Neels Hofmeyr11-12/+132
Instead of having static const structs in header files (which end up duplicated in each and every compile unit!), have one .c file with the rate_ctr and stat_item descriptions. Related: SYS#5542 Change-Id: I8fd6380b5ae8ed2d3347e7cfbf674c30b6841ed9
2021-08-30vty: add "msc N bssmap reset" commandNeels Hofmeyr2-0/+30
Allow resetting the BSSMAP link from VTY, for BSC_Tests.ttcn. In the field, detecting that an MSC is lost is done by getting three connection failures in a row. For the BSC_Tests, it is easier to just provide a VTY command to reset an MSC's link status. I want to add tests that verify the stat items reflecting the MSC connection status. To be able to run a test expecting fewer connected MSC after a test that launched more MSCs requires the links to be reset. Related: SYS#5542 Related: Ice3056dc46c94f9399f8379db7aeb7193782f2f2 (osmo-ttcn3-hacks) Change-Id: I1975941b790d2b30d0904d41e456220cba26ecff
2021-08-29gsm_04_08_rr: silently ignore RR UTRAN Classmark ChangeVadim Yanitskiy1-0/+3
Some UMTS capable phones (such as SE K800i) send this message together with the 'normal' RR Classmark Change, what makes osmo-bsc log the following warning: DCHAN NOTICE gsm_04_08_rr.c:1037 lchan(0-0-1-SDCCH8-0)[0x562ea76d3ab0]{ESTABLISHED}: (type=SDCCH) Unknown RR message: UTRAN Classmark Change We don't handle it, so just ignore without logging anything. Change-Id: Icb8e44c9a06519ead9c3dc9308788c23505d4bb1
2021-08-27stat_item desc: add explicit indexes for clarityNeels Hofmeyr2-3/+3
Add explicit indexes like [BSC_STAT_NUM_BTS_TOTAL] = { ... BSC_STAT_NUM_BTS_TOTAL == 0 and the first item of bsc_stat_desc of course has index 0, but when grepping the code, it looks like BSC_STAT_NUM_BTS_TOTAL is missing a name definition. Same for MSC_STAT_MSC_LINKS_ACTIVE and MSC_STAT_MSC_LINKS_TOTAL. Related: SYS#5542 Change-Id: Ie47e0857c41d517a9b37be96f6669d1825d24a6d
2021-08-16early IMM ASS 3/n: implement 'pre-ts-ack'Neels Hofmeyr3-4/+26
Add experimental 'pre-ts-ack' to the 'immediate-assignment' options: send the IMM ASS even before a dynamic timeslot is switched. This possibly saves an Abis roundtrip, but may be racy. When pre-ts-ack is chosen, already do the IMM ASS before the dyn TS pchan switch is ACKed. In Immediate Assignment, in case the dyn TS is not ready yet, get the pchan kind from lchan->type, which already reflects the target type, and not from ts->pchan_is, which still reflects the previous pchan type. Related test is in I2ae28cd92910d4bc341a88571599347a64a18fe5 Related: SYS#5559 Change-Id: I19e6a3d614aa5ae24d64eed96caf53e6f0e8bb74
2021-08-16early IMM ASS 2/n: implement 'pre-chan-ack'Neels Hofmeyr2-8/+27
When 'immediate-assignment pre-chan-ack' is set, send the Immediate Assignment directly after the Channel Activation, not waiting for the Activation ACK, to save an Abis roundtrip. Related test is in If71f4562d532b6c5faf55f5fd073449a8a137ebf Related: SYS#5559 Change-Id: I56c25cde152040fb66bdba44399bd37671ae3df2
2021-08-16early IMM ASS 1/n: add vty config optionNeels Hofmeyr1-0/+28
This patch adds only the VTY config option without any effect, to ease patch review. The implementation follows in I56c25cde152040fb66bdba44399bd37671ae3df2 The new config option is written so that further variants of Immediate Assignment sequencing may be added easily. See also I19e6a3d614aa5ae24d64eed96caf53e6f0e8bb74. Related: SYS#5559 Change-Id: I710343d1728153faf3db9758ff5a1ef26bb8d3d4
2021-08-16error log: improve lchan lookup error msgNeels Hofmeyr1-0/+18
Looking for a bug, I spread this logging to understand what was happening. Might as well keep it. Related: SYS#5559 Change-Id: I46b660cd51a41e561712a0bd849ce0ee8d1a9588
2021-08-16introduce gsm48_lchan_and_pchan2chan_desc()Neels Hofmeyr2-28/+24
The function gsm48_lchan2chan_desc_as_configured() dups gsm48_lchan2chan_desc() with merely a different pchan type (ts->pchan_from_config instead of ts->pchan_is). In an upcoming patch, I would like to do the same, just with yet another pchan value (derived from lchan->type, because that reflects the channel type even before a dynamic timeslot switched its pchan type). So replace gsm48_lchan2chan_desc_as_configured() by gsm48_lchan_and_pchan2chan_desc() with explicit pchan arg; also call this from gsm48_lchan2chan_desc(), reducing code dup. gsm48_lchan2chan_desc_as_configured() had more concise error logging. Absorb that into the new gsm48_lchan_and_pchan2chan_desc(). Add gsm_lchan_and_pchan2chan_nr(), like gsm_lchan2chan_nr() just with explicit pchan arg, to be able to pass the pchan down from the new functions mentioned above. Related: SYS#5559 Change-Id: I67f178c8160cdda1f2ab5513ac4f65c027d4012f
2021-08-16lchan_fsm_post_activ_ack(): return upon releaseNeels Hofmeyr1-4/+4
The bottom of the function changes the lchan state. If a failure branch is reached, that should no longer happen. Change 'break' to 'return' in four places to not mix up the channel release. Related: SYS#5559 Change-Id: I4674752ab4f1c8e8147ef3366f90e9ea2abd5aec
2021-08-03osmo_bsc_main: remove unused commandline option -lPhilipp Maier1-2/+0
The option -l ("The local address of the MGCP") is still present in the commandline help and the manual, but it is used nowhere and osmo-bsc exists when it is used. Lets remove it. Change-Id: Ia295f4414e0d6e78b388c0c72f1a5b8df8bc3d7e
2021-08-02coverity: quench null deref warning in gscon_change_primary_lchan()Neels Hofmeyr1-2/+4
The if conditions for logging an lchan change made it look like new_lchan might actually be NULL, which it never is. So rather pin new_lchan as non-NULL with an assert and simplify the logic. Related: CID#237146 Related: b0d854556dafe885d740346b1b34ab247cb09d56 Change-Id: I8859c6cb9b3b15287e339ce4b6815b946965d0d9
2021-07-29Clarify string name for GSM_CHREQ_REASON_CALLPau Espin Pedrol1-1/+1
The previous naming was confusing since when appearing on log files it seemed to mean the reason was mainly only call reestablishment, when it actually means either call establishment (the usual reason) OR call re-establishment (should happen seldomly). Let's add some parenthesis to make it clearer. Related: SYS#5548 Change-Id: Id2dccd71803335c284a5ba271fa7f7890d253c27
2021-07-24vty: improve err msg for invalid subslot nrNeels Hofmeyr1-1/+2
Change-Id: I2f649bd2d8d9f217c22b62d2842e1e4fa101ba11
2021-07-24vty: lchan deact: allow omitting the lchan type argNeels Hofmeyr1-16/+42
In the command bts <0-255> trx <0-255> timeslot <0-7> sub-slot <0-7> deactivate fr the final argument indicating the channel type does not make sense and is not actually used. Define a separate vty command for 'deactivate', so that it doesn't require arguments only used for 'activate'. Change-Id: Ibdeca3b1d75b9f6092f566544e9d5f4da67fffce
2021-07-24debug log: indicate change of primary lchan on a connNeels Hofmeyr1-0/+8
Change-Id: Ib4e9a1cde9248f5d3fd8d7d8277623b42670b059
2021-07-24log: fix missing newline in lchan_select.cNeels Hofmeyr1-1/+1
Change-Id: Iea8bc73ba6da24f353ad422cdea3fa88173a9a1c
2021-07-24fix CM Re-Establishment Request: allocate new A connNeels Hofmeyr1-2/+7
For a call re-establishment, the MS shows up on a different cell and requests CM Re-Establishment (3GPP TS 24.008 9.2.4). As soon as the Layer 3 is established, the MSC will clear the first A-connection; the re-establishment *has* to happen on a new separate A-connection. So for a brief moment we must allow two distinct A-interface connections to be used for the same subscriber. Tested by BSC_Tests.TC_cm_reestablishment added in I1e7d446644f46b8a0a94688e618ffb4f23a8900e Related: SYS#5130 Change-Id: I2da9a971dd36c4289a78040adfe85704c8282c59
2021-07-23Introduce VTY option to forbid use of TCH for non-voicecall signallingPau Espin Pedrol3-11/+36
Usual allocation mechansim, when some signalling channel is needed, first tries to reserve an SDCCH, and if all of them are exhausted, then attempts to reserve a TCH as a last resort. This, however, may cause TCH starvation under certain situations, for instance if there high load on other services (LU, SMS, etc.). Hence, it may be desirable for the operator to forbid reservation of TCH slots once SDCCH become exhausted. This commit is thus adding a VTY command which allows forbidding it. The default behavior (allow using TCH timeslots when SDCCHs are exhausted) is kept as before. The above mentioned prohibition is applied only to non-voicecall related signalling services. That's because voicecall services will end up requiring a TCH anyway, and forbidding reservation of TCH straighaway when SDCCHs are exhausted would mean no voice calls could be initiated while still TCHs would be available. Related: SYS#5548 Change-Id: Ib08027125145df26602069bfb51847063b0ccc0c
2021-07-23Introduce libbsc to avoid linking long lists of .o filesPau Espin Pedrol3-78/+27
Every time a new file is added in osmo-bsc, it ends up being a pain because its .o file has to be included to other tests/util binaries, or stubs need to be added. Let's instead bundle all .o files together in an .la file and pass that around. Change-Id: If91dc589ea1e476da105b58846d1c3e720a439e1
2021-07-23Split bts_vty.c creating bts_trx_vty.cPau Espin Pedrol3-799/+851
Change-Id: I15ec8f71a5d31915162cb3ad75ea77e934fa4887
2021-07-22Split bsc_vty.c creating bts_vty.cPau Espin Pedrol5-4941/+4962
Change-Id: I347e7da328fed0733af2eec10a3ca6e02a148308
2021-07-22bts: Clear BTS_STAT_CHAN_*_{TOTAL,USED} on bts disconnectDaniel Willmann5-0/+25
Adds gsm_bts_stats_reset() to clear the stats and calls it from the different models. Change-Id: Ic42687cd73e3546edaa99fb1268a5960ffa43b12 Related: SYS#5541
2021-07-22RES IND: tweak error code on missing Resource Information IENeels Hofmeyr1-1/+1
If the RES IND message is invalid, let's not return ENOENT which translates to "No such file or directory", instead return EINVAL. Related: SYS#5313 Change-Id: Ifd700e90c881874d428f2860603a4ddbf13d705e
2021-07-22RES IND: allow empty Resource Information IENeels Hofmeyr1-2/+4
If all channels of a BTS are in use and there are no interference ratings to be reported, the Resource Information IE may be empty. Do not log this as an error, it is not something that needs operator attention. Related: SYS#5313 Change-Id: I75b851ef1269674f43db3fb3a48518e76182d7f0
2021-07-22Fix recent regression in CHREQ allocationPau Espin Pedrol1-1/+1
Recent commit introduces a silly bug when changing code. Fixing it now. Fixes: fdb87343d7a747575fae0bb436cd9d105b9748e9 Change-Id: I1e8027a3933c3c8450e76e1325d0f7c28a89a6d1
2021-07-21abis_rsl: Log chan rqd reason on resource exhaustion log messagePau Espin Pedrol1-6/+8
This allows better understanding which of use is exhausting channels when there a lot of load. Change-Id: Ic68162c2d52df07b05c76374e2a92148b9a7ccd5
2021-07-20lchan_fsm: Allow rx LCHAN_EV_RLL_REL_IND in state BORKENPau Espin Pedrol1-0/+2
As seen in osmo-bsc log: DCHAN ERROR abis_rsl.c:2287 lchan(12-0-2-TCH_H-1){BORKEN}: Event LCHAN_EV_RLL_REL_IND not permitted Related: SYS#5523 Change-Id: Idc7796d41f3483c89559746d9a00fdf32bf67c57
2021-07-20_select_sdcch_for_call: Avoid 2nd lchan lookup when finally selecting itPau Espin Pedrol1-2/+1
We already looked it up, it's not necessary to look it up again by calling lchan_select_by_type(). Let's instead call lchan_select_set_type() directly on the lchan pointer. Related: SYS#5309 Change-Id: I1054c18f58c9e249f263e3e97a365a1fd8b03a93
2021-07-20Add new lchan_select_set_type() API helperPau Espin Pedrol2-10/+20
It's an easy helper, but it helps in standarizing and finding similar places in code. Morevoer, it will be used in follow-up commit where we first use lchan_avail_by_type and finally we select it in a later stage. Change-Id: I025a40962a5e5d40543b297a0760e47618fb525c
2021-07-19handover_ctrl: add control interface for handover settingsPhilipp Maier3-0/+221
The VTY handover_vtc.c offers a large number of handover specific settings. Those settings are (with one exception) auto generated using macros. Lets add an equivalent for the control interface that uses the same auto generation mechanisms. Change-Id: I12f143906818fd6b16e8783157cbb1eb51e49ffc Depends: libosmocore I53fc207677f52b1dc748b01d58424839cdba807c Related: SYS#5369
2021-07-16vty 'interference-meas level-bounds': explain duality in orderingNeels Hofmeyr1-2/+3
Related: SYS#5313 Change-Id: If71e20e95d29e7f03739ee04e1ef429bf8bd51ed
2021-07-16separate 'interference-meas level-bounds' cfg and usedNeels Hofmeyr5-19/+21
The VTY defun already indicates BSC_VTY_ATTR_RESTART_ABIS_OML_LINK correctly, but so far we would immediately start using the new values internally, and wrongly interpret interference levels. Fix that. Have bts->interf_meas_params twice: interf_meas_params_cfg for the VTY configured values, and interf_meas_params_used for the values that the BTS actually knows about, after they were sent via OML. In a running BSC, when changing the interference level boundaries on the telnet VTY, the BTS is not immediately told about the change. That would require a BTS restart. Hence store the cfg values separately in interf_meas_params_cfg. For comparing/printing interference levels in a running BTS, only employ the values that were actually sent via OML and placed in interf_meas_params_used. Related: SYS#5313 Change-Id: Iad8cf4151ff7f86dc0549158ed5d91d788d40b1f
2021-07-15cosmetic: Small improvements to _select_sdcch_for_callPau Espin Pedrol1-13/+14
This commit improves some cosmetic and logical aspects from recent commit (see "Fixes" below). * Fix typo s/free_tcch/free_tchh/" * Improve some comments Fixes: fdb87343d7a747575fae0bb436cd9d105b9748e9 Change-Id: Id6217c929068b0182cb2d4a9922bfbf544c8c75d
2021-07-15hodec2: add low-rxqual-assignment penalty timer (2/2)Neels Hofmeyr1-1/+12
Hold off re-assignment after an intra-cell re-assignment due to low rxqual. Adjust test_amr_tch_h_to_f_rxqual.ho_vty to show the changed behaviour. Related: SYS#5198 Change-Id: Id00a07313fe04eec509b336c0637b59c707760e0
2021-07-15switch handover penalty timers to CLOCK_MONOTONICNeels Hofmeyr1-4/+4
To be able to add a fake time to handover tests, the penalty timers need to use an osmo_* time source. There already is a fixme comment rightfully asking for a monotonic clock, so this change is overdue anyway. An upcoming patch will prove that this works: "handover tests: test passing of penalty timeout" I65e59cc7309778cf9d71612669ce84d101c8135e Related: SYS#5198 Change-Id: Ifb1ab3165db50511aed4f65aa445798367d7e19e