aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)AuthorFilesLines
2022-09-20add X27 timeout: release lchan that lacks L1 Infoneels/chan_timeoutNeels Hofmeyr4-0/+18
To lchan_fsm ESTABLISHED, add a timeout: if MEAS REP lack L1 Info for a time defined by timer net X27, release the lchan. Related: OS#5530 Related: If7c76445373d5d0e915a3e8910d3eb991216f768 (osmo-ttcn3-hacks) Change-Id: I6fb29315568554c8490ee999fcfd1b77d8245389
2022-09-20ipaccess-config: Fix writing pcap output to fd=0 (stdin)Pau Espin Pedrol1-0/+1
It ended up in seeing lots of garbage in my terminal every time I run the program. Change-Id: I9ee0a4c51f4f10bf71390f884d67d87b623773df
2022-09-20ipaccess: Remove unused stubPau Espin Pedrol1-11/+1
function on_gsm_ts_init() doesn't exist at all in the repository, so it can be dropped from here. Change-Id: I863ccad044960d3ba267fa2bbf3c697abdf596a8
2022-09-20ipacces-config: override gsm_bts_check_cfg() to void checking unset bts ↵Pau Espin Pedrol2-1/+7
configuration the shared code in libbsc checks for sane config being set, but this doesn't really apply to ipaccess-config, wihich doesn't set such config fields internally. Change-Id: I22ff0d22d6dcf9b0f715bfa4e0daeb52c4028308
2022-09-19mgcp: Set up Osmux only when AMR codec is selectedPau Espin Pedrol2-5/+27
Until now Osmux was selected unconditionally in bss-side CRCX, without checking if the codec was AMR or not. If Osmux use policy is "on", we only want to request Osmux use if AMR codec is selected. Change-Id: I3f53555dd9608f1337365e4f82b492bdf1da05bb
2022-09-19ipaccess-config: Exit program with error if OML link is droppedPau Espin Pedrol1-0/+27
Change-Id: Ic96635f618f2efbe29ca6c59eedd1dc1f90c1a1d
2022-09-19ipaccess-config: use available API to set e1inp_line_opsPau Espin Pedrol1-1/+1
Change-Id: Ic0d248fc5d1481ad96f7af20a1a80144137c626a
2022-09-19ipaccess-config: Initialize RSL ts driver fd to proper valuePau Espin Pedrol1-0/+1
ipaccess-config sets up the entire line in a fake way. That requires also setting the fd of each TS used to -1 in order to avoid library code interacting with it during tear down if an error occurs. Change-Id: I19eb23a46f89b96dd8d63742ca2078ecd5c9ab6b
2022-09-19ipaccess-config: Initiate missing IPA osmo_linkPau Espin Pedrol2-1/+5
Since this is created by osmo-bsc, it is also expected to be there by ipaccess_drop_oml() in the shared libbsc code. But ipaccess-config was not creating it, so let's do so. Let's explicitly assert this condition in the code path expecting the pointer to be instantiated in shared code, to easily track related issues in the future. Change-Id: I3f63f6827f7c5d7a21ac125b7ca6b35244efbb65
2022-09-19oml: Delay Tx of OPSTART(BBTRANSC) after rx of RSL CONNECT ACKPau Espin Pedrol6-7/+95
nanoBTS waits until receiving OPSTART in order to establish the RSL connection socket against BSC, hence we cannot wait until the socket is established at the BSC in order to send the OPSTART. Still this way we make sure the RSL CONNECT is acked before attempting an OPSTART at the BSC. Change-Id: Ief46bad5075b656c13d1f09a0724e33283148236
2022-09-19doc: Document use of Osmux in IPA Abis against OsmoBTSPau Espin Pedrol1-8/+47
Related: SYS#5987 Change-Id: I41788f8d3bc29735cc30516f429311b73ba71910
2022-09-19vty: Allow setting LAC as hexadecimal valuePau Espin Pedrol20-46/+45
The LAC value currently configured is now printed as hexadecimal value too. It can still be entered as a decimal value in order to keep backward compatibility, though the hexadecimal one is now preferred. Related: OS#5631 Depends: libosmocore.git Ia2b7fbbf5502c28374c21dbff548232680da27d4 Change-Id: I9090d73ae9d39244b79b9dbafa1b164faebabc52
2022-09-16oml: Integrate signal S_NM_IPACC_SET_ATTR_ACK inside S_NM_IPACC_ACKPau Espin Pedrol4-29/+53
It makes no sense to have duplicate signals. Let's simply clean up S_NM_IPACC_ACK and pass the required info for higher layers to do whatever is needed based on the information. This allows reusing same signal infrastructure for different types of messages instead of having to implement new signals for each message (which can be done at a higher point in the stack). Change-Id: I18ae3d320d00077fc13bb9903903de2a17767302
2022-09-15pcu_sock: fix memleakPhilipp Maier1-1/+3
pcu_sock_read() may not free the message buffer in case the recv returned errno EAGAIN. This is already fixed in osmo-bts, lets fix it in osmo-bsc as well. Related: OS#5198 Change-Id: I49eda447fc1912c1f7f25ba07331cb84decf4548
2022-09-13Add Osmux support on the Abis-side data planePau Espin Pedrol7-6/+111
Related: SYS#5987 Change-Id: I48483b278ff829ee29d3e7fbcab0dd3a54728825
2022-09-05Set working directory in systemd service fileMax1-0/+2
By default systemd will execute service with root directory (or home directory for user instance) which might result in attempts to create files in unexpected place. Let's set it to 'osmocom' subdir of state directory (/var/lib for system instance) instead. Related: OS#4821 Change-Id: I5bf2991d8b6507337b864f4d3c43448e54633f37
2022-09-05BSSMAP: add assert to reset resendingMax1-0/+2
There seems to be no way for this function to be called with NULL parameter despite unreproducible crash observed in the past. Let's add assert to show this explicitly. Fixes: OS#5551 Change-Id: I235bdd42ea82e7b5a1a40f437ca34c49ad239c48
2022-08-16configure.ac: do not require unused dlopenVadim Yanitskiy1-4/+1
Change-Id: I528ed8d7b61b39a474376c21fccc47a8531027b7
2022-08-09cosmetic: Clean initiating whitespacePau Espin Pedrol1-2/+2
Change-Id: Ide2c13cc80dfabbacfbaee97122b000d708cd07a
2022-08-09lchan: Move init logic to a specific functionPau Espin Pedrol3-8/+13
This way it is a lot easier to find out how and when is an lchan initialized, simply by looking at the lchan.h header, then seeing the init function and grepping for it. Change-Id: I043d1c2ee75d4d2a8b323b7960ee490e567f3865
2022-08-09split lchan specific defines and code to its own filePau Espin Pedrol22-476/+541
It is really difficult right now to find out where all the different stuff relative to operation and lifecycle of an lchan is. Let's move everything to its own file to have all the related defines and logic together. Change-Id: Idd855d126c43ac6576c5f3ba7e0b8014127a65e1
2022-08-09Use libosmocore available API to get value_listPau Espin Pedrol15-47/+40
This API has been available since 1.0.0, and we actually require libosmocore >= 1.7.0 nowadays, so it's totally fine using the libosmocore API and drops the local duplicate. Change-Id: I95c59b31cf1b08e1d513b589ef386d2dd55f09a2
2022-08-08bts_trx_vty: prefix bb_trxc mo with [Virtual] for ericsson BTSPhilipp Maier1-2/+4
The OM2000 model does not have a separate bb_transc MO, however for compatibilty reasons we have a virtual MO that just mirrors the state of the TRX mo. We should mark it as [Virtual] in show trx to reflect this to the user. Change-Id: I0f5501f6fbc7ce6d5457676b16c7f93f70db5763 Related: OS#5101
2022-08-08abis_om2000: duplicate nmstate of bb_trxc mo to trx moPhilipp Maier1-1/+71
In OM2000 a separate bb_trxc MO does not exist to archive better compatibilty towards classic ABIS and its MOs. Let's mirror the nmstate of the BB_TRANSC MO to the RCARRIER MO in order to make it look like if it were present. Change-Id: I4611d8af16a30725308bd527098b12a356bfde9f Related: OS#5634
2022-08-08abis_om2000: om2k_trx_s_done_onenter() does not send signalPhilipp Maier1-2/+14
the function om2k_trx_s_done_onenter() updates the administrative state of the TRX oml MO but it does not notify the update to other entities using S_NM_STATECHG Change-Id: Iabf9f3a1a345c5d53d9a4d02fa2d6d13ddfd86ae Related: OS#5634
2022-08-08doc: Fix typo in several diagramsPau Espin Pedrol5-12/+12
Change-Id: Iba99c106703a00b85ed54028ff1b398ea513d62d
2022-08-07bts_nokia_site: Implement channel config for CBCHHarald Welte1-0/+6
Thanks to manawyrm for pointing out that the comments of the file actually contained the numeric codes for the CBCH variants, but the cases in the switch statements were missing. Change-Id: Id5b4da6838f9a34db39fff5c23ad18822cd3347b
2022-08-05abis_om2000: update_op_state() does not send signalPhilipp Maier1-4/+12
The function update_op_state() updates the OML MO, but it does not notify the update to other entities using S_NM_STATECHG Change-Id: Id19c6beb2bc79c4db0ec07ef593aacb57fff8b75 Related: OS#5634
2022-08-05abis_om2000: constify mo in mo2objPhilipp Maier1-1/+1
The function mo2obj does only read only access to mo, so mo can be const. Change-Id: Ia09d0c96c8938e287fdbad343b9605cbfd6ff6a1 Related: OS#5101
2022-08-05abis_om2000: move switch-case to functionPhilipp Maier1-35/+41
The switch-case in update_op_state() and update_mo_state() can be split off into functions. This makes to code better readable. Change-Id: I41f0d9d0d498f6f698c2c959baac50424f5ac317 Related: OS#5634
2022-08-04signal.h: make om2k mo constPhilipp Maier1-1/+1
The om2k mo that is put into the nsd as reference to notify other entities about the signal change can be const. Its only accessed read-only (if at all) and also the API in abis_om2000.h suggests that the om2k mo should be const. Change-Id: Id0969d44855506af18974de1ea81105653920d2f Related: OS#5634
2022-08-04abis_om2000: fix missing signalPhilipp Maier1-0/+16
The normal abis nm FSMs are sending S_NM_RUNNING_CHG signals that include an object class to notify other entities about state changes. This also includes paging.c, which only starts paging services when it sees NM_OC_RADIO_CARRIER becoming enabled. Change-Id: I305df5b2f962473e33e32484c42a79ff96e53e1a Fixes: I1b5b1a98115b4e9d821eb3330fc5b970a0e78a44 Related: OS#5634
2022-08-01bsc_subscr_conn_fsm: fix use after freePhilipp Maier1-0/+4
In cases where the MGCP client endpoint FSM is terminating early the bsc sbscr conn FSM receives the signal GSCON_EV_FORGET_MGW_ENDPOINT, which then calls gscon_forget_mgw_endpoint(). However, this only nulls the conn->user_plane->mgw_endpoint_ci_msc struct pointer, not the others. This causes the assignment FSM to access conn->assignment.created_ci_for_msc whle trying to initiate a DLCX. We must make sure that when the MGCP client endpoint FSM dies, that all other CI pointers that reference the same CI are also set to NULL. Change-Id: Ia857e3af6c17282b7e8178b6d249eb0f99ed98e3 Related: OS#5572
2022-07-27tests/ctrl: Avoid creating logfilePau Espin Pedrol1-9/+0
It's of no use for the test. Furthemore, it was being created outside the build direcory, being left there. Change-Id: Iaeee14a01badb8439bc8893ba8be06b13e4318f3
2022-07-22call osmo_timer_del() unconditionally, without osmo_timer_pending()Vadim Yanitskiy3-11/+6
osmo_timer_del() does check if a timer is active internally. Change-Id: I3e42a74d59b8e8d0d46cc4027676149689cc18a3
2022-07-22.gitignore: remove non-existing filesVadim Yanitskiy1-3/+0
Change-Id: I7c74a4770cb64520a711a41f4a19fbbf87b78a12
2022-07-14smscb: Tx Failure and Restart Ind for each Bcast Msg TypePau Espin Pedrol1-0/+2
As described in 3GPP TS 48.049: 7.8.2: "The RESTART message is sent once per broadcast message type as indicated by the Broadcast Message Type IE." 7.9.2: "The FAILURE message is sent once per broadcast message type as indicated by the Broadcast Message Type IE." Related: SYS#5910 Change-Id: I6668b55868cf534a3b59da5e11542abb8131d604
2022-07-14smscb: Tx Failure and Restart Ind using CGI as cellIDPau Espin Pedrol1-19/+9
Let's use CGI instead of LAC+CI, which contains only a subset of the information. Furthermore, It was noted that some third party (non-osmocom, non open source) CBCs don't support/like receiving LAC+CI, and expect to receive CGI instead. Related: SYS#5910 Change-Id: I33a6216f89496484cbb3921609fcd3ab90761c69
2022-07-04osmo-bsc/Makefile.am: fix undefined reference to symbol pow()Vadim Yanitskiy1-0/+1
When trying to build osmo-bsc using clang 14, I am getting this error: make[3]: Entering directory 'src/osmo-bsc' CCLD osmo-bsc /usr/bin/ld: ./.libs/libbsc.a(handover_decision_2.o): undefined reference to symbol 'pow@@GLIBC_2.29' /usr/bin/ld: /usr/lib/libm.so.6: error adding symbols: DSO missing from command line clang-14: error: linker command failed with exit code 1 (use -v to see invocation) make[3]: *** [Makefile:656: osmo-bsc] Error 1 We need to link with the math library to resolve this. Change-Id: I4137cad07a3343882ca77d5ebd5137083941dc11
2022-07-04lchan_select: fix 'chan_alloc_reverse' may be used uninitializedVadim Yanitskiy1-1/+1
GCC 12.1.0 emits -Wmaybe-uninitialized when building with '-O2'. In function 'populate_ts_list', inlined from 'lchan_avail_by_type' at src/osmo-bsc/lchan_select.c:356:2: src/osmo-bsc/lchan_select.c:248:12: warning: 'chan_alloc_reverse' may be used uninitialized [-Wmaybe-uninitialized] 248 | if (chan_alloc_reverse) { | ^ src/osmo-bsc/lchan_select.c: In function 'lchan_avail_by_type': src/osmo-bsc/lchan_select.c:326:14: note: 'chan_alloc_reverse' was declared here 326 | bool chan_alloc_reverse; | ^~~~~~~~~~~~~~~~~~ This could only happen if in 'enum lchan_select_reason' we had items that are not handled in lchan_avail_by_type(), but this is not the case. Make GCC happy by initializing chan_alloc_reverse to false. Change-Id: I3956621a6ec14ca5ff0ba0b11d2c956e2538efd8
2022-06-30lchan_select: implement dynamic selection mode for assignmentVadim Yanitskiy13-33/+329
This change implements an additional channel allocation mode, which can be employed during a TCH channel allocation for assignment. Selection between ascending and descending order is performed depending on pre-configured parameters: * Uplink RxLev threshold and number of samples for averaging, * C0 (BCCH carrier) channel load threshold. This is useful in setups where Tx power of the RF carriers cannot be adjusted +dynamically at run-time and thus BS Power Control cannot be performed. In such setups the BCCH carrier is transmitting at relatively higher power than the other RF carriers. The key idea is to allocate channels in a smarter way, so that UEs with poor signal would get channels on carriers with high Tx power, while UEs with good signal could use carriers with lower Tx power. Change-Id: I1b7a0d706976b73cc5c30a8714b830811addfe8d Related: osmo-ttcn3-hacks.git Ia522f37c1c001b3a36f5145b8875fbb88311c2e5 Related: SYS#5460
2022-06-30lchan_select: allow different alloc order for assignment and handoverVadim Yanitskiy23-65/+185
A follow-up patch implements a special channel allocation mode, which is only working for assignment (basically TCH selection for a voice call). This mode cannot be employed for initial CHANNEL REQUEST or handover due to the absence of an already established lchan. Adding this mode to the existing VTY command syntax would be confusing: channel allocator (ascending|desscending|dynamic) ^^^^^^^ so this patch extends the VTY syntax in a way that it becomes possible to configure different channel allocator modes for different cases: OsmoBSC(config-net-bts)# channel allocator mode ? set-all Set a single mode for all variants chan-req Channel allocation for CHANNEL REQUEST (RACH) assignment Channel allocation for assignment handover Channel allocation for handover The old command syntax, which is basically 'set-all', is kept for backwards compatibility, but marked as deprecated. Change-Id: I3ae73b36ee9433cc768376b56f0765e5f416162f Related: SYS#5460
2022-06-30lchan_select: prepare a list of timeslots once, iterate over itVadim Yanitskiy2-75/+86
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-29cbsp: Change log level ERROR->INFO on CBSP tx and link downPau Espin Pedrol1-1/+1
Let's decrease the logging since it's fine simply discarding the message if the link is down. This way all code sending messages doesn't need to care about the link state. Change-Id: I64356ec6a7b3a4e11a0e66b17efab2788b1ca5cc
2022-06-29fix uninitialized err pointer passed to osmo_bssap_le_dec()Vadim Yanitskiy2-2/+2
osmo_bssap_le_dec() dereferences value of the given pointer and checks it against NULL. The caller must always initialize it. Change-Id: Idb0e6565e362ce383c833d6bfec4fb39d2985a6b Fixes: CID#272982, CID#272944
2022-06-29Bump version: 1.8.0.228-6941-dirty → 1.9.01.9.0Pau Espin Pedrol5-24/+271
Change-Id: I6c955cbfdfeeef107e33aceb1db31f680d062c6d
2022-06-28cbsp: Avoid encoding CBSP message if link is downPau Espin Pedrol1-4/+7
Change-Id: I25c8681d2ee987ac6ebfce42ee409926eb88301d
2022-06-28ipaccess-config: check value returned by abis_nm_tlv_parse()Vadim Yanitskiy1-1/+4
Change-Id: I38cd35506964efb1441555d16cea998f415e9394 Fixes: CID#272995
2022-06-28VTY: fix wrong enum value s/ACTIVATE_FOR_VTY/ASSIGN_FOR_VTY/Vadim Yanitskiy1-1/+1
Found by clang: warning: implicit conversion from enumeration type 'enum lchan_activate_for' to different enumeration type 'enum assign_for' [-Wenum-conversion] This is indeed a bug, because both enum items have different values: * ACTIVATE_FOR_VTY (from enum lchan_activate_for) is 4, * ASSIGN_FOR_VTY (from enum assign_for) is 3. Change-Id: I44544d4577833e0aed62b07d0c7c1c2821b05dd4
2022-06-27Improve parsing of om2000 fault reportsKeith1-1/+3
Fault Reports are commonly oberved with a TLV id 0xd2 as are reports with up to 20 TLVs. Let's not have these cause logging at level ERROR. Closes: OS#5593 Change-Id: Ibe0b38835362c59d1576a206b2f64cea4427295f