aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)AuthorFilesLines
2017-07-13VIRT-PHY: Fix handling of default values for vty configurationHarald Welte3-14/+6
The defaults must be set during bts_model_phy_link_set_defaults() and can then later be overridden by the vty (from the config file). They should only be written back to the file if they differ from the default settings. Change-Id: I5d7f2c1dc8bc3d11db5c607b664730e4dcd58c96
2017-07-13VIRT-PHY: Fixed timeslot in gsmtap-msg on downlink which was always 0.Sebastian Stumpf1-0/+2
Timeslot is not encoded in the chan_nr accessible in the channel description but was taken from there and so it was always 0. Change-Id: I881a1c61ea47399c9b1385fb220cd587e3593e82
2017-07-13VIRT-PHY: Added example configurations for openbsc and osmobts.Sebastian Stumpf3-0/+215
Change-Id: I368d4a378e20028603b09825eee766abb9195774
2017-07-13VIRT-PHY: Initial check-in of a new virtual BTSHarald Welte16-1/+1890
This patch adds a virtual physical layer designed to simulate the Um air interface between BTS and MS. It does so by encapsulating MAC blocks (Layer 2 PDUs) via GSMTAP and sending them through multicast UDP streams, both in uplink and in downlink. The purpose of this is enable testing without any radio hardware or related licenses. OsmocomBB has recently received as similar patch-set, adding a virty_phy executable that can be run on a PC instead of the classic 'layer1' firmware on a real phone. Using GSMTAP means that one can use unmodified wireshark to decode the messages exchanged on the virtual Um layer. This code was originally started by Harald in January 2016, continued by Sebastian Stumpf in late 2016 and early 2017, and finally completed by Harald in July 2017. Change-Id: I1bf7670975b1e367c1c62983020865a043542622
2017-07-11si2q: do not consider count update as errorMax1-2/+1
The number of SI2quater messages might be updated dynamically by BSC (via 'bts 0 resend-system-information' command for example). Log it but do not return error. Related: OS#2357 Change-Id: I9625be879c672e20543cc40af288828143ffb983
2017-07-10octphy: remap frame number in MEAS_INDPhilipp Maier1-1/+52
The octasic phy stamps the SACCH channel that carries the measurmenet indication with the frame number of the last SACCH that falls within the measurement period. The higher layers expect the frame number to be aligned to the SACCH channel after, which marks also the beginning of the next measurement period. Make the octphy code compatible to the higher layers by remapping the measurement indication frame number. Change-Id: I8ecb27c018bf4ad5151878a6ad34026fd0f801a1
2017-07-10measurement: fix measurment reportPhilipp Maier8-25/+3447
The end of the measurement reporting period is not aligned with the SACCH block where the results are reported. The tables that are used to detect the end of the measurement period are therefore wrong. The frame number of the SACCH block must be used and not the TDMA frame number (modulo 104) of the measurement reporing interval. The tables are oriented to the frame number of the first SACCH block, at the beginning of an interval. However, when a SACCH block is received it will always contain the result of the recently passed measurement reporting period. To match the tables, introduce another lookup table to remap each SACCH block that ends to the matching beginning block number. Change-Id: I1eef894e6f15b4449fc8926bebb118624efc7924
2017-07-10osmo-bts-sysmo: Include frame number in MEAS INDPhilipp Maier1-2/+3
l1_if.c does not generate struct osmo_phsap_prim l1sap properly. The frame number is not included in this struct. This renders the logic that processes the reported measurements non functional, since the logic (see measurement.c) is not able to detect the end of the measurement period. This commit fixes the problem by adding the missing frame number to the l1sap structure. Change-Id: I09241d6cc2ff09e71a3d723d90e4468108a27ae1
2017-07-10jenkins helpers: some minimal documentation/comments + print errorsHarald Welte7-0/+22
We should print meaningful error messages in case a user doesn't have the required local PATH set up, or doesn't specify a required command line argument. Change-Id: I30a2935f93ade69222b1e0c3e212ee10e17c1823
2017-07-10octphy: do not send empty frames to phyPhilipp Maier1-34/+5
ph_data_req() and ph_tch_req() are generating empty (idle) frames when no data (msg == NULL) is available. Since the phy is able to generate idle frames internally, there is no need to waste Host CPU cycles by doing this in software. Remove the empty frame generation and exit the function cleanly. (Patch by Octasic Inc.) Change-Id: Ib857b7dab490ad426c48d6a9e5e6fa10ef5a0838
2017-07-10Use osmo_dump_gsmtime to log fn across different layersPau Espin Pedrol3-13/+17
This commit also fixes a missing end of line in the log output of handle_ph_data_ind Change-Id: I049f58d51333d3590361db5c0105e6899a862af6
2017-07-10Move dump_gsmtime to libosmocore as osmo_dump_gsmtimePau Espin Pedrol1-13/+4
Internal l1sap dump_gsmtime has been moved to libosmocore as osmo_dump_gsmtime. Remove use of internal function and replace with the libosmocore version. Depends on libosmocore Ib5452e2c20f53006c0f6d197fb055728947125d8 Change-Id: Ia2f89965d970ed5bbb8c0d4f591a043e58c4bd66
2017-07-10l1sap.c: fn_ms_adj: Add err logging and always return GSM_RTP_DURATIONPau Espin Pedrol1-5/+6
After latest changes, l2 expects to receive an event for every TCH frame, that is, no TCH frame event should be lost on that layer. We should now then be safe returning always GSM_RTP_DURATION. The code which used to calculate the variable duration is left there to assert that indeed we are not longer having this kind of issues. Change-Id: I9d112c6db142be138e71393e77129e6d069d9973
2017-07-10l1sap.c: Avoid sending RTP frame with empty payloadPau Espin Pedrol1-14/+26
Depends on libosmo-abis Id6099372b6231c0a4b6ea0716f46f5daee7049e1 Change-Id: Ie9053674aa4f43aac20dbd5c865d70317360abbc
2017-07-10Allow passing low link quality buffers to upper layersPau Espin Pedrol9-34/+49
We want to always call l1if_tch_rx and l1sap_up in order to avoid losing triggering events on the upper layer. With this change, the upper layer will increase correctly seq + ts for RTP. It will then send an RTP packet with only the header and no payload, which is not correct but at least we avoid drifting the RTP clock. Upcoming patch in the series solves this issue. This patch assumes that we are not lossing data events from the physical layer and that we receive an event every 20ms, even if the MS is not transmitting due to DTX. Depends on libosmocore If4ae20c22b881e94585dad710f17b9e37f77bf82 Change-Id: If5df8940fab833eb4e3ed851880b66987d356031
2017-07-10Use release helper from libosmocoreMax2-0/+6
Change-Id: Ib8efd2095fcf759276299b516d495219105c1f2b Related: OS#1861
2017-07-05sysmo: Remove non longer valid -p option from helpPau Espin Pedrol1-1/+0
The dsp-trace-flags command line argument was removed in 9684099ae905e6e61cbc326035d0b37c480f6172 Change-Id: I8dbcdc7080ca3f7d7968aeef24422faa75d925fe
2017-07-04sysmo, litecell15: Make sure all TCH events are triggeredPau Espin Pedrol2-0/+10
Change-Id: Ie674c7ec40838af36308c6998f227fa452ace4b4
2017-07-04Fix annoying trailing whitespacePau Espin Pedrol5-17/+16
This whitespace keeps being automatically fixed by editor, polluting my patches. Change-Id: If0ba1321ed326c1498e3f60b611bd962f2a9484a
2017-07-04Use L1P instead of L1C for TCH logging and allocationPau Espin Pedrol3-34/+34
L1C is for L1-Control primitives, while TCH channels are L1 Data channels. Change-Id: I07ea3a7326bfcb62271d58deb0743311f6d97c8b
2017-07-04octphy: complete value strings (octphy_cid_vals)Philipp Maier2-2/+5
The value string table octphy_cid_vals lacks the strings for cOCTVC1_MAIN_MSG_APPLICATION_INFO_CID and cOCTVC1_MAIN_MSG_APPLICATION_INFO_CID (Patch by Octasic Inc.) Change-Id: I9843137b55534a29938d5c2308244a6950de788f
2017-07-04Revert "osmo-bts-sysmo: Include frame number in MEAS IND"Philipp Maier1-7/+2
This reverts commit 3f97e4b1fcdc788345ab7740bd4fb8a3d73f5526. Change-Id: Ib50c813c470bf6ea740fe6667431eaa1a23fdd8d
2017-07-02TRX: permit transmission of all-zero loopback framesHarald Welte1-30/+5
For some reason, osmo-bts-trx attempted to interpret/validate the contents of the downlink TCH block that it was about to transmit. If such checks are made, they should clearly be in the common part above L1SAP, and not in the bts-model specific part. Also, having the checks in place didn't allow us to send an all-zero downlink block, as is required for detection of uplink FER in a loopback testing setup, e.g. with CMU-300. Change-Id: I6388de98e4a7e20843a1be88a58bba8d2c9aa0d5
2017-07-01l1sap: Don't enqueue PTCCH blocks for loopbackHarald Welte1-1/+1
When we're in loopback testing mode for PDTCH, we must make sure to avoid adding PTCCH blocks to the queue. Only PDTCH blocks must be enqueued. For the transmit (downlink) side, we already had the PTCCH check in place. Change-Id: I7ef40d9bdf74a99375bc6568ed9483499664bf6f
2017-07-01TRX: don't free l1h in trx_phy_inst_close()Harald Welte1-1/+0
l1h is allocated in bts_model_phy_instance_set_defaults() and not in trx_phy_inst_open(). Hence, trx_phy_inst_close() should not free() it! Change-Id: I0ac4e57a882e5a31143499c1662d8d8e52320938
2017-07-01TRX: merge/simplify l1_if and trx_if codeHarald Welte4-103/+92
Related code / function structure still dates back to the pre-phy_link days. Let's clean this up to make things less convoluted and reduce the number of non-static symbols needed between code split over two files. Change-Id: I1f30ae1f547a5c01c516d4a05032193294c25f2d
2017-07-01TRX: Rename trx_if_data() -> trx_if_send_burst()Harald Welte3-3/+3
The new name makes it clear what the function actually does: Send burst data via the trx interface. Change-Id: I5031541d4ae4244a62a18acf71139db2874927fa
2017-07-01trx_if: Improve error handlingHarald Welte1-3/+8
There ware some error conditions that the previous code didn't catch and/or report, such as unparseable TRX control strings, non-terminated buffers, ... Change-Id: I354d0c121880553ce1bd59b7394d52b104b7d6da
2017-07-01TRX: trx_if: Improve code description / commentsHarald Welte1-13/+54
Change-Id: I4e19d68782a12e52ba1d3ba2665060275d04866c
2017-06-30litecell15/tch.c: Clean up use of empty bufferPau Espin Pedrol1-3/+4
Make code easier to read and avoid reading first byte of the buffer if size is 0. Change-Id: Ib9ee967c0f42098b3a0569e9d84f23832eb4f2d5
2017-06-30sysmo/tch.c: Clean up use of empty bufferPau Espin Pedrol1-3/+4
Make code easier to read and avoid reading first byte of the buffer if size is 0. Change-Id: I5ecfc4df5a3fcad3d3ad50bf3dd3db65b694481a
2017-06-29osmo-bts-litecell15: Fix missing frame number in MEAS INDPhilipp Maier1-2/+3
The layer 1 interface (l1_if.c) for osmo-bts-litecell15 does not include the frame number into the measurement indications it forwards to higher layers. The frame number is required to properly detect the end of a measurement period. change process_meas_res() to properly include the frame number into the l1sap primitive (struct osmo_phsap_prim *l1sap) Change-Id: Iee9c8f88b05cd5dba9920bb08e079a643e713237
2017-06-29osmo-bts-trx: fix missing frame number in MEAS INDPhilipp Maier2-3/+4
The layer 1 interface (l1_if.c) for osmo-bts-trx does not include the frame number into the measurement indications it forwards to higher layers. The frame number is required to properly detect the end of a measurement period. Change-Id: Ife3c791ff50e8a866a97b9783ac7ef3ef2402a70
2017-06-29Revert "sysmobts: normalize frame number in measurement indication"Philipp Maier1-10/+2
This reverts commit 88b2cc30a6a7253c2c4c76178e5727fad48556ca. Change-Id: I30f37a9feef24a45e254377502615d717dba9765
2017-06-28Add loopback support for PDTCHHarald Welte1-27/+89
This add support for BTS-side lookback of PDTCH channels. If lchan-loopback is enabled, We take the uplink frames as received in PH-DATA.ind and put them into the dl_tch_queue for that lchan. When we receive PH-RTS.ind, we dequeue frames from that queue and transmit them in downlink. If no frame is found in queue, we transmit an empty (all-zero) frame of 23 bytes (CS-1). Change-Id: Idd07a3f4a88c38398d3e844333c0104e2de23864
2017-06-28TRX: Use timerfd and CLOCK_MONOTONIC for GSM frame timerHarald Welte2-87/+246
using gettimeofday() is not suitable for the GSM frame timer, as it relies on the normal 'wall clock' system time, which may be adjusted by ntp, gps or other means at runtime. Switching to a different clock source means we cannot use osmo_timer_list anymore, but timerfd integrates just fine with our libosmocore select() loop handling. Change-Id: I51b19adde14ebb7ef3bb863d45e06243c323e22e Closes: #2325
2017-06-28octphy: remove log outputPhilipp Maier1-2/+0
When handle_ph_data_ind() runs BER and RSSI is logged. Remove this log output by removing the call to dump_meas_res (Patch by Octasic Inc.) Change-Id: I5e755465daa3daec2e2b4f61bc8d779c49196e9a
2017-06-28octphy: initalize nmsg only when neededPhilipp Maier1-5/+6
nmsg is initalized every time the function runs, even when it is not needed. Move the initalization into the if (msg) body so that nmsg is only initalized when we really need it. (Patch by Octasic Inc.) Change-Id: If51dc50a9f4bdb4aba62c0ae5fbfac552806f0c0
2017-06-28octphy: initalize l1msg and only when neededPhilipp Maier1-1/+9
l1msg is initalized when the variable is declared. This means the allocation always runs right on the beginning. Even when the buffer is not needed at all. do a prober l1msg initalization only when needed and check the return code. (Patch by Octasic Inc.) Change-Id: Ia71d49b9cc109af53d997a687a7fb1b5ed062d1c
2017-06-28octphy: improve log outputPhilipp Maier1-1/+1
Printing the RX payload size is strictly informative, so the loglevel LOGL_ERROR is wrong. This commit changes it to LOGL_DEBUG (Patch by Octasic Inc.) Change-Id: I712cdd79cbba93f457705d38871bd8d4b7f4e897
2017-06-28RSL: receive and send multiple SI2q messagesMax2-14/+41
* change BCCH Info handler to explicitly support multiple SI2quater messages sent from BSC * change SI scheduler to send SI2q in round-robin way That's resubmission of 340cff51f49f6e798cb5fb6d1b9febdd09902906 and 186c6bac0758b6f94aa101e151664b0dea5d8975 with memory initialization order change to fix the issue detected by osmo-gsm-tester - see OS#2338. Change-Id: Ib595733cde108387bc7ee76b1b11ada6a235f13c Related: OS#1660, OS#2338
2017-06-26measurement: improve log outputPhilipp Maier1-4/+7
The code that receives the uplink measurement data from L1 does not print the number of already received uplink measurements. Since this is a valuable information when debugging the log output will now print this information as well. (Patch by Octasic Inc.) Change-Id: I79926f25de088571fcc2c14388c72fc968c2d382
2017-06-26Add missing include for abis.h header fileMax1-0/+1
This fixes compilation warning: implicit declaration of function ‘abis_bts_rsl_sendmsg’ Change-Id: I956561b2f953c7d380a26442fad84bc8262ea129
2017-06-24LC15: properly handle BS-AG-BLKS-RES as received from BSCMinh-Quang Nguyen1-1/+1
Closes: OS#2014 Change-Id: Icf437e621d1991f6185e31a0953773309e2bf5ac
2017-06-24l1sap: if lchan is in loopback, don't accept incoming RTPHarald Welte1-0/+5
When the lchan is in loopback mode, we loop back all uplink blocks into downlink blocks. We do not processs any RTP frames for that lchan anymore. Rather, we discard those RTP frames to avoid mixing looped-back samples with those received from remote. Change-Id: I29ef4963e9c491c94c413cbc10436a2388c04d9b
2017-06-24osmo-bts-sysmo/l1_if.c: PH-DATA.ind belongs to L1P, not L1CHarald Welte1-1/+1
L1C is control, while L1P is data primitive. Change-Id: I5a0ef08df96a67cd25b11eb23c60934011b01c29
2017-06-24l1sap.c: Factor out function to limit message queueHarald Welte1-21/+18
Change-Id: I0fe0fc6b17cefdbf6b2d9f30ed08306998d30687
2017-06-24measurement: Remove dead codeHarald Welte2-39/+0
We used to have trx_meas_check_compute() and call that from the bts-specific code in order to iterate over all timeslots and all lchans in the timeslots if we have to send measurement reports. This was executed once per frame, and created unequal CPU load over time, which in turn might increase different per-ts jitter. Since 2f028c4e2c29f63df9926435466aa35377947767 in April 2017 we have lchan_meas_check_compute(), which performs this on a per-lchan basis, and hence CPU load is distributed over all active timeslots. Change-Id: I6308cefe4a51e55719ea4ed4d613d3782b805c08
2017-06-24Revert "RSL: receive and send multiple SI2q messages"Neels Hofmeyr2-49/+28
This reverts commit 340cff51f49f6e798cb5fb6d1b9febdd09902906. osmo-gsm-tester detected a regression due to this commit, when running osmo-bts-trx. The modems timed out when waiting for them to register with the osmo-bts-trx network. osmo-bts-sysmo is apparently not affected. No further details on the failure cause are known yet. The failure is shown for example by http://jenkins.osmocom.org/jenkins/view/osmo-gsm-tester/job/osmo-gsm-tester_run/868/ Change-Id: I15bca30ddc09a7a3044096626016f6130d07636c
2017-06-24Revert "RSL: check for abnormal SI2q values"Neels Hofmeyr1-6/+0
This reverts commit 186c6bac0758b6f94aa101e151664b0dea5d8975. osmo-gsm-tester detected a regression due to commit 340cff51f49f6e798cb5fb6d1b9febdd09902906, which above commit apparently depends on. Revert this along to avoid conflicts. Change-Id: I456e9add788393ca781213cef31b5bc3d48fd531