aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)AuthorFilesLines
2019-04-06Help output of osmo-pcu looks better now.rafael2k/helpoutputRafael Diniz1-7/+7
Change-Id: If4ecf9be5a0739bb54aedb077eda51ad091b4c3f
2019-03-28TS alloc: expand tests logMax3-295/+297
* restructure code for easier reading * use consistent formatting for output * log essential allocation parameters on failure Change-Id: I4b78951a79ddbc0745b39d091080a4e0e247d3c5 Related: OS#2282
2019-03-27jenkins.sh: Add oc2g build supportDaniel Willmann1-0/+6
Related: OS#3749, SYS#4524 Change-Id: I014e5e59bc5e904a616ddf50ebfb8247f0d428cf
2019-03-27oc2g: Change log type (Litecell15->Oc2g)Daniel Willmann1-1/+1
Change-Id: I95ced5da1c89dae5a16963b10b005747277f320b
2019-03-27oc2g: Remove custom alarmsDaniel Willmann1-7/+0
Don't try to send custom alarms that weren't included in upstream. Change-Id: I51de826aa732a3875d75396b46b7d2821ef7417c
2019-03-27OC-2G: Always use positive TA information provided in PH-RA-INDMinh-Quang Nguyen1-2/+3
From-Commit: 960aa3d1b0b1 From-Remote: https://gitlab.com/nrw_noa/osmo-pcu Change-Id: Ia526f712b95eb7bba99252f2a348d9fb5d2f3838
2019-03-27OC-2G: Fix TA adjustmentMinh-Quang Nguyen1-2/+2
Problem: TA provided from L1 PH-DATA-IND is a relative amount of TA adjustment to actual TA being used for given TBF. The current TA update algorithm in PCU simply applies the relative amount of TA to given TBF but does not take into account of current TA. As a result, the PCU will request wrong TA jump for given TBF if the MS is moving away from BTS more than 2 km. Related issue: http://osmocom.org/issues/2611 Fixes: - The PCU needs increase or decrease current TA of given TBF on receiving of relative amount of TA adjustment provided by PH-DATA-IND from L1. - The PCU needs to set absolute TA of given TBF on receiving absolute TA provided by PH-RA-IND from L1. From-Commit: 139ad3f42193 From-Remote: https://gitlab.com/nrw_noa/osmo-pcu Change-Id: I7665586dd5722bbe04632ee5673d3033bc082324
2019-03-27OC-2G: Fix missing headerMinh-Quang Nguyen1-0/+2
From-Commit: a9eefb54c62a From-Remote: https://gitlab.com/nrw_noa/osmo-pcu Change-Id: Ida0592c9da74588a57d9d2d5be40fcf79edcb596
2019-03-27Initial commit for OC-2G support.Jean-Francois Dionne7-0/+1145
From-Commit: b77fd00608dd From-Remote: https://gitlab.com/nrw_noa/osmo-pcu Change-Id: I7cd89a549c9463e81893ca7dd925299f728e4453
2019-03-27Update IA Rest Octets encodingMax1-17/+13
Write initial bits of 3GPP TS 44.018 §10.5.2.16 IA Rest Octets the same way as write_ia_rest_*() routines do. This should also fix the issue addressed in I75dd5bebc74eea85edf9582607c774d0bba0d2a6 initially by properly encoding L/H bits. Change-Id: I7ed5270bf95c3f6e9e026ff447eef8539f6f0314
2019-03-27TBF-DL: cosmetic update for helper routinesMax1-38/+32
* use enum values where appropriate * reformat to proper code style to improve readability Change-Id: If1d2bc69b0d43fc520e579457007704b7975117e
2019-03-27TBF: update MCS countersMax3-126/+116
* use enum CodingScheme directly instead of converting it to class and back * drop useless mode check * log errorneous update attempt Change-Id: I763136c2f356d63aa3d28d09c57fd5faf5336258
2019-03-27Use Timing Advance Index in UL assignmentsMax3-12/+12
Write TAI (if available) when generating Rest Octets for UL Assignment. This should not affect actual PCU behavior because TAI is not yet supported by upper layers but we have to adjust corresponding tests anyway. That's updated version of reverted commit. Change-Id: I69407793bdb863be5fc42adadf75842d22f27335 Related: OS#3014
2019-03-27Rewrite Packet Uplink IA Rest Octets for SBAMax3-17/+24
Use bitvec_set_*() directly without external write pointer tracking to simplify the code. This is part of IA Rest Octets (3GPP TS 44.018 §10.5.2.16) which is the last part of the message so it should not interfere with the rest of encoding functions. The difference in the expected test output is due to proper handling of TAI which should not be transmitted for SBA according to the Note in Table 10.5.2.16.1 in 3GPP TS 44.018. The change was manually tested against real mobile phone using options 'gprs mode gprs' in osmo-bsc.cfg and 'two-phase-access' in osmo-pcu.cfg to make sure appropriate code path is actually triggered. That's partially based on reverted commit 93d947f5e8a30acc9250c124bf9d5bb6a8863526. Change-Id: I97d53c27c1ca9e032d431b3aa7f915027d63ddc0 Related: OS#3014
2019-03-27Rewrite Packet Uplink IA Rest Octets for MBAMax1-20/+21
Use bitvec_set_*() directly without external write pointer tracking to simplify the code. This is part of IA Rest Octets (3GPP TS 44.018 §10.5.2.16) which is the last part of the message so it should not interfere with the rest of encoding functions. That's partially based on reverted commit 93d947f5e8a30acc9250c124bf9d5bb6a8863526. Change-Id: Ibe294b26ac374b9264a734db9663cacc105a4474 Related: OS#3014
2019-03-27Fix Channel Coding Command for MCSMax4-12/+12
Previously result of ".to_num() - 1" was used without any checks which means that in case of to_num() returning zero we would effectively try to encode (uint8_t)(-1). Let's fix this by using proper mcs_chan_code() function which returns Channel Coding Command for MCS without the need to further correct it and adjust expected tests output accordingly. Change-Id: I868062a81fffe6714a811c032215f25a79259905
2019-03-27MCS: add Channel Coding Command encoderMax7-20/+31
Add function to encode MCS value as proper EDGE or GPRS Channel Coding value according to 3GPP TS 44.060 and corresponding helpers. Use it for everything except IA Rest Octet encoding which is done in a follow-up patches to make sure that we distinguish between encoding-related changes to test output and unrelated changes. Change-Id: I127fb29f5aaf77a7f6c4c565dfeb3b711af9845d
2019-03-27gprs_debug: Use named initializers and explicit array indiciesHarald Welte1-14/+99
This is a much safe way, it allows for modifications of the debug subsystem enum member values without breakage. Also, the syntax introduced here is what we do in all other Osmocom CNI projects. Change-Id: I2be88586ca44b0b8361f96cf3c034c8459244c2c
2019-03-27Forward GPRS SUSPEND REQ from BTS to SGSN using BSSGPHarald Welte2-0/+28
As specified in 3GPP TS 03.60 Section 16.2.1 and 44.018 Section 3.4.15, a Class B MS is sending a "RR GPRS SUSPEND REQ" via a DCCH to the BTS if it wants to suspend GPRS services. As of Change-Id I3c1af662c8f0d3d22da200638480f6ef05c3ed1f, OsmoBTS forwards this via the PCU socket, so we need to pick it up and send it via BSSGP to the SGSN. Change-Id: I7b4beb413a6f974373a404b5a11c44d86ba695d3 Closes: OS#2249
2019-03-27pcu_l1_if: Fix erroneous endian-swapping of the CellIDHarald Welte1-3/+2
In Change-Id I787fed84a7b613158a5618dd5cffafe4e4927234 in February 2018 we accidentially introduced a change that would erroneously swap the endianness of the CellID on the way between PCUIF socket and BSGSP. This meant that all OsmoPCU based BTSs would report the wrong CellId to the SGSN. Closes: OS#3854 Change-Id: I2f6cc930c5dbf8dac386b24b0756df2efe8199e4
2019-03-26MCS: add mcs_is_*() helpersMax12-45/+65
In preparation for Channel Coding Command encoder in follow-up patches let's add necessary helpers. Those are similar to previously used helpers from GprsCodingScheme class but without CamelCase and with less typo chances between Gprs and Egprs cases. Change-Id: I6699cbc8d7ae766fa4d2b3d37e5f9ff1cf158b7e
2019-03-26Include pdch.h in bts.h even if we're not compiling C++Daniel Willmann1-1/+1
bts.h needs pdch.h whether we're compiling C or C++ code so move it out of the #ifdef. make[1]: Entering directory '/home/daniel/scm/osmo/oc2g/osmo-pcu-oc2g/src' CC osmo-bts-oc2g/oc2g_l1_if.o In file included from osmo-bts-oc2g/oc2g_l1_if.c:39: ./bts.h:74:26: error: array type has incomplete element type ‘struct gprs_rlcmac_pdch’ struct gprs_rlcmac_pdch pdch[8]; ^~~~ Change-Id: Ib39e4424f73c677b34f921917440f211e400e14f
2019-03-24MCS: move Mode enum outside of class definitionMax9-51/+50
Move Mode (EDGE/GPRS) definition and related functions outside of GprsCodingScheme class. This allows us to use standard libosmocore value_string functions. Change-Id: I3baaac7f1ca3f5b88917a23c1679d63847455f47
2019-03-19Fix TA index encoderMax1-6/+6
The TAI is described as { 0 | 1 < TIMING_ADVANCE_INDEX : bit (4) > } in 3GPP TS 44.018 §10.5.2.16.1 so it should be encoded with if-else. Change-Id: I54482790e1cf3cb13a635a99a481250576deabaf
2019-03-19TBF-DL: log MCS as stringMax2-28/+28
Log MCS name instead of numeric value. Change-Id: I3e1925a010a6def5fd14da63b73e0b75feddfafc
2019-03-19MCS: use value_string for conversionMax13-54/+84
Change-Id: I212ebb892ab162821633974d5a6c7e315d308370
2019-03-19MCS: move HeaderType enum outside of class definitionMax12-92/+126
Move functions which compute number of blocks or bits depending on header type and corresponding enum outside of GprsCodingScheme class. This will allows us to use standard libosmocore value_sting functions in upcoming patches for IA Rest Octet encoding/decoding. Change-Id: Id0873f85e1f16a72e17e7fbc4ad76b194917067f
2019-03-19Explicitly clean up BTS singletonMax3-3/+22
Add method to explicitly cleanup BTS singleton similar to GprsMsStorage class and use it from main(). The destructor becomes trivial wrapper around cleanup() method. This prevents annoying SIGABRT on exit of OsmoPCU caused by rate_ctr_group_free() being called after talloc_free() which removes the context in which counter group is allocated. Change-Id: I796d56a7de3f3a1f9d59708995c8e3e9b05a2747
2019-03-19MS store: move test helper to unit testMax3-20/+18
It's confusing to have test-specific helper with the same name as tested function directly inside the GprsMsStorage class. Let's convert it into static function and move to the unit test. Change-Id: Ia2a5b90779051af894fe15d957c1d26f0a142f33
2019-03-19tests: use -no-install libtool flag to avoid ./lt-* scriptsOliver Smith1-1/+1
This ensures that the rpath of the generated binaries is set to use only the just-compiled so-files and not any system-wide installed libraries while avoiding the ugly shell script wrapper. Change-Id: I2915f0de87598f9f23efc2b9a8f4a6bdf4966efb
2019-03-14Use unique NSEI/BVCI/NSVCI in TBF testsMax2-14/+5
This works around the issue with colliding rate counter group index highlighted by 86e35e488740889f8ad03d09a78918839b883240 by using different NSEI/BVCI/NSVCI parameters for different TBF tests. Change-Id: Id7d2d1a48308a6b1fb17768aee0e79adbdee56ee Related: OS#3827
2019-03-13Debian: bump copyright yearMax1-2/+2
Change-Id: If61a510fbbcd549dc7bdf6e38643a00d242be875
2019-03-13MCS: remove unused functionMax2-6/+0
Change-Id: I32ab5ac36a0db90f2bea670b7684784b83a90b6b
2019-03-12Make get_retx_mcs() into regular functionMax2-18/+14
Moving from header-defined inline function allows us to hide egprs_mcs_retx_tbl definition and simplify further changes. Change-Id: I95258d1558a3b918ae83f1a69e7c3de2b97e5627
2019-03-12MCS: move Coding Scheme enum outside of class definitionMax12-230/+248
Move generic MCS enum to C header file to simplify further modifications to GprsCodingScheme class in follow-up patches. This also allows us to use standard libosmocore value_sting functions in upcoming patches for IA Rest Octet encoding/decoding. Related: OS#3014 Change-Id: I993b49d9a82b8c7ad677d52d11003794aeabe117
2019-03-11encoding: Fixes TMSI vs MI bit selection in repeated page infoJF Dionne1-1/+15
Change-Id: Iddb00b9133f523f4ba09c8f1fc5694e62dc46fbf
2019-03-07Log (M)CS UL update errorsMax2-2/+30
Previously some of the errors in update_cs_ul() call were silently ignored. Let's log all those as errors with appropriate message. Note: test output needs updating because we do not (yet) set proper meas struct in TBF tests. That's likely wrong but it's better to update tests in a separate commit. Change-Id: I4084fb281dd9dad04a2a3a68cac2a8f7b462548e
2019-03-07Enable LGLOBAL logging for TBF testsMax2-1/+5
This exposes the bug in BSSGP rate counter group allocation in the current tests version which should be fixed in a separate commit. Change-Id: I6317eccfb1408c5c9d07110a8b059f5ceb5d2afc
2019-03-06Tighten lqual table limits checkMax3-9/+13
Previously MAX_GPRS_CS was used for both EDGE and GPRS which means that we waste extra memory in GPRS case. It also leads to misleading name. Let's fix this by introducing separate definitions for GPRS and EDGE cases and use them as appropriate in limit checks. Change-Id: I3ae1ee64ec8e80247b8fe669cc79505b4dadf58f
2019-03-06Use msgb_eq_data_print() in testsMax3-18/+44
This allows to see exact byte which differs with expected output in case of test failure. Change-Id: If1285649b27843d68dfaa6f6dd3b80deee9aa148
2019-03-05EDGE tests: remove no-op checkMax2-8/+0
The headerTypeControl() function always return constant and is only used inside OSMO_ASSERT() which compares it to the very same constant which makes it no-op. Let's remove this clutter. Change-Id: Ie0f81fe05a2b3f432de7d1f3446e8115d7524ff4
2019-03-04MCS: remove dead codeMax1-14/+0
As a preparation for (M)CS fixes in follow-up patches, remove unused operators from GprsCodingScheme class. Change-Id: Ieef3b095a6732300e5efa395b989843112b9ca78
2019-02-26EDGE tests: reduce code duplicationMax1-8/+15
* move duplicated code into helper function * use proper parameter types Change-Id: I8a9528032629e5df629996da5cd8b808efede017
2019-02-26MCS: internalize 'family' parameterMax2-30/+24
There's no need to expose it in header file as it's only used internally for consistency checks. Change-Id: Ic705615cd2a8ca077efef9ea62a2a676f70b4aed
2019-02-26Optionally Use the NS Sub-Network-Service (SNS) on GbHarald Welte3-7/+50
This change add support for the recently-introduced GPRS Gb interface auto-configuration using the NS IP Sub-Network Service (SNS) procedures. It requires a Change-Id I84786c3b43a8ae34ef3b3ba84b33c90042d234ea of libosmocore. Related: OS#3372 Depends: I84786c3b43a8ae34ef3b3ba84b33c90042d234ea (libosmcore) Change-Id: I256b40ac592d3b6e75dd581bf7b9512f69b11e83
2019-02-26Rewrite EGPRS Packet Uplink IA Rest Octets for SBAMax1-26/+58
Use bitvec_set_*() directly without external write pointer tracking to simplify the code. This is part of IA Rest Octets (3GPP TS 44.018 §10.5.2.16) which is the last part of the message so it should not interfere with the rest of encoding functions. That's partially based on reverted commit 529ce885450946d85d1920fb3d1a994c3efe5849. Change-Id: I143b3dd02aa54b9ce206d9e780a5554f6d9fd118 Related: OS#3014
2019-02-26Mark gprs_ns_reconnect() as static (not used outside of C file)Harald Welte2-2/+2
Change-Id: I95138adedacdc2d953284cff57f79ecb33616f0f
2019-02-19Rewrite EGPRS Packet Uplink IA Rest Octets for MBAMax1-15/+11
Use bitvec_set_*() directly without external write pointer tracking to simplify the code. This is part of IA Rest Octets (3GPP TS 44.018 §10.5.2.16) which is the last part of the message so it should not interfere with the rest of encoding functions. That's partially based on reverted commit 529ce885450946d85d1920fb3d1a994c3efe5849. Change-Id: I19cc4226e7e831e7d7f70212b2078f5589a87ff0 Related: OS#3014
2019-02-19Rewrite Packet Downlink AssignmentMax1-33/+112
Use bitvec_set_*() directly without external write pointer tracking to simplify the code. This is part of IA Rest Octets (3GPP TS 44.018 §10.5.2.16) which is the last part of the message so it should not interfere with the rest of encoding functions. That's updated version of commit with the same topic reverted earlier. Change-Id: Ie180733d2584ebb16fb80b84526d0dbc70e3d441 Related: OS#3014
2019-02-19Restructure IA Rest Octets encodersMax1-123/+132
In preparation for upcoming patches with 11 bit RACH and TA support, let's restructure existing encoders to simplify further modifications: * move consistency checks to top-level Imm. Ass. encoder * use consistent formatting * constify pointers where appropriate * split SBA and MBA encoders into separate functions Those changes also make it obvious which parameters are necessary for Rest Octets in each specific case (DL, UL-SBA, UL-MBA, UL-SBA-EGPRS, UL-MBA-EGPRS). There're no functional code changes so there's no need to adjust tests. Change-Id: I0ad1bc786c3a8055ea9666f64ae82c512bd01603 Related: OS#1548