When debugging frame number offset problems betwen l1 and below and the
upper layers of the PCU, it may be helpful do know which blocks/frame
numbers got reserverd for uplink transmissions.
Change-Id: I4277c572a4cc6cbbf3ac4e67442c9036be687627
Related: OS#5198
As of now the manual only focusses on the BTS co-located scenario. Since
we recently introduced support for Ericsson RBS 2000/6000 base stations,
we also had to add support for the BSC co-located scenario. Let's update
the manual accordingly.
Related: OS#5198
Change-Id: Ib2a3b60849fd312b21073a3511b8ca36b4536343
The manual so far describes how OsmoPCU is run in co-location with the
BTS but Figure 1 shows the PCU next to the BSC. Lets put BTS and PCU on
the same rank so that they appear next to each other. This reflects the
reality better.
Change-Id: Ifa170f3956b4629765a88ed62e877a204541d9ea
EXTRA_DIST should only list files that are not source, but should be
distributed anyway. Listing the source files in _HEADERS and _SOURCES
should be sufficient
Change-Id: If8b9b8cfaad22a093a74c418651bc76f48f2d071
Fix linker errors with ld from binutils 2.35.2 in Debian 11:
/usr/bin/ld: osmo-bts-litecell15/lc15_l1_hw.o:(.rodata+0x100): multiple definition of `lc15bts_l1prim_names'; osmo-bts-litecell15/lc15_l1_if.o:(.rodata+0x80): first defined here
/usr/bin/ld: osmo-bts-litecell15/lc15_l1_hw.o:(.rodata+0x2a0): multiple definition of `lc15bts_sysprim_names'; osmo-bts-litecell15/lc15_l1_if.o:(.rodata+0x220): first defined here
/usr/bin/ld: osmo-bts-litecell15/lc15_l1_hw.o:(.rodata+0x420): multiple definition of `lc15bts_l1sapi_names'; osmo-bts-litecell15/lc15_l1_if.o:(.rodata+0x3a0): first defined here
/usr/bin/ld: osmo-bts-litecell15/lc15_l1_hw.o:(.rodata+0x5a0): multiple definition of `lc15bts_l1status_names'; osmo-bts-litecell15/lc15_l1_if.o:(.rodata+0x520): first defined here
/usr/bin/ld: osmo-bts-litecell15/lc15_l1_hw.o:(.rodata+0x760): multiple definition of `lc15bts_tracef_names'; osmo-bts-litecell15/lc15_l1_if.o:(.rodata+0x6e0): first defined here
/usr/bin/ld: osmo-bts-litecell15/lc15_l1_hw.o:(.rodata+0x940): multiple definition of `lc15bts_tracef_docs'; osmo-bts-litecell15/lc15_l1_if.o:(.rodata+0x8c0): first defined here
/usr/bin/ld: osmo-bts-litecell15/lc15_l1_hw.o:(.rodata+0xb20): multiple definition of `lc15bts_tch_pl_names'; osmo-bts-litecell15/lc15_l1_if.o:(.rodata+0xaa0): first defined here
/usr/bin/ld: osmo-bts-litecell15/lc15_l1_hw.o:(.rodata+0xc20): multiple definition of `lc15bts_clksrc_names'; osmo-bts-litecell15/lc15_l1_if.o:(.rodata+0xba0): first defined here
/usr/bin/ld: osmo-bts-litecell15/lc15_l1_hw.o:(.rodata+0xcc0): multiple definition of `lc15bts_dir_names'; osmo-bts-litecell15/lc15_l1_if.o:(.rodata+0xc40): first defined here
/usr/bin/ld: osmo-bts-litecell15/lc15_l1_hw.o:(.rodata+0xd20): multiple definition of `pdch_msu_size'; osmo-bts-litecell15/lc15_l1_if.o:(.rodata+0xca0): first defined here
/usr/bin/ld: osmo-bts-litecell15/lc15bts.o:(.data.rel.ro.local+0x0): multiple definition of `lc15bts_l1prim_names'; osmo-bts-litecell15/lc15_l1_if.o:(.rodata+0x80): first defined here
/usr/bin/ld: osmo-bts-litecell15/lc15bts.o:(.data.rel.ro.local+0x1a0): multiple definition of `lc15bts_sysprim_names'; osmo-bts-litecell15/lc15_l1_if.o:(.rodata+0x220): first defined here
/usr/bin/ld: osmo-bts-litecell15/lc15bts.o:(.data.rel.ro.local+0x320): multiple definition of `lc15bts_l1sapi_names'; osmo-bts-litecell15/lc15_l1_if.o:(.rodata+0x3a0): first defined here
/usr/bin/ld: osmo-bts-litecell15/lc15bts.o:(.data.rel.ro.local+0x4a0): multiple definition of `lc15bts_l1status_names'; osmo-bts-litecell15/lc15_l1_if.o:(.rodata+0x520): first defined here
/usr/bin/ld: osmo-bts-litecell15/lc15bts.o:(.data.rel.ro.local+0x660): multiple definition of `lc15bts_tracef_names'; osmo-bts-litecell15/lc15_l1_if.o:(.rodata+0x6e0): first defined here
/usr/bin/ld: osmo-bts-litecell15/lc15bts.o:(.data.rel.ro.local+0x840): multiple definition of `lc15bts_tracef_docs'; osmo-bts-litecell15/lc15_l1_if.o:(.rodata+0x8c0): first defined here
/usr/bin/ld: osmo-bts-litecell15/lc15bts.o:(.data.rel.ro.local+0xa20): multiple definition of `lc15bts_tch_pl_names'; osmo-bts-litecell15/lc15_l1_if.o:(.rodata+0xaa0): first defined here
/usr/bin/ld: osmo-bts-litecell15/lc15bts.o:(.rodata+0x820): multiple definition of `lc15bts_clksrc_names'; osmo-bts-litecell15/lc15_l1_if.o:(.rodata+0xba0): first defined here
/usr/bin/ld: osmo-bts-litecell15/lc15bts.o:(.data.rel.ro.local+0xb20): multiple definition of `lc15bts_dir_names'; osmo-bts-litecell15/lc15_l1_if.o:(.rodata+0xc40): first defined here
/usr/bin/ld: osmo-bts-litecell15/lc15bts.o:(.rodata+0x8e0): multiple definition of `pdch_msu_size'; osmo-bts-litecell15/lc15_l1_if.o:(.rodata+0xca0): first defined here
Change-Id: I33c061e79536a6e9ea7289a245af996e8d17c6ce
The parameter imsi of pcu_l1if_tx_pch_dt() could be NULL. In those cases
we should ensure that struct gsm_pcu_if_pch_dt is populated with a zero
length string.
Related: OS#5198
Change-Id: I9192d50dd78be0a72ffdb9bfb9ed66aef085bcf1
The PCU uses a 16 bit integer value as paging group which does in fact
not really resamble the paging group. Instead it encodes the last three
digits of the IMSI from which the paging group can be calculated. The
value is then eventually converted back to Ascii-digits and then sent
over the PCU-IF interface. Lets get rid of this weird conversion and
use the IMSI directly.
Change-Id: I40d7fc14c9591b3de091e425faaf325421c70a0e
Ericsson RBS series BTSs do not have a built in PCU. Rather than having
the PCU on board the PCU is co-located to the BSC in those cases. Just
like the MGW the PCU would connect to the CCU (Channel Coding Unit) via
E1 line. The PCU is connected via an unix domain socket (pcu_sock) to
the BSC to receive RACH requests and to control Paging and TBF assignment.
This patch adds all the required functionality to run an Ercisson RBS in
GPRS/EGPRS mode. It supports 16k I.460 E1 subslots and full 64k E1
timeslots (recommended)
Change-Id: I5c0a76667339ca984a12cbd2052f5d9e5b0f9c4d
Related: OS#5198
The previous gprs/protocol/gsm_04_60.h header from libosmogsm was
misleading because it was placed in the subdirectory used by libosmogb,
and hence was recently deprecated in favour of gsm/protocol/gsm_04_60.h.
Let's follow the pragma message advising to move to the new header file.
Depends: libosmocore 0158b05337a825352d9fd7f074170b686e9fd1e5
Change-Id: I027abbf3ed4c71331000565af1ef4f08f10cfafc
In situations where the PCU is co-located to the BSC, the IMMEDIATE ASSIGNMENT
for downlink TBFs must be sent via RSL and the BSC also must instruct the BTS
to transmit the IMMEDIATE ASSIGNMENT via PCH instead of AGCH. Eventually the
BSC must sent a confirmation message (follow-up patch) where the TLLI is used
as an identifer.
This new method will eventually replace the previous method that uses
the MAC block as an identifier. To remain compatible with older versions
of osmo-bsc, we will keep the old method until osmo-bts is migrated as
well.
This patch also requires new features to be added to the PCU socket
interface the version number of the protocol is incremented from 0x0a to
0x0b. Version 0x0a will remain compatible and use the old method, while
version 0x0b will use the new method introduced with this patch.
Change-Id: I2a78651593323e8b9627c39918d949a33497b70f
Related: OS#5198
The PCU already has a list that can hold multiple BTS objects but the
API for the direct PHY access has no way to associate a PHY with a
certain BTS object. Lets update the API so that we can associate a BTS
object when opening a PDCH.
Unfortunately OsmoPCU has never been tested with more than one BTS so it
is very likely that there are still shortcomings that prevent OsmoPCU to
work properly when more then one BTS is attached. To make users aware of
this, also print a warning as soon as more than one BTS object exists.
Related: OS#5198
Related: OS#5930
Change-Id: I33518cbbe83f7f8c071afa5e995d30930099ba92
The PHY implementations we currently have do not require any
initialization that has to run directly on startup. This will change
when we introduce support for the E1 based Ericsson RBS CCU. Then we
will have to perform at least one elarly initialization (VTY config
file). So lets add an API function for PHY initialization now.
Related: OS#5198
Change-Id: Ibf2a3a058c826f6ee5b740eee72d5be94d460517
There is a function l1if_connect_pdch, but no complementary function
like we have it with l1if_open_pdch and l1if_close_pdch. The reason for
this is that the PHY implementations that rely on a femtocell DSP do not
need to disconnect the pdch explcitly. However, the planned support for
the E1 based Ercisson RBS CCU will require an explicit disconnect. So
lets add a function call for this.
Change-Id: Ied88f3289bda87c48f5f9255c4591470633cc805
Related: OS#5198
Lets include the header file that contains the definition of struct
gsmtap_inst since this struct is directly used with l1if_open_pdch.
Change-Id: I9b859c4f7906f31547549d4ff7751fb720519270
Related: OS#5198
The log messages and code comments sometimes refer to the direct PHY
access feature as "direct DSP access". Lets use only the term "direct
PHY access"
Change-Id: I121ad85cd8581c40f390dbaad0d6a028d68b095e
The file gprs/protocol/gsm_04_60.h is deprecated, now it is recommended
to use gsm/protocol/gsm_44_060.h
Change-Id: I870e446ad8f371e13bbdb4034feae1260c874ee5
The file pcu_l1_if_phy.h contains the function prototypes for the
implementations found in xyz_l1_if.c. Lets also include pcu_l1_if_phy.h
in the related .c files.
Change-Id: Id35ba473973108da4e36d5c6f2ca78da1225ae8b
Related: OS#5198
The function signatures l1if_open_pdch() in the code for lc15 and oc2g
differ from what is defined in pcu_l1_if_phy.h. Lets update the
signatures so that they match the prototype.
Related: OS#5198
Change-Id: If1693b1b74c1808596d7da639b860f7b226385c0
The function headers for the direct phy related functions (l1if_...) are
currently directly listed in pcu_l1_if.cpp and osmobts_sock.c. Those
functions are basically the API interface definition between the
platform independed PCU code and the platform dependant direct phy code.
Lets put them into a dedicated header file.
Change-Id: Id54b96a4cd498a9860f3f209498132455e2aa6f8
Related: OS#5198
The IMMEDIATE ASSIGNMENT for downlink TBFs must be confirmed by the
receiving end (BSC/BTS) in order to set the timers in the PCU correctly.
When the PCU is used in a BSC co-located scheme (Ericsson RBS). The TLLI
is used as an identifier to confirm a specific IMMEDIATE ASSIGNMENT.
Change-Id: Icf7ca34500984239ee877ee71fd9c126b5eb3480
Related: OS#5198
The struct gsm_pcu_if_e1_ccu_ind is a bit misplaced. Lets move it next
to the info indication strucht, to have it in the same order is it used
in gsm_pcu_if
Change-Id: I4afafd8e94dc0083974ff2f5b6d6be0f5574d0bf
Related: OS#5198
The current name of PCU_IF_SAPI_AGCH_DT is a bit misleading as it
describes a method to send immediate assignment messages (normally AGCH)
via the PCH. The name in the constant should reflect that correctly
Change-Id: I6dfb8035134bc85a025415bd6c2f9c01987d9268
Related: OS#5198
osmo-bsc may send invalid frame numbers through the pcu-sock interface.
Lets make sure that incoming frame numbers do not exceed the valid
range.
Change-Id: Ib0cf1738be07733c95fc6c459a8a7c4cb2eeef26
Related: OS#5198
osmo-pcu will also support GPRS via E1 timeslots in a BSC co-located
setup. To avoid duplicate configuration the BSC has to communicate the
E1 parameters (which TS, SS etc.) to the PCU. Lets add a new primitive
to do that.
Change-Id: Ia7928489130c1205b06bb9b10de0fb1461843301
Related: OS#5198
After some earlier refactoring, those fields are only used internally in
the module, and hence can be marked as static.
Change-Id: Ibf2a6ee5636ae7102ffd13b7497769652bcc3202
This is probably a leftover from an old refactoring where the tv was
moved to MetaInfo (msg->cb[].
Change-Id: I7aceaf2d13a125c75925877c4344c0aeed326c79
The previous function name was misleading since it was checking already
for more stuff than pdu containing user data.
Rename the function and move all checks on PDU in there instead of
having it half in one place and half in the other.
Change-Id: Ia0738caa1ccab5f78c2d49db582bdce96f18600a
In case of an FN jump the expected value is logged. Lets also log the
delta between the expected and the current FN as it may give a better
clue what goes wrong
Change-Id: Ie361df30852570fe8a47347a42e962db869ccf82
The function bts_rfn_to_fn() uses int32_t for its internal variables and
the input parameter rfn while the callers and everything outside uses
uint32_t to store frame numbers. Lets convert this to uint32_t and use
GSM_TDMA_FN_ macros wherever possible.
Change-Id: Iedd493bb30dd1c342dec031883060c545432e740
Related: OS#5198
A valid GSM frame ranges from 0 to 2715647. When using
set_current_frame_number() to set the current frame number (source
usually is the layer 1 and below) we should not allow invalid frame
numbers.
Note: this also fixes FnTest which uses invalid frame numbers for
testsing.
Change-Id: Iaae31b370fababba975d419b0d20ac15618c296e
Related: OS#5198
The DL-TBF assigned to another MS object may have a totally different
set of reserved resources (TS set, TRX, etc.), so one cannot simply move
those to the new MS. To start with, if the 2 MS are on different TRX it
is clear that one of them will not be really in operation. That's most
probably the DL-TBF being in ASSIGN state on CCCH waiting for PCUIF_CNF
and later X2002 to trigger to start sending DL blocks, but without
confirmation whether the MS is really there. Since the other new MS
object probably has a UL-TBF, that's the one probably operative, and
hence a new DL-TBF can be created at that same time and assigned through
UL-TBF's PACCH.
Unit test test_ms_merge_dl_tbf_different_trx showcases the above
scenario.
Related: SYS#6231
Related: OS#5700
Related: 677bebbe5c
Change-Id: Ie8cb49d5492cfc4cbf8340f3f376b0e6105e8c82
Add a test which showcases a scenario where the PCU ends up with 1
GprsMs object holding a DL-TBF in a weird condition half in one TRX and
half in other due to ms_merge().
This test (slightly adapted) used to cause a crash in osmo-pcu.git
586ddda9bc (a few versions behind current
master).
Related: SYS#6231
Change-Id: Ic16b5e96debf91e72684833cd64253687857f3aa