aboutsummaryrefslogtreecommitdiffstats
path: root/src
AgeCommit message (Collapse)AuthorFilesLines
2019-07-11Encoding: write_packet_ack_nack_desc_egprs: don't use a reference for rest_bitsAlexander Couzens1-1/+1
The rest_bits are never read after calling this function nor are rest_bits updated properly. Change-Id: Ic350b0365b125638a6c752f692bef981ad6b9d89
2019-06-24decompress_crbb: add length argument for search_runlenAlexander Couzens1-4/+10
search_runlen() must know the exact size in bits when parsing the bits otherwise it read over the buffer. Fixes testcase #7 which was wrongly decoded. Change-Id: Ie34a0651e7e7efea4e9ecff1e3a467588113cf47
2019-06-24Encoding: drop struct gprs_rlcmac_bts* from all functionsAlexander Couzens4-17/+12
The bts is not used at all. Change-Id: Ia07755e825913a16352ab13f6cf55f2918de8681
2019-06-24rlc: replace int with uint16_tAlexander Couzens1-1/+1
The i value will only count forward and is limited to 11 bit. The integer is also converted when returning to uint16_t Change-Id: Ib8a9081bbcb8b4344498254c58941002d17f9381
2019-06-17egprs_rlc_compression: fix white spacesAlexander Couzens2-2/+2
Change-Id: I43a5acc2dda4ba567ada9846880e31c85bc98394
2019-06-17encoding: use `/* */` for comments instead of `#if 0 #endif`Alexander Couzens1-4/+3
Change-Id: Ifff9526b15bfda7a0f85c92bcb0d3fabab61ca32
2019-06-13encoding: correct encoding of CRBB in ACK/NACK when not byte alignedAlexander Couzens1-1/+1
The last bits of the CRBB (compressed receive block bitmap) was incorrect encoded when the CRBB is not byte aligned. Related: OS#3728 Change-Id: I7261aa71b37d7ead52992f8db462f72a3804988e
2019-06-07gprs_bssgp_pcu: explicit allocate & initialize bssgp_nsi instanceAlexander Couzens2-17/+12
The instance bssgp_nsi is a global instance to be used by all NS related functions. Previous the PCU allocated and initialized the bssgp_nsi instance when (re-)connecting and freeing on disconnect. The problem of the implicit initialisation is gprs_ns_vty_init(bssgp_nsi). All vty init functions must be called before the configuration is read, otherwise a previous vty written configuration is invalid. Furthermore the vty modifications to the `ns` object were lost when the PCU has to reconnect to the SGSN. Fixes: OS#4024 Change-Id: I2aa53ea54e9352577f6280ad7b9d1d9da9f57eaf
2019-05-25gprs_bssgp_pcu: make gprs_bssgp_ns_cb publicAlexander Couzens2-2/+5
rename the function sgsn_ns_cb -> gprs_bssgp_ns_cb. To allow writing and reading the same configuration, the pcu needs to register all vty commands before reading the configuration. This callback is required to register NS based vty commands Related: OS#4024 Change-Id: I440c0df2e32fe22bf43288c00bb4aa3a0c6a3a51
2019-04-08Fix help message formatting of osmo-pcu.Rafael Diniz1-8/+8
Change-Id: If4ecf9be5a0739bb54aedb077eda51ad091b4c3f
2019-04-08cosmetic: use const pointer for bts_dataMax2-4/+7
It's used several time for logging so let's call it once to make code easier to follow. Change-Id: Icfd9e5603a5d8701f487f17e9c0335d458e9e80b
2019-04-08Update MCS selection for retransmissionMax5-50/+40
In 3GPP TS 44.060 the selection of MCS for retransmissions is defined as separate tables (8.1.1.1 and 8.1.1.2) depending on the value of resegmentation bit (which is opposite to the way EGPRS_ARQ are defined in the source code). Let's follow the same idea and explicitly check for resegmentation bit value and use separate tables. This also makes it easier to add proper support for special cases (MCS-6-9 and MCS-5-7) and padding in future independently for different ARQ types. The code is also moved to c to avoid unnecessary conversions to and from cpp class. Change-Id: Ia73baeefee7a58834f0fc50e3b8bf8d5e3eb7815
2019-04-08vty: add commands to show TBF of a certain kindMax3-8/+23
Add vty commands to show only TBFs allocated via PACCH or CCCH. Change-Id: I80f8df4fe663a0346f4289a4220b761e39726312 Related: OS#1759
2019-03-28TS alloc: expand tests logMax1-21/+23
* restructure code for easier reading * use consistent formatting for output * log essential allocation parameters on failure Change-Id: I4b78951a79ddbc0745b39d091080a4e0e247d3c5 Related: OS#2282
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 Dionne6-0/+1126
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 assignmentsMax1-8/+8
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 SBAMax1-15/+22
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 MCSMax1-6/+6
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 encoderMax5-16/+27
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 Welte1-0/+19
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_*() helpersMax11-37/+57
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 definitionMax8-44/+43
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 stringMax1-5/+5
Log MCS name instead of numeric value. Change-Id: I3e1925a010a6def5fd14da63b73e0b75feddfafc
2019-03-19MCS: use value_string for conversionMax12-53/+83
Change-Id: I212ebb892ab162821633974d5a6c7e315d308370
2019-03-19MCS: move HeaderType enum outside of class definitionMax10-87/+121
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 testMax2-18/+0
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-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 definitionMax9-151/+168
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 errorsMax1-2/+13
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-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-05EDGE tests: remove no-op checkMax1-6/+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-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