aboutsummaryrefslogtreecommitdiffstats
path: root/src/osmo-bts-octphy
AgeCommit message (Collapse)AuthorFilesLines
2020-02-12l1_if: Fix strange formatting of Meas info loggingPau Espin Pedrol1-9/+5
Some use LOGPC, but were used after a LOGP with a trailing newline. Let's simply add some defines/macros to be able to include it into a normal LOGP easily insted of having a function. Change-Id: Ie082b11c9d6d00ff2206184f03f6e3647c3da18c
2019-10-17Fix common misspellings and typosMartin Hauke4-8/+8
Change-Id: I403b9029f57fec3fdec2c1e2cbeac0f6eab53f24
2019-10-11log: set L1 SAPI log contextOliver Smith1-0/+47
Add a new common L1 SAPI enum, to unify all the BTS specific SAPIs. Translate to this enum, and set the context for uplink messages in each BTS specific implementation. Set the context for downlink messages in the common l1sap code, by converting the osmo_phsap_prim back to the SAPI value (mostly looking at chan_nr). The new functions for doing this conversion, get_common_sapi_by_trx_prim() and get_common_sapi_ph_data(), are based on the existing to_gsmtap() and gsmtap_ph_data() functions. Note that we can't set the uplink SAPI context in the common code, because then we can't set it as early as possible. In this patch, the SAPI context is set for the PHYs where the SAPI is readily available. With additional conversion from the RSL channel, the SAPI context could be set for osmo-bts-trx in a follow up patch. Related: OS#2356 Depends: (libosmocore) I814cb3328d99faca9220adb5a80ffb934f219d7d Change-Id: I6b7bb2e1d61502b61214f854a4ec5cbb7267545b
2019-07-17fix spelling stuff mentioned by lintianThorsten Alteholz1-1/+1
Change-Id: I3d6cb6fc1b182d8520ba60e431ab9b74e71d5e3c
2019-06-05Use #define RSL_CHAN_RACH for RSL Channel Number of RACHVadim Yanitskiy1-1/+1
Change-Id: I7f54fccdae6799e5f4d956a101e11c2d6f998546
2018-11-26bts_model: Allow TS connect to be processed asynchronouslyPau Espin Pedrol1-4/+7
This commit doesn't change internal logic of any model, only the API to be able to return result of connect TS asyncrhonously since some models (like osmo-bts-trx) require some time to process the result. This way PDCH ACT/DEACT (N)ACK can be sent once the result of this long process is known. For instance, nowadays in osmo-bts-trx we PDCH (DE)ACT ACK before getting the result from SETSLOT on the TRX iface. With this new API, bts_model_ts_connect doesn't return any value synchronously. Instead, it is expected to always end up calling cb_ts_connected with the return code from the TS activation process. 0 is considered a successs, while any other value is considered an error. Change-Id: Ie073a4397dd2f1a691968d12b15b8b42f1e1b0cf
2018-11-26cosmetic: fix whitespacePau Espin Pedrol1-1/+1
Change-Id: Iaa4552844db33fe69da5ed7028dbfa0100c33900
2018-11-18bts: Allocate TRX for BTS dynamically, deprecate -tPau Espin Pedrol1-0/+5
No need to pass -t num_trx anymore to specify number of TRX to use. It is calculated based on dynamic allocation from VTY config. Using parameter -t is flagged as deprecated and is transformed into a NOOP por backward compatibility. As a result, TRX now are allocated after the BTS is allocated and initial config (pre-VTY) is applied. A new function bts_trx_init() is added, to set default config on each TRX during allocation and before setting VTY config on it. A new per BTS model function bts_model_trx_init() is added, to allow per model specific default configuration of each TRX. Change-Id: Iab1a754ab12a626759f9f90aa66f87bdce65ac9c
2018-09-17CBCH: Fix CBCH via L1SAP for osmo-bts-{sysmo,octphy,litecell15}Harald Welte1-1/+3
This fixes a bug introduced in "CBCH: Move processing via L1SAP" commit 02d99db08b13589e1417c3448a07747f8805ba88 Author: Harald Welte <laforge@gnumonks.org> Date: Fri Aug 24 23:37:45 2018 +0200 where the full channel number 0xc8 was used instead of the (right-shifted) C-bits only. Change-Id: I0fd8d7762e9cc3319a534f261e8857a1aa2220e0
2018-09-09CBCH: Move processing via L1SAPHarald Welte1-5/+3
for some historical reason, CBCH handling was not using the normal L1SAP boundary. Let's change that and traverse L1SAP just like for e.g. BCCH which is quite similar to CBCH handling. This also has the added benefit of logging CBCH via GSMTAP. Change-Id: Ibdba4c5e808330f8406f441a97fe0e81170fce97 Closes: OS#3534
2018-07-02Remove unneeded direct libortp dependencyPau Espin Pedrol1-3/+2
All code in osmo-bts goes through APIs in libosmotrau (osmo_ortp.h), hence direct dependency is not needed. Fixes OBS warnings: dpkg-shlibdeps: warning: package could avoid a useless dependency if debian/osmo-bts-trx/usr/bin/osmo-bts-trx was not linked against libortp.so.9 (it uses none of the library's symbols) dpkg-shlibdeps: warning: package could avoid a useless dependency if debian/osmo-bts-virtual/usr/bin/osmo-bts-omldummy debian/osmo-bts-virtual/usr/bin/osmo-bts-virtual were not linked against libortp.so.9 (they use none of the library's symbols) Change-Id: I96a9b5f0678331dcf66c007928866a124d8700de
2018-06-28octphy: add support for 16x oversampling modePhilipp Maier3-1/+86
The latest octphy firmware release (octsdr-2g-02.11.00-B1927-alpha), introduces a 16X oversampling option which is not yet supported in osmo-bts. - Add oversampling flag in phy_link.h - Add VTY commands to enable/disable oversampling - Add phy messages to enable/disable oversampling - Add conditional compilation to preserve support for legacy header files and firmware Change-Id: Ib78f92bfe03ff20aa0a257763c90844fb7b87cf0 Related: SYS#4257 Patch-by: Octasic inc.
2018-04-09octphy: integrate octasics latest header releasePhilipp Maier3-13/+104
At the moment osmo-bts does not compile with the latest header file release from OCTSDR-2G-02.10.00-B1837-ALPHA as there are struct members removed and new ones added. The changes do not affect actual functionality in the existing code. The only affected parts are vty functions that query status information about the clock sync manager. - Add detection logic in configure.ac to detect if the affected struct members are present - Add conditional compiling to handle the different combinations of available struct members. Change-Id: Ic38d8dc35522205c4ffab583b4e61b5ef03cdba2 Related: SYS#4139 Patch-by: Octasic inc.
2018-03-23cosmetic: remove unused variablePhilipp Maier1-1/+0
Change-Id: Icbec00ec63950b785dcb71e3b9d70541e70be536
2018-03-23cosmetic: remove dead codePhilipp Maier1-8/+0
Patch by Octasic inc. Change-Id: I40ff0b95349308693bec5f4ae56ec7f2f14202e5
2018-03-17Get rid of 'struct gsm_bts_role_bts'Harald Welte1-5/+1
gsm_bts_role_bts was introduced at a time when we still shared gsm_data_shared.[ch] between BSC and BTS, and where we then subsequently needed a BTS-private structure. Since that sharing was abandoned quite some time ago, we can merge gsm_bts_role_bts into gsm_bts and do away with the bts/btsb dualism in a lot of the code. Change-Id: I4fdd601ea873d9697f89a748cc77bcf7c978fa3e
2018-03-08fix handover: handle_ph_ra_ind(): evaluate ra_ind before msgb_trim()Neels Hofmeyr1-19/+27
Commit c2b4c668f3510b7b0baace749c5a310959010e90 I3b989580cb38082e3fd8fc50a11fedda13991092 introduces evaluation of ra_ind members below the msgb_trim() call that actually invalidates ra_ind. A symptom is that it breaks detection of Handover RACH, wich always ends up with lchan == NULL and interpreting all RACH as chan_nr == 0x88. Fix: do all evaluation of ra_ind before the msgb_trim(), for osmo-bts-sysmo, litecell-15 and octphy. To guard against similar mistakes in the future, set ra_ind = NULL before the msgb_trim() call. Related: OS#3045 Change-Id: I203021ee57f49cb963679ba8bec5943e2abb67fb
2018-03-05l1_tch: remove dead codePhilipp Maier1-64/+0
the file l1_tch.c in the octphy spcific code has its root in the tch.c file of sysmobts. It contains some sysmobts specific ifdefs which enclose dead code. - Remove the sysmobts specif ifdefs and the dead code Change-Id: I33f3e0fd293ca8387fddf5ed20f642621e9680de
2018-03-01octphy: replace #warning with #pragma messagePhilipp Maier2-2/+2
warning causes the compiler to throw an actual warning. Lets change those intentional warnings to messages. Change-Id: I2fc83a1a07db9c569b93f29835bf3a0fd8ef4ef5
2018-02-27L1SAP: Increase resolution of reported burst timingHarald Welte1-3/+3
Before this patch we had: * osmo-bts-trx internally using 1/256th bit/symbol period * osmo-bts-sysmo internally using 1/4 bit/smbol period * PCU interface using 1/4 * L1SAP interface using 1/4 * measurement processing code on top of L1SAP using 1/256 So for sysmo/lc15/octphy we are not loosing resolution, but for osmo-bts-trx we're arbitrarily reducing the resolution via L1SAP only then to compute with higher resolution again. Let's change L1SAP to use 1/256 bits and hence not loose any resolution. This requires a corresponding change in libosmocore for l1sap.h, which is found in Change-Id Ibb58113c2819fe2d6d23ecbcfb8b3fce4055025d Change-Id: If9b0f617845ba6c4aa47969f521734388197c9a7
2018-02-27Move rach_busy counting above L1SAPHarald Welte1-21/+11
In the past, rach_busy counting was performed below L1SAP, while reporting was handled above. This lead to subtle differences between the BTS models, such as osmo-bts-trx missing to increment rach_busy. Let's move the rach_busy counting above L1SAP to share more code. This means we need libosmocore Change-Id I9439810c3a3ad89ea0302753617b850749af887c for the additional required parameters in ph_rach_ind_param, as well as libosmocore Change-id I2b1926a37bde860dcfeb0d613eb55a71271928c5 for osmo-bts-trx to determine the RACH bit error rate. Change-Id: I3b989580cb38082e3fd8fc50a11fedda13991092 Closes: OS#3003
2018-02-26octphy: Remove code duplication for BER / RSSI conversionHarald Welte1-18/+22
Let's introduce some functions to hide the details of BER and RSSI conversion from OCTPHY representation to L1SAP representation. Change-Id: I517669c87a97b2ba164a2812811c8802fe0b92e8
2018-02-22Introduce + use LOG/DEBUGP with frame number prefixing/printingHarald Welte2-31/+24
Let's make sure whenever we do have a frame number, we print it as context in the related log line Change-Id: I751d5ddb3322fce489bc241459738cbcc55c890b
2018-02-22bts: use feature list instead of speech codec tablePhilipp Maier1-9/+0
osmo-bts has a table of pchan/channel mode combinations for every bts. This table models the codec capabilitys of the BTS hardware. However, having the speech codec apabilities modeled inside the BTS feature list would be much more comfortable and since the feature list is communicated back to the BSC we would get the codec capabilities inside the BSC domain as well. - remove the pchan/channel mode tables - set speech codec variants for each BTS type - fix bts_supports_cm so that it queries the feature list Change-Id: I977dc729ba856631245aedf76afd48eac92166f7
2018-02-22octphy: ensure all BTS models set featuresPhilipp Maier1-0/+5
Most of the BTS models do not or do register not all of thier features to the the feature list. - Update/extend the feature lists for all BTS-Models Change-Id: I26765a64153368016921c2ac115b1c4aec9bc5e4
2018-02-19rsl: do not allow MODE MODIFY request with unsupp. codec/ratePhilipp Maier1-0/+9
When the BSC sends a MODE MODIFY request with an unsupported codec, the BTS must respond with a negative acknowledge. Currently the codec parameter is not checked at all, which may lead into malfunction or crash of the BTS. - Introduce a mechanism to check the codec/rate against a table that is set up in the phy specific code. - Add tables with supported codec/rate combinations for octphy, sysmobts, and trx. Change-Id: Id9b222b7ab19ece90591718bc562b3a8c5e02023 Related: SYS#3212
2018-02-05octphy: octpkt.c: Remove unused static functionsPau Espin Pedrol1-32/+0
Change-Id: I97c08b66d41ab5902a11a1e989e278c56cdee102
2018-01-21Move -I inside *INCDIR variableMax1-1/+1
Previouslywe could end-up passing empty '-I' to compilerif corresponding _INCDIR variable was not defined during the ./configure step. This is apparently tolerated by gcc but still seems like a wrong thingto do. Let's fix this by moving -I inside of *_INCDIR. Change-Id: I80915e5756d1bf64d789cfd5341fdd417ca8eed9
2017-12-20octphy: l1_oml: check returncode of trx_by_l1h()Philipp Maier1-0/+35
The function trx_by_l1h() is used to fetch the pointer to a an osmo_bts_trx from a list. The ID that is used to reference the transceiver comes from the incoming message. If the firmware sends odd identifiers (firmware bugs, damaged packets) the transceiver can not be found in the list and a nullpointer is returned, which then leads into a nullpointer derefernece problem. Check the returncode, and depending on the situation either return with -EINVAL or exit osmo-bts immediately. Change-Id: I04ef3b4896e1322c2a6d29ea86a88994c7748bf7
2017-12-03osmo-bts-octphy: Remove bogus warning about BS_AG_BLKS_RESHarald Welte1-1/+0
Contrary to osmo-bts-sysmo, the OCTPHY-2G does not have different L1 SAPI for AGCH and PCH. It uses cOCTVC1_GSM_SAPI_ENUM_PCH_AGCH for both, and we convert that to the cbits=0x12 (Downlink CCCH) on the L1SAP. The code above L1SAP can hence freely decide if it wants to respond with an AGCH or PCH message, based on its knowledge of BS_AG_BLKS_RES, without the OCTPHY specific code having to do anything about it. Hence, there's nothing to do, and the warning can be removed Change-Id: Ic1038b8dc57bdaf05493cd8479355b960275ea41 Related: OS#1575
2017-11-08octphy: override firmware version checkPhilipp Maier2-4/+24
When osmo-bts detects a mismatch between the firmware of the DSP and the header version which it was compile with, a hard exit is performed. In some cases this may hinder debugging/testing things. Implement a commandline option to intentinally override the check. Change-Id: I5774fbb29da832786326afb991014b9bd8b04b59
2017-10-08Remove build dependency on legacy OpenBSCMax1-1/+1
* copy-paste gsm_data_shared.* from OpenBSC master * remove corresponding configure check and option * remove .deb dependency Actual refactoring with removal of unnecessary structures/parts, moving common OpenBSC/OsmoBSC parts into libraries etc. are left for further patches. Current patch will make coexistence with *BSC easier and will simplify our build infrastructure. Change-Id: I9f004fb5c4c1db29d4792dfd281d388c7063da13 Related: OS#1923
2017-08-15octphy: implement support for dynamic timeslotsPhilipp Maier2-13/+126
Implement API functions bts_model_ts_connect() and bts_model_ts_disconnect() in order to support dynamic timeslot allocation. Change-Id: Ia109d4bfade7bc28442127581f4bb0289146ea71
2017-08-09L1SAP: Use RSL_CHAN_OSMO_PDCH across L1SAPHarald Welte1-2/+2
So far, L1SAP code is hiding RSL_CHAN_OSMO_PDCH from the bts specific code below L1SAP. This is some kind of a hack/workaround, making code and debug output / logs more difficult to understand. So let's teach the lower layer how to treat RSL_CHAN_OSMO_PDCH and remove the "hiding" code from the common l1sap.c code. Change-Id: Iaaa833febe45b82166d3901f10cc5466a7591c19
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-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-10Allow passing low link quality buffers to upper layersPau Espin Pedrol2-6/+14
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-04Fix annoying trailing whitespacePau Espin Pedrol1-1/+1
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 Pedrol1-9/+9
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-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-15Set and report BTS featuresMax1-0/+3
Set (possibly incomplete) list of BTS model-specific features and report them in response to attribute request via OML. Change-Id: I5f8a6681c3562ec261441e84dde6e085b516d92f Related: OS#1614
2017-06-09octphy: fix segfaultPhilipp Maier1-5/+6
The priv pointer of the callback function app_info_compl_cb() is set to null by the pointer. It should be set to pinst instead. Besides of that there is a memory violation while accessing the local variable ver_hdr using osmo_strlcpy(). Both is fixed with this commit. Change-Id: I558d78ef29e9a4d8f45f4142611f11289d3ed806
2017-06-09Re-add version to phy_instanceMax1-2/+3
This is resubmission of 9eeb0b1a136fc8c24a86cb4d832c264674c10db0 with errorneous use of talloc_asprintf() removed which should fix OS#2316. Change-Id: I02ae6fffdc808c1ea14185dbb4a720d27a62d4bb Related: OS#1614
2017-06-02Revert "Add version to phy_instance"Neels Hofmeyr1-3/+2
This reverts commit 9eeb0b1a136fc8c24a86cb4d832c264674c10db0. This commit caused osmo-gsm-tester test runs for the sysmoBTS to fail with SIGABRT consistently. See below redmine issues. In osmo-bts-sysmo/l1_if.c, it uses talloc_asprintf to write to the char version[MAX_VERSION_LENGTH]; talloc_asprintf() however is intended to work on string buffers allocated by talloc, and attempts to reallocate version[]. Furthermore, it is not clear why the patch passes a 'data' arg to app_info_sys_compl_cb() that is not used. Hence I will revert this instead of trying to fix. Please resolve issues and re-submit. Related: OS#2316 OS#1614 Change-Id: I2c9fd5e6739c1750365c0241476ce4b1aa2df3d4
2017-05-29Add version to phy_instanceMax1-2/+3
Change-Id: I5b2352b8d15e9b0d8616fcd526b4902d247e4693 Related: OS#1614
2017-05-29octphy: remove old event control codePhilipp Maier1-83/+1
Event handling is done internally in the Octasic BTS. When the TRX is opened, events are enabled automatically and when TRX is closed events are disabled. The change is valid for the recent firmware version and for the last couple of previous releases. Change-Id: I0652627495f6a9bcb0da2431b8beb839bc22062b