aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)AuthorFilesLines
2018-05-16tbf: Fix memset(0) on object with no trivial copy-assignmentPau Espin Pedrol2-1/+8
As warned by gcc 8.1.0: osmo-pcu/src/tbf.cpp: In constructor ‘gprs_rlcmac_tbf::gprs_rlcmac_tbf(BTS*, gprs_rlcmac_tbf_direction)’: osmo-pcu/src/tbf.cpp:222:33: error: ‘void* memset(void*, int, size_t)’ clearing an object of type ‘struct gprs_rlc’ with no trivial copy-assignment; use assignment or value-initialization instead [-Werror=class-memaccess] memset(&m_rlc, 0, sizeof(m_rlc)); ^ In file included from osmo-pcu/src/tbf.h:24, from osmo-pcu/src/bts.h:37, from osmo-pcu/src/tbf.cpp:22: osmo-pcu/src/rlc.h:234:8: note: ‘struct gprs_rlc’ declared here struct gprs_rlc { ^~~~~~~~ Change-Id: Ifb0529b9ae6cd4300e5cbbd9151054792edbfe06
2018-05-15Don't register SIGHUP handler without actually handling SIGHUPHarald Welte1-3/+2
In libosmocore, we normally register a SIGHUP handler for log file rotation. However, the osmo-pcu code so far installed its own signal handler, which did exactly nothing in the SIGHUP case. Let's fix this by removing SIGHUP handling here, letting libosmocore take care about this. Change-Id: Ifa20d79770bc4d88d40601b008a3a2a79d083c04 Closes: OS#3265
2018-05-03Bump version: 0.4.0.115-513c-dirty → 0.5.00.5.0Pau Espin Pedrol2-4/+137
Change-Id: I6ce6fb40690a66b0980eba4fa03b47da2f59ee6e
2018-05-02improve documentation of Encoding::write_paging_request()Stefan Sperling1-3/+3
Add pointers to relevant parts of the spec. Tweak comments to be more specific about the values being written and abbreviations used. Change-Id: Ia5bf3f7f8846198b7b4e25ff1accf6206764be74
2018-04-12tbf: add frame number to log outputPhilipp Maier2-289/+293
Currently, the TBF timer log messages lack the frame number in the logoutput - Add frame number to TBF timer related log-statements Change-Id: I5a744dc5cd7c1de1baea13fffac026c83d091429 Related: SYS#4139 Patch-by: Octasic inc.
2018-04-10pcu_l1_if: add frame number to log outputPhilipp Maier3-10/+21
Currently, the log output lacks the frame number. - make get_current_fn() public - add frame number to the log statements in pcu_l1_if.cpp Change-Id: Idce994dbf86a2bbf861907d75418a2a3867244db Related: SYS#4139 Patch-by: Octasic inc.
2018-04-10cosmetic: remove runaway semicolonPhilipp Maier1-1/+1
Change-Id: I33c335dc8d564a8357ffb5b1163c2c4b1a578b49 Related: SYS#4139 Patch-by: Octasic inc.
2018-04-01use osmo_init_logging2() with proper talloc ctxNeels Hofmeyr14-22/+28
There is a duality of initialization: early_init() in bts.cpp wants to init logging even before static instances get initialized. Make sure that tall_pcu_ctx is initialized during early_init() as well. There is a build context that does not seem to include bts.cpp (osmo-pcu-remote), so to be sure, init tall_pcu_ctx as NULL and both in early_init() as well as pcu_main.cpp, init both tall_pcu_ctx and logging if it is still NULL. Change-Id: I2199b62d0270bd35dec2283e8f5b364b7c63915b
2018-03-30Revert "Rewrite EGPRS Packet Uplink Assignment"Neels Hofmeyr1-117/+55
This reverts commit 529ce885450946d85d1920fb3d1a994c3efe5849, I2139fb347b3290621bbc3f6a031f7f213d372e65. Commit I52ec9b07413daabba8cd5f1fba5c7b3af6a33389 / 896574e92bea09ed8d39688b6fdf504e84521746 was found (empirically) to be a regression, rendering GPRS service fatally unreliable. This reverted commit seems to be related to the regression and is reverted along with it. Related: OS#3013 Change-Id: I3e8cc0e8ba3ba5bd444124fd4cb95ef92a71fdfb
2018-03-29configure: properly quote CFLAGS in lc15 checkNeels Hofmeyr1-2/+2
Change-Id: I7bb7a7d7b5b9340cb41c95f848774ee378c59212
2018-03-29configure: fix --enable-sysmocom-dsp and --with-sysmobts flagsNeels Hofmeyr1-12/+34
Fix multiple problems around the sysmobts DSP access and headers: - Use the proper variable name to detect the choice: $enable_sysmocom_bts was not set anywhere and would actually be used from the current user env, if present, instead of from configure args. - Quote the $CPPFLAGS when assigning to oldCPPFLAGS and back. - When checking SYSMOBTS_INCDIR, do not allow an empty "-I" without a dir. - Ensure the --with-sysmobts path is used as an absolute path. - Error out if --with-sysmobts is paired with --disable-sysmocom-dsp. Also tweak reporting. The resulting behavior now is: ./configure --disable-sysmocom-dsp checking whether to enable direct DSP access for PDCH of sysmocom-bts... no ./configure --enable-sysmocom-dsp checking whether to enable direct DSP access for PDCH of sysmocom-bts... yes checking for sysmocom/femtobts/superfemto.h... no configure: error: sysmocom/femtobts/superfemto.h can not be found, see --with-sysmobts ./configure --disable-sysmocom-dsp --with-sysmobts=../../../sysmobts/layer1-api checking whether to enable direct DSP access for PDCH of sysmocom-bts... error configure: error: --with-sysmobts does not work with --disable-sysmocom-dsp ./configure --enable-sysmocom-dsp --with-sysmobts=../../../sysmobts/layer1-api checking whether to enable direct DSP access for PDCH of sysmocom-bts... yes, using -I/n/s/sysmobts/layer1-api checking for sysmocom/femtobts/superfemto.h... yes ./configure --with-sysmobts=../../../sysmobts/layer1-api checking whether to enable direct DSP access for PDCH of sysmocom-bts... yes, using -I/n/s/sysmobts/layer1-api checking for sysmocom/femtobts/superfemto.h... yes ./configure --with-sysmobts=/nonexisting/path checking whether to enable direct DSP access for PDCH of sysmocom-bts... yes, using -I/nonexisting/path checking for sysmocom/femtobts/superfemto.h... no configure: error: sysmocom/femtobts/superfemto.h can not be found in -I/nonexisting/path, see --with-sysmobts ./configure --with-sysmobts=/var/log checking whether to enable direct DSP access for PDCH of sysmocom-bts... yes, using -I/var/log checking for sysmocom/femtobts/superfemto.h... no configure: error: sysmocom/femtobts/superfemto.h can not be found in -I/var/log, see --with-sysmobts Change-Id: I2f5988730dbbcf3b21d8c647c499623843ed3da9
2018-03-28Revert "Rewrite Packet Downlink Assignment"Neels Hofmeyr1-73/+48
This reverts commit 896574e92bea09ed8d39688b6fdf504e84521746, I52ec9b07413daabba8cd5f1fba5c7b3af6a33389. This commit was found (empirically) to be a regression, rendering GPRS service fatally unreliable. Related: OS#3013 Change-Id: Idcba0381f70eb7f7c9aefdee9dfeafd5de96a9be
2018-03-28Revert "Rewrite Packet Uplink Assignment"Neels Hofmeyr1-48/+48
This reverts commit 93d947f5e8a30acc9250c124bf9d5bb6a8863526, I44db2eeea7448ff67e688ae716487bc6dbfc96a3. Commit I52ec9b07413daabba8cd5f1fba5c7b3af6a33389 / 896574e92bea09ed8d39688b6fdf504e84521746 was found (empirically) to be a regression, rendering GPRS service fatally unreliable. This reverted commit seems to follow after the regression and is reverted along with it. Related: OS#3013 Change-Id: If7038127e9a663c93006475b3add961adc0b1922
2018-03-28Revert "Use Timing Advance Index in UL assignments"Neels Hofmeyr1-6/+2
This reverts commit 6298fbb7b2f3639fde994633e33ba54a64a6ef9b, I8b17be78a46c0bc17516b7c90f35aa4768010ae4. Commit I52ec9b07413daabba8cd5f1fba5c7b3af6a33389 / 896574e92bea09ed8d39688b6fdf504e84521746 was found (empirically) to be a regression, rendering GPRS service fatally unreliable. This reverted commit seems to follow after the regression and is reverted along with it. Related: OS#3013 Change-Id: I5e0fd8c9c3b89e519e7382e3d0bb24e0aeddeff6
2018-03-28mslot_class: two more: use uint32_t to shift 1 << 31Neels Hofmeyr1-2/+2
Avoid runtime error seen on jenkins admin-deb9build slave, when building osmo-pcu with_dsp=None,with_vty=False, during ts_alloc and tbf regression tests: +../../../src/mslot_class.c:271:36: runtime error: left shift of 1 by 31 places cannot be represented in type 'int' +../../../src/mslot_class.c:272:22: runtime error: left shift of 1 by 31 places cannot be represented in type 'int' This time it seems that these are all. The master-osmo-pcu breaks on this since moving to a debian9 build slave. Change-Id: I976a1dca9da19a05afc85a17b7ba60545b7bc1e5
2018-03-26mslot_class: find_free_tfi(): use uint32_t to shift 1 << 31Neels Hofmeyr1-1/+1
Avoid runtime error seen on jenkins admin-deb9build slave, when building osmo-pcu with_dsp=None,with_vty=False, during ts_alloc and tbf regression tests: +../../../src/mslot_class.c:242:22: runtime error: left shift of 1 by 31 places cannot be represented in type 'int' The master-osmo-pcu breaks on this since moving to a debian9 build slave. Change-Id: I0cdf10e5fbc1173a7a09bd4fed8a66d06f80aeb1
2018-03-17gprs_bssgp_pcu.cpp: Comment unused function parse_ra_capPau Espin Pedrol1-0/+2
Commit 741d25cb6f8c0c1522cf6d1be2fea49356ecd4bd commented the only user of the function but forgot to comment too the function itself. Change-Id: I8b291b45aaedfb0421cd28c0d9e24cefa5547b09
2018-03-13configure: add --enable-werrorNeels Hofmeyr1-0/+21
Provide a sane means of adding the -Werror compiler flag. Currently, some of our jenkins.sh add -Werror by passing 'CFLAGS="-Werror"', but that actually *overwrites* all the other CFLAGS we might want to have set. Maintain these exceptions from -Werror: a) deprecation (allow upstream to mark deprecation without breaking builds); b) "#warning" pragmas (allow to remind ourselves of errors without breaking builds) As a last configure step before generating the output files, print the complete CFLAGS and CPPFLAGS by means of AC_MSG_RESULT. Change-Id: I0f735913fc3bbda695c4e66449dcfc94f417dafb
2018-03-11implement support for 3-digit MNC with leading zerosNeels Hofmeyr14-21/+40
Receive the mnc_3_digits flag from the PCU interface. Bump the PCU interface to 9. This is one part of the three identical pcuif_proto.h patches: - I49cd762c3c9d7ee6a82451bdf3ffa2a060767947 (osmo-bts) - I787fed84a7b613158a5618dd5cffafe4e4927234 (osmo-pcu) - I78f30aef7aa224b2e9db54c3a844d8f520b3aee0 (osmo-bsc) Add 3-digit flags and use the new RAI and LAI API from libosmocore throughout the code base to be able to handle an MNC < 100 that has three digits (leading zeros). Depends: Id2240f7f518494c9df6c8bda52c0d5092f90f221 (libosmocore), Ib7176b1d65a03b76f41f94bc9d3293a8a07d24c6 (libosmocore) Change-Id: I787fed84a7b613158a5618dd5cffafe4e4927234
2018-02-28pcuif_proto: add version 8 featuresAlexander Couzens1-1/+19
Add PCU_IF_MSG_DATA_CNF_DT and PCU_IF_SAPI_AGCH_DT to bring the pccif_proto into sync. Both commands are required to support the rb11 with an osmo-bsc co-located pcu. Change-Id: Ieaf151447e5556b911be7e2483b7c154fc5ec42e
2018-02-28pcuif_proto.h: fix whitespaces and indentionAlexander Couzens1-5/+5
Change-Id: I290967346af4e2707cfdfb62dccaccd43d195443
2018-02-21Simplify TS alloc: move slot check into functionsMax5-123/+626
Move timeslot applicability check outside of nested for loop into separate functions and document them. Add corresponding tests. This allows us to clarify types used in TS-related computations. Change-Id: Ic39e848da47dc11357782362fdf6206d2c1457c2 Related: OS#2282
2018-02-21Simplify TS alloc: move slot assignmentMax4-42/+84
Move into separate functions: * move timeslot reservation * move UL timeslot assignment * move DL timeslot assignment Change-Id: I64cf78c5cfc78664766f9769dd5cde632dab92b0 Related: OS#2282
2018-02-20TBF: make network counters internalMax5-35/+88
* store N310* counters in shared array similar to corresponding timers * add functions to increment/reset counters This avoids direct access to TBF counters from PDCH. Change-Id: I8ffff9c7186f74bde7e6ac5f6e98f0b3e4c35274 Related: OS#1539
2018-02-20Simplify TS alloc: constify max dl slot funcMax2-2/+2
Constify parameters of gprs_alloc_max_dl_slots_per_ms(). Change-Id: Ic90930d98560459eab0054cb9e1625cb99db61c8 Related: OS#2282
2018-02-20Simplify TS alloc: don't use PDCH for free TFIMax4-19/+21
Don't use PDCH from free TFI lookup routine. This allows for simpler function which can be moved to mslot_class.c alongside with other similar helpers. Change-Id: Ie154866900453d232a890f7b9a30911b451525a1 Related: OS#2282
2018-02-19Move PDCH-related functions into separate filesMax16-1020/+1125
The PDCH class and corresponding functions are rather self-contained and independent from BTS implementation. Let's move them into separate file to make bts.cpp more manageable. As additional benefit it allow us to somewhat untangle all the different cross-dependent includes. Change-Id: Ie05e25361e6741a81b024679f9675c98d4923683 Related: OS#1539
2018-02-19Simplify TS alloc: split USF/UL allocationMax1-19/+42
* move USF allocation into separate function * document USF allocation This allows to clearly see where selected UL TS is forced into single TS in algorithm B allocator. Change-Id: I563dc10827ce68295553f88f3bf2e1fc0ba595c1 Related: OS#2282
2018-02-19Simplify TS alloc: split allocationMax3-57/+105
* generalize TS allocation and move it into separate function * move single-slot allocation into separate function * use common functions for TS allocation on both UL and DL Change-Id: Ied45ae380c345bc76fe9d6fd9a6184d1109f83f2 Related: OS#2282
2018-02-19Simplify TS alloc: separate capacity computationMax3-40/+50
Move TRX capacity computation into separate function and document it. Change-Id: Ifd88fc7ff818ea2a041eae61c5d457926a0df0f2 Related: OS#2282
2018-02-19Simplify TS alloc: split off RX mask computationMax4-49/+57
Move computation of RX mask into separate function and document it. This allows to significantly shrink find_multi_slot() function and overall improve code readability. Since the test output requires cosmetic adjustment anyway due to change in the sequence of log messages, use this opportunity to better group and format log message. Change-Id: I731726a096bba7ee97499e5cbe3e7401869d7392 Related: OS#2282
2018-02-19Update header includesMax26-30/+118
Many files include unnecessary headers and don't include headers which are actually used. Because of that combined with the fact that OsmoPCU is a mixture of C and C++, it makes it hard to modularize code. Fix this (using iwyu [1] tool): * add missing headers * remove unused headers [1] https://include-what-you-use.org/ Related: OS#1539 Change-Id: I8c9f488a43b099c72b2d30d3245e7ba50872fc00
2018-02-19Move include guard to the topMax2-5/+6
Having explicit include above the douible-include guard defines is potential source for hard to track bugs. Let's move it inside the guard statement. Change-Id: I5114a63ce00b03c8eed23565d52969250bd505cc Related: OS#1539
2018-02-19Move paging generation into PDCHMax2-12/+14
Previously paging was prepared inside BTS function and than handed over to PDCH function. Move the actual preparation into PDCH to better decouple PDCH from BTS. Related: OS#1539 Change-Id: I389fb16b6e54040770c21f88edbcb8e045636928
2018-02-19Use explicit type for pcu_lsb()Max1-2/+1
It's only used for byte-long input so we can specify input and output types explicitly. Change-Id: Id0bef691e17e4331c7c4b491661e36173d85388a
2018-02-14Make osmo-pcu wait for BTS to become available at start-up time.Stefan Sperling3-7/+27
After the PCU socket becomes available, the BTS might send an INFO_IND message with the 'ACTIVE' flag cleared. If this happens, do not exit immediately, but keep retrying until an INFO_IND message with the 'ACTIVE' flag arrives. Note that this change only affects behaviour at process start-up time. If the BTS switches from active to inactive state then osmo-pcu will still exit. If this behaviour should be changed as well it could be done in a follow-up patch. Tested against osom-bsc + osmo-bts-virtual. Change-Id: Ic42a5601a43b81d260721fef5d9fa52447f9d309 Related: OS#2689
2018-02-13emu: use libosmocore definitionsMax1-29/+1
Change-Id: I4eade528faeb3841549ad7a6c78e8c1357909614
2018-02-08TBF: move common test code into functionsMax1-109/+67
* move common code into functions * print error instead of failing test right away This allows the tests to continue till completion even in case of intermediate error which simplifies troubleshooting by allowing to gather more errors in a single test run. Change-Id: I1c4ad1dc94542835f15bd666f0821e0ccfcc78c1 Related: OS#1759
2018-02-07RACH: improve single block detectionMax1-44/+28
Replace unreadable if-else ladder in is_single_block() with regular switch-case. This enables implementation of 11-bit RACH support in follow-up patches. Related: OS#1548 Change-Id: I9180478152f9341f11bb3dffe61671da683f24d8
2018-02-03vty: drop unused functionMax3-7/+1
Change-Id: I01f3773ca6a9b6d4e28ca2f59c944c6d48918dd1
2018-02-03TBF: show assignment kind in vtyMax1-3/+5
Change-Id: Ic4e40d9c141ab7ee3f7c4dceec007dbe16359f93 Related: OS#1759
2018-02-03TBF: add helpers for assignment type handlingMax4-10/+86
* add function to set/unset given assignment type * log assignment type flag changes * update tests output with additional logs This enables us to carefully track the TBF assignment type transitions. Change-Id: I3fe9d52472be8b7f257e8326b2f84e8e7d7bd1f4 Related: OS#1759
2018-02-03TBF: decrease logging verbosity for trafficMax2-3/+3
Change-Id: If43aa9895abf58602556c986a633ff93a6f00b06
2018-01-31Simplify TS alloc: internalize TRX checkMax1-11/+10
Move TRX check inside local tfi_find_free() wrapper to make main algorithm easier to follow. Change-Id: I02da2b8ba8c9c8815dae0e39e1fed277ca0df171 Related: OS#2282
2018-01-31TS alloc: print suggested TRX on allocation errorsMax2-825/+825
If TS allocation fails due to unavailable TFI, print TRX which was suggested to allocator. This simplifies allocator debugging but requires cosmetic modifications to test output. Change-Id: Icaf97d71d71985d52dc0bda448c26b19fe5645e7 Related: OS#2282
2018-01-26Simplify TS alloc: adjust function signaturesMax3-51/+61
* document used parameters and return values * use consistent formatting * constify function parameters where appropriate (adjusting parameter types if necessary) Change-Id: I211b10b4da59c73d509b719346774515c761886a Related: OS#2282
2018-01-26Simplify TS alloc: use defines for constantsMax4-8/+9
* define and use constant for occupied TFI instead copying the same magic number all over the place * use libosmocore's define for bit pretty-printer Change-Id: I2699ceebf0cbec01652a02fa68ccc9e9419d0293 Related: OS#2282
2018-01-26Simplify TS alloc: avoid TS reassignmentMax1-5/+5
Assign reserved_*_slots only when multislot masks are found to avoid reassignment and make code easier to follow. Change-Id: I9b0482f4ea75ead9855cd78e33c8e70d0ccf4484 Related: OS#2282
2018-01-26Simplify TS alloc: fix allocation callsMax4-19/+26
Using the semantic patch below, adjust allocation-related calls to match updated allocator signatures. // spatch --c++ --dir src -I src --sp-file callfix.spatch --in-place --recursive-includes // spatch --c++ --dir tests -I src --sp-file callfix.spatch --in-place --recursive-includes @@ expression A, B, C, D, E; @@ tbf_alloc_ul_tbf(A, B, C, D, E, ( - 1 + true | - 0 + false ) ) @@ expression A, B, C, D, E; @@ tbf_alloc_dl_tbf(A, B, C, D, E, ( - 1 + true | - 0 + false ) ) Change-Id: I43c76cb49093b40eb854d324e898e821270053dc Related: OS#2282
2018-01-26Simplify TS alloc: adjust allocator signaturesMax7-62/+61
* drop unused parameters (from both functions and structs) * document used parameters and return values * tighten types used for parameters * use consistent formatting Tests are adjusted accordingly but test results are left untouched to avoid regressions. Change-Id: I39d81ab64ff790b9c4c2d0312a574485cd83e755 Related: OS#2282