aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)AuthorFilesLines
2018-01-12Fix jenkins.sh to match jenkins job axis filterMax1-2/+2
The 'yes/no' values are automatically converted to True/False upon jenkins job instantiation. Let's use those directly. Change-Id: Ib2100c8345d1f07f488de8170348fec9f877dd9b
2018-01-12Don't access TBF internals in vty functionsMax1-2/+2
Obtain corresponding window object of UL/DL TBF by using proper accessor function instead of direct access to private member. Change-Id: I89bcd2c2b0b6f120d40d20fd43c1e516de3e3950
2018-01-12TBF: unify EGPRS window calculationMax5-70/+57
Move actual calculation into shared function and use it to set window size for TBF. TBT test output requires cosmetic adjuestements due to extended debug output. Change-Id: Ib9f4a277082da3c71007f5f3b4f2acac8b994540 Related: OS#1759
2018-01-12TBF-DL: move priority computation into functionMax2-26/+37
Improve readability by moving priority computation into separate function. Change-Id: Icdca0106a544036eaa94a25f0d4f84e4282f4568
2018-01-12TBF: move window parameters to UL/DL levelMax6-32/+42
The UL and DL TBF use different classes implementing window management. Hence it's better to use it explicitly instead of using the common window management superclass inside common TBF superclass. While at it, also remove the direct access to window class - use accessor functions instead. Related: OS#1759 Change-Id: I0b55aa8947db65f7206adcf53ea32b74a831d9e6
2018-01-12Avoid code duplication in TBF testMax1-122/+75
Move repetitive checks into corresponding macros to avoid copy-pasted code. This also enables strickter checks some of which were apparently omitted while copy-pasting. This is part of preparation work to move to separate UL/DL windows. Related: OS#1759 Change-Id: If7aa72f5aa66c5e9c255542c066b5494c098aab2
2018-01-12TBF-UL: add simpler test helperMax2-4/+9
Add function to set both V_R and V_Q values to 0 which is useful for TBF test. Related: OS#1759 Change-Id: I719abfbd5b88c694cbbd69d5c4dcb42baaca91b2
2018-01-12Clarify RACH-related interfacesMax2-82/+87
* make is_11bit parameter into bool * remove is_single_block() from public interface and mark it as static * move logging outside of if ladder * move side-effects from is_single_block() into separate static functions * simplify UL-TBF allocation in case of 11-bit RACH This immediately makes it obvious that priority is never actually used despite being computed - seems like a leftover from merge of incomplete patch series. Change-Id: If189b7166a29a87ffb17a7a9bc560f674851fd53 Related: OS#1548
2018-01-12TBF: cleanup state flag handlingMax5-33/+36
* introduce generic function to check whether particular flag was set for'a TBF and clear it if necessary. Use this instead of clear_poll_timeout_flag() * add function to explicitly set assignment and appropriate state flags Overall this makes the code easier to read and debug. Related: OS#1759 Change-Id: Ic4560280c72f91700f2e19c6c7f6658dc29625c2
2018-01-12Make TBF state privateMax2-5/+2
Let's make sure no external function can mess with the TBF state. Change-Id: I217f4c4bac21dd584c8682928a080a1a6e9507e1
2018-01-04cosmetic: clarify coding scheme and puncturingMax5-45/+45
* use appropriate types for coding scheme parameters * add comment regarding possible number of RLCMAC blocks The code in create_dl_acked_block() has underlying assumption that rlc.num_data_blocks can never be more than 2, which is true and is enforced by appropriate asserts but is not obvious when looking at the function code alone. It's equally hard for Coverity which leads to false positives in scan. Lets' make this assumption explicit by putting it into for(;;) condition alongside with corresponding comment. Fixes: CID143070 Change-Id: If599a6c8a6ef56d847604fcf41bb71decccd8a78
2018-01-04window: move encoding into functionsMax5-31/+46
* move window size encoding and writing into separate functions * introduce necessary TBF wrappers to avoid direct m_window access This is part of preparation work to move to separate UL/DL windows. Related: OS#1759 Change-Id: I60184d5049bc7d7b119df5a9eb82d1c4b788c840
2018-01-04TBF-DL: mark rcvd_dl_ack() parameters as booleanMax3-10/+10
The final(_ack) parameter of rcvd_dl_ack() only used as boolean - mark it as such. Change-Id: Icc4d68f049a45d4b42c5594f50594ff0d44c1bac
2018-01-03Fix llc_queue_size() typeMax2-2/+2
It either returns 0 or LLC queue size() which has size_t return type. This means it can never be negative - hence it's better to use size_t as return type. Change-Id: I2a6e849d349ab12854976bd0d68537a370a9c83d Fixes: CID181478
2018-01-02TBF: bail out for unknown timersMax1-0/+2
Return right after logging error if attempting to start or stop unknown timer. Change-Id: Ie6ae564d41a5e03270685c6bafb3504278eb3551 Fixes: CID181512, CID181514
2018-01-02TBF: log timer invocation sourceMax5-23/+29
When troubleshooting TBF timers we're not only interested in timer duration but also in the code which triggered it. Let's use LOGPSRC to log it: wrap t_start() in a macro for convenience. Change-Id: If5f883ae52c469e5158bad24da9904fdc455582f Related: OS#2407
2018-01-02TBF: unify timer handlingMax4-68/+32
Use generic timer handling infrastracture to handle assignment/reject internal timer. Rename timer array accordingly. Use defines with explicit second/microsecond values to make it more readable. Change-Id: I63fb7e6f0695383a83472c836a381a055f64690b
2017-12-28Add optional profiling supportMax1-0/+9
This facilitates the use of programs like uftrace. It's disabled by default due to associated overhead. Change-Id: I5c16988cefa46e0b958030c0f3bff9efc5b4979d
2017-12-22Add tests for pcu_lsb()Max3-0/+279
This utility functions is used by TBF allocation routines and only tested indirectly through allocation test. Let's add proper exhaustive test which checks all uint8_t values. This also requires adding missing include to pcu_utils.h Change-Id: If08a7f0d31f0e5ad8a5efa5885880aed19c329ab
2017-12-21Enable sanitize for CI testMax1-1/+2
Change-Id: Ia33ffb9b25df587706367bc24925cf9cead3b9a0
2017-12-21Add --enable-sanitize configure optionMax1-0/+9
Change-Id: Idb2c1d6057012ed2f032e7504387a0767d02d75b
2017-12-21Add function to get max supported MS classMax2-1/+7
It's useful for allocation tests. Change-Id: I31d503af700ec3364042ff7e661710953cacf9f8 Related: OS#2282
2017-12-21Fix warningsMax1-2/+2
Fix warnings detected by compiler and coverity scan. Change-Id: If463c7f8769e18d3df74837f0cb0f545cca9b23e Fixes: CID181479
2017-12-20TBF: add N3101 counterMax3-0/+30
Properly reset the counter when receiving valid RLCMAC block and update it when no data is received as per 3GPP TS 44.060 §8.1.1.1 Change-Id: I2f79c6153dc4073c9d293b2824979e6381576682 Fixes: OS#2407
2017-12-20TBF: implement independent T31xx timersMax6-79/+179
Previously TBF got single timer so the pending timer was automatically cancelled when new one was scheduled. Let's make it more robust by implementing independent T31 xx timers from 3GPP TS 44.060 §13.2 with corresponding start/stop functions and counters. The semantics of the timers is preserved as before: pending timers are restarted unconditionally. It might be neecessary to change this later on after spec review. N. B. T0: used for assign/reject timeouts, have to be properly attributed and documented first. Change-Id: I0305873ca47534f53441247217881da59625e1f7 Related: OS#2407
2017-12-20Introduce LOGTBF* for consistent loggingMax6-1015/+980
When troubleshooting complex issues with TBF lifecycle, it's much easier to follow the logs which are consistently formatted. Add LOGTBF*() macro similar to struct-specific log routines we use in other Osmocom project and use it to log TBF-related messages in a unified way. Tweak test output accordingly. Related: OS#2407 Change-Id: I388249afefc32d2f6e5cb5e5abc6daf4dbd284ea
2017-12-18Fix tests after rate_ctr changeMax1-1/+9
Recent change lin libosmocore disallow registering rate_ctr with the same name and indexing multiple times. To accommodate to this check if rate counters arealready allocated (by static allocator of BTS singleton for example) and register rate counter with different index. This fixes the tests for now but eventually we'll remove the BTS singleton which will allow us to remove this hack. Change-Id: I7c552ce653b44ec3a31049641728926adc07361d Related: OS#2757
2017-12-18Remove unused includes and forward declarationsMax12-24/+0
Change-Id: I59da04edd1b8ff965bbfbe00ccae1f7c9b6e5301
2017-12-15TBF: remove unused variableMax2-5/+0
The num_T_exp is write-only so it can be safely dropped. Change-Id: I94d83ca8c9b2f0732b53fdf42b17ba93cd7f1c15
2017-12-15TBF-DL: fix misleading idle time checkMax1-1/+1
The dl_tbf_idle_msec is uint32_t so it cannot be < 0. Change-Id: Ic88cb4698bcb9be52a5179529f81b8728bf4f93f
2017-12-14TBF: move EGPRS enablement into (U|D)L-TBFMax2-6/+15
This is preparation patch for transition to separate UL/DL window variables instead of current shared generic window. The setting of window parameters is performed in functions specific to UL/DL TBFs but the general EGPRS flag remains the same and is set via the same function which is now marked as protected since it's only meant to be used by UL/DL subclasses. Related: OS#1759 Change-Id: I6056194b28a1eb9d69093d1dfdc65a11bc1fc579
2017-12-13DL window: constify resend_needed() functionMax2-2/+2
It doesn't change any state so mark it as const. Change-Id: I5d672bfd654198aebb187772de464c52b3209435
2017-12-06vty: print class and TBFs for each MSMax1-2/+6
It's handy for troubleshooting to get quick overview of per-MS TBF allocations and MS [EGPRS] classes. Change-Id: Ie79c20f86da6db4565654b0f5856f4fddd83ef96
2017-12-05TBF: expand timer loggingMax6-341/+342
* log timer values * log start/stop cause * update test output as necessary This simplifies debugging issues with TBF timers. Related: OS#2407 Change-Id: Ib8e537416af9bec5d447356286f44e9e8bbf1b7a
2017-12-05TBF: fix compiler warning in testMax1-6/+3
tbf/TbfTest.cpp: In function ‘void egprs_spb_to_normal_validation(BTS*, unsigned int, unsigned int)’: tbf/TbfTest.cpp:2788:26: warning: ‘<<’ in boolean context, did you mean ‘<’ ? [-Wint-in-bool-context] bsn1 = (egprs2->bsn1_hi << 9) || (egprs2->bsn1_mid << 1) ~~~~~~~~~~~~~~~~~^~~~~ tbf/TbfTest.cpp:2788:53: warning: ‘<<’ in boolean context, did you mean ‘<’ ? [-Wint-in-bool-context] bsn1 = (egprs2->bsn1_hi << 9) || (egprs2->bsn1_mid << 1) ~~~~~~~~~~~~~~~~~~^~~~~ tbf/TbfTest.cpp:2825:26: warning: ‘<<’ in boolean context, did you mean ‘<’ ? [-Wint-in-bool-context] bsn2 = (egprs3->bsn1_hi << 9) || (egprs3->bsn1_mid << 1) || ~~~~~~~~~~~~~~~~~^~~~~ tbf/TbfTest.cpp:2825:53: warning: ‘<<’ in boolean context, did you mean ‘<’ ? [-Wint-in-bool-context] bsn2 = (egprs3->bsn1_hi << 9) || (egprs3->bsn1_mid << 1) || ~~~~~~~~~~~~~~~~~~^~~~~ tbf/TbfTest.cpp:2844:26: warning: ‘<<’ in boolean context, did you mean ‘<’ ? [-Wint-in-bool-context] bsn3 = (egprs2->bsn1_hi << 9) || (egprs2->bsn1_mid << 1) || ~~~~~~~~~~~~~~~~~^~~~~ tbf/TbfTest.cpp:2844:53: warning: ‘<<’ in boolean context, did you mean ‘<’ ? [-Wint-in-bool-context] bsn3 = (egprs2->bsn1_hi << 9) || (egprs2->bsn1_mid << 1) || ~~~~~~~~~~~~~~~~~~^~~~~ Change-Id: Idf9e5f15faa7810411ed9d68ed43cf907eea2545
2017-12-05Print error cause of pcu socket connect failurePau Espin Pedrol1-1/+2
This log is useful to quickly debug scenarions in which pcu never connects to bts. For instance, if bts is started as root and pcu is not, pcu will fail to connect to the socket and will fail with "Permission Denied". Change-Id: I6fd5736b5916cbad72b96f064929bb667ff97ded
2017-12-04TBF: log timer overrideMax2-218/+218
Currently TBF support only single Txxxx timer so scheduling another timer will cancel out the one which is already running. Until the proper fix is in place, let's at least log this situation as error. Note: cosmetic adjustement to test output is required - we do not report restart of the same timer twice because "restarting" assumes it anyway. Change-Id: I462464a1e6df937b72cad65d19cd48e95dc4db45 Related: OS#2407
2017-12-01Fix compiler warningMax2-2/+9
Move function declarations which use gprs_rlcmac_ul_tbf into tbf.h to avoid compiler warning: In file included from pcu_vty.c:15:0: bts.h:166:27: warning: ‘struct gprs_rlcmac_ul_tbf’ declared inside parameter list will not be visible outside of this definition or declaration void update_tbf_ta(struct gprs_rlcmac_ul_tbf *tbf, int8_t ta_delta); ^~~~~~~~~~~~~~~~~~ bts.h:167:24: warning: ‘struct gprs_rlcmac_ul_tbf’ declared inside parameter list will not be visible outside of this definition or declaration void set_tbf_ta(struct gprs_rlcmac_ul_tbf *tbf, uint8_t ta); ^~~~~~~~~~~~~~~~~~ Change-Id: Ic34c72c8bff6d7c775f56bb6026fec5425f7dcb4
2017-11-21Replace '.' in counter names with ':'Max1-85/+85
The '.' is an illegal character in counter names, as they are exported via CTRL interface, where '.' has a special meaning that cannot be used by strings comprising the variable name. Change-Id: I5ef60152a31dea25cb839c47edc93d5337ec3a3e
2017-11-21Move multislot table to separate fileMax4-109/+221
To facilitate testing and addition of support for new multislot classes, hide multislot class struct internals: * introduce mslot_class_get_*() functions * use those functions instead of direct access to array of structs * use ms_class as a parameter to find_multi_slot() instead of entire object Change-Id: Id796bcff1322b1e273a0e3236c66c23b9da8fac6
2017-11-21Remove unused parameterMax1-3/+2
Change-Id: Ifd6e04a29e27b1862cf9e98dec7481d3e0efcd48
2017-11-16PCU: display TA information in TBF statsMinh-Quang Nguyen1-1/+2
Change-Id: I26886224c2ad6d5a29e92203635b8bf7459730a2
2017-11-16PCU: Fix TA adjustmentMinh-Quang Nguyen5-13/+84
Promblem: 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. Change-Id: I65212f8203f1a35278890f51db038d689b2493d5
2017-11-01vty: skip installing cmds now always installed by defaultNeels Hofmeyr1-1/+0
vty_install_default() and install_default() will soon be deprecated. Depends: I5021c64a787b63314e0f2f1cba0b8fc7bff4f09b Change-Id: I6c9f928f4a4d7fd6bf37c64a64ee5d843ad5bb7a
2017-10-30jenkins: use osmo-clean-workspace.sh before and after buildNeels Hofmeyr1-1/+4
See osmo-ci change I2409b2928b4d7ebbd6c005097d4ad7337307dd93 for rationale. Depends: I2409b2928b4d7ebbd6c005097d4ad7337307dd93 Change-Id: If8aa657c4bf62ef62549fbe9dc15ce3fb018d8d9
2017-10-29Tag/Release Version 0.4.00.4.0Harald Welte1-0/+30
Change-Id: I8559585a4513dddf1516c2a2b08968556c69b7ec
2017-10-29Debian: upgrade to debhelper 9 / Standards 3.9.8Harald Welte3-4/+4
Change-Id: I1fd274d85b8fd344517d62dd9e6adc4af6de3e26
2017-10-29Debian: migrate from DEB_BUILD_HARDENING to DEB_BUILD_MAINT_OPTIONSHarald Welte1-1/+1
Change-Id: Ic400c509ecd0c6e8485e9433f144528f6abc600d
2017-10-29Debian: print test results in case of failure + clean-up autotestHarald Welte1-0/+9
Change-Id: Id912a106d42bbd9d2ad89b67d16d52cb2344eb6d
2017-10-29Debian: Cosmetic changes to control file; add better DescriptionHarald Welte1-7/+20
Change-Id: I0a8bf134757f6ed754bfefd45a9fdac255447e43