aboutsummaryrefslogtreecommitdiffstats
path: root/src
AgeCommit message (Collapse)AuthorFilesLines
2016-12-16struct pcu_l1_meas_ts: initialize ms_i_levelHarald Welte1-1/+2
Change-Id: I93de7589d746b91ba26b1b36bf2690f125277cd0 Fixes: Coverity CID 57953
2016-12-09Add statistics in the ms and tbf level.sivasankari5-5/+128
Adds DL throughput in show ms imsi <imsi_value>. Adds the number of coding schemes counter and rlc nacked counter at TBf level. Change-Id: Ia95b0404989b00db0e7ba416bc40d09ef41fde1c
2016-12-02Add debugging log for RLC data block decodingMrinal Mishra1-0/+9
Added debugging log for RLC UL Data Block decoding for both GPRS/EGPRS cases. Change-Id: I8c197bdc4cd1330cbab0adfd188336d27682cec4
2016-11-25Add new BTS level counterssivasankari4-1/+26
Adds counters for Immediate Assignment Reject, Packet Access Reject, Channel Request Description and Final Block resend. Change-Id: I23e326d4ea489aa4967e452fe02773b44ab146f7
2016-11-17Install the pcuif_proto.h header fileHarald Welte4-164/+6
So far, we used to keep a copy of the header file around in both osmo-pcu and osmo-bts projects. Before we start introducing a third copy in openbsc, let's have the osmo-pcu install the header file and make the other programs use that. Change-Id: I60976c9be5488256d1ff55fdc5aa548e3705400d
2016-11-17Fix GSMTAP logging in case direct PHY access is enabledHarald Welte1-2/+2
In the existing code, GSMTAP messages were only generated in case no direct PHY access was being used (i.e. in the case all user traffic goes over the PCU socket). I'm not quite sure what the reason is for that would be and conclud this is not intentional. Let's first send the message to GSMTAP and then decide whether to send it via the direct PHY access or via the PCU socket into the BTS/BSC. Change-Id: I5d2e018f7009cb947abc874881c0c440feca3ade
2016-11-17pcu_l1_if: get rid of magic numbers and use ARRAY_SIZE() for array iterationHarald Welte1-6/+6
Change-Id: I61d00950b4eb0b8bcbaf386d5081be84580dac75
2016-11-14Add BTS level countersMrinal Mishra6-4/+294
Adds counters for MCS blocks, 11 bit Rach counters and others. Change-Id: I605b0d66eb217decd35cbb8f87abfa577760245a
2016-11-11Handle packet access reject during EPDAN/PDAN with channel descriptionaravind sirsikar6-12/+84
When PDAN/EPDAN with channel description is received, PCU will generate the packet access reject if no resources are present. The encoding is done based on section 7.1.3.2.1 and 8.1.2.5 of 44.060 version 7.27.0 Release 7. This patch also includes the test case to validate the generated packet access reject message. This patch is integration tested on Osmo-trx setup with Ettus B210 board and LG F70 MS with some simulation code changes in Osmo-pcu. Change-Id: I096a3bb44a65533b9e9b091925dd5f70a8696d6
2016-11-09Handle Immediate assignment rejectaravind sirsikar3-42/+149
When RACH is received, PCU will generate the Immediate assignment reject message if no resources are present. The encoding is done based on section 9.1.20 of 44.018 version 11.7.0 Release 11. This patch also includes the test case to validate the generated Immediate assignment reject message. This patch is integration tested on Osmo-trx setup with Ettus B210 board and LG F70 MS with some simulation code changes in Osmo-pcu. Change-Id: I3d33e2b9746fa4f338fad0e6b63b1c5f07de6f9b
2016-11-09Handle Timing Advance IE properlyMax1-31/+43
Move writing Timing Advance IE and Timing Advance Index into separate functions to simplify adding PTCCH support. This also fixes previous incorrect (and unused) code for writing Packet TA IE which has not set TS for TA. Change-Id: I786bf7fc999d401cc3d9e7f1e7a1fba953b5d458 Related: OS#1545
2016-11-02EGPRS: fix for EPDAN out of windowaravind sirsikar2-22/+12
Fix alignment of EPDAN outside the RLC transmit window, according to section 9.1.8.2.4 in 44.060 version 7.27.0 Release 7. The specification explains that a bit within the uncompressed bitmap whose corresponding BSN is not within the transmit window shall be ignored. Without this fix PCU was dropping the EPDAN message and not updating the status of BSNs which are inside the RLC window. This patch updates the status of the BSNs which are inside the window and ignores the remaining bits. Related: OS#1789 Change-Id: Id07d178970f168f5389016c1eea31eb6b82057b6
2016-11-02Modify return type of gprs_rlc_dl_window::distance to uint16_taravind sirsikar1-2/+2
Since there is a "&mod_sns()" present in this function, the outcome is always unsigned. Change-Id: I66f3db4dc27a6cbef146c832bf8b43f1492358a4
2016-10-26Add logging supportMrinal Mishra1-0/+2
This commit adds the TRX_ID in the output of VTY command "show tbf all". Change-Id: Ia5412dddb899e20963f884e02bdf796b6ea7ee6c
2016-10-19Use qbit-TA to update Timing AdvanceMax5-51/+46
Separate qbit-TA to TA conversion into separate function and use it for computing and updating Timing Advance. Note: the code was tested with TA=0 only to make sure it does not introduce regressions. Change-Id: I96fdbb20b09fb85fdd9fb6dcf3c25f6bee7f80e4 Fixes: OS#1531
2016-10-18Revert "tbf: Add state WAIT_ASSIGN"Neels Hofmeyr3-23/+9
This reverts commit f1a7b8fc6651f92a8b7f3f27b7ca05d07f4e44e0. Conflicts: tests/tbf/TbfTest.err The commit broke GPRS service at least for osmo-bts-sysmo on a SysmoBTS 1002 with current master of osmo-bts (ef30f50d5d6d5f863fc147d05ccdceb89284934e). The error observed is the following log output (was viewing both osmo-bts-sysmo and osmo-pcu logs interleaved): <0002> tbf.cpp:874 TBF(TFI=0 TLLI=0x00000000 DIR=UL STATE=WAIT ASSIGN) T3169 timeout during transsmission <0002> tbf.cpp:893 - Assignment was on CCCH <0002> tbf.cpp:899 - No uplink data received yet <0007> l1sap.c:904 RACH for packet access <0001> pcu_l1_if.cpp:311 RACH request received: sapi=1 qta=0, ra=121, fn=13653 [repeat] When removing this single commit from current osmo-pcu master, GPRS service works well on SysmoBTS, with current osmo-bts master. The TbfTest.err expected output needed adjustment after the revert. Disclaimer: I am not aware of adverse effects this commit may have. I have no idea what the WAIT_ASSIGN state is used for -- further review is required. Change-Id: I1532f8e93194368cdc1e3846f82afa6d68cd5fbd
2016-10-18llc: remove NULL-pointer check of gprs_llc_queue::size()/octets()Alexander Couzens1-2/+2
All callers now check the pointer before calling it. gcc6 is optimizing `if (!this) {CODE}` as this is assumed to never be a std::nullptr here. Change-Id: I918a094e0dc59098a9eb00d152c9ae42d36b3a99
2016-10-18tbf: add llc_queue_size() to check llc_queue is valid before calling size()Alexander Couzens3-6/+15
gcc6 is optimizing if (!this) {CODE} as this is assumed to never be a std::nullptr here. Move the null check to the caller. In preparation of removing the check within llc_queue->size(), all callers must check the object before calling it. Make sure of that: make the llc_queue() access function protected and offer only a public llc_queue_size() function that incorporates the NULL check. All current callers are only interested in the llc_queue_size(). Tweaked-by: nhofmeyr Change-Id: I88cc3180f8f86785e3f07981895dabddf50b60a2
2016-10-17EGPRS: Add EPDAN CRBB Tree based decodingPravin Kumarvel4-14/+403
Implemented tree based algorithm to decode compressed bitmap in EPDAN as described in section 9.1.10 of 3GPP 44.060. This algorithm intends to improve the performance over existing method. New Regression test is added under bitcomp directory. Test case is added to validate decompressed result of the bitmap Present in EPDAN. Test is done for multiple bitmaps of varying length. Invalid inputs are also part of the test vector. Change-Id: Ieae1992ed4b02bb1e09eec2d3de1a030eabd16ce
2016-09-22heed VTY 'line vty'/'bind' commandNeels Hofmeyr1-1/+2
Like most other osmo-* programs, bind the telnet VTY to the address specified by the 'line vty'/'bind' command. This is added by vty_init(), so until now the PCU offered this config but ignored it. Change-Id: I4cca05a212ec0d493b906014dc3a83e687ebbb1d
2016-09-16Update the function immediate assignment for EGPRSbhargava3-12/+85
Encode the EGPRS fields of immediate assignment message in uplink when EGPRS PACKET CHANNEL REQUEST (11 bit RACH) is received. The series of patches for 11 bit RACH are dependent on libosmocore and osmo-bts patches for 11 bit RACH. Change-Id: Ie5e309156e5dbbb6add74a1b4d257c4ee2332e52
2016-09-16Handle EGPRS 11 bit RACH in osmo-pcubhargava2-11/+84
A function is_single_block is added to get request type of RACH. EGPRS 11 bit RACH is handled. Change-Id: I61d74a32f7764644ed86f7fdf97fa3c2f61503f7
2016-09-15Fix EGPRS DL window calculation during tbf updateAravind Sirsikar1-0/+6
Earlier there was no handling for recalculation of DL window size during tbf update. Which has been fixed in this patch. Related: OS#1808 Change-Id: I41aa807068520460fd665a55e3529e60f6bbb630
2016-09-15tbf_dl: factor out EGPRS DL window size calculationAravind Sirsikar3-14/+24
A subsequent patch needs to call this from gprs_rlcmac_tbf::update(), so to avoid code dup, put the calculation in a separate function. Related: OS#1808 Change-Id: I7c7777d43f843bbd3421503fc2a8600f148ca035
2016-09-15EGPRS: Fix issue with row 4 of Table 10.4.14a.1 of 44.060 version 7.27.0 ↵Aravind Sirsikar2-11/+12
Release 7 row 4 of Table 10.4.14a.1 of Spec 44.060 version 7.27.0 Release 7. Says "The previous RLC data block contains a Upper Layer PDU, or a part of it, that fills precisely the previous data block and for which there is no length indicator in that RLC data block. The current RLC data block contains a Upper Layer PDU that either fills the current RLC data block precisely or continues in the next RLC data block." So when we receive block with 1st LI: value=0 and Value of E bit in the same octet as 1, we expect 2 chunks with 1st chunk as length as 0 and complete and 2nd chunk as length non zero. But with this bug we see only 1 chunk causing incorrect assembling This issue has been fixed in this patch. Related: OS#1811 Change-Id: I2cd0fca3ed28a553ede3f4b8a7d3267284dd2c9b
2016-09-14Fix CSN1 decoding: CSN_LEFT_ALIGNED_VAR_BMP boundsNeels Hofmeyr1-6/+5
Fix attempted read past vector boundaries in case of a starting bit offset != 0, so that the last amount of bits read should be < 8. In the case of CSN_LEFT_ALIGNED_VAR_BMP, the mod-8 calculation was flawed, and in the final step, 8 bits were read instead of the remainder < 8. This lead to -EINVAL being returned by bitvec_get_bit_pos() and bogus resulting data. Instead, read 8 bits only as long as at least 8 bits remain, and read any remaining bits < 8 in a final step. Drop unneeded nB1 variable and an obvious comment. Adjust the unit test assertion in testCsnLeftAlignedVarBmpBounds() in RLCMACTest.cpp. Based on a fix by Aravind Sirsikar <Arvind.Sirsikar@radisys.com>, but implemented differently. Related: OS#1805 Change-Id: I490498c8da6b531f54acb673379379f7b10907c0
2016-09-09Fix Timing Advance handlingMax5-10/+21
* initialize with invalid TA instead of making assumption that phone is located within 550 meters (TA=0) * only set valid TA Change-Id: Idfc40ff0c11bdac13d9e28fbfa4e95dfc6b735b0 Related: OS#1526
2016-09-06LC15: Change TRX numbering for the latest Litecell15 hardwareMinh-Quang Nguyen1-2/+2
Change-Id: If3c4aff0366587dd3e5baa3d15b9e91d8ebe7753
2016-09-02Fix GPRS PUAN encoding: wrong BSN statusAravind Sirsikar1-1/+1
Earlier there was an incorrect encoding of BSN status in GPRS PUAN message. This was a bottle neck for GPRS performance testing for UL. Which has been fixed in this patch. Related: OS#1806 Change-Id: I98e586aa5cb9200cf03e092556304211d4d459aa
2016-08-28TBF flow: Coverity fixAravind Sirsikar1-0/+3
Related: CID#1361925, CID:#1361924 Change-Id: Ib1f71a8940eed7ad74211092275dfa29aa353fc7
2016-08-27vty: use OSMO_VTY_PORT_PCU instead of numberNeels Hofmeyr1-1/+2
Include vty/ports.h and use the proper constant. Change-Id: I9c5b7683f76994c539da5551f40df32379dc685e
2016-08-27Change interface in osmo-pcu for 11 bit RACHbhargava4-5/+13
Interface structure between osmo-bts and osmo-pcu is updated with the parameters to differentiate the type of RACH and further support 11 bit RACH. The function prototype and definitions are changed accordingly. Interface version number is increased. Change-Id: I265c2d92d36d6cbcbeee60cdd8407dafe1da06a4
2016-08-25Fix EGPRS PUAN encoding: use correct urbb_lenAravind Sirsikar1-1/+2
Earlier there was an incorrect encoding of PUAN when VQ is not equal VR case for EGPRS UL RLC window. The PCU was encoding the same PUAN message always irrespective of radio condition. This was a bottle neck for performance testing. Which has been fixed in this patch. Related: OS#1793 unit test assertion in the previous commit is fixed in this patch. Change-Id: Iba7b1995028bd81749ffb080616b2ad5f2540d57
2016-08-25Modify EGPRS DL TBF flow to support SPBAravind Sirsikar7-47/+250
Modify the EGPRS DL TBF flow to support Split block during Retx. This patch will also Upgrade the test suite with test cases to validate the EGPRS Downlink SPB for Retransmission Scenarios like MCS6->MCS3, MCS4->MCS1, MCS5->MCS2, MCS9->MCS3 MCS7->MCS2, MCS8->MCS3 have been simulated and Integration tested in NuRAN 1.0 hardware thoroughly. Change-Id: I242afdd8ae7622dec8593b26382ad66bad5b9516
2016-08-25Add data structure to handle SPB for EGPRS DLAravind Sirsikar2-4/+45
Modify the header files with necessary data structure to handle Split block for EGPRS DL TBF. The EGPRS resegmentation feature allows PCU to retransmit RLC blocks of HeaderType1, HeaderType2 by segmenting them to 2 HeaderType3 blocks(Example MCS5 will be retransmitted as 2 MCS2 blocks). Table 10.4.8b.2 of 44.060 explains the possible values of SPB in HeadrType3 for DL direction. The PCU decides to retransmit the blocks by resegmenting it based on Table 8.1.1.1 of 44.060. The retransmission MCS is calculated based on current MCS of the Block and demanded MCS by PCU. Section 10.3a.3.3 of 44.060 shows the HeadrType3 with SPB field present in it Change-Id: I57673e53a9da2affa7e8aaa6551ac4b271c3d525
2016-08-22Remove warning while using 'egprs only' command in VTYAravind Sirsikar1-6/+0
This warning is not valid since the PCU is not failing when EGPRS is activated. So removing this trace Change-Id: I62278f998adc691b9a3563ac2a46d756e7bfb66c
2016-08-09LC: fix build errorMax1-1/+1
Remove extra parameter which causes build to break. The error was introduced in 878bd1f296379ffba949d6fcae2938c13406df5b Change-Id: Id63187d925d448caa4fa85720582550919b1f216
2016-08-04Extend BTS <-> PCU protocol with measurementMax2-2/+13
Note: this increases the version of BTS <-> PCU protocol and thus requires corresponding change in BTS. Change-Id: Ide0e29b668ee38516605c1763fda85e87e867813 Related: OS#1616
2016-08-02Add support for SPB handling for EGPRS UL TBFAravind Sirsikar3-24/+161
This patch will modify the EGPRS UL TBF flow to support Split block handling. This patch also contains test suite modification for SPB UL. Scenarios like MCS6->MCS3, MCS4->MCS1, MCS5->MCS2, MCS9->MCS3 MCS7->MCS2, MCS8->MCS3 have been simulated and Integration tested in NuRAN 1.0 hardware thoroughly. The scope of Unit testing is limited. Change-Id: I39ca53218b6e0982abc2ab9c703c24c8bf0a09c0
2016-08-02Add data structure for SPB in EGPRS ULAravind Sirsikar1-0/+40
Modify header files with data structures required to support split blocks for EGPRS UL TBF This feature provides provision for MS to retransmit RLC blocks of HeaderType1, HeaderType2 by segmenting them to 2 HeaderType3 blocks(Example MCS5 will be retransmitted as 2 MCS2 blocks). Table 10.4.8b.1 of 44.060 explains the possible values of SPB in HeadrType3 for UL direction. When the MCS is changed at the PCU, PCU directs the changed MCS to MS by PUAN or UPLINK ASSIGNMENT message along with RESEGMENT flag, Then MS may decide to retransmit the blocks by resegmenting it based on Table 8.1.1.1 of 44.060. The retransmission MCS is calculated based on current MCS of the Block and demanded MCS by PCU. Section 10.3a.4.3 of 44.060 shows the HeadrType3 with SPB field present in it. Change-Id: I83ccd136bb361adcfd511c57c5a9d95ed72c36c2
2016-07-28Properly set TA_VALID bitMax1-3/+6
Check Timing Advance validity and set corresponding bit for Immediate Assignment message. Previously !polling was errorneously used (polling bit has nothing to do with TA validity according to 3GPP TS 44.018 Table 10.5.2.16.1) which lead to TA being always valid as polling is always 0 in other parts of the code. Change-Id: I5d7ecc7f71402b945cae99332be2ebc0b17b9d44 Related: OS#1526
2016-07-26Remove useless ARFCN parameterMax5-10/+8
ARFCN is already part of TRX struct so there's no need to supply it explicitly in a separate parameter. I've tested and those are the same anyway. Change-Id: I8e975c52cbc819427880093b1e5371fe1f8ce460
2016-07-20Remove unused definitionsMax2-34/+0
Those structs are not used anywhere (which was the case in the commit which introduced them as well) but give false-positives while grepping through the code. Better to just drop them. Change-Id: I0a0bb0c641e4e081a57f72187ff96e9beef16588
2016-07-14egprs: Use RLC/MAC headers from libosmocoreTom Tsou3-125/+31
EGPRS Type 1, 2, and 3 headers are used by OsmoPCU and OsmoBTS. Move the header definitions to libosmocore to be shared by both packages. Modify the struct variable naming to use *_hi/*_lo instead of *_a/*_b in order to be consistent with existing naming used in libosmocore. Change-Id: I98687ad981d27502aec42729611937ba1caf207c
2016-07-13bitvector: Remove code clone and fallback to C implementationHolger Hans Peter Freyther2-18/+7
This routine has been moved from from here to libosmocore and as part of the C++ -> C the reference got converted to a pointer. We have a lot of code that calls the method with the reference and instead of updating the callers, create a short inline wrapper to call the C routine. Change-Id: Idd16ce251a42bad4401c2bf3a8fa6af70fb600ff
2016-07-13Modify DL tbf flow for ARQ-II in EGPRS DL RetxAravind Sirsikar1-17/+40
Modify the DL TBF flow to support ARQ-II EGPRS DL retransmission Change-Id: I7a845c98f2018795f0f62240f228411b0bc030c7
2016-07-13Add Accessor functions for ARQ-II in EGPRS DLAravind Sirsikar3-1/+22
Add accessor function in existing classes to support ARQ-II for retransmission in EGPRS DL Change-Id: Iefff956bf2dcfe8fb0b2f5a7a7a2122d5d555f9e
2016-07-12Add data structure for ARQ-II in EGPRS DLAravind Sirsikar5-10/+60
Modify the existing data structure to support ARQ-II for Retx in EGPRS DL. This will also hadle compilation issue related to renaming the variable. Change-Id: I734b1024bb32f2daa43af4adf59f4a17f2294afe
2016-06-20typo in warningNeels Hofmeyr1-1/+1
(actually committing just to test gerrit, and if it goes through it's still a valid change.) Change-Id: I2ca9a1cc2f250801fbe62f3c50b73dff7101ee08
2016-06-16Add header type 1 support for EGPRS uplinkAravind Sirsikar6-9/+75
Function is added to parse the EGPRS header type 1 in uplink tbf path. along with configuration parameter updation to reflect max mcs in UL Change-Id: I13c250e2e07377982ac3f29745f3cffd4088552a Reviewed-on: https://gerrit.osmocom.org/270 Reviewed-by: Harald Welte <laforge@gnumonks.org> Tested-by: Jenkins Builder