Hello Jenkins Builder,
I'd like you to reexamine a change. Please visit
https://gerrit.osmocom.org/c/osmo-bts/+/35095?usp=email
to look at the new patch set (#3).
Change subject: early-IA: use the correct TRX
......................................................................
early-IA: use the correct TRX
In early-Immediate-Assignment, the BSC sends the IMM ASS message
directly after it sent the Channel Activation message, and osmo-bts
should cache it until the Channel Activation is complete.
So far the code had a bug: it assumed that the lchan was on the same TRX
where the IMM ASS is transmitted -- but actually, 'trx' refers to the
BCCH channel's TRX, i.e. always c0.
Instead, look up the correct TRX by the ARFCN in the IMM ASS message.
Now, when frequency hopping is enabled, there will be no ARFCN in the
IMM ASS message, hence this fix does not work with frequency hopping.
Related osmo-bsc patch disallows this combination.
(To also support frequency hopping, osmo-bsc would need to modify the
RSL protocol: send the IMM ASS message as a custom IE directly as part
of the Channel Activation. Then it is always possible to correllate the
IMM ASS with a specific trx and lchan, no matter what information it
contains. However, early-IA is a "bad" feature in itself as it
"promotes" having high latency on Abis. It seems unnecessary to do extra
work to also support this odd use case for frequency hopping.)
Related: osmo-bsc I8d375e5155be7b53034d5c0be5566d2f33af5db0
Related: SYS#6655
Change-Id: Id9a930e5c67122812b229dc27ea2bfe246b67611
---
M src/common/rsl.c
1 file changed, 67 insertions(+), 9 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-bts refs/changes/95/35095/3
--
To view, visit https://gerrit.osmocom.org/c/osmo-bts/+/35095?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-bts
Gerrit-Branch: master
Gerrit-Change-Id: Id9a930e5c67122812b229dc27ea2bfe246b67611
Gerrit-Change-Number: 35095
Gerrit-PatchSet: 3
Gerrit-Owner: neels <nhofmeyr(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-MessageType: newpatchset
Attention is currently required from: laforge.
daniel has posted comments on this change. ( https://gerrit.osmocom.org/c/libosmocore/+/34879?usp=email )
Change subject: Disable uring when building for embedded
......................................................................
Patch Set 1:
(1 comment)
Patchset:
PS1:
> why is it bad to run the pkg-config check unconditionally? It will fail and not include the related […]
In https://projects.osmocom.org/issues/6233 Hörnchen reported that it errors out even with this patch.
At the time I think this was also the case with libpcsclite. If you don't have the -dev package it will fail configure even with --enable-embedded, all our dev machines just happen to have the "requirements" installed.
Reproduce by changing the requirements to something invalid in configure.ac, like PKG_CHECK_MODULES(PCSC, libpcsclight) in line 200. I tried to put these checks after if test x"$embedded", but this didn't change the behavior.
--
To view, visit https://gerrit.osmocom.org/c/libosmocore/+/34879?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: libosmocore
Gerrit-Branch: master
Gerrit-Change-Id: Iec2503986c6d3487761ba592daef0fd42478aa7d
Gerrit-Change-Number: 34879
Gerrit-PatchSet: 1
Gerrit-Owner: daniel <dwillmann(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
Gerrit-Attention: laforge <laforge(a)osmocom.org>
Gerrit-Comment-Date: Wed, 22 Nov 2023 17:10:53 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Comment-In-Reply-To: laforge <laforge(a)osmocom.org>
Comment-In-Reply-To: daniel <dwillmann(a)sysmocom.de>
Gerrit-MessageType: comment
Attention is currently required from: arehbein, laforge.
daniel has posted comments on this change. ( https://gerrit.osmocom.org/c/libosmo-sccp/+/35073?usp=email )
Change subject: port from osmo_stream_*_get_ofd() to osmo_stream_srv_get_fd()
......................................................................
Patch Set 2: Code-Review+1
(2 comments)
File src/osmo_ss7_asp.c:
https://gerrit.osmocom.org/c/libosmo-sccp/+/35073/comment/3ec83c43_196abe23
PS1, Line 846: asp->sock_name = osmo_sock_get_name(asp, fd);
> `osmo_sock_get_name_buf()` (which will be called) does check for `fd < 0`, not sure if we also want […]
Done
https://gerrit.osmocom.org/c/libosmo-sccp/+/35073/comment/663f118a_5127442b
PS1, Line 915: return ipa_rx_msg(asp, msg, fd & 0xf);
> no, not problematic at all. […]
I was also a bit puzzled when reading this and just assumed something like that was happening.
--
To view, visit https://gerrit.osmocom.org/c/libosmo-sccp/+/35073?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: libosmo-sccp
Gerrit-Branch: master
Gerrit-Change-Id: I12c66badfb4bdfdfe71f1716de960d353d3548b1
Gerrit-Change-Number: 35073
Gerrit-PatchSet: 2
Gerrit-Owner: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: arehbein <arehbein(a)sysmocom.de>
Gerrit-Reviewer: daniel <dwillmann(a)sysmocom.de>
Gerrit-Attention: arehbein <arehbein(a)sysmocom.de>
Gerrit-Attention: laforge <laforge(a)osmocom.org>
Gerrit-Comment-Date: Wed, 22 Nov 2023 16:59:34 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: Yes
Comment-In-Reply-To: arehbein <arehbein(a)sysmocom.de>
Comment-In-Reply-To: laforge <laforge(a)osmocom.org>
Gerrit-MessageType: comment
Hello Jenkins Builder,
I'd like you to reexamine a change. Please visit
https://gerrit.osmocom.org/c/osmo-bts/+/35095?usp=email
to look at the new patch set (#2).
Change subject: early-IA: use the correct TRX
......................................................................
early-IA: use the correct TRX
In early-Immediate-Assignment, the BSC sends the IMM ASS message
directly after it sent the Channel Activation message, and osmo-bts
should cache it until the Channel Activation is complete.
So far the code had a bug: it assumed that the lchan was on the same TRX
where the IMM ASS is transmitted -- but actually, 'trx' refers to the
BCCH channel's TRX, i.e. always c0.
Instead, look up the correct TRX by the ARFCN in the IMM ASS message.
Now, when frequency hopping is enabled, there will be no ARFCN in the
IMM ASS message, hence this fix does not work with frequency hopping.
(To also support frequency hopping, osmo-bsc would need to modify the
RSL protocol: send the IMM ASS message as a custom IE directly as part
of the Channel Activation. Then it is always possible to correllate the
IMM ASS with a specific trx and lchan, no matter what information it
contains. However, early-IA is a "bad" feature in itself as it
"promotes" having high latency on Abis. It seems unnecessary to do extra
work to also support this odd use case for frequency hopping.)
Related: SYS#6655
Change-Id: Id9a930e5c67122812b229dc27ea2bfe246b67611
---
M src/common/rsl.c
1 file changed, 65 insertions(+), 9 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-bts refs/changes/95/35095/2
--
To view, visit https://gerrit.osmocom.org/c/osmo-bts/+/35095?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-bts
Gerrit-Branch: master
Gerrit-Change-Id: Id9a930e5c67122812b229dc27ea2bfe246b67611
Gerrit-Change-Number: 35095
Gerrit-PatchSet: 2
Gerrit-Owner: neels <nhofmeyr(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-MessageType: newpatchset
Jenkins Builder has posted comments on this change. ( https://gerrit.osmocom.org/c/osmo-pcu/+/35096?usp=email )
Change subject: gprs_rlcmac_sched: fix condition for generating dummy blocks on idle
......................................................................
Patch Set 1:
(1 comment)
File src/bts.h:
Robot Comment from checkpatch (run ID jenkins-gerrit-lint-12577):
https://gerrit.osmocom.org/c/osmo-pcu/+/35096/comment/a5197d21_76a7346e
PS1, Line 284: * continous stream of PDCH blocks that already has the gaps filled with dummy blocks. */
'continous' may be misspelled - perhaps 'continuous'?
--
To view, visit https://gerrit.osmocom.org/c/osmo-pcu/+/35096?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-pcu
Gerrit-Branch: master
Gerrit-Change-Id: I7a08d8cc670fa14f7206ffffdbc22351f3668a17
Gerrit-Change-Number: 35096
Gerrit-PatchSet: 1
Gerrit-Owner: dexter <pmaier(a)sysmocom.de>
Gerrit-CC: Jenkins Builder
Gerrit-Comment-Date: Wed, 22 Nov 2023 16:29:57 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Gerrit-MessageType: comment
dexter has submitted this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/35090?usp=email )
Change subject: PCUIF_Types: make PCUIF_info_ind field bts_model optional
......................................................................
PCUIF_Types: make PCUIF_info_ind field bts_model optional
The field bts_model has been introduced with PCUIF v12, which is now
used in master. In latest we still use PCUIF v11, where the bts_model
field is not present. This means that when we test against osmo-bts
latest there will be an error parsing PCUIF_info_ind. A solution to this
problem is to declare the bts_model field as an optional field until
PCUIF v12 is also used in latest.
Related: OS#6191
Change-Id: I45947f3bddaccafee82824ebb1b8494eabc67e7a
---
M library/PCUIF_Types.ttcn
1 file changed, 24 insertions(+), 2 deletions(-)
Approvals:
laforge: Looks good to me, but someone else must approve
osmith: Looks good to me, approved
Jenkins Builder: Verified
diff --git a/library/PCUIF_Types.ttcn b/library/PCUIF_Types.ttcn
index 12c704f..33b454f 100644
--- a/library/PCUIF_Types.ttcn
+++ b/library/PCUIF_Types.ttcn
@@ -212,7 +212,11 @@
record length(2) of uint16_t remote_port,
PCUIF_RemoteAddr remote_addr,
- PCUIF_bts_model bts_model
+ /* The bts_model field was introduced with PCUIF v12 as a new mandatory field. This also means that when we
+ * use the testsuite to test against latest builds (still uses PCUIF v11) this field is not included in
+ * the PCUIF_info_ind message. Since the testsuite does not check on this field we decided to declare the
+ * field as an optional field until PCUIF v12 is also used in the latest builds.*/
+ PCUIF_bts_model bts_model optional
} with { variant "" };
type enumerated PCUIF_AddrType {
@@ -992,7 +996,8 @@
local_port := ?,
remote_port := ?,
remote_addr := ?,
- bts_model := ?
+ /* See note in record PCUIF_info_ind */
+ bts_model := *
}
}
}
--
To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/35090?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: I45947f3bddaccafee82824ebb1b8494eabc67e7a
Gerrit-Change-Number: 35090
Gerrit-PatchSet: 1
Gerrit-Owner: dexter <pmaier(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: dexter <pmaier(a)sysmocom.de>
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: osmith <osmith(a)sysmocom.de>
Gerrit-MessageType: merged
dexter has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-pcu/+/35096?usp=email )
Change subject: gprs_rlcmac_sched: fix condition for generating dummy blocks on idle
......................................................................
gprs_rlcmac_sched: fix condition for generating dummy blocks on idle
When a PDCH is idle, then the gaps are filled with dummy blocks. OsmoPCU
supports generating the dummy blocks locally, so that a continous stream of
PDCH blocks is sent to L1. However, some BTS models (the OsmoTRX based models
in particular) are able to generate the idle blocks locally. In this case the
PCU should leave the genration of the dummy blocks to the BTS in order to
save processing time and load on the PCUIF interface.
In gprs_rlcmac_sched we already have a flag to skip idle frames in case we do
not use the so called "direct phy access". A similar mechanism also exists in
pcu_l1_if.cpp in function pcu_rx_rts_req_ptcch().
Unfortunately this check is not implemented correctly. The flag gets set when
the ENABLE_DIRECT_PHY define constant is set. However, this does not say
anything about whether the BTS model supports the generation of idle blocks or
not. The define constant is intended to be used to disable direct phy related
code in on platforms where no direct phy code is used or cannot be used. We
must instead check the BTS model (bts->bts_model) in order to decide whether
this particular BTS type requires the generation of dummy blocks or not.
Related: OS#6191
Change-Id: I7a08d8cc670fa14f7206ffffdbc22351f3668a17
---
M src/bts.h
M src/gprs_rlcmac_sched.cpp
M src/pcu_l1_if.cpp
3 files changed, 63 insertions(+), 9 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-pcu refs/changes/96/35096/1
diff --git a/src/bts.h b/src/bts.h
index 1d88cb5..6958881 100644
--- a/src/bts.h
+++ b/src/bts.h
@@ -278,6 +278,11 @@
/* BTS hardware model, see pcuif_proto.h */
uint8_t bts_model;
+
+ /* When the PDCH is idele, the timeslot is expected to transmit dummy blocks. Some BTS models will generate
+ * those dummy blocks automatically when no data is transmitted. In contrast, other BTS models may require a
+ * continous stream of PDCH blocks that already has the gaps filled with dummy blocks. */
+ bool gen_idle_blocks;
};
struct paging_req_cs {
diff --git a/src/gprs_rlcmac_sched.cpp b/src/gprs_rlcmac_sched.cpp
index 314fd58..12b9e50 100644
--- a/src/gprs_rlcmac_sched.cpp
+++ b/src/gprs_rlcmac_sched.cpp
@@ -487,11 +487,10 @@
const unsigned num_tbfs = pdch->num_tbfs(GPRS_RLCMAC_DL_TBF)
+ pdch->num_tbfs(GPRS_RLCMAC_UL_TBF);
bool skip_idle = (num_tbfs == 0);
-#ifdef ENABLE_DIRECT_PHY
- /* In DIRECT_PHY mode we want to always submit something to L1 in
- * TRX0, since BTS is not preparing dummy bursts on idle TS for us */
- skip_idle = skip_idle && trx != 0;
-#endif
+
+ if (bts->gen_idle_blocks)
+ skip_idle = skip_idle && trx != 0;
+
if (!skip_idle && (msg = sched_dummy())) {
/* increase counter */
gsmtap_cat = PCU_GSMTAP_C_DL_DUMMY;
diff --git a/src/pcu_l1_if.cpp b/src/pcu_l1_if.cpp
index e391829..07082d3 100644
--- a/src/pcu_l1_if.cpp
+++ b/src/pcu_l1_if.cpp
@@ -551,11 +551,10 @@
const unsigned num_tbfs = pdch->num_tbfs(GPRS_RLCMAC_DL_TBF)
+ pdch->num_tbfs(GPRS_RLCMAC_UL_TBF);
bool skip_idle = (num_tbfs == 0);
-#ifdef ENABLE_DIRECT_PHY
- /* In DIRECT_PHY mode we want to always submit something to L1 in
- * TRX0, since BTS is not preparing dummy bursts on idle TS for us: */
+
+ if (bts->gen_idle_blocks)
skip_idle = skip_idle && trx != 0;
-#endif
+
if (skip_idle) {
pcu_l1if_tx_ptcch(bts, trx, ts, bts->trx[trx].arfcn, fn, block_nr,
NULL, 0);
@@ -735,6 +734,27 @@
{ 0, NULL }
};
+static bool decide_gen_idle_blocks(struct gprs_rlcmac_bts *bts)
+{
+ switch (bts->bts_model) {
+ case PCU_IF_BTS_MODEL_UNSPEC:
+ case PCU_IF_BTS_MODEL_LC15:
+ case PCU_IF_BTS_MODEL_OC2G:
+ case PCU_IF_BTS_MODEL_OCTPHY:
+ case PCU_IF_BTS_MODEL_SYSMO:
+ case PCU_IF_BTS_MODEL_RBS:
+ /* The BTS models above do not generate dummy blocks by themselves, so OsmoPCU must fill the idle gaps in the
+ * stream of generated PDCH blocks with dummy blocks. */
+ return true;
+ case PCU_IF_BTS_MODEL_TRX:
+ /* The BTS models above generate dummy blocks by themselves, so OsmoBTS will only generate PDCH bloks that
+ * actually contain data. On idle, no blocks are generated. */
+ return false;
+ default:
+ return false;
+ }
+}
+
static int pcu_rx_info_ind(struct gprs_rlcmac_bts *bts, const struct gsm_pcu_if_info_ind *info_ind)
{
struct gprs_bssgp_pcu *pcu;
@@ -946,6 +966,7 @@
LOGP(DL1IF, LOGL_INFO, "BTS model: %s\n", get_value_string(gsm_pcuif_bts_model_names, info_ind->bts_model));
bts->bts_model = info_ind->bts_model;
+ bts->gen_idle_blocks = decide_gen_idle_blocks(bts);
bts->active = true;
return rc;
--
To view, visit https://gerrit.osmocom.org/c/osmo-pcu/+/35096?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-pcu
Gerrit-Branch: master
Gerrit-Change-Id: I7a08d8cc670fa14f7206ffffdbc22351f3668a17
Gerrit-Change-Number: 35096
Gerrit-PatchSet: 1
Gerrit-Owner: dexter <pmaier(a)sysmocom.de>
Gerrit-MessageType: newchange
neels has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-bts/+/35095?usp=email )
Change subject: early-IA: use the correct TRX
......................................................................
early-IA: use the correct TRX
Change-Id: Id9a930e5c67122812b229dc27ea2bfe246b67611
---
M src/common/rsl.c
1 file changed, 43 insertions(+), 9 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-bts refs/changes/95/35095/1
diff --git a/src/common/rsl.c b/src/common/rsl.c
index deeb255..9405c6e 100644
--- a/src/common/rsl.c
+++ b/src/common/rsl.c
@@ -371,6 +371,16 @@
return true;
}
+static struct gsm_bts_trx *trx_lookup_by_arfcn(struct llist_head *trx_list, uint16_t arfcn)
+{
+ struct gsm_bts_trx *trx;
+ llist_for_each_entry(trx, trx_list, list) {
+ if (trx->arfcn == arfcn)
+ return trx;
+ }
+ return NULL;
+}
+
static struct gsm_lchan *lchan_lookup(struct gsm_bts_trx *trx, uint8_t chan_nr,
const char *log_name)
{
@@ -1383,18 +1393,33 @@
* the channel is active. Hence we still wait for the activation, but don't need the Abis roundtrip of Activ ACK
* -> Immediate Assignment via the BSC.
* If anything is wrong with the sizes or the lchan lookup, behave normally, i.e. do not do the RR IA caching,
- * but just send the RR message to the MS as-is. */
+ * but just send the RR message to the MS as-is.
+ * 'trx' here is the TRX of the BCCH channel. To find the correct TRX for the IMM ASS target, we need to look up
+ * the ARFCN that is contained in the IMM ASS message. When frequency hopping is enabled, there will not be an
+ * ARFCN, so we cannot support early-IA with frequency hopping enabled. */
if (msg->len >= sizeof(struct gsm48_imm_ass)) {
struct gsm48_imm_ass *rr_ia = (void*)msg->data;
- struct gsm_lchan *ia_target_lchan = lchan_lookup(trx, rr_ia->chan_desc.chan_nr, "Early IA check: ");
- if (ia_target_lchan && ia_target_lchan->state != LCHAN_S_ACTIVE) {
- /* Target lchan is not yet active. Cache the IA.
- * If a previous IA is still lingering, free it. */
- msgb_free(ia_target_lchan->early_rr_ia);
- ia_target_lchan->early_rr_ia = msg;
+ if (rr_ia->chan_desc.h0.h == 0) {
+ /* hopping is disabled. */
+ struct gsm_bts_trx *ia_target_trx;
+ uint16_t arfcn;
+ arfcn = (rr_ia->chan_desc.h0.arfcn_high << 8) + rr_ia->chan_desc.h0.arfcn_low;
- /* return 1 means: don't msgb_free() the msg */
- return 1;
+ ia_target_trx = trx_lookup_by_arfcn(&trx->bts->trx_list, arfcn);
+ if (ia_target_trx) {
+ /* found the ARFCN's trx */
+ struct gsm_lchan *ia_target_lchan;
+ ia_target_lchan = lchan_lookup(ia_target_trx, rr_ia->chan_desc.chan_nr, "Early IA check: ");
+ if (ia_target_lchan && ia_target_lchan->state != LCHAN_S_ACTIVE) {
+ /* Target lchan is not yet active. Cache the IA.
+ * If a previous IA is still lingering, free it. */
+ msgb_free(ia_target_lchan->early_rr_ia);
+ ia_target_lchan->early_rr_ia = msg;
+
+ /* return 1 means: don't msgb_free() the msg */
+ return 1;
+ }
+ }
}
}
--
To view, visit https://gerrit.osmocom.org/c/osmo-bts/+/35095?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-bts
Gerrit-Branch: master
Gerrit-Change-Id: Id9a930e5c67122812b229dc27ea2bfe246b67611
Gerrit-Change-Number: 35095
Gerrit-PatchSet: 1
Gerrit-Owner: neels <nhofmeyr(a)sysmocom.de>
Gerrit-MessageType: newchange