AgeCommit message (Collapse)AuthorFilesLines
2017-06-28Remove warning regarding ASANuser/max/asantestMax1-2/+0
Change-Id: I8b306dc9bd5392f669b0effcac6413cf08edef13
2017-06-26Remove comment warningMax1-3/+2
It's unclear why the warning was placed next to commented log statement to begin with, so let's just follow that warning's advice and drop it. Change-Id: I3ef7a45d015a28fdadf75f97294bc5d4f825b8ae
2017-06-22lc15: use environment for firmware versionMax1-1/+1
This allows to specify firmware version to use by jenkins builder via environment variable. If environment variable does not exist than default master branch is used. Change-Id: If8b249aa00270e60a0449f089a16823976e54d54 Related: SYS#3683
2017-06-22tests: remove unused definitionMax1-16/+0
Fix compilation warning. Change-Id: I1c95c6ec8bee68773643f9646b0319a83fbc6cfa
2017-06-19lc15: use generic L1 headers helperMax1-7/+9
* use generic L1 headers helper for both sysmocom-dsp and lc15bts-phy options * use sh instead of bash Related: SYS#3683 Change-Id: I3dc621731f47650cbc15a5f17b9e899e9ed2770f
2017-06-11use tlvp_val16be() rather than manual pointer-cast + ntohs()Harald Welte1-4/+2
Change-Id: Ib77cb703bb1710da396db3a939700515b5c20235
2017-06-11lc15: further fixes regarding --with-litecell15Harald Welte2-5/+5
The fix in 0fb294a8dd45a86b8f9eb93211b69b6dbf0a6853 was only partially valid, as it unconditionally used $includedir, without any prefix. This polluted the include path with host include files in cross-compiling builds. Let's take a different approach and simply define LITECELL15_CFLAGS (similar to what pkgconfig does), which makes the "-I" go away if no --with-litecell15 has been specified. Change-Id: I63393decfe42a24dab56c7654f716c1580416ab2
2017-06-11lc15: fix configure.ac variable substitution causing compile errorHarald Welte1-1/+1
When "--enable-lc15bts-phy" is passed to './configure' without specifying an explicit header file path using "--with-litecell15=", we ended up generating an empty string as LITECELL15_INCDIR and rendered something like "-DENABLE_DIRECT_PHY -I -I../../git/src/osmo-bts-litecell15" as part of the compiler invocation, where the -I with no argument will hide the second -I, as the second one is supposed to be the optarg for the first include. This in turn made the "#include <lc15_l1_if.h>" fail, when using separate source and build directories. This patch fixes the configur script to use $includedir, rather than the non-existant $incdir as default for LITECELL15_INCDIR Change-Id: I483e62f8331e7867a92f8055c4d450fdd5288cb6
2017-05-26Cleanup FN schedulingMax8-53/+48
* replace magic number with defined constant * move copy-pasted code to inline functions * remove unused code Change-Id: I6fee0714453d0c3c3f3f875f88daea2d9c477331 Related: OS#1524
2017-05-25Fix format string error (string needs %s)Harald Welte1-1/+2
In a49475b5a822773ce10e28bf5a02e91de78bd063 we introduce the use of bssgp_pdu_str() and change from printing the numeric code to the stringified version of the message code. However, the format string was not updated accordingly :/ Change-Id: I7173b692fb1f222aab44cd4f44a482038d0f51dc Fixes: Coverity CID 169684
2017-05-24Fix typo in loggingMax1-1/+1
DL-TBD was errorneously printed as UL-TBF. Change-Id: I94a224c0339a062e4c8d5aa6c4c858f3f0298a0d
2017-05-23Print human-readable BSSGP PDU typeMax1-8/+9
Change-Id: Ief4b5ce4e4020edaf771eaa24f4382ec368dd18c
2017-05-15remove pcu own bitvector implementationAlexander Couzens18-645/+475
The osmocore bitvec is exact the same, but use a pointer instead of a reference. Change-Id: Id8f797631d89aa12b6e48efb2dc153a3e2f059f7
2017-05-15fix PACCH paging: don't return early in case of NULL TBFNeels Hofmeyr1-7/+8
Commit b78a4a6dfef217c538d45949a6ae725e22a36b05 tried to fix a NULL dereference error, but apparently was overly eager to return, because it looked like all code paths would dereference the tbf. In fact the code path further above, for msg != NULL, has "always" dereferenced the tbf, but the lower code path, the one effecting the paging, has only started to dereference tbf since shortly before the overly eager fix: in da7250ad2c1cd5ddc7d3c6e10435a00b357ef8f7, to "update the dl ctrl msg counter for ms". It seems that this tbf dereference in the paging path is bogus and the cause for the segfault that made me write the early exit fix. Fix that fix: Do not exit early if tbf == NULL, stay in there to be able to reach the paging path below. In case of a message to be sent, assume that tbf is present, and verify: print an error message and abort if there is a msg but no tbf, so that we will see the error if I'm wrong there. If a tbf is missing, free the msg. In case of no message, go on to send pending pagings, but do not attempt to count ctrl messages for a tbf -- IIUC there will never be a tbf if we're paging. This should avoid segfaults while keeping PACCH paging intact. Tweak a comment for and add a blank line above the paging section. Related: OS#2176 CID#158969 Change-Id: Ib79f4a945e211a13ac7d1e511cc37b0940ac6202
2017-05-01tbf.cpp: use new tlli instead of old tlliAlexander Couzens2-3/+3
The old tlli might be 0x00000000. Change-Id: I2fd6fec022506e203d05e91c36ccd9e020ff816c
2017-03-27bitcomp test: use expected rc instead of 'verify' flagNeels Hofmeyr2-41/+51
The 'verify' flag is useless, we always want to verify everything. Replace 'verify' with 'expect_rc', expecting a specific decoding result per test set. When an error code was returned, cut short the loop and skip printing expected vs. decoded bits. This uncovers the fact that the first test marked as "invalid inputs" does not seem to be invalid after all, or at least does not produce an error to be returned. For now, only uncover this fact, the fix shall be submitted later. Change-Id: Icf815a8f1acb0e275463408450171df046879847
2017-03-27bitcomp test: fix: also verify bits after decoded dataNeels Hofmeyr2-16/+5
Before this, the expected data had seemingly random bits set after the end of the expected decoding result. Make the test expect these extra bits as zero, matching with the buffer initialization to zero. In result_matches(), compare the full length of bytes instead of masking the bits after the end of the decoded data (which caused us to not catch the wrong expectation until now). This fixes the underlying issues found in http://lists.osmocom.org/pipermail/osmocom-net-gprs/2017-March/000876.html [osmo-pcu 0.2.896-0a8f] testsuite: 4 failed from: Arnaud ZANETTI on: Fri Mar 24 09:53:53 UTC 2017 Change-Id: I2501208e2f8b4f709efbcadbd1057c086472c9e6
2017-03-27bitcomp test: fix: only one hexdump per log; use printfNeels Hofmeyr2-19/+17
The test wants to write multiline results, so it should use printf instead of the logging system. Split logs to only one hexdump per printf(). One cannot use osmo_hexdump twice in one printf(); before this, one of the two hexdumps won, both dumps would show as the same. Very bad for a regression test! This uncovers a discrepancy between expected and produced results, proving that the expected stderr output was not capable of uncovering test failures. The test's check_result() function *has* always verified the decoded data, but only up to the last decoded bit. Our expected data contains seemingly random bits after the end of the decoded bits, but check_result() never compares those, hence we don't catch that error. The extra bits should definitely be zero, because the destination buffer is pre-initialized to zero -- fixed in a subsequent patch. This should cosmetically fix the build failure found in: http://lists.osmocom.org/pipermail/osmocom-net-gprs/2017-March/000876.html [osmo-pcu 0.2.896-0a8f] testsuite: 4 failed from: Arnaud ZANETTI on: Fri Mar 24 09:53:53 UTC 2017 The real fix will follow. Change-Id: I24fc32eb55baaf22f9c6fdda917bfb8395d02b1c
2017-03-27cosmetic: BitcompTest: make readableNeels Hofmeyr1-37/+45
In order to understand what the bitcomp test is logging, cosmetically rearrange the code: - memset bits_data before assigning to destination bitvec. - use macro CEIL_DIV_8 to clarify what (x+7)/8 does. - rename check_result() to result_matches() and return a bool, also constify result_matches() args and pass a bitvec reference instead of copying the bitvec struct. - rearrange logging lines to make readable what is going on there. - drop unused 'init_flag' There are obviously errors like double hexdumps per log line, multiple newlines in a LOGP statement and so forth: these shall be fixed by subsequent patches. Change-Id: Id0da9d9b67f4713d3a67e3532ed44b8cb1bd1d08
2017-03-17Support sending OML Alerts via BTSMax5-10/+71
* extend BTS <-> PCU protocol with TXT messages * use it to implement OML alerts support * use it to implement version message * add function to transmit both of them them * send alerts for internal encoding problems as an example * send version when BTS socket is connected Note: requires corresponding change If57459c0610f2c7b36d599b13087c8deef8bdd9e in libosmocore. Related: OS#1614, 1615 Change-Id: If4ea5b3f7409df2fb030681ad468df6b711790a7
2017-03-17Update README file with general project info and use MarkdownHarald Welte3-20/+85
Also, it seems the readme was so far not included in any tarballs (make dist). Let's change that. Change-Id: I1967fbbdeadb967c0c0dce2c112ac692c539da1d
2017-03-16jenkins: add value_string termination checkNeels Hofmeyr1-0/+2
Change-Id: I27217c9162efd800eebcb403eab770f4528d21ac Depends: libosmocore change-id I2bc93ab4781487e7685cfb63091a489cd126b1a8
2017-03-13tests: include headers from include/Max1-1/+1
In addition to .h files from src/ add include/ as well: some headers are now public and reside in separate directory. Change-Id: I09c02a171fb3b2f2791ce938725db7d4ff397e95
2017-03-13bts.cpp: Fix overloading ambiguityMax2-6/+11
Fix error introduced in 1275a3f91a744e011b0dba82b09124d249c7abb5 by using signed 32 bit integer which is enough for Frame Number in GSM. Also, mark parameter constraints more explicitly: - add assert for expected FN values - don't perform computation for non-relative FN The error was: bts.cpp: In member function ‘uint32_t BTS::rfn_to_fn(uint32_t)’: bts.cpp:554:25: error: call of overloaded ‘abs(uint32_t)’ is ambiguous if (abs(rfn - m_cur_rfn) > RFN_THRESHOLD) { ^ In file included from /usr/include/c++/6/cstdlib:75:0, from /usr/include/c++/6/stdlib.h:36, from /usr/include/osmocom/core/linuxrbtree.h:97, from /usr/include/osmocom/core/timer.h:35, from ./bts.h:29, from bts.cpp:21: /usr/include/stdlib.h:735:12: note: candidate: int abs(int) extern int abs (int __x) __THROW __attribute__ ((__const__)) __wur; ^~~ In file included from /usr/include/c++/6/stdlib.h:36:0, from /usr/include/osmocom/core/linuxrbtree.h:97, from /usr/include/osmocom/core/timer.h:35, from ./bts.h:29, from bts.cpp:21: /usr/include/c++/6/cstdlib:185:3: note: candidate: __int128 std::abs(__int128) abs(__GLIBCXX_TYPE_INT_N_0 __x) { return __x >= 0 ? __x : -__x; } ^~~ /usr/include/c++/6/cstdlib:180:3: note: candidate: long long int std::abs(long long int) abs(long long __x) { return __builtin_llabs (__x); } ^~~ /usr/include/c++/6/cstdlib:172:3: note: candidate: long int std::abs(long int) abs(long __i) { return __builtin_labs(__i); } Change-Id: Ib6d895a97aa35414f245ea4406c6e78f1b4fb5b8
2017-03-09Add pkg-config fileMax5-0/+16
We're installing header file pcuif_proto.h so it's better to use pkg-config for proper version tracking similar to the way it's done for OpenBSC. Change-Id: I0520045e5655794df152b98b9755d7cbbd334049
2017-03-05BTS: Convert relative frame numbers to absolute frame numbersPhilipp Maier6-16/+301
The implementation of the method rcv_rach() in class BTS, restores the absolute frame number of the incoming RACH-Request by using the relative frame number (RFn = Fn mod 42432) from the rach request and the already known internal absolute frame number m_cur_fn, which is continusly updated by the CCU interface. In some rare cases, a RACH request might be received by the BTS, a very short time before the frame number wraps in its 42432. Depending on the PCU location, RACH request might be received by the BSC, which forwards it to the PCU. It is then likely that, while the RACH request is being forwarded to the PCU, the PCU internal absolute frame number wraps before the RACH can be processed. The relative frame number from the rach request would then be interpreted as if it were received after the wrapping of the internal frame number modulos. This commit adds logic to detect and resolve this race condition. Also a unit test is added to check some cornercases. Change-Id: I74f00c11e5739d49f370ce6c357149e81d9aa759
2017-02-23logging fixup: shorter names for LOGGING_FILTER_* and LOGGING_CTX_*Neels Hofmeyr2-7/+7
In libosmocore, my patch was merged to master a bit too soon. To accomodate the request for naming that matches the general "LOG" prefix instead of "LOGGING", a fixup was committed to libosmocore. Adjust for that. Original patch: change-id I5c343630020f4b108099696fd96c2111614c8067 The fixup: change-id I424fe3f12ea620338902b2bb8230544bde3f1a93 Change-Id: I4db4a668f2be07f3d55f848d38d1b490d8a7a685
2017-02-20gprs_debug.h: remove unused cruft / cosmetic tweaksNeels Hofmeyr1-18/+3
Change-Id: Ied1ffc320332a605b140d23910eb0a13ef9a7a75
2017-02-17logging: use central filter and ctx consts from libosmocoreNeels Hofmeyr3-28/+7
Change-Id: I7b41a5a26527864177c63403ad171d2987f0ff6a Depends: libosmocore change-id I5c343630020f4b108099696fd96c2111614c8067
2017-02-14dl tbf: initialize punct values and verifyNeels Hofmeyr2-4/+38
Solves a sanitizer issue where punct2 is unset when passed to gprs_rlc_mcs_cps() and thus takes a value not defined in the enum. Change-Id: I004cbbab15e6ffa2749f4b7f1df651517c2ae693
2017-02-14dl tbf: calculate CPS only for EGPRSNeels Hofmeyr1-2/+5
Patch-by: Aravind Sirsikar <Arvind.Sirsikar@radisys.com> Change-Id: I81b8e1d10bfe9efba3a9f04bced66f87d93285dd
2017-02-08main, tests: use msgb_talloc_ctx_init() (new)Neels Hofmeyr6-6/+6
msgb_set_talloc_ctx() is deprecated since libosmocore commit f45334be29016a36594aacc07c90e262e4994525 / change-id I747fbbf977c4d2c868c8dead64cfc5fd86eb8d4c Change-Id: I8d40abec428b739460ed545c9983d1b63021bd08
2017-02-08tests: edge, tbf: assert return valuesNeels Hofmeyr2-1/+16
Numerous calls assign a return value without asserting its value. Add assertions and thus also eliminate compiler warnings about unused values. Change-Id: I7f14198cfd747dae68b8aaa3b8d6ff7fc49ab824
2017-02-08Fix dozens of compiler warnings across the boardNeels Hofmeyr7-81/+39
Change-Id: I166109dc05d3323b92cd2a42f0c7e6009950e15d
2017-02-01cosmetic: Fix log outputPhilipp Maier2-62/+32
In BTS::rcv_rach() the log output is messed up because of a stray "\n". This commit removes that. Change-Id: I40d01c71982ad83589f070cf0047a4ae04695411
2017-01-26BTS: accept also relative frame numbers with rach requstPhilipp2-1/+19
The rach request contains a relative frame number (Fn % 42432), while BTS::rcv_rach() accepts the full frame number only. Since the BTS is always aware of the full frame number this is not a problem. But for BSC co-located PCU schemes it is a problem since the rach request only contains the relative frame number as mentioned above. The pcu continusly receives frame number updates with the GSM time indication message. It is simple to re-calculate the full frame number from that information. This patch makes BTS::rcv_rach() compatible with relative frame numbers, while not breaking the compatibility for full frame numbers Change-Id: Iaa182d8d29c6a0f5fa06064c2eb48b21b1ba2775
2017-01-24Handle packet access reject during packet resource requestaravind sirsikar7-4/+398
When Packet resource request is received, PCU will generate the packet access reject if no resources are present. The encoding is done based on section and of 44.060 version 7.27.0 Release 7. This patch also includes the test case to validate the generated packet access reject message. This patch is integration tested on Osmo-trx setup with Ettus B210 board and LG F70 MS with some simulation code changes in Osmo-pcu. Change-Id: I05ff25124b58905586caa0c0c37023d69724f121
2017-01-24Add test case for testing PUANsivasankari4-0/+2390
This test case is for testing generation of EGPRS PUAN. Corresponding log files .ok and .err are modified. Change-Id: I18e6d4a9e90fd6453fe14187beab27dfeae8dbe9
2017-01-23Add compression support in EGPRS PUANsivasankari9-27/+537
This adds compression of bitmap in PUAN. The compressed bitmap is used only if the number of bits in the bitmap does not fit in the message and there is a gain after compression. The algorithm is part of libosmocore and so there is dependency on the libosmocore for compilation. The algorithm is tested on integration setup by forcing compression. Change-Id: Id2eec4b5eb6da0ebd24054b541b09b700b9b40ba
2017-01-16Log additional info for radio errorsMax2-3/+14
Change-Id: I936a07ce87f05d9c3dc351dc3bdc4f00d78265e0 Related: OS#1553
2017-01-06Log socket path on connectionMax1-1/+2
Change-Id: I81c5c1068a8b59ee30399dac90b0f7e730fc19f4
2017-01-06fix segfault: check for NULL tbf in sched_select_ctrl_msg()Neels Hofmeyr1-0/+3
Apparently fixes a corrupted stack looking like this on sysmobts: (gdb) run Starting program: /usr/bin/osmo-pcu -c /etc/osmocom/osmo-pcu.cfg [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/libthread_db.so.1". <000b> telnet_interface.c:95 telnet at 4240 <0001> osmobts_sock.cpp:227 Opening OsmoPCU L1 interface to OsmoBTS <0001> osmobts_sock.cpp:285 osmo-bts PCU socket has been connected <0001> pcu_l1_if.cpp:368 BTS available <0008> gprs_ns.c:233 NSVCI=65534 Creating NS-VC <0008> gprs_ns.c:233 NSVCI=100 Creating NS-VC <0008> gprs_ns.c:1568 NSEI=100 RESET procedure based on API request <0008> gprs_ns.c:393 NSEI=100 Tx NS RESET (NSVCI=100, cause=O&M intervention) <0001> pcu_l1_if.cpp:83 Sending activate request: trx=0 ts=2 <0001> pcu_l1_if.cpp:495 PDCH: trx=0 ts=2 <0001> pcu_l1_if.cpp:83 Sending activate request: trx=0 ts=3 <0001> pcu_l1_if.cpp:495 PDCH: trx=0 ts=3 <0001> pcu_l1_if.cpp:83 Sending activate request: trx=0 ts=4 <0001> pcu_l1_if.cpp:495 PDCH: trx=0 ts=4 <0001> pcu_l1_if.cpp:83 Sending activate request: trx=0 ts=5 <0001> pcu_l1_if.cpp:495 PDCH: trx=0 ts=5 <0001> pcu_l1_if.cpp:83 Sending activate request: trx=0 ts=6 <0001> pcu_l1_if.cpp:495 PDCH: trx=0 ts=6 <0001> pcu_l1_if.cpp:83 Sending activate request: trx=0 ts=7 <0001> pcu_l1_if.cpp:495 PDCH: trx=0 ts=7 <0001> pcu_l1_if.cpp:319 RACH request received: sapi=1 qta=0, ra=120, fn=103198 <0009> tbf_ul.cpp:373 LLC [PCU -> SGSN] TBF(TFI=0 TLLI=0x7f2dd569 DIR=UL STATE=FLOW) len=6 <0008> gprs_ns.c:684 All NS-VCs for NSEI 100 are either dead or blocked! Program received signal SIGSEGV, Segmentation fault. gprs_rlcmac_rcv_rts_block (bts=0x60a08, trx=trx@entry=0 '\000', ts=ts@entry=4 '\004', fn=7, fn@entry=103272, block_nr=block_nr@entry=0 '\000') at gprs_rlcmac_sched.cpp:349 349 gprs_rlcmac_sched.cpp: No such file or directory. (gdb) bt #0 gprs_rlcmac_rcv_rts_block (bts=0x60a08, trx=trx@entry=0 '\000', ts=ts@entry=4 '\004', fn=7, fn@entry=103272, block_nr=block_nr@entry=0 '\000') at gprs_rlcmac_sched.cpp:349 #1 0x0001151c in pcu_rx_rts_req_pdtch (trx=<optimized out>, ts=<optimized out>, fn=103272, block_nr=<optimized out>) at pcu_l1_if.cpp:279 #2 0x0000bfcc in handle_ph_readytosend_ind (fl1h=0xafa40, rts_ind=0xb03f8) at osmo-bts-sysmo/sysmo_l1_if.c:142 #3 l1if_handle_l1prim (wq=<optimized out>, fl1h=0xafa40, msg=0xb0330) at osmo-bts-sysmo/sysmo_l1_if.c:259 #4 0x4fcd6330 in osmo_fd_disp_fds (_eset=0xbefffb68, _wset=0xbefffae8, _rset=0xbefffa68) at select.c:149 #5 osmo_select_main (polling=<optimized out>) at select.c:189 #6 0x0000b2a0 in main (argc=<optimized out>, argv=0x66628 <_ZStL8__ioinit>) at pcu_main.cpp:295 Fixes: coverity CID#158969 Related: https://lists.osmocom.org/pipermail/osmocom-net-gprs/2016-December/000785.html Change-Id: I357492e558e98cfdbf5bb3438b5013029195b02b
2017-01-06Refactoring write_packet_ack_nack_desc_egprs to prepare for CRBB supportPravin Kumarvel2-35/+38
Change-Id: Ie5c25b6ee30f2f1b613e923c234b03a6ffe12ae2
2017-01-06Array indexing for SPB counters in bts statistics.sivasankari1-3/+3
Array indexing mismatch is corrected for SPB counters. (bts_ctr_description with the bts counter declaration). Change-Id: I9b17ca0f838a37d9405cebf2319e722a302f5ed9
2017-01-05Improve loggingMax3-9/+35
Add value_string describing UL and DL TBF states and use it for logging errors while freeing TBFs. Change-Id: I292ec81ab602c65ef86e6e3e85740182b63474b6
2016-12-22Adds rate_ctr_init in the startup of osmo-pcusivasankari1-0/+1
Issue:Though the rate_ctr framework is used in osmo-pcu for bts statistics, the interval counters are always 0. Fix:rate_ctr_init is added in the startup which arms the timer and hence the rate ctr intervals is displayed with proper values. Change-Id: Ib0f33d2de9406aa7436aa9aeb6a8dabdff96383b
2016-12-22Add counter at BTS level And statistics at TBF/MS level.sivasankari10-2/+134
Adds spb counters at BTS level(show bts statistics). Adds RLC/MAC downlink control msg at ms level(show ms imsi <imsi_val>). Adds the number of coding schemes counter for UL at TBF level. Change-Id: Icbe4ba95e34bea89ee36f532d099db68204b7c38
2016-12-16Fix uninitialized members in pcu_l1_meas()Harald Welte1-1/+8
Change-Id: I76a03c9f54be474ab9ece908ef782807d555c6ac Fixes: Coverity CID 57952
2016-12-16struct pcu_l1_meas_ts: initialize ms_i_levelHarald Welte1-1/+2
Change-Id: I93de7589d746b91ba26b1b36bf2690f125277cd0 Fixes: Coverity CID 57953
2016-12-09Add statistics in the ms and tbf level.sivasankari5-5/+128
Adds DL throughput in show ms imsi <imsi_value>. Adds the number of coding schemes counter and rlc nacked counter at TBf level. Change-Id: Ia95b0404989b00db0e7ba416bc40d09ef41fde1c