aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)AuthorFilesLines
2019-07-24gprs_bssgp_pcu_rx_dl_ud(): use OSMO_IMSI_BUF_SIZEVadim Yanitskiy1-1/+1
Change-Id: Ia1da9f005b7f801872c542d31cc8eabd859d997a
2019-07-24gprs_bssgp_pcu.cpp: check return code of gsm48_mi_to_string()Vadim Yanitskiy1-3/+17
Change-Id: Id1ad279ce9bef38eb3d11ac62337276207e8d8bd
2019-07-24gprs_bssgp_pcu_rx_dl_ud(): fix: BSSGP_IE_IMSI is optionalVadim Yanitskiy1-1/+5
Change-Id: I940d220a399166122f33e67a222dd572085e1401
2019-07-24ubsan: fix shiftEric Wild1-1/+1
Ubsan complains about shifts into the sign bit due to automatic int promotion, so cast explicitly. Change-Id: I6387c7313832f6c7c920e1016b74562b66d6b68e Related: OS#4029
2019-07-21bssgp: Fix dead code: PDUT_STATUS can never reach this partHarald Welte1-3/+1
Change-Id: Iae4332cd3b87f37164655d3df16554de4876159d Closes: CID#188855
2019-07-17fix spelling errors detected by lintianThorsten Alteholz9-14/+14
Change-Id: I381618eb55cc513cfa9c2e384c27cead0935c8bf
2019-07-16Use libosmocore for IMSI parsingMax1-32/+4
Change-Id: Iec5c65776fc54b2f9e5dd55c711ace2471662db1
2019-07-16src/pcu_l1_if.cpp: fix: properly pass measurements from PCUIFVadim Yanitskiy1-2/+2
The recent versions of OsmoBTS do provide the following measurements: - RSSI (Received Signal Strength Indication), - ToA (Timing of Arrival), - BER (Bit Error Rate), as well as C/I (Carrier-to-Interference ratio) since [1] (OS#4006). [1] https://gerrit.osmocom.org/r/Ia58043bd2381a4d34d604522e02899ae64ee0d26 Change-Id: I0fd6c35e8cf0b1314f4e3c336b233b5f7e42dfc6 Related: OS#1855
2019-07-11Encoding: ACK/NACK: always encode with length field presentAlexander Couzens1-43/+39
In most cases the length field was present and this field takes 7 bits of the maximum available 110 rest bits. The length field was only removed when encoding huge bitmaps usually only happen on lossy connections with packet lost. However the cases without length field were encoded incorrect, because all remaining bits must be used by the uncompressed bitmaps, but the PCU violates this by encoding always the "release 5" bit. Rather than fixing the encoding without length field, simply remove it and always encode with length field. This also reduces the code complexity. Change-Id: I7bc2e18d647b72b8f17ba7a5c9c5e421d88275fb
2019-07-11contrib/jenkins.sh: run "make maintainer-clean"Oliver Smith1-0/+1
Related: OS#3047 Change-Id: I733df8f8bfaf448a6507c9c9d75d2f076fedb342
2019-07-11Encoding: use uint16_t when interacting with the window objectAlexander Couzens1-4/+4
The ESN, SSN and uncompress bitmap len are uint16_t. The Window is using uint16_t in function arguments and return values. Don't do so many integer conversions. Change-Id: If62fa09d7bfa8e91ce707824f7019edb1b83da9e
2019-07-11bts.cpp: ensure left-shift operation does not exceed uint32_tAlexander Couzens1-1/+1
Found by Asan Relates: OS#4029 Change-Id: I21640e40e689016d6fb80a8db4257b22e85b303b
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 Couzens3-14/+14
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-24Cosmetic: Osmcoom -> OsmocomKeith1-2/+2
Change-Id: I02c6b2655df54ca40717ce7609013d0bc54eabdf
2019-06-22tests/BitcompTest: fix wording in log messageAlexander Couzens2-10/+10
The testcase is showing the compressed rbb. Change-Id: Ie7a2b31e305dffb2776698d1bc8e80d6a435c135
2019-06-19manuals: Update VTY documentationDaniel Willmann1-941/+1781
Related: OS#1700 Change-Id: I4a5da9b2b1caa625754383b0f9a180e7503bc60e
2019-06-19manuals: Add script to regenerate vty/counter documentationDaniel Willmann2-0/+18
Change-Id: Iff570e85828c87d69a7a49a00d9459094077ca30 Related: OS#1700
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 Couzens4-17/+49
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-29debian: create -doc subpackage with pdf manualsOliver Smith4-2/+18
I have verified, that the resulting debian packages build in my own OBS namespace (see the -doc packages): https://download.opensuse.org/repositories/home:/osmith42/Debian_9.0/all/ https://build.opensuse.org/project/show/home:osmith42 Depends: Ib7251cca9116151e473798879375cd5eb48ff3ad (osmo-ci) Related: OS#3899 Change-Id: I9f2e7cfd93ee0b13d064c606a20378c1ea01400e
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-11Add test for MS mode and (M)CS settingsMax3-0/+86
Right now set_mode() on GprsMs behaves in pretty counter-intuitive way: * it's possible to set current DL MCS higher than max value * EGPRS and EGPRS_GMSK have the same max DL MCS * setting EGPRS* mode drops current/max MCS values to unknown Let's capture this in a unit-test before attempting any further modifications. Change-Id: Ibf917f4b49d927a21cbd467775806fa6ea06a6a6
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 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