Attention is currently required from: laforge, fixeria.
Hello osmith, Jenkins Builder, laforge, pespin,
I'd like you to reexamine a change. Please visit
https://gerrit.osmocom.org/c/osmocom-bb/+/33414
to look at the new patch set (#5).
Change subject: modem: properly handle Dedicated mode or TBF IE
......................................................................
modem: properly handle Dedicated mode or TBF IE
We need to distinguish between Uplink and Downlink TBF assignment in
grr_rx_imm_ass(), because matching the Request Reference IE makes
sense only for the Uplink TBF assignment.
Uplink TBFs are requested by the UEs by sending RACH, while Downlink
TBFs are assigned by the network itself. The Request Reference IE
is only valid for Uplink assignments and shall be ignored in messages
assigning Downlink TBFs.
Change-Id: Idb9b3203147be3b42256c0bcab3ecdabcf2d2fa9
Related: OS#5500
---
M src/host/layer23/src/modem/grr.c
1 file changed, 54 insertions(+), 13 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmocom-bb refs/changes/14/33414/5
--
To view, visit https://gerrit.osmocom.org/c/osmocom-bb/+/33414
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmocom-bb
Gerrit-Branch: master
Gerrit-Change-Id: Idb9b3203147be3b42256c0bcab3ecdabcf2d2fa9
Gerrit-Change-Number: 33414
Gerrit-PatchSet: 5
Gerrit-Owner: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: osmith <osmith(a)sysmocom.de>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
Gerrit-Attention: laforge <laforge(a)osmocom.org>
Gerrit-Attention: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-MessageType: newpatchset
neels has submitted this change. ( https://gerrit.osmocom.org/c/osmo-mgw/+/33534 )
Change subject: mgcp: fix "L: a:" header parsing: heed ";" separator
......................................................................
mgcp: fix "L: a:" header parsing: heed ";" separator
In the "L: a:" header, read the first codec name only up to the ";"
separator, and ignore the rest.
According to RFC-2705, the "L: a:" header may include multiple codecs
like "GSM-EFR;GSM" in:
L: p:20, a:GSM-EFR;GSM, nt:IN
osmo-mgw can handle only a single codec here. Since recently, osmo-msc
is our first client that may actually send more than one codec. This
uncovered a bug that leads to failing voice calls:
* osmo-mgw parses the entire list "GSM-EFR;GSM" as a single codec name,
* puts that into the ptmap without scrutiny,
* and even sends it back in the OK response, in the *SDP* part, as a
single "GSM-EFR;GSM" codec entry.
We do not care very much about the "a:" codec list, because we always
establish codecs via SDP later. So all we need to fix this is: parse the
first codec done correctly, and ignore the rest.
Related: OS#6081
Change-Id: I0342e85b32ed89f3a1fdb6131c3c8ded8f47a455
---
M src/libosmo-mgcp/mgcp_protocol.c
1 file changed, 33 insertions(+), 2 deletions(-)
Approvals:
Jenkins Builder: Verified
falconia: Looks good to me, but someone else must approve
fixeria: Looks good to me, but someone else must approve
osmith: Looks good to me, but someone else must approve
neels: Looks good to me, approved
diff --git a/src/libosmo-mgcp/mgcp_protocol.c b/src/libosmo-mgcp/mgcp_protocol.c
index 80e0f8a..978af42 100644
--- a/src/libosmo-mgcp/mgcp_protocol.c
+++ b/src/libosmo-mgcp/mgcp_protocol.c
@@ -672,8 +672,8 @@
case 'a':
/* FIXME: LCO also supports the negotiation of more than one codec.
* (e.g. a:PCMU;G726-32) But this implementation only supports a single
- * codec only. */
- if (sscanf(lco_id + 1, ":%16[^,]", codec) == 1) {
+ * codec only. Ignoring all but the first codec. */
+ if (sscanf(lco_id + 1, ":%16[^,;]", codec) == 1) {
talloc_free(lco->codec);
/* MGCP header is case insensive, and we'll need
codec in uppercase when using it later: */
--
To view, visit https://gerrit.osmocom.org/c/osmo-mgw/+/33534
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-mgw
Gerrit-Branch: master
Gerrit-Change-Id: I0342e85b32ed89f3a1fdb6131c3c8ded8f47a455
Gerrit-Change-Number: 33534
Gerrit-PatchSet: 1
Gerrit-Owner: neels <nhofmeyr(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: falconia <falcon(a)freecalypso.org>
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: neels <nhofmeyr(a)sysmocom.de>
Gerrit-Reviewer: osmith <osmith(a)sysmocom.de>
Gerrit-MessageType: merged
Attention is currently required from: dexter.
pespin has posted comments on this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/33539 )
Change subject: PCU_Tests: verify that PacketCellChangeContine contains an ARFCN and BSIC
......................................................................
Patch Set 2: Code-Review+1
(2 comments)
File pcu/PCU_Tests.ttcn:
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/33539/comment/40bec134_b8d8…
PS1, Line 5368: f_rx_rlcmac_dl_block(dl_block, sched_fn);
> I need to modify the arfcn/bsic parameters before I pass the template.
Ack
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/33539/comment/763dacba_cdc2…
PS1, Line 5370: cell_chg_cont.u.cell_chg_continue.arfcn_bsic_presence := '1'B
> I thought about doing this but then I noticed that it might be not so good to add three more paramet […]
I somehow thought that it was already being passed before, but I somehow mislooked.
--
To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/33539
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: I4b8f3312088e3d2bc4b90702485e7c6a8d39f954
Gerrit-Change-Number: 33539
Gerrit-PatchSet: 2
Gerrit-Owner: dexter <pmaier(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
Gerrit-Attention: dexter <pmaier(a)sysmocom.de>
Gerrit-Comment-Date: Mon, 03 Jul 2023 13:54:25 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: Yes
Comment-In-Reply-To: pespin <pespin(a)sysmocom.de>
Comment-In-Reply-To: dexter <pmaier(a)sysmocom.de>
Gerrit-MessageType: comment
Attention is currently required from: pespin.
dexter has posted comments on this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/33539 )
Change subject: PCU_Tests: verify that PacketCellChangeContine contains an ARFCN and BSIC
......................................................................
Patch Set 2:
(2 comments)
File pcu/PCU_Tests.ttcn:
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/33539/comment/4b9674b9_f591…
PS1, Line 5368: f_rx_rlcmac_dl_block(dl_block, sched_fn);
> why not passing this constructed cell_cfg_cont here in f_rx_rlcmac_dl_block() as it was before?
I need to modify the arfcn/bsic parameters before I pass the template.
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/33539/comment/5b7ddd1b_5d82…
PS1, Line 5370: cell_chg_cont.u.cell_chg_continue.arfcn_bsic_presence := '1'B
> you can probably extend the f_rx_rlcmac_dl_block to have those passed params maybe.
I thought about doing this but then I noticed that it might be not so good to add three more parameters just for a single test. I think it is better to just modify the required bits here instead of adding more and more parameters. Especially those CSN.1 RLCMAC templates have a ton of variations.
(This does not mean that it is technically impossible to add arfcn_bsic_present,arfcn,bsic parameters to the template, but I Think it won't look good.)
--
To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/33539
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: I4b8f3312088e3d2bc4b90702485e7c6a8d39f954
Gerrit-Change-Number: 33539
Gerrit-PatchSet: 2
Gerrit-Owner: dexter <pmaier(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
Gerrit-Attention: pespin <pespin(a)sysmocom.de>
Gerrit-Comment-Date: Mon, 03 Jul 2023 13:25:17 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Comment-In-Reply-To: pespin <pespin(a)sysmocom.de>
Gerrit-MessageType: comment
Attention is currently required from: pespin.
Hello Jenkins Builder, pespin,
I'd like you to reexamine a change. Please visit
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/33540
to look at the new patch set (#3).
Change subject: PCU_Tests: test NACC procedure with UTRAN and E-UTRAN cell
......................................................................
PCU_Tests: test NACC procedure with UTRAN and E-UTRAN cell
When the PacketCellChangeNotification proposes an UTRAN or E-UTRAN cell,
then the PCU will not provide system information. Instead it will directly
conclude the NACC procedure with a PacketCellChangeContinue message.
Related: OS#6044
Change-Id: Idae86a458fd44ac81bab183ed1865b1c1bdbfd66
---
M library/RLCMAC_CSN1_Templates.ttcn
M pcu/PCU_Tests.ttcn
2 files changed, 203 insertions(+), 11 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/40/33540/3
--
To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/33540
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: Idae86a458fd44ac81bab183ed1865b1c1bdbfd66
Gerrit-Change-Number: 33540
Gerrit-PatchSet: 3
Gerrit-Owner: dexter <pmaier(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
Gerrit-Attention: pespin <pespin(a)sysmocom.de>
Gerrit-MessageType: newpatchset
Attention is currently required from: pespin.
dexter has posted comments on this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/33540 )
Change subject: PCU_Tests: test NACC procedure with UTRAN and E-UTRAN cell
......................................................................
Patch Set 3:
(4 comments)
File pcu/PCU_Tests.ttcn:
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/33540/comment/1db3cf2d_9759…
PS2, Line 5336: private function f_outbound_nacc_success_utran_eutran(inout GprsMS ms, PCUIF_info_ind info_ind,
> I think you can really split the UTRAN and EUTRAN cases in different functions, it will be easier to […]
Done
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/33540/comment/8bc1fef0_7ab5…
PS2, Line 5351: cell_chg_notif := ts_RlcMacUlCtrl_PKT_CELL_CHG_NOTIF_EUTRAN(ms.ul_tbf.tfi, req_earfcn, phys_layer_cell_id);
> If this is the only thing that changes, maybe pass template (value) RlcmacUlCtrlMsg cell_chg_notif a […]
Done
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/33540/comment/aefa301b_7e15…
PS2, Line 5378: private function f_outbound_nacc_success(inout GprsMS ms, PCUIF_info_ind info_ind,
> This one should be renamed to _geran in another patch maybe?
Done
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/33540/comment/9d322a86_edf0…
PS2, Line 5427: function f_TC_nacc_outbound_success(integer ran_type) runs on RAW_PCU_Test_CT {
> please enum or string, this is totally hack
Done
--
To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/33540
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: Idae86a458fd44ac81bab183ed1865b1c1bdbfd66
Gerrit-Change-Number: 33540
Gerrit-PatchSet: 3
Gerrit-Owner: dexter <pmaier(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
Gerrit-Attention: pespin <pespin(a)sysmocom.de>
Gerrit-Comment-Date: Mon, 03 Jul 2023 13:25:17 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Comment-In-Reply-To: pespin <pespin(a)sysmocom.de>
Gerrit-MessageType: comment
Attention is currently required from: dexter.
pespin has posted comments on this change. ( https://gerrit.osmocom.org/c/osmo-pcu/+/33538 )
Change subject: nacc_fsm: Add support for NACC with UTRAN and E-UTRAN cells
......................................................................
Patch Set 4: Code-Review+1
--
To view, visit https://gerrit.osmocom.org/c/osmo-pcu/+/33538
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-pcu
Gerrit-Branch: master
Gerrit-Change-Id: I96280f0ec5955ed3cb17641bf4118496c929bdac
Gerrit-Change-Number: 33538
Gerrit-PatchSet: 4
Gerrit-Owner: dexter <pmaier(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
Gerrit-Attention: dexter <pmaier(a)sysmocom.de>
Gerrit-Comment-Date: Mon, 03 Jul 2023 12:46:12 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: Yes
Gerrit-MessageType: comment
Attention is currently required from: pespin.
dexter has posted comments on this change. ( https://gerrit.osmocom.org/c/osmo-pcu/+/33538 )
Change subject: nacc_fsm: Add support for NACC with UTRAN and E-UTRAN cells
......................................................................
Patch Set 4:
(1 comment)
File src/nacc_fsm.c:
https://gerrit.osmocom.org/c/osmo-pcu/+/33538/comment/76cd4991_3d1364ea
PS3, Line 282: ctx->neigh_key_present = false;
> I didn't notice you are setting this already to false in here, so then there's no need to set it to […]
Ah, ok, thought that it would make sense for a second, but yes, lets remove the ctx->neigh_key_present = false; lines again.
--
To view, visit https://gerrit.osmocom.org/c/osmo-pcu/+/33538
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-pcu
Gerrit-Branch: master
Gerrit-Change-Id: I96280f0ec5955ed3cb17641bf4118496c929bdac
Gerrit-Change-Number: 33538
Gerrit-PatchSet: 4
Gerrit-Owner: dexter <pmaier(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
Gerrit-Attention: pespin <pespin(a)sysmocom.de>
Gerrit-Comment-Date: Mon, 03 Jul 2023 12:44:13 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Comment-In-Reply-To: pespin <pespin(a)sysmocom.de>
Gerrit-MessageType: comment
Attention is currently required from: pespin.
Hello Jenkins Builder, pespin,
I'd like you to reexamine a change. Please visit
https://gerrit.osmocom.org/c/osmo-pcu/+/33538
to look at the new patch set (#4).
Change subject: nacc_fsm: Add support for NACC with UTRAN and E-UTRAN cells
......................................................................
nacc_fsm: Add support for NACC with UTRAN and E-UTRAN cells
The NACC procedure in OsmoPCU currently only supports NACC with GERAN
cells. When an UTRAN or E-UTRAN cell is proposed in the
PacketCellChangeNotification, then the FSM is immediately terminated,
meaning that the NACC procedure can not commence.
When the NACC procedure is carried out for UTRAN or E-UTRAN cells, the
PCU will not send any system information to the UE. Instead it
immediately sends a PacketCellChangeContinue message. This also means
that we do not carry out any RAN Information Requests in the background.
This patch adds logic to detect if the proprosed cell is an UTRAN or
E-UTRAN cell and the adds a new transition to the FSM so that a short
route to NACC_ST_TX_CELL_CHG_CONTINUE can be taken.
Related: OS#6044
Change-Id: I96280f0ec5955ed3cb17641bf4118496c929bdac
---
M src/nacc_fsm.c
M src/nacc_fsm.h
2 files changed, 127 insertions(+), 18 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-pcu refs/changes/38/33538/4
--
To view, visit https://gerrit.osmocom.org/c/osmo-pcu/+/33538
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-pcu
Gerrit-Branch: master
Gerrit-Change-Id: I96280f0ec5955ed3cb17641bf4118496c929bdac
Gerrit-Change-Number: 33538
Gerrit-PatchSet: 4
Gerrit-Owner: dexter <pmaier(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
Gerrit-Attention: pespin <pespin(a)sysmocom.de>
Gerrit-MessageType: newpatchset
Attention is currently required from: dexter.
pespin has posted comments on this change. ( https://gerrit.osmocom.org/c/osmo-pcu/+/33538 )
Change subject: nacc_fsm: Add support for NACC with UTRAN and E-UTRAN cells
......................................................................
Patch Set 3:
(1 comment)
File src/nacc_fsm.c:
https://gerrit.osmocom.org/c/osmo-pcu/+/33538/comment/b25ca21b_cad27b9f
PS3, Line 282: ctx->neigh_key_present = false;
I didn't notice you are setting this already to false in here, so then there's no need to set it to false in all other code paths.
--
To view, visit https://gerrit.osmocom.org/c/osmo-pcu/+/33538
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-pcu
Gerrit-Branch: master
Gerrit-Change-Id: I96280f0ec5955ed3cb17641bf4118496c929bdac
Gerrit-Change-Number: 33538
Gerrit-PatchSet: 3
Gerrit-Owner: dexter <pmaier(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
Gerrit-Attention: dexter <pmaier(a)sysmocom.de>
Gerrit-Comment-Date: Mon, 03 Jul 2023 11:41:03 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Gerrit-MessageType: comment
Attention is currently required from: pespin.
dexter has posted comments on this change. ( https://gerrit.osmocom.org/c/osmo-pcu/+/33538 )
Change subject: nacc_fsm: Add support for NACC with UTRAN and E-UTRAN cells
......................................................................
Patch Set 3:
(6 comments)
File src/nacc_fsm.c:
https://gerrit.osmocom.org/c/osmo-pcu/+/33538/comment/859ae223_965633d8
PS2, Line 273: /* Classify the RAT type of the cell that is proposed in the PacketCellChangeNotification. In case the RAT is GERAN,
> Can you maybe convert these defines to an enum and provide spec reference on where to find this exac […]
(I came up with this, those values are just return codes. The spec encodes the RAT type in this weird tree structure.)
https://gerrit.osmocom.org/c/osmo-pcu/+/33538/comment/e56f75ff_3b3d2ee5
PS2, Line 278: static int fill_neigh_key_from_bts_pkt_cell_chg_not(struct nacc_fsm_ctx *ctx,
> I actually think you don't need to return 0/1/2 here, see below.
Done
https://gerrit.osmocom.org/c/osmo-pcu/+/33538/comment/867fef4a_24da7415
PS2, Line 344: return NACC_EUTRAN_CELL;
> maybe set ctx->neigh_key_valid = false explicitly for readers to understand better (and to make sure […]
Done
https://gerrit.osmocom.org/c/osmo-pcu/+/33538/comment/242020b6_9df15c10
PS2, Line 398: } else if (rc == NACC_UTRAN_CELL || rc == NACC_EUTRAN_CELL) {
> I think in here what you may actually want to do is: […]
I think this makes sense. This also simplifies fill_neigh_key_from_bts_pkt_cell_chg_not() and we can check ctx->neigh_key_valid (now renamed to ctx->neigh_key_present). No neigh_key_present + return code 0 => no system information provided.
https://gerrit.osmocom.org/c/osmo-pcu/+/33538/comment/dcc28292_249da948
PS2, Line 433: else if (rc == NACC_UTRAN_CELL || rc == NACC_EUTRAN_CELL) {
> see same as above.
Done
File src/neigh_cache.h:
https://gerrit.osmocom.org/c/osmo-pcu/+/33538/comment/e5b0e89f_012028c9
PS2, Line 68: /* TODO: This function seems to be used only in neigh_cache.c, make it static? */
> this is definetly another patch. Fine with making it static.
Done
--
To view, visit https://gerrit.osmocom.org/c/osmo-pcu/+/33538
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-pcu
Gerrit-Branch: master
Gerrit-Change-Id: I96280f0ec5955ed3cb17641bf4118496c929bdac
Gerrit-Change-Number: 33538
Gerrit-PatchSet: 3
Gerrit-Owner: dexter <pmaier(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
Gerrit-Attention: pespin <pespin(a)sysmocom.de>
Gerrit-Comment-Date: Mon, 03 Jul 2023 10:55:24 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Comment-In-Reply-To: pespin <pespin(a)sysmocom.de>
Gerrit-MessageType: comment
Attention is currently required from: pespin.
Hello Jenkins Builder, pespin,
I'd like you to reexamine a change. Please visit
https://gerrit.osmocom.org/c/osmo-pcu/+/33538
to look at the new patch set (#3).
Change subject: nacc_fsm: Add support for NACC with UTRAN and E-UTRAN cells
......................................................................
nacc_fsm: Add support for NACC with UTRAN and E-UTRAN cells
The NACC procedure in OsmoPCU currently only supports NACC with GERAN
cells. When an UTRAN or E-UTRAN cell is proposed in the
PacketCellChangeNotification, then the FSM is immediately terminated,
meaning that the NACC procedure can not commence.
When the NACC procedure is carried out for UTRAN or E-UTRAN cells, the
PCU will not send any system information to the UE. Instead it
immediately sends a PacketCellChangeContinue message. This also means
that we do not carry out any RAN Information Requests in the background.
This patch adds logic to detect if the proprosed cell is an UTRAN or
E-UTRAN cell and the adds a new transition to the FSM so that a short
route to NACC_ST_TX_CELL_CHG_CONTINUE can be taken.
Related: OS#6044
Change-Id: I96280f0ec5955ed3cb17641bf4118496c929bdac
---
M src/nacc_fsm.c
M src/nacc_fsm.h
2 files changed, 132 insertions(+), 18 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-pcu refs/changes/38/33538/3
--
To view, visit https://gerrit.osmocom.org/c/osmo-pcu/+/33538
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-pcu
Gerrit-Branch: master
Gerrit-Change-Id: I96280f0ec5955ed3cb17641bf4118496c929bdac
Gerrit-Change-Number: 33538
Gerrit-PatchSet: 3
Gerrit-Owner: dexter <pmaier(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
Gerrit-Attention: pespin <pespin(a)sysmocom.de>
Gerrit-MessageType: newpatchset
Attention is currently required from: fixeria.
dexter has posted comments on this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/33417 )
Change subject: PCUIF_Types: fix record PCUIF_pch_dt
......................................................................
Patch Set 2:
(1 comment)
Commit Message:
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/33417/comment/6fdbdf16_2286…
PS1, Line 10: it would pad the data with zeros if it does not fit the
: specified length. This is unwanted
> This is weird. […]
Done
--
To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/33417
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: I011eb2496b1422c49736b227dfa1e2a2d6096d67
Gerrit-Change-Number: 33417
Gerrit-PatchSet: 2
Gerrit-Owner: dexter <pmaier(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
Gerrit-CC: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Attention: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Comment-Date: Mon, 03 Jul 2023 09:37:26 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Comment-In-Reply-To: fixeria <vyanitskiy(a)sysmocom.de>
Comment-In-Reply-To: dexter <pmaier(a)sysmocom.de>
Gerrit-MessageType: comment
Attention is currently required from: fixeria.
Hello Jenkins Builder, laforge, pespin,
I'd like you to reexamine a change. Please visit
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/33417
to look at the new patch set (#2).
Change subject: PCUIF_Types: fix record PCUIF_pch_dt
......................................................................
PCUIF_Types: fix record PCUIF_pch_dt
The record PCUIF_pch_dt uses ALIGN(left) variants for imsi data. This is
not correct, since it would left-pad the data with zeros if it does not
fit the specified length. This is a problem with IMSIs shorter than 17
characters, because the left padded zeros would appear like a
null-string to the receiving end.
When the ALIGN(left) modifier is removed, the encoder will apply the
padding from the right. This will fill the unused space after the string
with zeros.
Related: OS#5927
Change-Id: I011eb2496b1422c49736b227dfa1e2a2d6096d67
---
M library/PCUIF_Types.ttcn
1 file changed, 22 insertions(+), 2 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/17/33417/2
--
To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/33417
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: I011eb2496b1422c49736b227dfa1e2a2d6096d67
Gerrit-Change-Number: 33417
Gerrit-PatchSet: 2
Gerrit-Owner: dexter <pmaier(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
Gerrit-CC: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Attention: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-MessageType: newpatchset
Attention is currently required from: daniel.
daniel has removed a vote from this change. ( https://gerrit.osmocom.org/c/libosmo-netif/+/33542 )
Change subject: stream: Notify stream_cli on connect()
......................................................................
Removed Verified-1 by Jenkins Builder (1000002)
--
To view, visit https://gerrit.osmocom.org/c/libosmo-netif/+/33542
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: libosmo-netif
Gerrit-Branch: master
Gerrit-Change-Id: I29621ca53cdbdf8b5b2d128307fcb6432db669d3
Gerrit-Change-Number: 33542
Gerrit-PatchSet: 1
Gerrit-Owner: daniel <dwillmann(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: daniel <dwillmann(a)sysmocom.de>
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
Gerrit-Attention: daniel <dwillmann(a)sysmocom.de>
Gerrit-MessageType: deleteVote
daniel has posted comments on this change. ( https://gerrit.osmocom.org/c/libosmo-netif/+/33542 )
Change subject: stream: Notify stream_cli on connect()
......................................................................
Patch Set 1: Verified+1
--
To view, visit https://gerrit.osmocom.org/c/libosmo-netif/+/33542
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: libosmo-netif
Gerrit-Branch: master
Gerrit-Change-Id: I29621ca53cdbdf8b5b2d128307fcb6432db669d3
Gerrit-Change-Number: 33542
Gerrit-PatchSet: 1
Gerrit-Owner: daniel <dwillmann(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: daniel <dwillmann(a)sysmocom.de>
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
Gerrit-Comment-Date: Mon, 03 Jul 2023 09:09:43 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: Yes
Gerrit-MessageType: comment
daniel has posted comments on this change. ( https://gerrit.osmocom.org/c/libosmo-netif/+/33542 )
Change subject: stream: Notify stream_cli on connect()
......................................................................
Patch Set 1: Code-Review+2
--
To view, visit https://gerrit.osmocom.org/c/libosmo-netif/+/33542
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: libosmo-netif
Gerrit-Branch: master
Gerrit-Change-Id: I29621ca53cdbdf8b5b2d128307fcb6432db669d3
Gerrit-Change-Number: 33542
Gerrit-PatchSet: 1
Gerrit-Owner: daniel <dwillmann(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: daniel <dwillmann(a)sysmocom.de>
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
Gerrit-Comment-Date: Mon, 03 Jul 2023 09:09:00 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: Yes
Gerrit-MessageType: comment
Attention is currently required from: pespin.
Hello Jenkins Builder,
I'd like you to reexamine a change. Please visit
https://gerrit.osmocom.org/c/docker-playground/+/33521
to look at the new patch set (#2).
Change subject: ttcn3-bts-test/jenkins.sh: set mp_pcuif_version
......................................................................
ttcn3-bts-test/jenkins.sh: set mp_pcuif_version
OsmoBTS currently uses PCUIF v.10 but will move to v.11 soon. (see
Depends). Unfortuantely this means that we have to execute the TTCN3
testsuite in master with PCUIF v.11 and in latest with PCUIF v.10. This
will be the case until the current master becomes the new latest on the
next release.
Depends: osmo-bts.git I25816ac12e63cc6b641eb414e6bc7eaa9c85fc25
Depends: osmo-ttcn3-hacks.git I08de02e951e10bc8b4381cc2ad32e63f2747e3c4
Change-Id: Ia28bc0d6d3cbfe63be19443db86631fb67bb80fb
Related: OS#5927
---
M ttcn3-bts-test/generic/BTS_Tests.cfg
M ttcn3-bts-test/jenkins.sh
M ttcn3-bts-test/oml/BTS_Tests.cfg
M ttcn3-bts-test/virtphy/BTS_Tests.cfg
4 files changed, 35 insertions(+), 0 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/docker-playground refs/changes/21/33521/2
--
To view, visit https://gerrit.osmocom.org/c/docker-playground/+/33521
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: docker-playground
Gerrit-Branch: master
Gerrit-Change-Id: Ia28bc0d6d3cbfe63be19443db86631fb67bb80fb
Gerrit-Change-Number: 33521
Gerrit-PatchSet: 2
Gerrit-Owner: dexter <pmaier(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-CC: pespin <pespin(a)sysmocom.de>
Gerrit-Attention: pespin <pespin(a)sysmocom.de>
Gerrit-MessageType: newpatchset
Attention is currently required from: arehbein.
pespin has posted comments on this change. ( https://gerrit.osmocom.org/c/osmo-bts/+/31533 )
Change subject: common: Have PCU socket connection use osmo_wqueue
......................................................................
Patch Set 13:
(1 comment)
Patchset:
PS2:
> So I don't know if anything should be done/what should be done.
As mentioned, osmo-bsc has the exact same problem as osmo-bts, so you need to apply a similar patch.
osmo_io is an entire separate topic which at current pace may take some time to hit all code in osmo-bsc, so let's port this patch to osmo-bsc which should be pretty quick.
--
To view, visit https://gerrit.osmocom.org/c/osmo-bts/+/31533
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-bts
Gerrit-Branch: master
Gerrit-Change-Id: Ia6e61dda4b3cd4bba76e6acb7771d70335062fe1
Gerrit-Change-Number: 31533
Gerrit-PatchSet: 13
Gerrit-Owner: arehbein <arehbein(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: arehbein <arehbein(a)sysmocom.de>
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
Gerrit-Attention: arehbein <arehbein(a)sysmocom.de>
Gerrit-Comment-Date: Mon, 03 Jul 2023 08:05:03 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Comment-In-Reply-To: arehbein <arehbein(a)sysmocom.de>
Comment-In-Reply-To: pespin <pespin(a)sysmocom.de>
Gerrit-MessageType: comment
arehbein has posted comments on this change. ( https://gerrit.osmocom.org/c/osmo-bts/+/31533 )
Change subject: common: Have PCU socket connection use osmo_wqueue
......................................................................
Patch Set 13:
(1 comment)
Patchset:
PS2:
> BTW, once merged, remember to submit a similar fix in osmo-bsc.git (it also has a pcu_sock). […]
I reran the setup two times, respectively pausing either osmo-bsc or osmo-pcu, and didn't encounter any increase in memory usage (only had to adapt the osmo-bsc config to add `role sg` as well as `sctp-role client` in order to get it to start, and osmo-pcu was complaining about an outdated PCU IF, but I suppose that didn't break the PCU IF communication).
I also vaguely remember mentioning making a similar change to the other components using the PCU IF, with the response being that we would be using osmo io soon anyways, thus eliminating the need for osmo_wqueues doing the processing.
So I don't know if anything should be done/what should be done.
--
To view, visit https://gerrit.osmocom.org/c/osmo-bts/+/31533
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-bts
Gerrit-Branch: master
Gerrit-Change-Id: Ia6e61dda4b3cd4bba76e6acb7771d70335062fe1
Gerrit-Change-Number: 31533
Gerrit-PatchSet: 13
Gerrit-Owner: arehbein <arehbein(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: arehbein <arehbein(a)sysmocom.de>
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
Gerrit-Comment-Date: Sun, 02 Jul 2023 21:45:02 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Comment-In-Reply-To: pespin <pespin(a)sysmocom.de>
Gerrit-MessageType: comment
Attention is currently required from: daniel.
laforge has posted comments on this change. ( https://gerrit.osmocom.org/c/libosmo-netif/+/33542 )
Change subject: stream: Notify stream_cli on connect()
......................................................................
Patch Set 1: Code-Review+1
--
To view, visit https://gerrit.osmocom.org/c/libosmo-netif/+/33542
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: libosmo-netif
Gerrit-Branch: master
Gerrit-Change-Id: I29621ca53cdbdf8b5b2d128307fcb6432db669d3
Gerrit-Change-Number: 33542
Gerrit-PatchSet: 1
Gerrit-Owner: daniel <dwillmann(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Attention: daniel <dwillmann(a)sysmocom.de>
Gerrit-Comment-Date: Sun, 02 Jul 2023 17:54:31 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: Yes
Gerrit-MessageType: comment
Attention is currently required from: arehbein, fixeria, msuraev.
Hello Jenkins Builder, pespin, fixeria,
I'd like you to reexamine a change. Please visit
https://gerrit.osmocom.org/c/osmo-bts/+/31534
to look at the new patch set (#16).
Change subject: common: Make socket queue max. length configurable
......................................................................
common: Make socket queue max. length configurable
Title refers to the maximum length of the osmo_wqueue used for
the PCU socket connection.
Related: OS#5774
Change-Id: Id6ba6e4eadce9ce82ef2407f4e28346e7fe4abfa
---
M include/osmo-bts/bts.h
M include/osmo-bts/pcu_if.h
M src/common/bts.c
M src/common/main.c
M src/common/pcu_sock.c
M src/common/vty.c
M tests/osmo-bts.vty
7 files changed, 59 insertions(+), 25 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-bts refs/changes/34/31534/16
--
To view, visit https://gerrit.osmocom.org/c/osmo-bts/+/31534
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-bts
Gerrit-Branch: master
Gerrit-Change-Id: Id6ba6e4eadce9ce82ef2407f4e28346e7fe4abfa
Gerrit-Change-Number: 31534
Gerrit-PatchSet: 16
Gerrit-Owner: arehbein <arehbein(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
Gerrit-CC: laforge <laforge(a)osmocom.org>
Gerrit-CC: msuraev <msuraev(a)sysmocom.de>
Gerrit-Attention: arehbein <arehbein(a)sysmocom.de>
Gerrit-Attention: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Attention: msuraev <msuraev(a)sysmocom.de>
Gerrit-MessageType: newpatchset
pespin has submitted this change. ( https://gerrit.osmocom.org/c/osmo-pcu/+/33529 )
(
1 is the latest approved patch-set.
No files were changed between the latest approved patch-set and the submitted one.
)Change subject: cosmetic: pdch.cpp: Drop wrong comment due to copy-paste error
......................................................................
cosmetic: pdch.cpp: Drop wrong comment due to copy-paste error
Change-Id: I40f93473c86500f655a0a83c7816a065707e2ed9
---
M src/pdch.cpp
1 file changed, 9 insertions(+), 1 deletion(-)
Approvals:
laforge: Looks good to me, approved
Jenkins Builder: Verified
fixeria: Looks good to me, but someone else must approve
diff --git a/src/pdch.cpp b/src/pdch.cpp
index 7dfd3c2..0ea4f4b 100644
--- a/src/pdch.cpp
+++ b/src/pdch.cpp
@@ -734,7 +734,6 @@
* contention resolution is done:
*/
if ((dl_tbf = ms_dl_tbf(ms))) {
- /* Get rid of previous finished UL TBF before providing a new one */
LOGPTBFDL(dl_tbf, LOGL_NOTICE,
"Got PACKET RESOURCE REQ while DL-TBF pending, killing it\n");
tbf_free(dl_tbf);
--
To view, visit https://gerrit.osmocom.org/c/osmo-pcu/+/33529
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-pcu
Gerrit-Branch: master
Gerrit-Change-Id: I40f93473c86500f655a0a83c7816a065707e2ed9
Gerrit-Change-Number: 33529
Gerrit-PatchSet: 3
Gerrit-Owner: pespin <pespin(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
Gerrit-MessageType: merged
pespin has submitted this change. ( https://gerrit.osmocom.org/c/osmo-pcu/+/33530 )
Change subject: tbf_dl_fsm: Fix '{FLOW}: Event ASSIGN_PCUIF_CNF not permitted'
......................................................................
tbf_dl_fsm: Fix '{FLOW}: Event ASSIGN_PCUIF_CNF not permitted'
As seen during manual testing:
20230628140439674 DTBF tbf_dl.cpp:116 MS(IMSI-901700000015256:TLLI-0xd4d57c9d:TA-0:MSCLS-12-12) Allocating DL TBF
...
20230628140439674 DTBFDL tbf_dl.cpp:489 DL_TBF(DL:TFI-0-0-0:E:IMSI-901700000015256:TLLI-0xd4d57c9d){NEW}: Received Event ASSIGN_ADD_CCCH
20230628140439674 DTBFDL bts.cpp:1108 TBF(DL:TFI-0-0-0:E:IMSI-901700000015256:TLLI-0xd4d57c9d){ASSIGN} Tx CCCH (PCH) Immediate Assignment [PktDlAss=PDCH(bts=0,trx=0,ts=5)] TA=0
...
20230628140440238 DMS pdch.cpp:681 MS(IMSI-901700000015256:TLLI-0xd4d57c9d:TA-0:MSCLS-12-12:DL): + rcv_resource_request: now used by 2 (tbf,rcv_resource_request)
20230628140440238 DTBFDL pdch.cpp:738 TBF(DL:TFI-0-0-0:E:IMSI-901700000015256:TLLI-0xd4d57c9d){ASSIGN} Got PACKET RESOURCE REQ while DL-TBF pending, killing it
20230628140440238 DTBF tbf.cpp:271 TBF(DL:TFI-0-0-0:E:IMSI-901700000015256:TLLI-0xd4d57c9d){ASSIGN} free
...
20230628140440377 DTBFUL tbf_ul_fsm.c:169 UL_TBF(UL:TFI-0-0-0:E:IMSI-901700000015256:TLLI-0xd4d57c9d){ASSIGN}: state_chg to FLOW
20230628140440377 DTBF tbf_dl.cpp:116 MS(IMSI-901700000015256:TLLI-0xd4d57c9d:TA-0:MSCLS-12-12:UL) Allocating DL TBF
20230628140440377 DTBFDL tbf_dl.cpp:475 DL_TBF(DL:TFI-0-0-0:E:IMSI-901700000015256:TLLI-0xd4d57c9d){NEW}: Received Event ASSIGN_ADD_PACCH
20230628140440387 DTBF tbf_dl_ass_fsm.c:105 TBF(UL:TFI-0-0-0:E:IMSI-901700000015256:TLLI-0xd4d57c9d){FLOW} start Packet Downlink Assignment (PACCH) for TBF(DL:TFI-0-0-0:E:IMSI-901700000015256:TLLI-0xd4d57c9d){ASSIGN}
...
20230628140440816 DTBFDL bts.cpp:737 DL_TBF(DL:TFI-0-0-0:E:IMSI-901700000015256:TLLI-0xd4d57c9d){FLOW}: Received Event ASSIGN_PCUIF_CNF
20230628140440816 DTBFDL bts.cpp:737 DL_TBF(DL:TFI-0-0-0:E:IMSI-901700000015256:TLLI-0xd4d57c9d){FLOW}: Event ASSIGN_PCUIF_CNF not permitted
Change-Id: I042b0117552acae25c750e762f5cc254399da64f
---
M src/tbf_dl_fsm.c
1 file changed, 42 insertions(+), 0 deletions(-)
Approvals:
osmith: Looks good to me, but someone else must approve
Jenkins Builder: Verified
laforge: Looks good to me, approved
fixeria: Looks good to me, but someone else must approve
diff --git a/src/tbf_dl_fsm.c b/src/tbf_dl_fsm.c
index d604f6f..8d95d14 100644
--- a/src/tbf_dl_fsm.c
+++ b/src/tbf_dl_fsm.c
@@ -213,6 +213,20 @@
struct tbf_dl_fsm_ctx *ctx = (struct tbf_dl_fsm_ctx *)fi->priv;
switch (event) {
+ case TBF_EV_ASSIGN_PCUIF_CNF:
+ if (!(ctx->state_flags & (1 << GPRS_RLCMAC_FLAG_CCCH))) {
+ /* This can happen if we initiated a CCCH DlAss from an
+ * older TBF object (same TLLI) towards BTS, and the DL-TBF
+ * was recreated (this one) and was successfully assigned over PACCH.
+ * This is usually the case if MS requests 2phase access
+ * to get an UL TBF while we were waiting for a DL TBF
+ * assignment for that same MS over PCH.
+ */
+ LOGPTBFDL(ctx->dl_tbf, LOGL_INFO,
+ "Ignoring event ASSIGN_PCUIF_CNF from BTS "
+ "(CCCH was not requested on current assignment)\n");
+ }
+ break;
case TBF_EV_DL_ACKNACK_MISS:
/* DL TBF: we missed a DL ACK/NACK. If we started assignment
* over CCCH and never received any DL ACK/NACK yet, it means we
@@ -437,6 +451,7 @@
},
[TBF_ST_FLOW] = {
.in_event_mask =
+ X(TBF_EV_ASSIGN_PCUIF_CNF) |
X(TBF_EV_DL_ACKNACK_MISS) |
X(TBF_EV_LAST_DL_DATA_SENT) |
X(TBF_EV_MAX_N3105),
--
To view, visit https://gerrit.osmocom.org/c/osmo-pcu/+/33530
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-pcu
Gerrit-Branch: master
Gerrit-Change-Id: I042b0117552acae25c750e762f5cc254399da64f
Gerrit-Change-Number: 33530
Gerrit-PatchSet: 3
Gerrit-Owner: pespin <pespin(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: osmith <osmith(a)sysmocom.de>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
Gerrit-MessageType: merged
pespin has submitted this change. ( https://gerrit.osmocom.org/c/osmo-pcu/+/33525 )
Change subject: Reestore last LLC frames never completely acked when freeing DL TBF
......................................................................
Reestore last LLC frames never completely acked when freeing DL TBF
Scenario: A DL TBF is assigned over PCH (CCCH) and we start transmitting
DL data blocks blindly after X2002, but at the same time the MS start
packet-access-procedure to request an UL TBF.
Right now osmo-pcu correctly detects the MS is available in PDCH and
re-assigns a DL TBF using PACCH, but the LLC frames it transmitted in
the old PCH-assigned DL TBF get lost when that older TBF is freed
(because the DL blocks were removed from the GprsMs llc_queue).
This issue is now more frequent since X2002 timer was added recently to
delay starting requesting USF for a UL TBF, hence the contention
resolution in general takes more time and hence the PACCH assignment of
the DL TBF takes more time too, so more DL data blocks are transmitted
to the DL TBF assigned over PCH during that time.
This patch improves the situation to at least recover the DL blocks
transmitted if the DL TBF is freed (due to MS merge trigger by scenario
mentioned above), where no DL ACK/NACK was ever received by the MS.
Ideal solution would be to have complete tracking of which LLC PDUs from
the llc_queues were completely ACKed at RLC/MAC level, but that really
requires a lot of work and major refactoring, which are left as a future
improvement.
Change-Id: I9be4035fb2cf2b3ee56e91dcc12cc8c24028b4aa
---
M src/gprs_ms.c
M src/llc.c
M src/llc.h
M src/tbf_dl.cpp
M src/tbf_dl.h
M tests/llc/LlcTest.cpp
M tests/tbf/TbfTest.err
7 files changed, 158 insertions(+), 21 deletions(-)
Approvals:
osmith: Looks good to me, but someone else must approve
Jenkins Builder: Verified
laforge: Looks good to me, but someone else must approve
fixeria: Looks good to me, approved
diff --git a/src/gprs_ms.c b/src/gprs_ms.c
index 06d012c..6e6390b 100644
--- a/src/gprs_ms.c
+++ b/src/gprs_ms.c
@@ -456,6 +456,8 @@
void ms_merge_and_clear_ms(struct GprsMs *ms, struct GprsMs *old_ms)
{
char old_ms_name[128];
+ struct gprs_rlcmac_dl_tbf *dl_tbf;
+
OSMO_ASSERT(old_ms != ms);
ms_ref(old_ms, __func__);
@@ -472,6 +474,12 @@
if (!ms_egprs_ms_class(ms) && ms_egprs_ms_class(old_ms))
ms_set_egprs_ms_class(ms, ms_egprs_ms_class(old_ms));
+
+ if ((dl_tbf = ms_dl_tbf(old_ms))) {
+ /* Move the last partially/totally unacked LLC PDU back to the LLC queue: */
+ dl_tbf_copy_unacked_pdus_to_llc_queue(dl_tbf);
+ }
+ /* Now merge the old_ms queue into the new one: */
llc_queue_move_and_merge(&ms->llc_queue, &old_ms->llc_queue);
/* Clean up the old MS object */
diff --git a/src/llc.c b/src/llc.c
index 7745bd0..45b8ac4 100644
--- a/src/llc.c
+++ b/src/llc.c
@@ -35,6 +35,8 @@
{
llc->index = 0;
llc->length = 0;
+ llc->prio = 0;
+ llc->meta_info = (struct MetaInfo){0};
memset(llc->frame, 0x42, sizeof(llc->frame));
}
@@ -231,6 +233,26 @@
q->queue_octets = queue_octets;
}
+/* Prepend / Put back a previously dequeued LLC frame (llc_queue_dequeue()) */
+void llc_queue_merge_prepend(struct gprs_llc_queue *q, struct gprs_llc *llc)
+{
+ struct MetaInfo *meta_storage;
+ unsigned int len = llc_frame_length(llc);
+ struct msgb *llc_msg = msgb_alloc(len, "llc_pdu_queue");
+
+ OSMO_ASSERT(llc_msg);
+ memcpy(msgb_put(llc_msg, len), llc->frame, len);
+
+ q->queue_size += 1;
+ q->queue_octets += msgb_length(llc_msg);
+
+ meta_storage = (struct MetaInfo *)&llc_msg->cb[0];
+ memcpy(meta_storage, &llc->meta_info, sizeof(struct MetaInfo));
+
+ /* Prepend: */
+ llist_add(&llc_msg->list, &q->pq[llc->prio].queue);
+}
+
#define ALPHA 0.5f
static struct msgb *llc_queue_pick_msg(struct gprs_llc_queue *q, enum gprs_llc_queue_prio *prio)
@@ -265,7 +287,7 @@
return msg;
}
-struct msgb *llc_queue_dequeue(struct gprs_llc_queue *q)
+struct msgb *llc_queue_dequeue(struct gprs_llc_queue *q, enum gprs_llc_queue_prio *out_prio, struct MetaInfo *out_info)
{
struct msgb *msg;
struct timespec tv_now, tv_now2;
@@ -274,6 +296,7 @@
struct gprs_pcu *pcu = bts->pcu;
struct timespec hyst_delta = {0, 0};
enum gprs_llc_queue_prio prio;
+ const struct MetaInfo *info = NULL;
if (pcu->vty.llc_discard_csec)
csecs_to_timespec(pcu->vty.llc_discard_csec, &hyst_delta);
@@ -282,7 +305,7 @@
timespecadd(&tv_now, &hyst_delta, &tv_now2);
while ((msg = llc_queue_pick_msg(q, &prio))) {
- const struct MetaInfo *info = (const struct MetaInfo *)&msg->cb[0];
+ info = (const struct MetaInfo *)&msg->cb[0];
const struct timespec *tv_disc = &info->expire_time;
const struct timespec *tv_recv = &info->recv_time;
@@ -335,6 +358,17 @@
bssgp_tx_llc_discarded(pcu->bssgp.bctx, ms_tlli(q->ms), frames, octets);
}
+ if (!msg)
+ return NULL;
+
+ if (out_prio)
+ *out_prio = prio;
+
+ if (out_info) {
+ OSMO_ASSERT(info);
+ *out_info = *info;
+ }
+
return msg;
}
diff --git a/src/llc.h b/src/llc.h
index d12daac..594f77f 100644
--- a/src/llc.h
+++ b/src/llc.h
@@ -50,6 +50,17 @@
uint8_t control[0];
} __attribute__ ((packed));
+struct MetaInfo {
+ struct timespec recv_time;
+ struct timespec expire_time;
+};
+enum gprs_llc_queue_prio { /* lowest value has highest prio */
+ LLC_QUEUE_PRIO_GMM = 0, /* SAPI 1 */
+ LLC_QUEUE_PRIO_TOM_SMS, /* SAPI 2,7,8 */
+ LLC_QUEUE_PRIO_OTHER, /* Other SAPIs */
+ _LLC_QUEUE_PRIO_SIZE /* used to calculate size of enum */
+};
+
/**
* I represent the LLC data to a MS
*/
@@ -57,6 +68,10 @@
uint8_t frame[LLC_MAX_LEN]; /* current DL or UL frame */
uint16_t index; /* current write/read position of frame */
uint16_t length; /* len of current DL LLC_frame, 0 == no frame */
+
+ /* Saved when dequeue from llc_queue; allows re-enqueing in the queue if Tx fails */
+ enum gprs_llc_queue_prio prio;
+ struct MetaInfo meta_info;
};
void llc_init(struct gprs_llc *llc);
@@ -99,19 +114,9 @@
return llc->length + chunk_size <= LLC_MAX_LEN;
}
-struct MetaInfo {
- struct timespec recv_time;
- struct timespec expire_time;
-};
/**
* I store the LLC frames that come from the SGSN.
*/
-enum gprs_llc_queue_prio { /* lowest value has highest prio */
- LLC_QUEUE_PRIO_GMM = 0, /* SAPI 1 */
- LLC_QUEUE_PRIO_TOM_SMS, /* SAPI 2,7,8 */
- LLC_QUEUE_PRIO_OTHER, /* Other SAPIs */
- _LLC_QUEUE_PRIO_SIZE /* used to calculate size of enum */
-};
struct gprs_llc_prio_queue {
struct gprs_codel codel_state;
struct llist_head queue; /* queued LLC DL data. See enum gprs_llc_queue_prio. */
@@ -133,8 +138,9 @@
void llc_queue_clear(struct gprs_llc_queue *q, struct gprs_rlcmac_bts *bts);
void llc_queue_set_codel_interval(struct gprs_llc_queue *q, unsigned int interval);
void llc_queue_move_and_merge(struct gprs_llc_queue *q, struct gprs_llc_queue *o);
+void llc_queue_merge_prepend(struct gprs_llc_queue *q, struct gprs_llc *llc);
void llc_queue_enqueue(struct gprs_llc_queue *q, struct msgb *llc_msg, const struct timespec *expire_time);
-struct msgb *llc_queue_dequeue(struct gprs_llc_queue *q);
+struct msgb *llc_queue_dequeue(struct gprs_llc_queue *q, enum gprs_llc_queue_prio *out_prio, struct MetaInfo *out_info);
static inline size_t llc_queue_size(const struct gprs_llc_queue *q)
{
diff --git a/src/tbf_dl.cpp b/src/tbf_dl.cpp
index f4439d3..dc35b84 100644
--- a/src/tbf_dl.cpp
+++ b/src/tbf_dl.cpp
@@ -173,6 +173,8 @@
state_fi = osmo_fsm_inst_alloc(&tbf_dl_fsm, this, &state_fsm, LOGL_INFO, NULL);
OSMO_ASSERT(state_fi);
+ INIT_LLIST_HEAD(&this->tx_llc_until_first_dl_ack_rcvd);
+
/* This has to be called in child constructor because enable_egprs()
* uses the window() virtual function which is dependent on subclass. */
if (ms_mode(m_ms) != GPRS)
@@ -542,7 +544,7 @@
return;
/* dequeue next LLC frame, if any */
- msg = llc_queue_dequeue(llc_queue());
+ msg = llc_queue_dequeue(llc_queue(), &m_llc.prio, &m_llc.meta_info);
if (!msg)
return;
@@ -661,6 +663,15 @@
LOGPTBFDL(this, LOGL_DEBUG, "Complete DL frame, len=%d\n", llc_frame_length(&m_llc));
gprs_rlcmac_dl_bw(this, llc_frame_length(&m_llc));
bts_do_rate_ctr_add(bts, CTR_LLC_DL_BYTES, llc_frame_length(&m_llc));
+
+ /* Keep transmitted LLC PDUs until first ACK to avoid lossing them if MS is not there. */
+ if (!this->m_first_dl_ack_rcvd) {
+ struct gprs_dl_llc_llist_item *llc_it = talloc(this, struct gprs_dl_llc_llist_item);
+ memcpy(&llc_it->llc, &m_llc, sizeof(llc_it->llc));
+ /* Prepend to list to store them in inverse order of transmission, see
+ * dl_tbf_copy_unacked_pdus_to_llc_queue() for the complete picture. */
+ llist_add(&llc_it->list, &this->tx_llc_until_first_dl_ack_rcvd);
+ }
llc_reset(&m_llc);
if (is_final) {
@@ -1073,7 +1084,15 @@
int rc;
LOGPTBFDL(this, LOGL_DEBUG, "downlink acknowledge\n");
- m_first_dl_ack_rcvd = true;
+ if (m_first_dl_ack_rcvd == false) {
+ /* MS is there, free temporarily stored transmitted LLC PDUs */
+ struct gprs_dl_llc_llist_item *llc_it;
+ while ((llc_it = llist_first_entry_or_null(&this->tx_llc_until_first_dl_ack_rcvd, struct gprs_dl_llc_llist_item, list))) {
+ llist_del(&llc_it->list);
+ talloc_free(llc_it);
+ }
+ m_first_dl_ack_rcvd = true;
+ }
m_last_dl_poll_ack_lost = false;
/* reset N3105 */
@@ -1112,6 +1131,33 @@
return tbf->m_first_dl_ack_rcvd;
}
+/* Copy back to GprsMs' llc_queue the LLC PDUs previously dequeued and never
+ * fully ACKED at the MS side.
+ * FIXME: For now, only blocks transmitted and without first ever DL ACK are
+ * copied, because we have no way yet to track LLC PDUs once they are converted
+ * to RLC blocks. This is however enough to cover the case where a DL TBF is
+ * assigned over PCH and the MS never answers.
+ */
+void dl_tbf_copy_unacked_pdus_to_llc_queue(struct gprs_rlcmac_dl_tbf *tbf)
+{
+ struct GprsMs *ms = tbf_ms(dl_tbf_as_tbf(tbf));
+ struct gprs_dl_llc_llist_item *llc_it;
+
+ /* If we have LLC PDU still being transmitted, prepend it first to the queue: */
+ if (llc_frame_length(&tbf->m_llc) > 0)
+ llc_queue_merge_prepend(&ms->llc_queue, &tbf->m_llc);
+
+ /* Iterate over the list of totally transmitted LLC PDUs and merge them
+ * into the queue. The items in the list are in inverse order of
+ * transmission, hence when popping from here and enqueueing (prepending)
+ * back to the llc_queue it ends up in the exact same initial order. */
+ while ((llc_it = llist_first_entry_or_null(&tbf->tx_llc_until_first_dl_ack_rcvd, struct gprs_dl_llc_llist_item, list))) {
+ llist_del(&llc_it->list);
+ llc_queue_merge_prepend(&ms->llc_queue, &llc_it->llc);
+ talloc_free(llc_it);
+ }
+}
+
/* Does this DL TBF require to poll the MS for DL ACK/NACK? */
bool gprs_rlcmac_dl_tbf::need_poll_for_dl_ack_nack() const
{
diff --git a/src/tbf_dl.h b/src/tbf_dl.h
index dabe9a9..7223fa0 100644
--- a/src/tbf_dl.h
+++ b/src/tbf_dl.h
@@ -42,6 +42,11 @@
DL_PRIO_CONTROL, /* a control block needs to be sent */
};
+struct gprs_dl_llc_llist_item {
+ struct llist_head list; /* this item added in dl_tbf->tx_llc_until_first_dl_ack_rcvd */
+ struct gprs_llc llc;
+};
+
struct gprs_rlcmac_dl_tbf : public gprs_rlcmac_tbf {
gprs_rlcmac_dl_tbf(struct gprs_rlcmac_bts *bts, GprsMs *ms);
~gprs_rlcmac_dl_tbf();
@@ -78,6 +83,11 @@
/* Whether we receive at least one PKT DL ACK/NACK from MS since this DL TBF was assigned: */
bool m_first_dl_ack_rcvd;
+ /* Keep transmitted LLC PDUs until first ACK to avoid losing them if MS is not there.
+ * list of gprs_dl_llc_llist_item, stored in inverse order of transmission (last transmitted
+ * is first in the list ) */
+ struct llist_head tx_llc_until_first_dl_ack_rcvd;
+
struct BandWidth {
struct timespec dl_bw_tv; /* timestamp for dl bw calculation */
uint32_t dl_bw_octets; /* number of octets since bw_tv */
@@ -161,6 +171,8 @@
bool dl_tbf_first_dl_ack_rcvd(const struct gprs_rlcmac_dl_tbf *tbf);
int dl_tbf_upgrade_to_multislot(struct gprs_rlcmac_dl_tbf *tbf);
+void dl_tbf_copy_unacked_pdus_to_llc_queue(struct gprs_rlcmac_dl_tbf *tbf);
+
static inline struct gprs_rlcmac_tbf *dl_tbf_as_tbf(struct gprs_rlcmac_dl_tbf *dl_tbf)
{
return (struct gprs_rlcmac_tbf *)dl_tbf;
diff --git a/tests/llc/LlcTest.cpp b/tests/llc/LlcTest.cpp
index 554c749..f5bc54a 100644
--- a/tests/llc/LlcTest.cpp
+++ b/tests/llc/LlcTest.cpp
@@ -75,11 +75,10 @@
size_t len, const MetaInfo *exp_info)
{
struct msgb *llc_msg;
- const MetaInfo *info_res;
+ MetaInfo info_res;
- llc_msg = llc_queue_dequeue(queue);
+ llc_msg = llc_queue_dequeue(queue, NULL, &info_res);
OSMO_ASSERT(llc_msg != NULL);
- info_res = (struct MetaInfo *)&llc_msg->cb[0];
fprintf(stderr, "dequeued msg, length %u (expected %zu), data %s\n",
msgb_length(llc_msg), len, msgb_hexdump(llc_msg));
@@ -88,8 +87,8 @@
fprintf(stderr, "check failed!\n");
if (exp_info) {
- OSMO_ASSERT(memcmp(&exp_info->recv_time, &info_res->recv_time, sizeof(info_res->recv_time)) == 0);
- OSMO_ASSERT(memcmp(&exp_info->expire_time, &info_res->expire_time, sizeof(info_res->expire_time)) == 0);
+ OSMO_ASSERT(memcmp(&exp_info->recv_time, &info_res.recv_time, sizeof(info_res.recv_time)) == 0);
+ OSMO_ASSERT(memcmp(&exp_info->expire_time, &info_res.expire_time, sizeof(info_res.expire_time)) == 0);
}
msgb_free(llc_msg);
}
diff --git a/tests/tbf/TbfTest.err b/tests/tbf/TbfTest.err
index e582807..02cefe2 100644
--- a/tests/tbf/TbfTest.err
+++ b/tests/tbf/TbfTest.err
@@ -2852,7 +2852,7 @@
TBF(DL:TFI-0-0-1:G:IMSI-0011223344:TLLI-0xf5667788){NEW} set ass. type PACCH [prev CCCH:0, PACCH:0]
DL_TBF(DL:TFI-0-0-1:G:IMSI-0011223344:TLLI-0xf5667788){NEW}: state_chg to ASSIGN
TBF(DL:TFI-0-0-1:G:IMSI-0011223344:TLLI-0xf5667788){ASSIGN} Starting timer X2001 [assignment (PACCH)] with 2 sec. 0 microsec
-New MS: TLLI = 0xf5667788, TA = 7, IMSI = 0011223344, LLC = 1
+New MS: TLLI = 0xf5667788, TA = 7, IMSI = 0011223344, LLC = 2
MS(IMSI-0011223344:TLLI-0xf5667788:TA-7:MSCLS-1-0:UL:DL) Destroying MS object
MS(IMSI-0011223344:TLLI-0xf5667788:TA-7:MSCLS-1-0:UL:DL) Detaching TBF: TBF(UL:TFI-0-0-1:G:IMSI-0011223344:TLLI-0xf5667788){FLOW}
MS(IMSI-0011223344:TLLI-0xf5667788:TA-7:MSCLS-1-0:DL): - tbf: now used by 1 (tbf)
--
To view, visit https://gerrit.osmocom.org/c/osmo-pcu/+/33525
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-pcu
Gerrit-Branch: master
Gerrit-Change-Id: I9be4035fb2cf2b3ee56e91dcc12cc8c24028b4aa
Gerrit-Change-Number: 33525
Gerrit-PatchSet: 3
Gerrit-Owner: pespin <pespin(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: osmith <osmith(a)sysmocom.de>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
Gerrit-MessageType: merged