Attention is currently required from: falconia, dexter.
laforge has posted comments on this change. ( https://gerrit.osmocom.org/c/libosmocore/+/32685 )
Change subject: codec: replace GSM-FR ECU with new implementation
......................................................................
Patch Set 2:
(1 comment)
Patchset:
PS2:
Adding @pmaier, I know close to nothing about those ECUs.
My general comment to this is that the current ECU interface is not set in stone. If you think there's a way to bring it more in-line with what the specs intend to do, and it's not rewriting half of osmo-bts, I'd be interested to hear/read about it.
--
To view, visit https://gerrit.osmocom.org/c/libosmocore/+/32685
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: libosmocore
Gerrit-Branch: master
Gerrit-Change-Id: I0200e423ca6165c1313ec9a4effc3f3047f5f032
Gerrit-Change-Number: 32685
Gerrit-PatchSet: 2
Gerrit-Owner: falconia <falcon(a)freecalypso.org>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: dexter <pmaier(a)sysmocom.de>
Gerrit-CC: laforge <laforge(a)osmocom.org>
Gerrit-Attention: falconia <falcon(a)freecalypso.org>
Gerrit-Attention: dexter <pmaier(a)sysmocom.de>
Gerrit-Comment-Date: Thu, 11 May 2023 10:37:19 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Gerrit-MessageType: comment
Attention is currently required from: matanp.
laforge has posted comments on this change. ( https://gerrit.osmocom.org/c/pysim/+/32686 )
Change subject: cards: Add support for Gialer SIM cards
......................................................................
Patch Set 1:
(2 comments)
File pySim/cards.py:
https://gerrit.osmocom.org/c/pysim/+/32686/comment/328a7833_23be1b4c
PS1, Line 1668: def autodetect(kls, scc):
isn't it possible to auto-detect the cards based on ATR or some other criteria?
https://gerrit.osmocom.org/c/pysim/+/32686/comment/74774617_d27882db
PS1, Line 1700:
are you sure there aren't various other files you'd need to program? Like EF.AD for 2/3-digit MNC, etc.
Also, the product homepage states the product is a USIM, but you'r eonly adding GSM Ki here, no K/OPC. Is that intended?
--
To view, visit https://gerrit.osmocom.org/c/pysim/+/32686
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: pysim
Gerrit-Branch: master
Gerrit-Change-Id: Icd2021aec630ac018f66ab565e03112047389e17
Gerrit-Change-Number: 32686
Gerrit-PatchSet: 1
Gerrit-Owner: matanp <matan1008(a)gmail.com>
Gerrit-Reviewer: Jenkins Builder
Gerrit-CC: laforge <laforge(a)osmocom.org>
Gerrit-Attention: matanp <matan1008(a)gmail.com>
Gerrit-Comment-Date: Thu, 11 May 2023 10:17:12 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Gerrit-MessageType: comment
dexter has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-bts/+/32687 )
Change subject: paging: rename all IMM.ASS references to MACBLOCK
......................................................................
paging: rename all IMM.ASS references to MACBLOCK
The paging interface towards the PCU has a confusing API. In fact what
the PCU does when it wants to page or do an immediate assignment is
sending a ready formatted macblock to the BTS. The BTS then puts this
macblock in the paging queue and then eventually it justs sends it
without looking at the contents. For the code in paging.c it is not
imortant if the macblock is an immediate assignment, it only cares if
the paging record contains a macblock or paging parameters.
Related: OS##5927
Change-Id: Ifab37fdedaba98b160718113767e4ef6ee7d16ad
---
M include/osmo-bts/paging.h
M src/common/paging.c
M src/common/pcu_sock.c
3 files changed, 48 insertions(+), 28 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-bts refs/changes/87/32687/1
diff --git a/include/osmo-bts/paging.h b/include/osmo-bts/paging.h
index fb50323..b413606 100644
--- a/include/osmo-bts/paging.h
+++ b/include/osmo-bts/paging.h
@@ -35,9 +35,10 @@
int paging_add_identity(struct paging_state *ps, uint8_t paging_group,
const uint8_t *identity_lv, uint8_t chan_needed);
-/* Add an IMM.ASS message to the paging queue */
-int paging_add_imm_ass(struct paging_state *ps,
- const uint8_t *data, uint8_t len);
+/* Add a ready formatted MACBLOCK message to the paging queue, this can be an IMMEDIATE ASSIGNMENT, or a
+ * PAGING COMMAND (from the PCU) */
+int paging_add_macblock(struct paging_state *ps,
+ const uint8_t *data, uint8_t len);
/* generate paging message for given gsm time */
int paging_gen_msg(struct paging_state *ps, uint8_t *out_buf, struct gsm_time *gt,
diff --git a/src/common/paging.c b/src/common/paging.c
index 26ba9b0..c7a6607 100644
--- a/src/common/paging.c
+++ b/src/common/paging.c
@@ -48,8 +48,8 @@
#define MAX_BS_PA_MFRMS 9
enum paging_record_type {
- PAGING_RECORD_PAGING,
- PAGING_RECORD_IMM_ASS
+ PAGING_RECORD_NORMAL,
+ PAGING_RECORD_MACBLOCK
};
struct paging_record {
@@ -63,7 +63,7 @@
} paging;
struct {
uint8_t msg[GSM_MACBLOCK_LEN];
- } imm_ass;
+ } macblock;
} u;
};
@@ -88,9 +88,9 @@
/* The prioritization of cs pagings is controlled by a hysteresis. When the
* fill state of the paging queue exceeds the upper fill level
- * THRESHOLD_CONGESTED [%], then PS pagings (immediate assignments) will be
- * dropped until fill state of the paging queue drops under the lower fill
- * level THRESHOLD_CLEAR [%]. */
+ * THRESHOLD_CONGESTED [%], then PS pagings (immediate assignments and pagings
+ * from the PCU) will be dropped until fill state of the paging queue drops
+ * under the lower fill level THRESHOLD_CLEAR [%]. */
#define THRESHOLD_CONGESTED 66 /* (percent of num_paging_max) */
#define THRESHOLD_CLEAR 50 /* (percent of num_paging_max) */
@@ -230,7 +230,7 @@
/* Check if we already have this identity */
llist_for_each_entry(pr, group_q, list) {
- if (pr->type != PAGING_RECORD_PAGING)
+ if (pr->type != PAGING_RECORD_NORMAL)
continue;
if (identity_lv[0] == pr->u.paging.identity_lv[0] &&
!memcmp(identity_lv+1, pr->u.paging.identity_lv+1,
@@ -245,7 +245,7 @@
pr = talloc_zero(ps, struct paging_record);
if (!pr)
return -ENOMEM;
- pr->type = PAGING_RECORD_PAGING;
+ pr->type = PAGING_RECORD_NORMAL;
if (*identity_lv + 1 > sizeof(pr->u.paging.identity_lv)) {
talloc_free(pr);
@@ -267,8 +267,9 @@
return 0;
}
-/* Add an IMM.ASS message to the paging queue */
-int paging_add_imm_ass(struct paging_state *ps,
+/* Add a ready formatted MACBLOCK message to the paging queue, this can be an IMMEDIATE ASSIGNMENT, or a
+ * PAGING COMMAND (from the PCU) */
+int paging_add_macblock(struct paging_state *ps,
const uint8_t *data, uint8_t len)
{
struct llist_head *group_q;
@@ -285,7 +286,7 @@
}
if (len != GSM_MACBLOCK_LEN + 3) {
- LOGP(DPAG, LOGL_ERROR, "IMM.ASS invalid length %d\n", len);
+ LOGP(DPAG, LOGL_ERROR, "macblock with invalid length %d (GSM_MACBLOCK_LEN + 3)\n", len);
return -EINVAL;
}
len -= 3;
@@ -300,11 +301,11 @@
pr = talloc_zero(ps, struct paging_record);
if (!pr)
return -ENOMEM;
- pr->type = PAGING_RECORD_IMM_ASS;
+ pr->type = PAGING_RECORD_MACBLOCK;
- LOGP(DPAG, LOGL_INFO, "Add IMM.ASS to queue (group=%u)\n",
+ LOGP(DPAG, LOGL_INFO, "Add macblock to paging queue (group=%u)\n",
paging_group);
- memcpy(pr->u.imm_ass.msg, data, GSM_MACBLOCK_LEN);
+ memcpy(pr->u.macblock.msg, data, GSM_MACBLOCK_LEN);
/* enqueue the new message to the HEAD of the queue */
llist_add(&pr->list, group_q);
@@ -599,7 +600,7 @@
*is_empty = 1;
} else {
struct paging_record *pr[4];
- unsigned int num_pr = 0, imm_ass = 0;
+ unsigned int num_pr = 0, macblock = 0;
time_t now = time(NULL);
unsigned int i, num_imsi = 0;
@@ -611,9 +612,9 @@
break;
pr[i] = dequeue_pr(group_q);
- /* check for IMM.ASS */
- if (pr[i]->type == PAGING_RECORD_IMM_ASS) {
- imm_ass = 1;
+ /* check for MACBLOCK */
+ if (pr[i]->type == PAGING_RECORD_MACBLOCK) {
+ macblock = 1;
break;
}
@@ -624,16 +625,16 @@
num_imsi++;
}
- /* if we have an IMMEDIATE ASSIGNMENT */
- if (imm_ass) {
- /* re-add paging records */
+ /* if we have a MACBLOCK (from the PCU), we send a conformation back */
+ if (macblock) {
+ /* re-add normal paging records */
for (i = 0; i < num_pr; i++)
llist_add(&pr[i]->list, group_q);
- /* get message and free record */
- memcpy(out_buf, pr[num_pr]->u.imm_ass.msg,
+ /* get MACBLOCK message and free record */
+ memcpy(out_buf, pr[num_pr]->u.macblock.msg,
GSM_MACBLOCK_LEN);
- pcu_tx_pch_data_cnf(gt->fn, pr[num_pr]->u.imm_ass.msg,
+ pcu_tx_pch_data_cnf(gt->fn, pr[num_pr]->u.macblock.msg,
GSM_MACBLOCK_LEN);
talloc_free(pr[num_pr]);
return GSM_MACBLOCK_LEN;
diff --git a/src/common/pcu_sock.c b/src/common/pcu_sock.c
index 2fb0524..00debad 100644
--- a/src/common/pcu_sock.c
+++ b/src/common/pcu_sock.c
@@ -675,7 +675,7 @@
switch (data_req->sapi) {
case PCU_IF_SAPI_PCH:
- paging_add_imm_ass(bts->paging_state, data_req->data, data_req->len);
+ paging_add_macblock(bts->paging_state, data_req->data, data_req->len);
break;
case PCU_IF_SAPI_AGCH:
msg = msgb_alloc(data_req->len, "pcu_agch");
--
To view, visit https://gerrit.osmocom.org/c/osmo-bts/+/32687
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-bts
Gerrit-Branch: master
Gerrit-Change-Id: Ifab37fdedaba98b160718113767e4ef6ee7d16ad
Gerrit-Change-Number: 32687
Gerrit-PatchSet: 1
Gerrit-Owner: dexter <pmaier(a)sysmocom.de>
Gerrit-MessageType: newchange
Attention is currently required from: laforge, pespin.
Hello Jenkins Builder, fixeria,
I'd like you to reexamine a change. Please visit
https://gerrit.osmocom.org/c/osmo-bts/+/32110
to look at the new patch set (#4).
Change subject: common+trx: make uplink ECU optional
......................................................................
common+trx: make uplink ECU optional
Current osmo-bts-trx includes a provision for invoking ECUs from
libosmocodec in the UL path from the channel decoder to the RTP
output; no other models currently do likewise, but there is no
particular reason why this ECU invokation couldn't be moved into
model-independent code.
However, the approach of applying an ECU to the UL output of a BTS
directly inside that BTS runs counter to standard GSM architecture;
instead the places where ECUs are to be implemented in the classic
architecture are as follows:
* At the decoding input of speech transcoders, be they TRAUs or
network edge TCs;
* In the Rx DTX handler block of every GSM MS;
* Possibly in the downlink path of TRAUs (the component preparing
the DL frame stream going to a BTS PHY) in the case of TFO.
In the RTP-based RAN environment, the following two scenarios are
most relevant:
1) In a call with only one GSM leg (the other leg is in the outside
world), the best possible ECU would be one that is absorbed into
the Rx DTX handler block at the decoding input of the network
edge transcoder.
2) In a TrFO call from one GSM MS to another, the best approach is
for the network to not apply any ECUs at all, and let all bad
frame handling take place in the receiving MS on each end of
the call.
In neither scenario is there anything to be gained from applying
an ECU at the point of UL RTP output from the BTS - therefore,
having one unconditionally included in a BTS with no way to disable
it is bad. Provide a vty option to enable or disable BTS-internal
application of an ECU to UL RTP output.
To avoid upsetting existing users, the default is left unchanged:
the built-in ECU *is* applied to the uplink. However, given that
this current default is counter to standard GSM architecture,
it may be worth considering changing it in the future.
Related: OS#6027
Change-Id: I0acca9c6d7da966a623287563e0789db9e0fae8e
---
M include/osmo-bts/bts.h
M src/common/vty.c
M src/osmo-bts-trx/l1_if.c
M tests/osmo-bts.vty
4 files changed, 93 insertions(+), 3 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-bts refs/changes/10/32110/4
--
To view, visit https://gerrit.osmocom.org/c/osmo-bts/+/32110
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-bts
Gerrit-Branch: master
Gerrit-Change-Id: I0acca9c6d7da966a623287563e0789db9e0fae8e
Gerrit-Change-Number: 32110
Gerrit-PatchSet: 4
Gerrit-Owner: falconia <falcon(a)freecalypso.org>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-CC: laforge <laforge(a)osmocom.org>
Gerrit-CC: pespin <pespin(a)sysmocom.de>
Gerrit-Attention: laforge <laforge(a)osmocom.org>
Gerrit-Attention: pespin <pespin(a)sysmocom.de>
Gerrit-MessageType: newpatchset
Attention is currently required from: falconia.
Hello Jenkins Builder,
I'd like you to reexamine a change. Please visit
https://gerrit.osmocom.org/c/libosmocore/+/32685
to look at the new patch set (#2).
Change subject: codec: replace GSM-FR ECU with new implementation
......................................................................
codec: replace GSM-FR ECU with new implementation
The original GSM-FR ECU implementation from 2017 exhibits a lot of
defects, as detailed in OS#6027. Replace it with a new implementation
based on Themyscira libgsmfrp (a complete Rx DTX handler for GSM-FR),
but reduced to just the ECU function, without the comfort noise
generator function. (These two functions are coupled together in the
classic GSM architecture, but not in libosmocodec ECU model.)
Related: OS#6027
Change-Id: I0200e423ca6165c1313ec9a4effc3f3047f5f032
---
M include/osmocom/codec/ecu.h
M src/codec/Makefile.am
M src/codec/ecu_fr.c
A src/codec/ecu_fr_old.c
M tests/codec/codec_ecu_fr_test.c
M tests/codec/codec_ecu_fr_test.ok
6 files changed, 466 insertions(+), 163 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/85/32685/2
--
To view, visit https://gerrit.osmocom.org/c/libosmocore/+/32685
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: libosmocore
Gerrit-Branch: master
Gerrit-Change-Id: I0200e423ca6165c1313ec9a4effc3f3047f5f032
Gerrit-Change-Number: 32685
Gerrit-PatchSet: 2
Gerrit-Owner: falconia <falcon(a)freecalypso.org>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Attention: falconia <falcon(a)freecalypso.org>
Gerrit-MessageType: newpatchset