Commit Graph

3284 Commits

Author SHA1 Message Date
Oliver Smith 188f76275a systemd: remove RestartPreventExitStatus=1
Fix OsmoBTS not restarting if e.g. an external gsmtap IP is configured
that is currently not available. Also make the service files more
consistent with other Osmocom projects.

Partial revert of ae2473c2 ("systemd: Do not restart with a broken
config file or such").

Related: SYS#6581
Change-Id: Ieeed858c159839ebaa27b2be35a597fb86874c4b
2023-09-27 10:06:54 +02:00
Andreas Eversberg ddc15996dd Do not prefix UI header to System Information Type 10
System Information Type 10 uses short L2 header that is transmitted as
Bter UI frame. The complete frame is sent by BSC, including short L2
header. Only the SACCH layer 1 header is added by the BTS.

A switch() statement is used, so other System Information with short L2
header can be added in the future.

Change-Id: Ifede42bfd84ea5914b559a20ae68f594d2ee1a5c
2023-09-25 08:25:58 +02:00
Andreas Eversberg f5c1cd3889 ASCI: Ignore LAPD frames from MS, while the uplink is not active
Do not forward any message that is received on the uplink to LAPD while
the uplink is not active. If the MS did not recognize (fast enough) that
the uplink is free, it may continue to transmit LAPD messages. A
response by LAPD to these messages is not desired and not required. If
LAPD would respond, it would cause stopping transmission of UPLINK FREE
messages. No MS could access the uplink anymore.

Note: UPLINK FREE messages are repeated automatically until a different
      message is transmitted.

Related: OS#5781
Change-Id: I5075115123055b2997481f56ddf473430a1dc9e3
2023-09-25 06:22:35 +00:00
Vadim Yanitskiy 0978d1df71 oml: implement handling of NM_ATT_IPACC_SUPP_FEATURES
Change-Id: I88c6c6af18be054bd152832e60c8afbbd16098a3
Depends: libosmocore.git Ia4208e10d61843dd6ae77398f6624c918dc81ea4
Depends: libosmocore.git I85316af9b57e8113077305798cb2d82a24e48e00
2023-09-21 06:47:27 +07:00
Pau Espin 852b2cbadc nm: delay RSL connect until BBTRANSC object is OPSTARTed
Have same behavior as nanoBTS.

Related: OS#5253
Change-Id: Idefc65a8812abd49fb5f0cd7b0bef423536b86e0
2023-09-19 09:15:08 +00:00
Pau Espin c4e836838d Move trx->rsl_link to trx->bb_transc.rsl.link
The RSL link is configured/set up by the BBTRANSC NM object, hence move
it to the appropiate substruct.

Related: OS#5253
Change-Id: I62937cbd81c27274b9f5f70d454d5319a6898c7b
2023-09-19 09:15:08 +00:00
Pau Espin 9aaaacc7aa oml: Store RSL connect related fields in bb_transc
This is a preparation commit towards delaying connection of RSL tcp
socket until the BBTRANSC object is OPSTARTed, as it is the case already
in nanoBTS.

Related: OS#5253
Change-Id: Ia571ec19e9e8f8a6d7c2554642aab0afe1b4b917
2023-09-19 09:15:08 +00:00
Vadim Yanitskiy 9d9d9e2f27 oml: oml_tx_attr_resp(): handle common nm_state attributes
These attributes are listed in 3GPP TS 52.021, Table 2/GSM 12.21.
Many attributes are still unhandled, but at least something.

Change-Id: I94702c503fea5b42d84673ccd7065c9323b733b8
Related: OS#4505
2023-09-15 05:13:11 +07:00
Vadim Yanitskiy fbd8aa8a77 oml: refactor generation of Get Attribute Response
Change-Id: I531e88e789d09f8828a53813e3b2863faf0cc572
Related: OS#4505
2023-09-15 04:49:54 +07:00
Vadim Yanitskiy e8518ae375 oml: oml_tx_attr_resp(): pass *mo to handle_attrs_{bts,trx}()
Change-Id: I78555d7226afd0c25efc100d95642634323a7b95
2023-09-15 01:39:06 +07:00
Vadim Yanitskiy fd4654e1b8 osmo-bts-{oc2g,lc15}: signal CBCH support to BSC
The model specific code seems to have everything needed for CBCH.

Change-Id: I6b4d82223dc0bdcd94cd1269bfb02047cbebe480
2023-09-15 01:39:06 +07:00
Pau Espin e97834f2db Bump version: 1.6.0.210-8a1f-dirty → 1.7.0
Change-Id: I3137362f3933aad20e3000a2fab4af82fe4fb649
2023-09-12 16:05:31 +02:00
Pau Espin 8a1f740dfc rsl: Improve logic reactivating CCCH upon SI3 BS_AG_BLKS_RES change
The previous logic was wrong, since it was only reactivating the channel
if the provided BS_AG_BLKS_RES was != 1.
Example previously broken scenario:

1- osmo-bsc user sets "channel-descrption bs-ag-blks-res 2" during
   osmo-bsc startup in osmo-bsc.cfg
2- osmo-bsc user uses VTY to change it to "channel-descrption
   bs-ag-blks-res 1"
3- osmo-bsc user uses VTY to deploy the new config: "bts <0-255>
   resend-system-information"

Step 3 would fail beforehand, ending up in a NO-OP.

Change-Id: Ibc118e11c64f04de55cb7b94d8bf2c84b431774d
2023-09-07 18:34:25 +02:00
Pau Espin 1d53d231da bts-trx: Fix CCCH not enabled if BS_AG_BLKS_RES!=1 is provided by BSC
Other bts models like sysmo,lc15,oc2g properly handled
rel_act_kind=LCHAN_REL_ACT_REACT under the bts_model_lchan_deactivate()
implementation, but bts-trx didn't.

As a result, when BCCH_INFO(SYSINFO_TYPE_3) coming from BSC (RSL)
containing a different BS_AG_BLKS_RES triggers CCCH re-activation,
it would only deactivate it but not re-activate it.
That means no SIs were being scheduled if bts was configured with
"channel-descrption bs-ag-blks-res 2" in osmo-bsc.cfg, and phones would
not see the cell.

Related: OS#1575
Change-Id: I61e1681fbaa2c993b529d58b581c99166b62bda3
2023-09-07 18:15:03 +02:00
Philipp Maier d2d938c261 pcu_sock: print SAPI and msg_id when sending confirmation
At the moment we do not print the SAPI, nor the msg_id when we send a
confirmation back to the PCU

Change-Id: Ibd5b4225e597b69eaabaeee437fb637943a55602
elated: OS#5927
2023-08-31 11:02:03 +02:00
Philipp Maier f20e13d160 pcu_sock: use PCU_IF_SAPI_AGCH_2 instead PCU_IF_SAPI_AGCH
In PCUIF v.11 we use PCU_IF_SAPI_AGCH_2 exclusively. We use this SAPI
to transfer IMMEDIATE ASSIGNMENT messages for uplink and downlink. In
both cases we send a confirmation back to the PCU. For details see
coresponding patch in osmo-pcu.git (see Depends)

CAUTION: This patch breaks compatibility to current master osmo-pcu (See
also "Depends")

Related: OS#5927
Depends: osmo-pcu.git I9effdcec1da91a6e2e7a7c41f95d3300ad1bb292
Depends: osmo-ttcn3-hacks.git Iec00d8144dfb2cd8bcee9093c96a3cc98aea6458
Change-Id: I29858fa20ad8bd0aefe81a5c40ad77a2559a8c10
2023-08-31 11:01:25 +02:00
Philipp Maier 55a21dc1c3 pcuif_proto: use confirm flag in struct gsm_pcu_if_pch
The PCU now sets a confirm flag in struct gsm_pcu_if_pch in case the MAC
block (data) requires a confirmation when sent. Use this confirm flag
instead of making the decision locally based on the MAC block contents.

Related: OS#5927
Depends: osmo-pcu.git Ia202862aafc1f0cb6601574ef61eb9155de11f04
Change-Id: I3364d2268bdef9c4d2feeb8e3d51a64e34bca68c
2023-08-29 11:13:13 +02:00
Vadim Yanitskiy b33502a39b csd_v110: handle empty/incomplete Uplink frames gracefully
Change-Id: I7cbf868df3ba5d390cea3d529eef26d18dbe55ab
Related: OS#1572
2023-08-26 04:11:33 +07:00
Vadim Yanitskiy 183c088864 csd_v110: properly set E1/E2/E3 for non-transparent data
Change-Id: Ie38c12e462654cd9fe83a0420bc8ea8b476214b8
Related: OS#1572
2023-08-26 03:12:03 +07:00
Vadim Yanitskiy 37e639cb8f csd_v110: fix comments in csd_v110_rtp_{en,de}code()
Change-Id: I6fee665e587bfa76058187e13f0cdafaea991940
Related: OS#1572
2023-08-26 03:10:20 +07:00
Philipp Maier 7e5a62e9f3 bts: make bts_agch_dequeue static
The function bts_agch_dequeue() is not used outside of bts.c, so it can
be a static function.

Change-Id: If86293ebbd99d6550022aeb8721d40bca5fc04fc
Related: OS#5927
2023-08-22 14:53:11 +02:00
Philipp Maier 9171e37aff pcuif_proto: get rid of _DT, _dt (Direct TLLI)
Since we now no longer refer to TLLI when we mean "message ID" (msg_id),
we should also remove the "_DT" / "_dt" suffix from structs and define
constants and replace it with "_2" if required.

Depends: osmo-pcu.git If641b507dcb6b176109c99dce7cff2a7561364b0
Change-Id: Icf85f60ae86fbe1f3b98e1457c0598bb09cb08c5
Related: OS#5927
2023-08-10 15:08:11 +02:00
Philipp Maier 086b46a77f pcuif_proto: remove unnecessary members from gsm_pcu_if_data_cnf_dt
The struct gsm_pcu_if_data_cnf_dt was added when the first experiments
mit Ericsson RBS base stations were made. It is essentially a copy of
gsm_pcu_if_data, where the mamber "data" was replaced with a member
"msg_id" (which was originally called "tlli"). Since we didn't know
back then which parameters we would still need at some later point we
kept all the other parameters. However, to this day we never used the
parameters below fn. Even fn was only used for logging purposes, but is
now also unused.

Let's remove all those unused members.

(Since all removed members are at the tail of the struct,
compatibility with other programs that use the PCUIF should not break.)

Related: OS#5927
Change-Id: I779605858648e2a1c202c37e197a6e32e6ea3786
2023-08-08 17:34:20 +02:00
Philipp Maier ff085f63c9 pcu_sock: get rid of fn parameter in pcu_tx_pch_data_cnf
The function pcu_tx_pch_data_cnf() gets a parameter fn (frame number).
This parameter is then used to populate the member fn in
gsm_pcu_if_data_cnf_dt of the PCUIF protocol. However, the PCU only uses
this parameter for logging and nothing else. Hence it it is not needed
and we can remove it.

Related: OS#5927
Depends: osmo-pcu.git I35bc99eaec5d0287ae3916bc668f0babaddfd6ce
Change-Id: Id1c8fa77725129ec2ea7e92e1df493f35a277659
2023-08-08 17:04:12 +02:00
Philipp Maier bbb3a1ed17 pcuif_proto: rename tlli to msg_id
To confirm downlink IMMEDIATE ASSIGNMENT messages, we use the TLLI as an
identifier and the related struct member is also called "tlli".
Unfortunately this is misleading since the message identifier does not
necessarly have to be a TLLI. It is just an implementation detail that
osmo-pcu uses the TLLI as a message identifier.

To make that clear, lets rename the tlli member (and variable and
parameter names where it is passed on) to "msg_id".

(Since this change only renames variables and struct members it will not
break compatibility with other programs that use the PCUIF)

Related: OS#5927
Depends: osmo-pcu.git I4a25039dfe329e68879bc68936e49c4b190625e6
Change-Id: Ie6b34d5df64f4bed6b14581c7957dcba6af44136
2023-08-08 16:11:50 +02:00
Vadim Yanitskiy 88de4d6789 rsl: rsl_handle_chan_mod_ie(): do not use legacy defines
Change-Id: I4e8f9ff5189af80bce13cfd1b27585aabda03f7a
Related: OS#1572
2023-08-07 14:50:10 +00:00
Vadim Yanitskiy 66eae187b9 rsl: rsl_handle_chan_mod_ie(): set lchan->csd_mode
Change-Id: I6b1b44cffae1484098709efe496efafacbd354a8
Related: ca418643 "csd_v110_rtp_encode(): properly set E1/E2/E3 bits"
Related: OS#1572
2023-08-07 14:50:10 +00:00
Keith Whyte 8ae829cabc Fix incorrect order of params passed to logging macro
Stops log lines like:
'DOML unknown 0x239616 (bts=0,trx=0,ts=1,ss=0) [....]'

Change-Id: Ie1ad41210280ae5dbe693de6bdc4378ff34621b7
2023-08-04 15:53:39 -06:00
Vadim Yanitskiy 007e72d5bc osmo-bts-trx: bts_supports_cm_data(): allow non-transparent modes
The rate adaptation algorithm is the same for both transparent and
non-transparent channel modes.  The only difference is that the
E-bits in the modified CSD frames carry data, like the D-bits.

Change-Id: Ib0d9346d7a8e30b8a8e4b08ee04846ba7d12b3fb
Related: OS#1572
2023-07-30 20:32:20 +07:00
Vadim Yanitskiy ca418643b3 csd_v110_rtp_encode(): properly set E1/E2/E3 bits
The E1/E2/E3 bits are set based on out-of-band knowledge of the
current user data rate.  The actual bit values are defined in
3GPP TS 44.021, Figure 4 "Coding of data rates".

TODO: this is only valid for transparent services,
      for non-transparent services see 3GPP TS 48.020.
TODO: lchan->csd_mode is never set to the actual CSD mode...

Change-Id: I1a14597dff746cf975140b294400a2cc05badccd
Related: OS#1572
2023-07-30 20:29:12 +07:00
Vadim Yanitskiy d1f8f3429c l1sap: proper rate adaptation for CSD (RFC4040 'clearmode')
Since 95407f3f osmo-bts-trx supports scheduling all CSD specific
channel rates, however the rate adaptation was missing.

On the radio interface we deal with CSD-modified V.110 frames, which
need to be converted to normal 80-bit V.110 frames (RA1'/RA1), which
in turn need to be batched and sent in RFC4040 "clearmode" 160 octet
RTP payloads (RA1/RA2 as per I.460).

Note that this patch comments out TCH/F14.4 in bts_supports_cm_data(),
so that all channel allocations for this mode would be NACKed.  The
reason for this is that the rate adaptation functions for TCH/F14.4
are different than the RA1'/RA1 and the RA1/RA2.

For more information, see:

* 3GPP TS 44.021, section 8 (functions RA1'/RA1)
* ITU-T I.460, section 1.1 "Rate adaption of 8, 16 and 32 kbit/s streams"

Change-Id: I5e3701ad52d5d428fd02caff037881045f2d0a02
Related: OS#1572
2023-07-30 16:08:01 +07:00
Andreas Eversberg 97d3bd3e62 ASCI: Enable UPLINK ACCESS on various BTS models
UPLINK ACCESS (RACH on TCH) was enabled for osmo-bts-sysmo only. Now it
is also enabled for:
* osmo-bts-lc15
* osmo-bts-oc2g
* osmo-bts-trx
* osmo-bts-virtual

Change-Id: Iae0db6bfcf6629c114436a79648e832c82835abe
2023-07-21 13:20:13 +02:00
Andreas Eversberg 467d63e387 Add test cases for rest octets of Paging Requests
The abstract representation of the rest octets are moved to the header
file, so that the test case can include it. append_p*_rest_octets()
function become externally available for test.

Change-Id: Ifa5be8998b671160e38af1be707e040b00d407b8
Related: OS#5781
2023-07-21 13:20:12 +02:00
Andreas Eversberg be93b87a64 ASCI: Repeat UPLINK FREE message until uplink becomes busy
According to TS 44.018 the UPLINK FREE message must be repeated when the
uplink is marked as free. The BSC sends the UPLINK FREE message once and
the BTS repeats it until UPLINK BUSY (uplink blocked by BSC) or
VGCS UPLINK GRANT (talker accesses the uplink) is sent.

It is important to stop sending UPLINK FREE message when a talker
accesses the uplink and before the VGCS UPLINK GRANT message is sent, so
that stopping must be controlled by the BTS.

Related: OS#5781
Change-Id: Ia23c59f5e9a73bbc384fbc317a2cfcf707e3c28f
2023-07-21 13:20:11 +02:00
Andreas Eversberg ba5d2e4a5f ASCI: Add Notification/FACCH support
When a VGCS/VBS call is established in a cell, NCH is used to notify
about ongoing calls to idle subscribers. Additionally Notification/FACCH
is used to notify subscribers in dedicated mode. This is performed by
broadcasting this messages to all active dedicated channels. The mobile
station can then indicate the call, so the user can join the call.

More importaint is the notification of the calling subscriber's MS,
which initiated the call. This is done on the early assigned channel.
The MS must know on which channel the call is placed. After leaving the
uplink, it must know where to access the uplink the next time.

Change-Id: I3ed14fa54a907891e492a7ada8e745a2c56cd46d
Related: OS#4851, OS#5781
2023-07-21 13:20:10 +02:00
Andreas Eversberg 0a2b0a20b3 ASCI: Send only NLN on Paging request type 1 rest octets
Do not send notifications here. The notifications are sent on the NCH.
The NLN is used to indicate a change on the NCH, so that the MS will
read the NCH then.

If NLN is not sent towards MS, it will not read NCH to get an updated
list of ongoing calls. Also, it will not allow making VGCS/VBS calls and
might indicate that ASCI is not supported in this call. (Tested with
GPH-610R.)

Change-Id: I22e584b70fd14d8bdabb28cf5de3d4647f37425a
Related: OS#5781
2023-07-21 13:20:07 +02:00
Andreas Eversberg 290085787a ASCI: Add support for rest octets in Paging request type 2 and 3
Currently the rest octets contain Notification List Number (NLN) and
NLN status and the "Channel Needed" (CN3 / CN4) fields for mobile
identities.

The existing encoding of CN3 / CN4 in Paging request type 3 has been
replaced.

The missing encoding of CN3 in Paging request type 2 has been added.

Change-Id: I6e33a6d38d4c7b124de35b53d219b64bb881ba66
Related: OS#5781
2023-07-21 13:20:07 +02:00
Andreas Eversberg 6fa1dfce61 ASCI: Add Notification CHannel (NCH) support
The location of the NCH is defined by the rest octet of System
Information 1. If NCH is defined, the given CCCH blocks are used for NCH
instead of AGCH/PCH.

The current list of VGCS/VBS call notifications is transmitted on the
NCH. If there is no notification, an empty notification is transmitted
on the NCH.

The Notification List Number (NLN) is used to indicated new
notificaitons. Only the last notification (or empty notification)
indicates NLN. This way the MS can determine after two equal NLN that
the complete list has been recevied.

Change-Id: I82fdaba3faaced76267a99ae14a5458a1b41fdaa
Related: OS#5781
2023-07-21 13:20:06 +02:00
Andreas Eversberg 65c8f0de94 ASCI: Retrieve NCH position from System Information 1
When BCCH INFO is received via RSL message, the rest octet of the System
Information 1 message is parsed to get the position of the NCH. The
position is stored in the gsm_bts structure. If the position is not
present int the rest octet, the stored value is set to negative.

Change-Id: I799a27179d478d4ff577d8bc47ae524834851e85
Related: OS#5781
2023-07-21 13:20:05 +02:00
Vadim Yanitskiy 98e5d6f7c6 osmo-bts-trx: document/clarify the meaning of BUFMAX=24
Change-Id: I95d4e4ee3938cfabc1695959cc82a1efbbf0d7ed
Related: OS#1572
2023-07-21 11:12:50 +00:00
Vadim Yanitskiy 29fcae8632 osmo-bts-trx: tx_tch[fh]_fn(): fix NULL pointer dereference
It may happen that only FACCH is available for transmission, so msg_tch
would be NULL in this case.  Check it before dereferencing.

Change-Id: I0e7d5634b5223bc246badbb8e94b620c967ab121
Related: OS#1572
2023-07-21 11:06:00 +00:00
Harald Welte fa90ff3e67 omldummy: Claim to support VBS + VGCS towards BSC
This tells our TTCN3 BSC tests to perform VBS/VGCS related procedures on
RSL.

Change-Id: I9ed1b20985d2ce3be31942d3e9df5cad513a0bfd
Related: OS#5778, OS#5779
2023-07-21 10:52:07 +00:00
Harald Welte 15330e2368 sysmo: Enable VGSCS + VBS feature flags
This tells the BSC that osmo-bts-sysmo supports VBS/VGCS

Change-Id: I1625d2a0f4905437fad0b5220a551f81eba9a00e
Related: OS#4851
2023-07-21 10:52:07 +00:00
Andreas Eversberg cdbd83affd ASCI: Add function to reactivate channel
Reactivation will modify parameters on an already activated channel. On
a VGCS/VBS channel it can be used to prepare channel for assignment of
the mobile station to it.

During assignment the channel is reactivated. The timing advance of the
mobile station is given. The uplink is activated and is waiting for the
mobile station to establish, to complete the assignment.

For reference see patent EP 1 858 275 A1.

Change-Id: I77f413cf70c2f5f8e8f525686eee40548521c71b
Related: OS#4851
2023-07-21 10:52:07 +00:00
Harald Welte 2ae45aba3f ASCI: VGCS/VBS RACH -> RSL TALKER/LISTENER DETECT
Random access is allowed on VGCS / VBS channels to access the uplink or
to detect listeners. Uplink Access from a listener is only reported once
after activating the channel. Uplink Access from a talker is reported
each time the uplink becomes occupied. RSL TALKER/LISTENER DETECT
messages are sent to the bsc.

The VGCS UPLINK GRANT message is sent by the BTS itself. Timer T3115 is
used to repeat the message up to NY2 times until one valid frame is
received from the MS (CM service request). The UPLINK BUSY / UPLINK FREE
message must be sent by the BSC.

The uplink is released by UPLINK RELEASE message from the MS or from the
BSC. Afterwards the UPLINK FREE message causes the MS to leave the
uplink without any acknowlege. An RSL REL-REQ must be used to terminate
the link locally. (Without layer 2 DISC procedure.)

Change-Id: I1bd07ab6802341b09a06e89df356665ffaf6d2bf
Related: OS#4851
2023-07-21 10:52:07 +00:00
Philipp Maier 6c83527e62 paging: also accept zero length IMSI strings 3
When an IMMEDIATE ASSIGNMENT MAC block (from PCUIF) is added to the
paging queue, then also an IMSI is required. The paging queue uses the
last three digits of the IMSI to calculate the paging group. In case no
IMSI is given, the MAC block is rejected. This was handeled differently
before. Even an IMSI of length 0 would still be interpreted as "000" and
not rejected. See also:

I9f3799916e8102bf1ce0f21891f2d24f43091f01

Let's restore the behaviour we had before and accept short IMSI
strings again.

Change-Id: Iab1c3f1c39dd59bb53aa74b2c9e9e135e3985e0b
Related: OS#6099
2023-07-17 14:15:20 +02:00
Vadim Yanitskiy d04e3e708b osmo-bts-trx: change 'Received bad data' back to LOGL_DEBUG
In f2c902c2 I accidentally bumped the logging level for PDCH decoding
errors to LOGL_NOTICE, making osmo-bts-trx spam the logging with
hundreds of 'Received bad data' messsages.  Revert this.

Change-Id: Idb963f1a779dfa172825f6d481740cb0c4165485
Fixes: f2c902c2 "osmo-bts-trx: unify and enrich 'Received bad data' logging"
2023-07-15 01:20:15 +07:00
Vadim Yanitskiy 4344f323f2 osmo-bts-trx: rx_tch[fh]_fn(): combine rc-checking ifs
Change-Id: I7bb341867e362bf2061608ff54c3596ad209af90
2023-07-13 13:18:02 +00:00
Vadim Yanitskiy 17087a08c7 osmo-bts-trx: rx_tchf_fn(): move compute_ber10k() above
... for the sake of consistency with rx_tchh_fn().

Change-Id: Ie331da78eb3831e35d255583466e0d09b093b132
2023-07-13 13:18:02 +00:00
Vadim Yanitskiy f2c902c2af osmo-bts-trx: unify and enrich 'Received bad data' logging
Change-Id: I7902f382e1d83ef9ad2cf6f92e31eeb16f6b797c
2023-07-13 13:18:02 +00:00