aboutsummaryrefslogtreecommitdiffstats
path: root/tests
AgeCommit message (Collapse)AuthorFilesLines
2021-01-18Split PCU global PCU object from BTS objectPau Espin Pedrol10-524/+618
Currently the BTS object (and gprs_rlcmac_bts struct) are used to hold both PCU global fields and BTS specific fields, all mangled together. The BTS is even accessed in lots of places by means of a singleton. This patch introduces a new struct gprs_pcu object aimed at holding all global state, and several fields are already moved from BTS to it. The new object can be accessed as global variable "the_pcu", reusing and including an already exisitng "the_pcu" global variable only used for bssgp related purposes so far. This is only a first step towards having a complete split global pcu and BTS, some fields are still kept in BTS and will be moved over follow-up smaller patches in the future (since this patch is already quite big). So far, the code still only supports one BTS, which can be accessed using the_pcu->bts. In the future that field will be replaced with a list, and the BTS singletons will be removed. The cur_fn output changes in TbfTest are actually a side effect fix, since the singleton main_bts() now points internally to the_pcu->bts, hence the same we allocate and assign in the test. Beforehand, "the_bts" was allocated in the stack while main_bts() still returned an unrelated singleton BTS object instance. Related: OS#4935 Change-Id: I88e3c6471b80245ce3798223f1a61190f14aa840
2021-01-15gprs_rlc_ts_alloc: ensure no rolling slots are allocatedAlexander Couzens2-15675/+15675
When allocating multiple slots for a UE the following example is not allowed 'UU----UU' for a UE class 12. The time slot number can not roll over 7 and move to 0. 44.060 or 45.002 only specifies contigous however it was unclear it this is an allowed pattern. Only the example 45.002 B.3 in release 12 cleared this up. It gives an example for a multi slot class 5 UE which has 7 possible configuration this means the rolled over is not allowed. Multislot class type 2 UE doesn't have this limitation. Further if a UE supports 8 time slots this is not a limitation because the window size (45.002 B.1) can include all time slots. Releated: SYS#5073 Change-Id: I16019bdbe741b37b83b62749b840a3b7f4ddc6c7
2021-01-12AllocTest: Avoid queuing tons of to-be-freed msPau Espin Pedrol1-0/+6
When both TBFs (Dl, Ul), are detached, ms_detach_tbf() will call ms_start_timer() which will hold a reference of the MS (ms_ref()) and wait for X seconds (VTY config, T=-2030, 60 seconds by default) before unrefing the MS, which will trigger ms_update_status() finally (ref==0) and will in turn call cb.ms_idle(), which will tell the ms_storage to free the MS. This mechanism is used to keep MS objects around for a certain time so that when new TBFs are established, we have cached interesting information about the MS, ready to use. However, in AllocTest, tons of MS are allocated in a loop calling a function (such as test_alloc_b_ul_dl()). In that function, a BTS is allocated in the stack and at the end of the function BTS::cleanup() is called due to implicit destructor, which ends up calling ms_storage::cleanup() which removes all MS from its list and frees them *if they are not idle*. The problem here, is that due to T=-2030, an extra reference is hold and hence the ms is not considered idle (ms_is_idle() checks ms->ref==0). As a result, the MS is never freed, because we don't use libosmocore mainloop here (and in any case, it would take 60 seconds to free it). By setting the timeout of T=-2030 to 0, ms_start_timer will avoid using the timer and will also avoid holding the extra reference, hence allowing ms_storage to free the object during cleanup(). This fix really helps in improving performance for AllocTest specially after MS object contains a rate_ctr. As tons of MS objects were left alive, they stood in the rate_ctr single per-process queue, making the test last crazy amount of time and spending 50% of the time or more iterating the list full of MS related rate counters. Change-Id: I6b6ebe8903e4fe76da5e09b02b6ef28542007b6c
2021-01-11tbf: remove 'software error' logs from tbf_freePau Espin Pedrol1-5/+0
It is expected that the tbf object is freed at any moment in time, for instance if osmo-pcu drops PCUIF connection with osmo-bts. I couldn't find any reason why it would e dangerous to free the tbf, so let's remove this message. related: OS#4779 Change-Id: I4ab5ccaa5bf6257b18d8fd5ba06baab083821817
2021-01-05Convert GprsMS and helpers classes to CPau Espin Pedrol8-417/+421
As we integrate osmo-pcu more and more with libosmocore features, it becomes really hard to use them since libosmocore relies heavily on C specific compilation features, which are not available in old C++ compilers (such as designated initializers for complex types in FSMs). GprsMs is right now a quite simple object since initial design of osmo-pcu made it optional and most of the logic was placed and stored duplicated in TBF objects. However, that's changing as we introduce more features, with the GprsMS class getting more weight. Hence, let's move it now to be a C struct in order to be able to easily use libosmocore features there, such as FSMs. Some helper classes which GprsMs uses are also mostly move to C since they are mostly structs with methods, so there's no point in having duplicated APIs for C++ and C for such simple cases. For some more complex classes, like (ul_,dl_)tbf, C API bindings are added where needed so that GprsMs can use functionalitites from that class. Most of those APIs can be kept afterwards and drop the C++ ones since they provide no benefit in general. Change-Id: I0b50e3367aaad9dcada76da97b438e452c8b230c
2020-12-12migrate to DLBSSGP as log sub-system for BSSGPHarald Welte1-2/+1
Change-Id: I94864c5fa2688fc91b8b6077a14ad098851afdc7 Depends: libosmocore.git Change-Id I506190aae9217c0956e4b5764d1a0c0772268e93
2020-12-01Dl TBF: Get rid of LLC UI dummy blocks following other dataPau Espin Pedrol1-138/+78
According to: * 3GPP TS 44.060 version 16.0.0 "9.3.1a Delayed release of downlink Temporary Block Flow" * 3GPP TS 44.064 version 16.0.0 "6.4.2.2 Unconfirmed Information (UI) Dummy command" LLC UI Dummy frames are to be used when there no more data to send, only in order to delay the release of a TBF. Hence, while not incorrect per se, makes no sense to send those LLC UI Dummy frames inserted into rlcmac blocks which already contain other LLC frames, since the MS in that case is already being kept active. It only makes sense to send those LLC UI Dummy frames when we have nothing else to send, that is, alone inside a RLCMAC block without other LLC frames. Related: OS#4849 Change-Id: Ifae1a7b2b3dfad8df19585063088ba0df2749c8f
2020-12-01Implement downgrade to DL MCS1-4 when USF for GPRS_only MSPau Espin Pedrol1-411/+411
In previous status, if USF for GPRS-only MS was selected, then EGPRS TBFs were skipped and either a GPRS TBF was selected or a Dummy Block was sent. That means the behavior was unfair towards EGPRS TBFs, because sometimes they were skipped in favor of GPRS ones. This patch imporves the situation in the above mentioned USF scenario, by first, under specific conditions, allowing selection of an EGPRS TBF and then forcing it to transmit in EGPRS-GMSK (MCS1-4) so that the USF-targeted MS can still decode the USF, while at the same time providing more fairness by allowing the EGPRS TBF to transmit data. The specific conditions mentioned above are, mainly, related to the fact that once a DL data block has been sent, and hence a BSN was assigned to it, it cannot be retransmitted later using another MCS, since lower MCS1-4 wouldn't be able to contain higher MCS RLC payload. The set of conditions could be expanded in the future by also selecting the EGPRS TBF if retransmition is required and the block to be retransmitted was originally transmitted as MCS1-4. Related: OS#4544 Change-Id: I9af23e175435fe9ae7b0e4119ad52fcd4707b9ca
2020-11-24csn1: Log CSN_VARIABLE_ARRAY values as hexPau Espin Pedrol1-2/+2
Change-Id: If84c4b3cb870068a85405116f1d505ffcff9c26e
2020-11-24csn1: Fix readIndex pointer change in CSN_VARIABLE_ARRAYPau Espin Pedrol3-0/+11
There's actually 3 errors: * Its value should be updated, not the pointer itself * Value should be increased, not decreased * bitvec_read_field() API is already advancing it, no need to do it Fixes: OS#4838 Change-Id: I009abc373794e148091e637ffee80c6461960945
2020-11-10TLLI 0x00000000 is a valid TLLI, use 0xffffffff insteadVadim Yanitskiy7-101654/+101654
The assumption that TLLI 0x00000000 is invalid and can be used as the initializer is wrong. Similar to TMSI, 0x00000000 is a perfectly valid value, while 0xffffffff is reserved - use it. According to 3GPP TS 23.003, section 2.4, a TMSI/P-TMSI with all 32 bits equal to 1 is special and shall not be allocated by the network. The reason is that it must be stored on the SIM, where 'ff'O represents the erased state. According to section 2.6 of the same document, a local/foreign TLLI is derived from P-TMSI, so the same rule applies to TLLI. I manually checked and corrected all occurances of 'tlli' in the code. The test expectations have been adjusted with this command: $ find tests/ -name "*.err" | xargs sed -i "s/0x00000000/0xffffffff/g" so there should be no behavior change. The only exception is the 'TypesTest', where TLLI 0xffffffff is being encoded and expected in the hexdump, so I regenerated the test output. Change-Id: Ie89fab75ecc1d8b5e238d3ff214ea7ac830b68b5 Related: OS#4844
2020-11-04Get rid of bts->egprs_enabledPau Espin Pedrol3-14/+0
BTS simply notifies the PCU about the supported MCS, and PCU is responsible for providing correct data formatting supported for the BTS and the target MS. Related: OS#4544 Change-Id: Ifcf23771bd23afc64ca6fea38948f98f2d134ecb
2020-11-04tbf_dl: Don't fake EGPRS MS class when no related info is availablePau Espin Pedrol2-4/+22
For instance if PCU received DL data to be sent to an MS from an SGSN, and the MS is not currently cached in the PCU (because there's no TBF active for it), it will page it and transmit the DL data to it. The SGSN is capable of sending (EGPRS) MS Class information in that same DL data message, so it's the one responsible for providing that information if not available at the PCU. In the PCU if we don't have information about that MS and SGSN didn't provide us information about it, we cannot assume the MS is going to be EGPRS capable and even less expecting a specific EGPRS MS class. So let's drop this code. Related: OS#4544 Change-Id: Icce66cadb51af25ae0c3b3719940eccb548fe33b
2020-11-04Move EGPRS MS mode set to gprs_ms.cppPau Espin Pedrol5-62/+65
Some tests were wrong (TypesTest) and required modification, since they were setting a EGPRS MS but then expecting a GPRS assignment. Change-Id: I9d3ee21c765054a36bd22352e48bde5ffca9225a
2020-11-04pcuif: Improve BTS-supported CS/MCS handlingPau Espin Pedrol1-1/+1
Take into account the MCS values supported by the BTS. In osmo-bts, in general all MCS are enabled if "mode egprs" is selected in BSC, and none otherwise. Change-Id: Ie8f0215ba17da1e545e98bec9325c02f1e8efaea
2020-11-04Move BTS initial values inside bts.cppPau Espin Pedrol5-257/+59
This way everytime any program or test initiates a BTS object, the bts_data structure has the same values. Change-Id: Iffd6eecb1f08bda0091f45e2ef7c9c63b42e10b3
2020-10-30cosmetic: tests: pcu_emu: fix trailing whitespacePau Espin Pedrol1-1/+1
Change-Id: I889498c75a78fd8aa406cff5600e4773785782de
2020-10-29tbf_dl: Update (egprs_)ms_class for already known MSPau Espin Pedrol1-7/+7
If SGSN provides us with MS class information upon DL data, let's use it and set it in an already existing MS object if not yet known. Also remove all unneeded code passing ms_class to append_data() which would simply try to (again) set the ms_class. Change-Id: I4979c9344bffd3ba7657bbab94981d233eab801f
2020-10-29bts: define egprs_enabled as boolPau Espin Pedrol1-12/+12
Change-Id: I66a8254ee392ad75226c58b7df5746f409463f0f
2020-10-29alloc_algo_b: Select TRX with least assigned TFIs during TBF allocPau Espin Pedrol2-90/+46
Before this patch, it would always allocate all TBFs on the first TRX until all TFIs were filled, then second, and so on. But it would actually fail around 8th MS requesting an UL TBF because despite a TFI was successfuly assigned, because all USFs were already exhausted for that PDCH. Related: OS#1775 Change-Id: Iccfc8acfbfdc258ed16cc5af01f12b376fe73b72
2020-10-29tbf: Clean up gprs_rlcmac_dl_tbf::handle()Pau Espin Pedrol2-231/+233
Avoid passing tons of params to internal helper function tbf_nel_dl_assignment() in order to either fetch again the ms object or create a new one. Let's instead create the ms function earlier if needed and fill it with all the discovered information prior to calling the helper function. This provides cleaner code and also better log output. This way we also avoid trying to fill the MS twice and unneeded getter+setter for TA. tbf::imsi(): There' always an ms, so simply forward call to ms()->imsi(). We can also get rid of assign_imsi, since the modified code is the only place where it's used and there's already some code in place there to update the MS. We instead merge it with set_imsi and keep the duplication code to catch possible bugs from callers. Move merge_and_clear_ms from tbf class to GprsMS, where it really belongs. Change-Id: Id18098bac3cff26fc4a8d2f419e21641a1f4c83b
2020-10-26tests: ms: Pass correct pointer in constructor instead of NULLPau Espin Pedrol1-1/+1
The BTS field will be used in code paths after next patch changes, otherwise the test fails accessing the NULL pointer. Change-Id: I5098292bdafa9f4f70fef1a053b80a33deca722c
2020-10-24tbf: Set MS during constructor timePau Espin Pedrol4-12990/+12995
This is another step forward towards a more clear data model where a TBF always has a MS object (which may be lacking some information, and at a later point when more information is found, it may actually be a duplicated MS object and hence one duplicate removed and the TBF moved to the object being kept). This helps for instance in removing duplicated information stored in the TBF which is really per MS, like ms_class, ta, etc. Since there's always a MS object there's no need to keep a duplicate in both classes in case there's no MS object. It can already be seen looking at unit test logging that this kind of data model already provides better information. Some unit test parts were needed to adapt to the new model too. Change-Id: I3cdf4d53e222777d5a2bf4c5aad3a7414105f14c
2020-10-24tbf: Make window() available to tbf base classPau Espin Pedrol2-14/+18
Return an interface to the window base class so that the tbf base class can access the common window methods, such as set_ws(). It will be used in next commit to get rid of duplicated function enable_egprs in both dl_tbf and ul_tbf subclasses. The user of the function can then decide to access more specific functionaltiites of the window class by static casting it to the specific direction (which is known by the caller since it operates on a ul_tbf or a dl_tbf). Change-Id: Ia2e1decf91be1184668e28297c2126affb9c7ae4
2020-10-23Fix several calls to LOGPALPau Espin Pedrol2-25/+25
In those cases since a string pointer was passed, it always printed "single" instead of whatever really was being used, since the string pointer was not NULL. Change-Id: Idab7d18e8f519e10fc3df4007634661c46f9256d
2020-10-23Improve debug logging for alloc algosPau Espin Pedrol1-108/+112
In general we want to see explicitly the kind of requested allocation at the start. The MS class is not needed since it's printed in the previous log line in any case. Change-Id: I9eb0a592c15be96da9d140ff373c1afead76b18c
2020-10-13Rework NS configuration over the info indicationAlexander Couzens1-2/+3
Add support of the second NSVC in the info indication. Add support to update a previous NS configuration. Allow to update of a NS-VC while the NSE is still available over the second. Depends-on: I917f25ebd1239eae5855d973ced15b93731e33a0 (libosmocore) Depends-on: I3a0cd305fd73b3cb9ec70246ec15ac70b83e57f2 (libosmocore) Depends-on: I5a2bb95d05d06d909347e2fb084a446ead888cb3 (libosmocore) Depends-on: I54f110acc3acccb362f6e554324d08cc42b7c328 (libosmocore) Depends-on: Ia00753a64b7622a0864341f51ea49b6963543755 (libosmocore) Depends-on: Ic8f6f8aca10da23a18fab8870be7806065a34b47 (libosmocore) Depends-on: I5f67e6a9bf4cb322bd169061fee0a528012ed54d (libosmocore) Change-Id: I589ebaa2a2b7de55b7e4e975d8fd6412dd5f214b
2020-10-06Use the new NS2 libAlexander Couzens2-29/+44
Depends: Id7edb8feb96436ba170383fc62d43ceb16955d53 (libosmocore) Depends: I2a9dcd14f4ad16211c0f6d98812ad4a13e910c2a (libosmocore) Change-Id: Ib389925cf5c9f18951af6242c31ea70476218e9a
2020-09-22tbf: Don't log rlcmac_diag() output in separate linesPau Espin Pedrol1-3/+1
Output of all diag in different lines is really confusing, since the user reads a timeout ocurred and then later in another line something like "Downlink ACK was received" while no GSMTAP message shows any ACK. Change-Id: I6a7d79c16c930f0712bc73b308409ececb1946ba
2020-08-24encoding: pass pdch slot directly to encoding functionsVadim Yanitskiy1-4/+12
In order to be able to encode frequency hopping parameters, let's pass a const pointer to 'gprs_rlcmac_pdch' (PDCH slot) directly, instead of passing all related parameters separately. Change-Id: I6bccad508f0fdccc4a763211008dd847a9111a8d Related: SYS#4868, OS#4547
2020-08-24gsm_rlcmac: use consistent naming for [Extended] Packet Timing AdvanceVadim Yanitskiy1-2/+2
Change-Id: I6382c81f7569b4c5a68521c04f6b03a34bfc39dd
2020-08-18Introduce log macro helper LOGPMSPau Espin Pedrol1-12/+12
Change-Id: Ib304ced06531a5154b7ec8bf87f9717dfd7d1397
2020-07-09pdch.cpp: Store TLLI promptly on newly created TLLI in rcv_resource_requestPau Espin Pedrol1-90/+90
The TLLI is tried to be updated later anyway during tbf_alloc_ul(), but this way it's clear that information is stored where it belongs as soon as possible. The change already shows clearer log lines in TbfTest.err. Change-Id: I20ce4eb94ecf85ce2835275d0056d9ecd1b558c3
2020-07-09pdch.cpp: Fix wrong annoying log line about non-scheduled ResourceReq receivedPau Espin Pedrol1-1/+1
It's perfectly fine receiving a Resource Request message under some circumstances (as stated in the comment added in the commit). To print issues only under non-expected circumstances, the function rcv_resource_request need to be refactored: * Destroying older UL_TBF is delayed because it is needed further down. * When the old UL_TBF is FINISHED, it's an acceptable time to receive a Resource request, so we check if that's the case and don't print a warning in that case. Change-Id: I4b4367126d6a16055cd2f45afc4a6b9c15a7c980
2020-07-09pdch.cpp: Avoid resetting (egprs_)ms_class to unknown if not found in MS ↵Pau Espin Pedrol1-6/+0
RadioAccCap If the information is not found in the message, 0 (unknown MS class) will be returned. If the MS already had some previous information on the MS class, let's not lose it by setting it back to 0. Take the opportunity to drop related log lines which are no needed, since set_(egprs_)ms_class() functions already log the value changes. Change-Id: Icd52209fd4395d78dc770e7869d1b1fe45a18ca0
2020-07-09pdch.cpp: Avoid dropping existing DL TBF during rcv_resource_requestPau Espin Pedrol1-28/+0
There's no real good explanation on why the DL TBF is dropped there, since PKT RESOUCE REQUEST is used basically during UL TBF establishment. Also, as decribed by TS 44.060 11.2.16 "Packet Resource Request": """ This message is sent on the PACCH by the mobile station to the network to request a change in the uplink resources assigned. """ Change-Id: Iab4afb66f0d671f7ad54909d2685a1613e12ab4d
2020-06-26tbf: Drop unneeded method set_tlli_from_ulPau Espin Pedrol1-2/+1
Since commit 322456ed474a733094c9f3e240295b469023ad14 (and previous one), it is expected that a tbf object ALWAYS has a MS object referend to it, even if it's a temporary copy which will later be merged when TLLI/IMSI is retrieved and it is found that several MS objects relate to the same MS. The purpose of set_tlli_from_ul was mainly to update TBF's ms() to old_ms before going through usual tbf->update_ms() path. That's not really needed since ms() is already always set and TBFs for old_ms are already freed in update_ms() and children function. Change-Id: Ie8795e7a02032336e53febb65c11f9150c36d2a0
2020-06-03bts: refactor handling and parsing of RACH.indVadim Yanitskiy2-170/+111
This patch is a set of tightly related changes: - group all RACH.ind parameters into struct 'rach_ind_params'; - group Channel Request parameters into struct 'chan_req_params'; - get rid of egprs_mslot_class_from_ra(), priority_from_ra(), and is_single_block(), introduce unified parse_rach_ind(); - improve logging, get rid of redundant information. This is needed for proper EGPRS Packet Channel Request handling. Change-Id: I5fe7e0f51bf5c9eac073935cc4f4edd667c67c6e Related: OS#1548
2020-05-23RLC/MAC: implement decoding of EGPRS Packet Channel RequestVadim Yanitskiy3-0/+83
According to 3GPP TS 44.004, section 7.4a, two alternative RACH block formats are specified: 8 bit (1 octet) and 11 bit. This change adds CSN.1 definitions for 11 bit EGPRS Packet Channel Request as per 3GPP TS 44.060, table 11.2.5a.2. Change-Id: I96df3352856933c9140177b2801a2c71f4134183 Related: OS#1548
2020-05-23csn1: fix: never use enumerated types in codec structuresVadim Yanitskiy1-6/+6
I faced a problem while working on EGPRS Packet Channel Request coding support: the unit test I wrote for it was passing when compiled with AddressSanitizer, but failing when compiled without it o_O. Somehow this was observed only with GCC 10. Here is a part the standard output diff for that unit test: *** testEGPRSPktChReq *** decode_egprs_pkt_ch_req(0x2b5) returns 0 - ==> One Phase Access + ==> unknown 0xdd5f4e00 decode_egprs_pkt_ch_req(0x14a) returns 0 - ==> One Phase Access + ==> unknown 0xdd5f4e00 decode_egprs_pkt_ch_req(0x428) returns 0 - ==> Short Access + ==> unknown 0xdd5f4e01 At the same time, debug output of the CSN.1 decoder looked fine. So WYSINWYG (What You See Is *NOT* What You Get)! As it turned out, this was happening because I used an enumerated type to represent the sub-type of EGPRS Packet Channel Request. typedef struct { EGPRS_PacketChannelRequestType_t Type; // <-- enum EGPRS_PacketChannelRequestContent_t Content; } EGPRS_PacketChannelRequest_t; The problem is that length of an enumerated field, more precisely the amount of bytes it takes in the memory, is compiler/machine dependent. While the CSN.1 decoder assumes that the field holding sequential number of the chosen element is one octet long, so its address is getting casted to (guint8 *) and the value is written to the first MSB. // csnStreamDecoder(), case CSN_CHOICE: pui8 = pui8DATA(data, pDescr->offset); *pui8 = i; // [ --> xx .. .. .. ] Let's make sure that none of the existing RLC/MAC definitions is using enumerated types, and add a warning comment to CSN_CHOICE. Affected CSN.1 definitions (unit test output adjusted): - Additional_access_technologies_struct_t, - Channel_Request_Description_t. Change-Id: I917a40647480c6f6f3b0e68674ce9894379a9e7f
2020-05-20Get rid of class GprsCodingSchemePau Espin Pedrol2-112/+82
We have same kind of object splitted into two layers, in coding_scheme and gprs_coding_scheme. Let's merge them together and get rid of the class, which is not really useful because it's only a set of functions operating on one enum value. This change also fixes gcc 10.1.0 error about memseting a complex type in rlc.h init(). Change-Id: Ie9ce2144ba9e8dbba9704d4e0000a2929e3e41df
2020-05-19tbf_ul: Fix UL ACK not sent to MS if intermediate UL block is lostPau Espin Pedrol2-0/+4
In normal conditions ACKing of UL blocks is only sent every SEND_ACK_AFTER_FRAMES (20) frames. Which means if CV=0 is received (and hence no more packets are received) less than 20 frames before a lost, the PCU won't ask for a retransmission and wait there until some timer destroys the TBF. This issue is shown by TTCN3 test PCU_Tests.ttcn TC_ul_intermediate_retrans. Unit tests triggering this condition are adapted. Some similar tests are not triggering it because BSN/CV relation being used is totally wrong (like CV=0 being sent on a BSN with previous value than others). Change-Id: I9b4ef7b7277efa645bdb5becf2e9f6b32c99a9b1
2020-05-18rlc: Move prepare() function out of gprs_rlc_data structPau Espin Pedrol1-1/+1
Newer gcc 10.1.0 is erroring due to memset being applied on a complex type, so let's start by removing this only function outside of the struct. Change-Id: I20426557d9b3049ab275fadb92e10ea8a860a119
2020-05-15pcu: tbf_ul: Clean up maybe_schedule_uplink_acknack()Pau Espin Pedrol1-12/+12
Get rid of checking all conditions twice, and update one log message. Change-Id: I95831991b01961e4b7faddb08d27133acb0ab4d4
2020-05-14Drop unneeded arg 'ta' in tbf_alloc_ul()Pau Espin Pedrol1-11/+11
The function is simply setting the ta on the ms, so simply make sure ta is set on callers before passing the ms object. Change-Id: Iebb9c57f458690e045ddc45c800209ad8cf621e0
2020-05-13gprs_debug: Use only LOGL_NOTICE as default loglevelPhilipp Maier2-0/+4
The default loglevels of some log categories are configured to LOGL_INFO. This is still to verbose, lets use LOGL_NOTICE here. Change-Id: Ibb1cd1a94fb4fdd0147e073f8c1c82562c2c14ef Related: OS#2577
2020-05-12Expect ms object to exist before calling tbf_alloc_dl_tbf()Pau Espin Pedrol5-200/+205
Same as previous commit, this time for the DL counterpart. Change-Id: I87f6cdf8288a688466020bda0874e68b57aa71c4
2020-05-12Expect ms object to exist before calling tbf_alloc_ul_tbf()Pau Espin Pedrol4-62/+74
It's really non-sense from architectural point of view to pass an optional pointer to the MS holding the TBF and creating it otherwise. TBFs shouldn't be creating MS they belong too. This simple change requiring so many code line changes really exhibits how badly entangled the object relationship is. Another commit will follow doing the same for dl tbf. Change-Id: I010aa5877902816ae246e09ad5ad87946f96855c
2020-04-20TBF/UL: fix rcv_data_block_acknowledged(): print the actual TLLIVadim Yanitskiy1-2/+2
Change-Id: I71b5c656d4b318d11bd5fe2b5d163c3a06e09a6a
2020-03-30Move gsm_rlcmac.cpp -> .cPau Espin Pedrol1-1/+3
Original file from wireshark.git (packet-gsm_csn1.c) is being built and maintained as a C file. There's no real need for us to maintain it as a C++, and doing so will make both files derive over time (as already happened). Let's keep it as a C compiler (which btw seems to be more strict) to make it easier to port patches back and forth wireshark.git. Take the chance to move some declarations we added to csn1.h to be able to build it out of wireshark. Let's keep those in a separate header file to ease looking for differences. Change-Id: I818a8ae947f002d35142f9f5473454cfd80e1830