Commit Graph

2418 Commits

Author SHA1 Message Date
Pau Espin Pedrol 2b416d6d2b nm_channel_fsm: Fix several FSM internal transitions not being made
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
2020-12-09 14:04:19 +01:00
Vadim Yanitskiy 75162427ad rsl: properly initialize MS/BS Power Control state
struct lchan_power_ctrl_state actually contains more fields,
which also must be initialized on CHANnel ACTIVation.

Change-Id: Id9719088fc6e9479c13e9b327a3466d9e2810a3a
Related: SYS#4918
2020-12-08 13:10:46 +01:00
Vadim Yanitskiy 36743255cd power_control: clarify units in 'struct lchan_power_ctrl_state'
Change-Id: I934f2d1e1064eed7587bc5693ef981bf449a1b81
Related: SYS#4918
2020-12-06 18:59:07 +01:00
Vadim Yanitskiy 237ec6194b power_control: clarify units in 'struct bts_power_ctrl_params'
Change-Id: Icb059ca1f555397be116a424800e4536883b9106
Related: SYS#4918
2020-12-06 18:59:05 +01:00
Vadim Yanitskiy 63c1838c7a power_control: cosmetic: fix weird spacing
Change-Id: Ia5661e82372f958e7cda4041d7b5a1cfb1d64afe
2020-12-06 18:58:11 +01:00
Vadim Yanitskiy 0698c58ebe power_control: implement BS (Downlink) Power Control
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
2020-12-06 18:57:43 +01:00
Vadim Yanitskiy 0ced8dd03e power_control: derive calc_delta() from lchan_ms_pwr_ctrl()
This function will also be used by the BS Power Control logic.

Change-Id: I2525eb2c3f1fdb3d0847a8ad50b30a44d7741a55
Related: SYS#4918
2020-12-04 09:27:48 +01:00
Vadim Yanitskiy 2f53fae01f power_control: do not log averaged RSSI values as 'rx-current'
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
2020-12-04 09:27:48 +01:00
Vadim Yanitskiy 567ea2a079 power_control: remove a logging statement and early return
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
2020-12-04 09:27:48 +01:00
Vadim Yanitskiy 2b59a625e8 power_control: lchan_ms_pwr_ctrl(): make use of params/state pointers
Change-Id: I177d82cd61d59256976007fed2f7da400b814789
Related: SYS#4918
2020-12-04 09:27:48 +01:00
Vadim Yanitskiy 08f3eafd02 power_control: generalize and rename lchan_ul_pf_ewma()
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
2020-12-04 09:27:48 +01:00
Vadim Yanitskiy f15c44df52 power_control: lchan_ms_pwr_ctrl(): use existing 'trx' pointer
Change-Id: Idf46e47f20f031ff9dded1be1e6c4337d7b423e7
Related: SYS#4918
2020-12-04 09:27:48 +01:00
Vadim Yanitskiy 0e24ace2f1 power_control: lchan_ul_pf_ewma(): do not use lchan->meas.res_nr
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
2020-12-04 09:27:48 +01:00
Vadim Yanitskiy 9381576e18 power_control: generalize power control state structure
Change-Id: I8c6ad8d14349e8a05084c2912644c5202f951f52
Related: SYS#4918
2020-12-04 09:27:48 +01:00
Vadim Yanitskiy fb03b43e24 tests/power: rename s/power_test/ms_power_loop_test/
There will also be bs_power_loop test soon.

Change-Id: I3f58eb85e44825a159af58948f01d9ffd75bceec
Related: SYS#4918
2020-12-02 15:01:10 +01:00
Vadim Yanitskiy 3b1e66af9e l1sap: make sure that UL SACCH is always 23 octets long
Change-Id: I1c8a43337fbc1acfab3c0f0713c75ded95d69512
Related: SYS#4918
2020-12-02 15:01:10 +01:00
Vadim Yanitskiy 369c852022 bts: add Downlink power control parameters
Change-Id: I724f661e9ce5dd75f95fb7b270a89b2e2a73c951
Related: SYS#4918
2020-12-02 13:56:49 +00:00
Vadim Yanitskiy e9b6648761 bts: generalize a struct for UL/DL power control parameters
Change-Id: I504de17fb3c1300c2a3faa6d7d3a9eb1b74b214b
Related: SYS#4918
2020-12-02 13:56:49 +00:00
Vadim Yanitskiy ca9ab523e1 bts: rename MS_UL_PF_ALGO_{NONE,EWMA} to BTS_PF_ALGO_{NONE,EWMA}
Change-Id: I580512eea1d329a4d25ccbd6fc2ab98b083ec51d
Related: SYS#4918
2020-12-02 13:56:49 +00:00
Vadim Yanitskiy af4eec056e struct gsm_bts: move ul_power_{target,hysteresis} to ul_power_ctrl
Change-Id: I3886c7aedf3870536f1750f864cf698302ddf2df
Related: SYS#4918
2020-12-02 13:56:49 +00:00
Vadim Yanitskiy 5b25e8e7de osmo-bts-trx/scheduler: ensure no DL power attenuation on C0
When [baseband] frequency hopping is in use, Downlink bursts from
additional transceivers may end up being transmitted on TRX0/C0.
In this case, we must not apply per-lchan attenuation, because
the BTS shall maintain constant power level on that TRX.

Change-Id: Id171df70447283b00da965e1f81dfac20e35495c
Related: SYS#4918
2020-12-01 21:39:55 +00:00
Philipp Maier 7c87612b42 l1sap: add repeated uplink SACCH
3GPP TS 44.006, section 11 describes a method how the uplink
SACCH transmission can be repeated to increase transmission
reliability.

Change-Id: I7e4cc33cc010866e41e3b594351a7f7bf93e08ac
Related: OS#4795, SYS#5114
2020-11-28 22:35:12 +01:00
Philipp Maier a36d6832a1 l1sap: add repeated downlink SACCH
3GPP TS 44.006, section 11 describes a method how the downlink
SACCH transmission can be repeated to increase transmission
reliability.

Change-Id: I00806f936b15fbaf6a4e7bbd61f3bec262cdbb28
Related: OS#4794, SYS#5114
2020-11-27 16:02:45 +01:00
Philipp Maier 7e38cf4e66 l1sap: also include SRR bit in RSL l1 info field.
The SRR bit, which got specified in 3gpp release 6 to support repeated
ACCH capability is not yet included in the L1 Information IE on RSL
level. Also lets update the spec reference to more modern 3gpp spec ref
numbers.

Change-Id: I987c61608b737521ba36756dabf2f6215b34c2d6
Related: OS#4796 SYS#5114
2020-11-27 16:02:45 +01:00
Philipp Maier ff96c5d16c rsl.adoc: update documentation for RSL_IE_OSMO_REP_ACCH_CAP
The recently added IE (RSL_IE_OSMO_REP_ACCH_CAP) has been extended
with more options, update the documentation as well.

Change-Id: I3d95da588e863185bb62e92898c285d52bce9af4
Related: SYS#5114, OS#4796, OS#4794, OS#4795
2020-11-27 16:02:45 +01:00
Philipp Maier 33dfe2bcec l1sap: add repeated downlink FACCH
3GPP TS 44.006, section 10 describes a method how the downlink
FACCH transmission can be repeated to increase transmission
reliability.

Change-Id: I72f0cf7eaaef9f80fc35e752c90ae0e2d24d0c75
Depends: libosmocore I6dda239e9cd7033297bed1deb5eb1d9f87b8433f
Related: OS#4796 SYS#5114
2020-11-27 16:02:45 +01:00
Neels Hofmeyr def24f0d9a part 5 of: fix SAPIs for handover, osmo-bts-oc2g
Change-Id: I2f1fd6e4620eec198912148cdc59fb4f02786c4d
2020-11-26 09:22:38 +00:00
Neels Hofmeyr 4ee4d6be2a part 4 of: fix SAPIs for handover, osmo-bts-lc15
Change-Id: I2ac6b0d498edb8facfac4feea7fccbba725d16e8
2020-11-26 09:22:38 +00:00
Neels Hofmeyr 6158525433 part 3 of: fix SAPIs for handover, osmo-bts-trx
Change-Id: I0b34855f0374e9ee7071ce14c1472eb3ead50970
2020-11-26 09:22:38 +00:00
Neels Hofmeyr 1c05ef15ec part 2 of: fix SAPIs for handover, osmo-bts-sysmo
Change-Id: I30e2ca003a3b15766d9d9dcf529fb2157523758f
2020-11-26 09:22:38 +00:00
Neels Hofmeyr f733cf8263 part 1 of: fix SAPIs for handover to match 48.058 4.1.{3,4}
This part adds the common lchan flags to indicate whether DL SACCH
should be activated.

Note that currently, osmo-bsc *always* sends the MS Power IE as well as
the TA IE, also for inter-cell HO, so in the osmoverse, nothing will
change until we also adjust osmo-bsc. See OS#4858.

Change-Id: Ibea973ccadf5d424213f141f97a61395856b76de
2020-11-26 09:22:38 +00:00
Neels Hofmeyr da680071a6 rename to release_sapi_ul_rach(), simplify
The sapis_for_ho have only one member, so it's silly to iterate. A
subsequent commit will drop sapis_for_ho.

Change-Id: I896fbca9876fd274ff9c426250b18b50faebfa89
2020-11-26 09:22:38 +00:00
Pau Espin 090f1cebe8 lc15-mgr: generate coredump and exit upon SIGABRT received
Previous code relied on abort() switching sigaction to SIG_FDL +
retriggering SIGABRT in case the signal handler returns, which would
then generate the coredump + terminate the process.
However, if a SIGABRT is received from somewhere else (kill -SIGABRT),
then the process would print the talloc report and continue running,
which is not desired.

Change-Id: I6ddc04c5815858c7dfab04ffdac52bce2e7940a1
Fixes: OS#4865
2020-11-25 20:21:21 +01:00
Pau Espin 44d72333ad oc2g-mgr: generate coredump and exit upon SIGABRT received
Previous code relied on abort() switching sigaction to SIG_FDL +
retriggering SIGABRT in case the signal handler returns, which would
then generate the coredump + terminate the process.
However, if a SIGABRT is received from somewhere else (kill -SIGABRT),
then the process would print the talloc report and continue running,
which is not desired.

Change-Id: I7a5756e106ac1061d37b42c22cc127fdacd87ce7
Fixes: OS#4865
2020-11-25 19:07:49 +01:00
Pau Espin 28d0a1db79 sysmobts-mgr: generate coredump and exit upon SIGABRT received
Previous code relied on abort() switching sigaction to SIG_FDL +
retriggering SIGABRT in case the signal handler returns, which would
then generate the coredump + terminate the process.
However, if a SIGABRT is received from somewhere else (kill -SIGABRT),
then the process would print the talloc report and continue running,
which is not desired.

Change-Id: I35ae930b59c48892e5ad9a2826e05d6c5d415abc
Fixes: OS#4865
2020-11-25 19:05:25 +01:00
Pau Espin 48ffeb8139 common: generate coredump and exit upon SIGABRT received
Previous code relied on abort() switching sigaction to SIG_FDL +
retriggering SIGABRT in case the signal handler returns, which would
then generate the coredump + terminate the process.
However, if a SIGABRT is received from somewhere else (kill -SIGABRT),
then the process would print the talloc report and continue running,
which is not desired.

Change-Id: Ic3b7c223046a80b51f0bd70ef1b15e12e6487ad0
Fixes: OS#4865
2020-11-25 19:03:35 +01:00
Pau Espin 251fc3c06c common: Enable SIGABRT signal handler
The signal handler function was coded to expect SIGABRT but the signal
handler itself was never enabled for this signal.

Change-Id: Id95d64efe8765fcf19eb09cd3db7895166c6adab
2020-11-25 19:02:55 +01:00
Philipp Maier 2edf5cf47f l1sap: pre-initalize pointer with NULL to avoid gcc warning
Change-Id: Ibfd18ed5268740cc73fffdb950b96c7f0fad3164
2020-11-19 17:32:16 +01:00
Philipp Maier 70d78f21f2 rsl.adoc: add info about RSL_IE_OSMO_REP_ACCH_CAP
The RSL documentation should reflect some explanatory info about the
recently added RSL_IE_OSMO_REP_ACCH_CAP IE.

Depends: libosmocore I61ea6bf54ea90bd69b73ea0f0f3dc19a4214207b
Change-Id: I1d70846c2c184f7a189074c51137bc1f38fb3859
Related: OS#4796 SYS#5114
2020-11-10 21:25:40 +01:00
Vadim Yanitskiy 5e92f628ab doc/manuals: move osmobts-vty-reference.xml to vty/
This way we have everything VTY specific in a single directory.

Change-Id: Iaba5c42b39fa764cd38c903486617c3d9f9cdebb
Related: SYS#4937, OS#3036
2020-11-05 03:39:50 +07:00
Vadim Yanitskiy ace1ca46a7 doc/manuals: also generate VTY reference for osmo-bts-virtual
Change-Id: I12ac8cc13ce0caea2b63f94c407c01b4f00845e5
Related: SYS#4937, OS#3036
2020-11-05 03:39:50 +07:00
Vadim Yanitskiy a75b402f55 doc/manuals: generate XML VTY reference at build-time
Unfortunately, we cannot re-use the existing Makefile rules from:

  $(OSMO_GSM_MANUALS_DIR)/build/Makefile.vty-reference.inc

because they do not allow to generate the list of $(DOCBOOKS) from
a template, and require the project to store everything in separate
folders with specific names.  Also, those rules expect that the
target PDFs contain only a single word in their names (for example,
'osmoapp-vty-reference', not 'osmo-app-vty-reference'), while in a
project with multiple similarly named targets this would reduce
readability (imagine 'osmotrxuhd-vty-reference').

Change-Id: Idba84164b90e3d183a20b5eb69cbfe15745e447c
Depends: I6aac73d998c5937894233631e654a160d5623198
Related: SYS#4937, SYS#4910, OS#3036
2020-11-05 03:39:50 +07:00
Vadim Yanitskiy ef1671c6ed osmo-bts-lc15: use consistent name for containing directory
The binary is called 'osmo-bts-lc15', while the containing folder
is named 'osmo-bts-litecell15'.  This inconsistency complicates
automatic generation of the XML VTY reference - fix it.

Change-Id: I55c073fbd01aee42871101401d76d87e7c91832e
Related: SYS#4937, OS#3036
2020-11-05 03:39:50 +07:00
Vadim Yanitskiy 44d25af9cd main: do not print asciiart to stdout, use stderr instead
Otherwise it ends up in the generated XML VTY reference:

  $ head doc/manuals/vty/bts_trx_vty_reference.xml
    ((*))
      |
     / \ OsmoBTS
    <vtydoc xmlns='urn:osmocom:xml:libosmocore:vty:doc:1.0'>
      <node id='_common_cmds_'>
        <name>Common Commands</name>

Also, take a chance to move it below handle_options(), so it
will only be printed if all arguments are parsed successfully.

Change-Id: I5c35f36fdd2a8a80bd501b996f0b161c388d3510
Related: SYS#4937, OS#3036
2020-11-04 19:33:57 +00:00
Vadim Yanitskiy ffbe63f408 fixup: vty: call bts_model_vty_init() from bts_vty_init()
Now bts_model_vty_init() must be called only once, otherwise the
process would crash when bts_model_init() is called from main().

Change-Id: I262c39896b5db86c54ad9aa7042c7ca6657815d9
Related: SYS#4937, OS#3036
2020-11-03 05:44:28 +07:00
Vadim Yanitskiy 5c7b709027 vty: call bts_model_vty_init() from bts_vty_init()
Similar to bts_vty_init(), BTS specific bts_model_vty_init()
requires a pointer to 'struct gsm_bts'.  Not only it's used
as a parent talloc context, but also stored locally, so then
it can be used by some VTY commands.

Let's expose the global 'struct gsm_bts' from main, and pass
the application's talloc context like was done in [1].

This finally makes the BTS model specific options appear in
the automatically generated VTY reference (--vty-ref-xml).

[1] Ic356a950da85de02c82e9882a5fbadaaa6929680

Change-Id: Iee7fee6747dd1e7c0af36f9b27326f651ae37aaf
Related: SYS#4937, OS#3036
2020-11-02 18:08:24 +00:00
Philipp Maier 484952a3e5 measurement.c: fix integer overflow problem
The variables num_meas_sub_expect - num_meas_sub must not be subtracted
without prior checking. Depending on the input (which might be
errornous), num_meas_sub might be greater then num_meas_sub_expect. This
eventually leads into odd behavior, which can be difficult to debug.

Change-Id: I381cc637d1c125f279ccf88db114609946fe24fe
Related: OS#4799
2020-11-02 15:46:10 +01:00
Vadim Yanitskiy 90e01e47cb vty: fix missing / wrong documentation for some commands
Change-Id: Ie2f9e401c0f8f55307d98fa5afe5eb4182add43a
Related: SYS#4937, OS#3036
2020-11-02 12:34:54 +00:00
Vadim Yanitskiy 9076b3947b vty: fix double '%' in description of some commands
Command description is not a format string => no need to escape.

Change-Id: Ib2e339efccec1fc5416ab4b9460a27fa1f8e8044
2020-11-02 12:33:42 +00:00
Vadim Yanitskiy fa3e22bc17 main: move general options from bts_vty_init()
These are not BTS specific options, so register them in main().

Change-Id: Ib6be66537791d489cb709d4d653c4cb434896f77
Related: SYS#4937, OS#3036
2020-11-02 11:17:05 +00:00