aboutsummaryrefslogtreecommitdiffstats
path: root/src
AgeCommit message (Collapse)AuthorFilesLines
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-22Add tests for pcu_lsb()Max1-0/+4
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-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 timersMax5-77/+177
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 loggingMax5-140/+105
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 loggingMax5-26/+27
* 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-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 overrideMax1-7/+7
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-29Call osmo_init_logging() before static BTS constructorHarald Welte1-0/+11
The BTS constructor uses functions of libosmocore that could in turn want to log something. This requires the logging to be initialized before. The only way to achieve this is to add an __attribute__((constructor)) function *before* the BTS constructor is being run. This solution might not be elegant, but I guess it's the only way to initialize a C library before calling C++ constructors of global static instance of a class. In case anyone comes up with a better / cleaner approach, we can always change later. This change requires libosmocore >= 0.10.1, as only that permits multiple calls to osmo_init_logging() which may now occur. Change-Id: I28dc4f0db229518348c92413959fed5ae85d753d
2017-10-24gb: allow only packets from a specific SGSNPhilipp Maier1-0/+2
Each PCU has a specifically assigned SGSN, which may send packets to the PCU. Ensure that no one else except the configured SGSN can send packets to the PCU. Change-Id: Ic2009039fab7cf0fba916556239747ae5b410366 Depends: libosmocore Ifeb201d9006eec275a46708007ff342cdfc14e45
2017-10-10cosmetic: reformat multislot classes tableMax1-31/+32
Add header similar to the one used in the standard, reformat to facilitate further extention. Change-Id: I786df6b154c0668d2cefa0ea84d7dea336b0da1d Related: OS#2282
2017-09-08TBF-DL: extend index check for RLC block copyMax1-0/+3
Log number of RLC blocks to copy and assert if trying to copy too many blocks. Change-Id: I01cbc26ec67400a44e9fff3f9a30d729320380f9 Fixes: CID143069
2017-09-08Assert valid CSMax2-0/+8
The coding scheme converted to number make sense only if it's valid. This is implicitly assumed by the code using this conversion as non-zero value. Make those assumptions explicit with OSMO_ASSERT(). Change-Id: I8f62627b7b7b89dfa1b0d1a7e71b95b2c40fdffa Fixes: CID70466
2017-09-04cosmetic: convert explicit warnings to fixme/todoMax6-7/+9
We do not use this style (#warning as an issue tracker replacement) in any other Osmocom project. Also those warnings clutter compiler output making it harder to spot warnings for the actual code. Change-Id: I72070e2a027e60e8b80c12ccfa23ff075434689f
2017-09-01Move gsmtap and accounting into separate functionMax1-13/+31
Change-Id: I3609da1850244f25bd4611c9d25795ca379d6325
2017-09-01Support receiving SI13 from BTSMax6-1/+33
* store SI13 in BTS struct * check and handle BCCH SAPI Change-Id: I610a93ce23725b182ec14e3507331295bd542f74 Related: OS#2400
2017-09-01cosmetic: tighten direct-phy related codeMax1-11/+11
* move the code to related SAPI case * get rid of 'unused variable' warning if direct-phy is not used Change-Id: If8cae6f3579cfdecc25bbe1d08fa88a4f664a03b
2017-08-18EDGE: Fix UL link adaptation.Minh-Quang Nguyen4-5/+100
We have seen that UL MCS5- MCS9 link adaptation has not been implemented in current PCU implementation. If the MS slowly moves far away from the BTS, the UL MCS will always stick at MCS9 no matter UL link quality values leading to poor data service experience. The UL MCS is expected to adapt from MCS9 -> MCSx due to bad UL quality. Below PCU traces indicate that UL MCS is quickly increasing to MCS9 (max MCS 9 was used in this test) and it never changes to other UL MCS due zero thresholds. <0004> gprs_ms.cpp:670 MS (IMSI ): Link quality 23dB (23dB) left window [0, 0], modifying uplink CS level: MCS-6 -> MCS-7 <0004> gprs_ms.cpp:670 MS (IMSI 000): Link quality 23dB (23dB) left window [0, 0], modifying uplink CS level: MCS-7 -> MCS-8 <0004> gprs_ms.cpp:670 MS (IMSI 000): Link quality 23dB (23dB) left window [0, 0], modifying uplink CS level: MCS-8 -> MCS-9 Change-Id: I9272c337ad6399da4a47cc6e2736e25f24e099d8
2017-08-17GSMTAP: fix category checks in pcu_rx_data_ind and pcu_l1if_tx_ptcchHarald Welte1-2/+2
We needto shift the PCU_GSMTAP_C_* constants before comparing against the mask of enabled GSMTAP categories. Change-Id: Ieb9332c65ed7bd57baf1aeab5ab722f92fc23b24
2017-08-14Simplify polling troubleshootingMax5-21/+53
* introduce enum describing poll kind and use it in set_polling() * move state change into set_polling() * move logging into set_polling() and unify output * move duplicated code into static function * adjust tests to match unified logging output Change-Id: I14074207f8bbc18b3ebd60875bb99a0a3a4b399d Related: OS#1524
2017-08-14Move DL assignment to TBF-DLMax5-39/+38
This function does not really belongs to BTS and it heavily relies on direct access to TBF-DL members anyway. Change-Id: I04584103018675a2f35cfb565473bfd81a208d7c Closes: OS#1540
2017-08-14Move common code into functionsMax1-57/+36
* separate channel request responder into inline function * move generic TBF poll check into inline function Change-Id: I9ec3ab8de100f0bc75044f55ac769d1083d52806 Related: OS#1539
2017-08-14Encapsulate handling of UL ACK timeoutMax4-21/+39
Use helper methods instead checking and manipulating flag directly. Change-Id: Ia3f009c52118db95b38a077e08eecda844e7f8d1 Related: OS#1539
2017-08-09Add pcu-socket vty configPau Espin Pedrol4-1/+28
osmo-bts already supports configuring a different path for the bts<->pcu socket by using the 'pcu-socket' config field. Change-Id: I9b3e1171da467519750b201849ec892a1e318129
2017-07-29GSMTAP: Ad PTCCH as separate gsmtap categoryHarald Welte3-1/+5
This allows us to send GSMTAP for PTCCH only if requested by user/vty Change-Id: Id720f4bebdce7f6152fbddddbe05036638c5866e
2017-07-29GSMTAP: Fix logical channel of downlink PTCCHHarald Welte1-1/+1
Change-Id: I29ecc968d56d4d0165cffa206297c42d6fb02cf4
2017-07-29GSMTAP: Fix channel type for data blocks: PDTCH instead of PACCHHarald Welte2-3/+3
PACCH is used only for RLC/MAC control messages, while PDTCH is used for data. Change-Id: I6c912e17d8c8d4178096679a541e61eeeb4b6643
2017-07-29BSSGP: Improve logging of received messagesHarald Welte1-39/+73
We now differentiate clearly between messages that a) we don't expect based on our reading of the spec b) we have not implemented yet (but should) c) we do not even know of Also, unify the log string formats and provide BVCI whenever possible. Change-Id: Ie32f5771d49960547ec5d7611f96a74facc1b035
2017-07-29Remove #warnings that have been adressed since 2015Harald Welte1-2/+0
In commit 939904672961fa7e28397e27f942a7d1fff4bbdf the lookup by TLLI, TLLI-OLD and IMSI has been implemented, but the corresponding compile-time warning was never removed. Change-Id: I7a1767bc7cab01048e851fd4e63112bc676d6c78
2017-07-28BSSGP: Use libosmocore for BVC-RESETMax1-5/+22
Implement proper BVC RESET procedure by using libosmocore code to handle BVCI reset and initiate PTP BVC reset if necessary. Requires I9bf8f4dd784ccddbb9926492a85fff3293a0e913 in libosmocore. Related: OS#1638 Change-Id: I718c949759688cb34ce6bcbb3da2092fcdfa6989
2017-07-21Introduce GSMTAP categoriesHarald Welte7-48/+182
When looking at GSMTAP output so far, one is easily overwhelmed by way too much information being presented. A lot of is consists of DUMMY frames, which are probably of lowest interest, ever. A concept similar to the "gsmtap-sapi" of OsmoBTS is introduced, by which the user can configure which particular categories (uplink or downlink control or data, gprs or egprs, ...) he actually wants to see in his logs. Change-Id: I297183690e98a7234dfc1608c18847d8981306e4
2017-07-12check for missing result of rate_ctr_group_alloc()Harald Welte2-0/+26
In case the counter group allocation fails, we must handle this gracefully and fail the allocation of the parent object, too. Change-Id: Id6d780c67b4af15aaa5c6f2b8b00f2a0b70a7385 Related: OS#2361