aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* vty: add macro for 'bts <0-0> trx <0-0> ts <0-7> lchan <0-1>'Vadim Yanitskiy2021-01-201-3/+5
| | | | Change-Id: If8e1ee87366a0d301e21161f2d9ddde8383cb744
* vty: fix error messages in lchan specific commandsVadim Yanitskiy2021-01-201-3/+3
| | | | Change-Id: Ic0fba0605fc8a3ffa044f65fdad03b95e7cd8331
* power_control: fix: properly print 'delta' applied to attenuationVadim Yanitskiy2021-01-202-32/+32
| | | | | Change-Id: I178df05c1a4cb982279b21d07bd69f75b44928da Related: SYS#4918
* power_control: print current RxLev and lower/upper thresholdsVadim Yanitskiy2021-01-202-60/+65
| | | | | | | This makes the logging messages easier to read and understand. Change-Id: I5f8c987054b2b01acdb9f525d06ca15bbc577070 Related: SYS#4918
* paging: refactor and optimize fill_paging_type_1()Vadim Yanitskiy2021-01-151-16/+18
| | | | | | | | | | | | | | | | | | As far as I can see from my perf measurements, bitvec_fill() is called quite often and takes 0.27% of the CPU. A more detailed look reveals that it's indirectly called by fill_paging_type_1() in order to fill the remaining octets with constant '2B'O padding. Let's optimize this function: - use memset() for padding *before* writing optional P1 Rest Octets; - conditionally initialize the bit vector for P1 Rest Octets; - use designated initializers instead of memset(). It's generally better to avoid using bitvec_fill() when using memset() is possible, because the former operates on bits rather than bytes. Change-Id: I90473356b396e5dd9326598aca025afacca4afc8
* contrib/jenkins: don't build osmo-gsm-manualsOliver Smith2021-01-131-1/+0
| | | | | Related: OS#4912 Change-Id: I8ab46680f9b753408e7ac6ef1635f997747325e5
* power_control: BS power shall not be reduced on C0Vadim Yanitskiy2021-01-131-1/+2
| | | | | | | | It does not make sense to trigger the BS power control loop on C0, as it's only allowed to reduce power on additional transceivers. Change-Id: I4fdfe097ae6f9edde5f39ed4da8a559a14b3b38f Related: SYS#4918
* l1sap: use rxlev_full when no DTX was usedPhilipp Maier2021-01-131-1/+11
| | | | | | | | | At the moment only rxlev_sub is used to decide when the facch repetition should be activated, regardless if DTX is used. Lets check if DTX is actually used and use rxlev_full when DTX is not applied. Change-Id: I01ba57cf661f0e41b8df209c905f8d135013e472 Related: SYS#5114
* l1sap: acch_repetition fix hysthereis threshold tablePhilipp Maier2021-01-121-4/+8
| | | | | | | | | | | The table in repeated_ul_sacch_active_decision() is derived from the second table in GSM 05.08 8.2.4 but the first table would be correct. Also the lower threshold is not properly choosen. A lower threshold, that derives from upper threshold shifted by 2 makes sense (BER must improved by 2 RXQUAL steps before repetition is turned off.) Change-Id: I1d9b5c8abb79938cdecdafed84ed2e5d47e0bd3a Related: SYS#5114
* power_control: rework handling of DL RxQual measurementsVadim Yanitskiy2021-01-084-70/+98
| | | | | | | | | | | | | | | This change makes BS power control loop: - take the lower RxQual threshold (L_RXQUAL_XX_P) into account, so the BS power is increased only if RxQual exceeds this threshold; - apply the configured increase step size instead of reducing the current attenuation by half. MS power loop is not affected, it does not even handle RxQual yet. Change-Id: Ib3c740b9a0f3ba5dfb027e144dc13f456cb26ae2 Related: SYS#4918
* power_control: use more reasonable reduce step sizeVadim Yanitskiy2021-01-087-85/+124
| | | | | | | | | | It makes more sense to use a reduce step size that is smaller than the increase step size. This way both MS/BS power control loops would be able to react quickly of the signal gets weaker, while the good signal would not trigger radical power reduction. Change-Id: Ie358fd828a68bfa1d23559197e8df8478fb4535e Related: SYS#4918
* power_control: properly track the first initial stateVadim Yanitskiy2021-01-082-1/+3
| | | | | Change-Id: I16e7474b5affbd90855a2e407b305e9dec581dfa Related: SYS#4918, SYS#4917
* power_control: generalize measurement pre-processing stateVadim Yanitskiy2021-01-083-22/+35
| | | | | | | This way EWMA based filtering can also be applied to RxQual. Change-Id: I439c00b394da670e314f217b3246cc85ce8213c6 Related: SYS#4918, SYS#4917
* power_control: migrate MS/BS control loops to the new paramsVadim Yanitskiy2021-01-0814-154/+182
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | In change [1] the new power control structures and default params were introduced. In change [2], the existing VTY commands for MS power control in the BTS were deprecated and changed to use the new structures as storage. Finally, in change [3], handling of the power control parameters on the A-bis/RSL was implemented. This change is the final logical step in the mentioned chain: it makes both MS/BS power control loops use the new parameters, and removes the old structures. The actual implementation of both power control loops remains the same, however the expected output of some unit tests for the Downlink loop needs to be changed: - TC_fixed_mode: disabling dynamic power control becomes a separate step of the test script since the field 'fixed' is removed; - TC_rxlev_target: RxLev thresholds are printed 'as-is'. Not all of the new parameters are used by the power control loops yet. Further improvements to be done in the follow up commits. [1] I6d41eb238aa6d4f5b77596c5477c2ecbe86de2a8 [2] Icbd9a7d31ce6723294130a31a179a002fccb4612 [3] I5a901eca5a78a0335a6954064e602e65cda85390 Change-Id: Ib18f84c40227841d95a36063a6789bf63054fc2e Related: SYS#4918
* vty: add a command to show GPRS related infoVadim Yanitskiy2021-01-071-0/+70
| | | | | | | | | | | | | | | | Here is a sample output: OsmoBTS# show bts 0 gprs BTS 0, RAC 0, NSEI 101, BVCI 2 Cell NM state: Oper 'Enabled', Admin 'Unlocked', Avail 'OK' NSE NM state: Oper 'Enabled', Admin 'Unlocked', Avail 'OK' NSVC0 (NSVCI 101) NM state: Oper 'Enabled', Admin 'Unlocked', Avail 'OK' Address: r=127.0.0.1:23010<->l=0.0.0.0:55385 NSVC1 (NSVCI 0) NM state: Oper 'Disabled', Admin 'Locked', Avail 'Off line' This command is useful for debugging NS connection problems. Change-Id: I149eea0b1c109020406eb67c9082c335a77aab06
* power_control: handle MS/BS Power control params on A-bis/RSLVadim Yanitskiy2021-01-071-14/+229
| | | | | | Change-Id: I5a901eca5a78a0335a6954064e602e65cda85390 Depends: I2f4ed56837dd479dbbd10c0a7df0ed7565d3946a Related: SYS#4918
* power_control: vty: deprecate 'uplink-power-control' commandsVadim Yanitskiy2021-01-071-24/+62
| | | | | | | | | | | | | | MS/BS Power Control parameters have been recently moved to the BSC and now signaled to the BTS over the A-bis/RSL link. Let's make sure that the existing VTY commands for Uplink Power Control do: - trigger deprecation warnings if present in the config file, - not show up in the online VTY help nor VTY reference, - affect the fall-back parameters in 'struct gsm_bts', - still get printed by 'show running-config' command. Change-Id: Icbd9a7d31ce6723294130a31a179a002fccb4612 Related: SYS#4918
* power_control: vty: re-use cfg_bts_ul_power_target()Vadim Yanitskiy2021-01-071-17/+14
| | | | | | | This reduces code duplication by defining an alias. Change-Id: I37f51d426fcf008c9d9e933827de70ab7b072a94 Related: SYS#4918
* osmo-bts-trx: vty: clarify and improve some deprecation messagesVadim Yanitskiy2021-01-071-4/+8
| | | | | Change-Id: I22b69eccfa50d178bd36bf770f7158ec441c9923 Related: SYS#4918
* major README uppdateHarald Welte2021-01-061-11/+17
| | | | | | | | * use https for hyperlinks * update known limitations * VTY manuals are now per backend Change-Id: Ib897e0248299b9a105140090528b790f53c16e40
* sysinfo: fix less-than-zero comparison of an unsigned valueVadim Yanitskiy2021-01-051-1/+1
| | | | | | | size_t is an unsigned type, while get_si4_ro_offset() returns int. Change-Id: I3b216b70fbcc653ced734835ccb2c7f1932d9f0a Fixes: CID#215888
* l1sap: fix: enable UL SACCH repetition if RxQual threshold is 0Vadim Yanitskiy2021-01-051-0/+6
| | | | | | | | | | It is expected that setting RxQual threshold to 0 would make the L1SAP logic enable repetition for both Uplink SACCH and Downlink FACCH unconditionally. However, this was only valid for the later. Let's add the missing check and make it consistent. Change-Id: Ia44a134e7f28ea990798d1b79c87b644504c0876 Related: SYS#5114
* power_control: add VTY introspection commands for MS/BS paramsVadim Yanitskiy2021-01-041-16/+103
| | | | | Change-Id: I34095673bf49deb390d5e8383c4ee05a6915b82f Related: SYS#4918
* power_control: check-in new parameters and default valuesVadim Yanitskiy2021-01-046-6/+107
| | | | | | | | | | | | | | | | | | | | | | | | | | For the sake of simplicity, the old structures that are still used by MS/BS power control loops are kept in place. Migration to the new structures requires additional changes to the existing power control logic, so it will be done in the follow-up changes. The new parameters are integrated as follows: + struct gsm_bts - a BTS instance: | Hard-coded default (fall-back) parameters for all transceivers. | +-+-> struct gsm_bts_trx - a TRX instance (transceiver): | Default parameters for all logical channels inherited from | 'struct gsm_bts' at start-up. May be overwritten by the | BSC using ip.access specific 'Measurement Pre-processing | Defaults' message on the A-bis/RSL interface. | +---> struct gsm_lchan - a logical channel (e.g. TCH or SDCCH): Connection specific parameters inherited from 'struct gsm_bts_trx'. May be overwritten by parameters sent by the BSC in CHANnel ACTIVation and other messages. Change-Id: I6d41eb238aa6d4f5b77596c5477c2ecbe86de2a8 Related: SYS#4918
* cosmetic: sysmobts-mgr: fix whitespace indentationPau Espin Pedrol2021-01-041-1/+1
| | | | Change-Id: I8449a34998808f7e13cc5d1eafb5420b1cc0a9d4
* fix-up missed review comment in CBCH SI4 patching fixHarald Welte2021-01-031-1/+1
| | | | | | | | | This is a follow-up fix for I0ee0cf736e2fb74a6759a68101f699b4ec2ef54e get_si4_ro_offset() itself already checks if it's less than GSM_MACBLOCK_LEN, so we must check if it's not negative. Change-Id: Iba99e5de625af6bed6720a38fec26c2acc6251c0
* sysinfo.c: Fix SI4 GPRS patching which overwrote CBCH IEHarald Welte2021-01-033-9/+43
| | | | | | | | | | | | | | In Change-Id I1fd513ea03297918d15d4b28ed454f9b6dd6ebfa we introduced patching of SI4 to indicate GPRS presence in terms of PCU connection status. Unfortauntely this didn't account for optional IEs being present in SI4, and hence overwrote any CBCH related information elements, if present. This in turn meant that since the above-mentioned commit, you could have either a GPRS-capable, network, or a Cell Broadcast capable one. Change-Id: I0ee0cf736e2fb74a6759a68101f699b4ec2ef54e Related: OS#3075
* rsl: remove redundant boolean flag in rsl_rx_chan_activ()Vadim Yanitskiy2020-12-301-3/+1
| | | | | | | Checking if a given RSL IE is present is a straightforward task, so there is no need for a special boolean flag. Change-Id: I6a12930314c79b9c3efabfa575b17f78105fea4c
* vty: fix dump_lchan_trx_ts(): dump dedicated channels onlyVadim Yanitskiy2020-12-101-1/+9
| | | | | | | | | | | | | | | | | | | | | | | It does not make sense to dump CCCH/CBCH as dedicated channels: OsmoBTS# show lchan BTS 0, TRX 0, Timeslot 0, Lchan 4: Type CCCH State: ACTIVE BS (Downlink) Power Control (autonomous): Channel reduction: 0 dB (max 0 dB) TRX reduction: 0 dB Actual / Nominal power: 13 dBm / 13 dBm MS (Uplink) Power Control (autonomous): Current power level: 0, -39 dBm (max 0, -39 dBm) Channel Mode / Codec: SIGNALLING LAPDm SAPIs: DCCH --, SACCH -- Valid System Information: 0x00000060 MS Timing Offset: 0, propagation delay: 0 symbols Radio Link Failure Counter 'S': 0 so let's only dump SDCCH, TCH/F, and TCH/H. Change-Id: Id7880de56a93cc9fa4ca576b094cef35ee269822
* log: rsl_rx_chan_activ: show chan type as human readable stringNeels Hofmeyr2020-12-101-2/+4
| | | | Change-Id: I3acf6c18309d3b4093dbc295be622363cb6dbcdc
* vty: resurrect per-lchan BS/MS Power Control informationVadim Yanitskiy2020-12-091-7/+47
| | | | | Change-Id: I48812383ef0a125e83b9b3761f3f15873d3b37b4 Related: SYS#4918
* power_control: make raise/lower step limitation configurableVadim Yanitskiy2020-12-098-36/+64
| | | | | Change-Id: Ic37742f46f533865043b3dbcf16ea702e1746f98 Related: SYS#4918
* nm_channel_fsm: Fix several FSM internal transitions not being madePau Espin Pedrol2020-12-091-2/+2
| | | | | | | | | | | | During the initial implementation I used the wrong function to change state. As a result, from BSC point of view the BTS was changing state but the FSM internally was not. "Fortunately", while in state Dependency the BTS still could cope with that in order to still be operative with older osmo-bsc, so there was no major breakage, only some error log message being printed. Related: OS#4873 Change-Id: Ifd2eefc362fca0aa9e6ae102c7e6dbc1b4f295d6
* rsl: properly initialize MS/BS Power Control stateVadim Yanitskiy2020-12-081-6/+10
| | | | | | | | struct lchan_power_ctrl_state actually contains more fields, which also must be initialized on CHANnel ACTIVation. Change-Id: Id9719088fc6e9479c13e9b327a3466d9e2810a3a Related: SYS#4918
* power_control: clarify units in 'struct lchan_power_ctrl_state'Vadim Yanitskiy2020-12-061-0/+3
| | | | | Change-Id: I934f2d1e1064eed7587bc5693ef981bf449a1b81 Related: SYS#4918
* power_control: clarify units in 'struct bts_power_ctrl_params'Vadim Yanitskiy2020-12-0611-42/+42
| | | | | Change-Id: Icb059ca1f555397be116a424800e4536883b9106 Related: SYS#4918
* power_control: cosmetic: fix weird spacingVadim Yanitskiy2020-12-061-9/+9
| | | | Change-Id: Ia5661e82372f958e7cda4041d7b5a1cfb1d64afe
* power_control: implement BS (Downlink) Power ControlVadim Yanitskiy2020-12-0614-26/+878
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We already have MS Power Control, which according to 3GPP 45.008 shall be implemented in the MS to minimize the transmit power in the Uplink direction. The BS Power Control may optionally be implemented by the network side for the same purpose. Using Downlink signal measurements reported by the MS, the BSS (either BSC, or BTS) may control Downlink attenuation in a way that the transmit power remains as low as possible, or remains in a specific range corresponding to good RxLev values on the MS side. This change implements autonomous BS Power Control, that can optionally be enabled by the BSC. BS Power Control re-uses parts of the MS Power Control code, so all parameters can be configured in the same way - via the VTY interface or a configuration file. This basically means that features like hysteresis and EWMA based filtering are also available for BS Power Control. The only difference is that RxQual values higher than 0 would trigger the logic to reduce the current attenuation twice. Note that one of the unit tests ('TC_rxlev_max_min') fails, as the power step limitations for raising and lowering look wrong to me, and the related discussion is still ongoing. Change-Id: I5b509e71d5f668b6b8b2abf8053c27f2a7c78451 Related: SYS#4918
* power_control: derive calc_delta() from lchan_ms_pwr_ctrl()Vadim Yanitskiy2020-12-041-33/+43
| | | | | | | This function will also be used by the BS Power Control logic. Change-Id: I2525eb2c3f1fdb3d0847a8ad50b30a44d7741a55 Related: SYS#4918
* power_control: do not log averaged RSSI values as 'rx-current'Vadim Yanitskiy2020-12-042-6/+6
| | | | | | | | | | | | | | Similar to I3c07cb6e14acd5a988761bbc51a9c3b60fb22d87, this change is another step towards separating the common delta calculation logic from lchan_ms_pwr_ctrl(), since this function will loose access to the averaged values. On the one hand, the affected logging statements are getting less precise; on the other, logging the averaged value as the actual value ('rx-current') may be even more confusing. Change-Id: I07007e45c859b4080fbbe520ffb5ccc0bb9c4244 Related: SYS#4918
* power_control: remove a logging statement and early returnVadim Yanitskiy2020-12-042-19/+11
| | | | | | | | | | | | This change would allow to separate the common logic from lchan_ms_pwr_ctrl() and re-use it for Downlink power control. The logging statement was quite useful during early stages of development and testing of hysteresis and filtering, but now we can sacrifice it. Change-Id: I3c07cb6e14acd5a988761bbc51a9c3b60fb22d87 Related: SYS#4918
* power_control: lchan_ms_pwr_ctrl(): make use of params/state pointersVadim Yanitskiy2020-12-041-17/+15
| | | | | Change-Id: I177d82cd61d59256976007fed2f7da400b814789 Related: SYS#4918
* power_control: generalize and rename lchan_ul_pf_ewma()Vadim Yanitskiy2020-12-041-6/+9
| | | | | | | | This way EWMA based filtering logic can be used not only for MS Power Control, but also for BS Power Control. Change-Id: I16c2e1b997f2b8af44d47809420293f072335bbd Related: SYS#4918
* power_control: lchan_ms_pwr_ctrl(): use existing 'trx' pointerVadim Yanitskiy2020-12-041-1/+1
| | | | | Change-Id: Idf46e47f20f031ff9dded1be1e6c4337d7b423e7 Related: SYS#4918
* power_control: lchan_ul_pf_ewma(): do not use lchan->meas.res_nrVadim Yanitskiy2020-12-042-2/+2
| | | | | | | | | | | | | This would allow to pass only two pointers: - 'struct bts_power_ctrl_params', and - 'struct lchan_power_ctrl_state', and get rid of 'struct gsm_lchan' dependency. The later is exactly where all state variables are supposed to be kept. Change-Id: Idfefca30f4944bc722b4e9d8f1685eb77670a9db Related: SYS#4918
* power_control: generalize power control state structureVadim Yanitskiy2020-12-043-10/+13
| | | | | Change-Id: I8c6ad8d14349e8a05084c2912644c5202f951f52 Related: SYS#4918
* tests/power: rename s/power_test/ms_power_loop_test/Vadim Yanitskiy2020-12-026-9/+9
| | | | | | | There will also be bs_power_loop test soon. Change-Id: I3f58eb85e44825a159af58948f01d9ffd75bceec Related: SYS#4918
* l1sap: make sure that UL SACCH is always 23 octets longVadim Yanitskiy2020-12-021-2/+2
| | | | | Change-Id: I1c8a43337fbc1acfab3c0f0713c75ded95d69512 Related: SYS#4918
* bts: add Downlink power control parametersVadim Yanitskiy2020-12-023-5/+17
| | | | | Change-Id: I724f661e9ce5dd75f95fb7b270a89b2e2a73c951 Related: SYS#4918
* bts: generalize a struct for UL/DL power control parametersVadim Yanitskiy2020-12-021-16/+19
| | | | | Change-Id: I504de17fb3c1300c2a3faa6d7d3a9eb1b74b214b Related: SYS#4918