neels has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-msc/+/35139?usp=email )
Change subject: add comment in codec_mapping.c
......................................................................
add comment in codec_mapping.c
Related: OS#6258
Change-Id: I0905a1264cd8f940c7a9964addf241091425fe72
---
M src/libmsc/codec_mapping.c
1 file changed, 11 insertions(+), 0 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-msc refs/changes/39/35139/1
diff --git a/src/libmsc/codec_mapping.c b/src/libmsc/codec_mapping.c
index 4063514..8eea242 100644
--- a/src/libmsc/codec_mapping.c
+++ b/src/libmsc/codec_mapping.c
@@ -111,6 +111,7 @@
},
{
.sdp = {
+ /* 112 is just what we use by default. The other call leg may impose a different number. */
.payload_type = 112,
.subtype_name = "AMR",
.rate = 8000,
--
To view, visit https://gerrit.osmocom.org/c/osmo-msc/+/35139?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-msc
Gerrit-Branch: master
Gerrit-Change-Id: I0905a1264cd8f940c7a9964addf241091425fe72
Gerrit-Change-Number: 35139
Gerrit-PatchSet: 1
Gerrit-Owner: neels <nhofmeyr(a)sysmocom.de>
Gerrit-MessageType: newchange
Attention is currently required from: falconia, jolly, pespin.
fixeria has posted comments on this change. ( https://gerrit.osmocom.org/c/osmo-bts/+/35132?usp=email )
Change subject: Transmit invalid AMR speech blocks instead of dummy FACCH
......................................................................
Patch Set 2: -Code-Review
(1 comment)
File src/osmo-bts-trx/sched_lchan_tchf.c:
https://gerrit.osmocom.org/c/osmo-bts/+/35132/comment/8a135342_7e834baf
PS2, Line 541: * - If the channel mode is AMR, transmit a dummy with speech
> This is not specific to TCH/AHS at all, and is already briefly mentioned in the existing code. […]
And yes, as @falcon@freecalypso.org mentioned, it's actually FACCH/H replacing two speech frames; FACCH/F takes just one. My previous comment was in response to pespin's comment.
--
To view, visit https://gerrit.osmocom.org/c/osmo-bts/+/35132?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: I056f379715c91ad968f198e112d363a9009dc1c3
Gerrit-Change-Number: 35132
Gerrit-PatchSet: 2
Gerrit-Owner: jolly <andreas(a)eversberg.eu>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: falconia <falcon(a)freecalypso.org>
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-CC: pespin <pespin(a)sysmocom.de>
Gerrit-Attention: jolly <andreas(a)eversberg.eu>
Gerrit-Attention: falconia <falcon(a)freecalypso.org>
Gerrit-Attention: pespin <pespin(a)sysmocom.de>
Gerrit-Comment-Date: Mon, 27 Nov 2023 18:18:50 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: Yes
Comment-In-Reply-To: fixeria <vyanitskiy(a)sysmocom.de>
Comment-In-Reply-To: pespin <pespin(a)sysmocom.de>
Gerrit-MessageType: comment
Attention is currently required from: jolly, pespin.
fixeria has posted comments on this change. ( https://gerrit.osmocom.org/c/osmo-bts/+/35132?usp=email )
Change subject: Transmit invalid AMR speech blocks instead of dummy FACCH
......................................................................
Patch Set 2:
(2 comments)
File src/osmo-bts-trx/sched_lchan_tchf.c:
https://gerrit.osmocom.org/c/osmo-bts/+/35132/comment/c1f9471e_0c017d04
PS2, Line 541: * - If the channel mode is AMR, transmit a dummy with speech
> I'd document here the rationale about "FACCH displaces two speech frames rather than one".
This is not specific to TCH/AHS at all, and is already briefly mentioned in the existing code. It's also just one of the reasons; another reason is that some Qualcomm basebands don't seem to like dummy FACCH and report bad RxQual.
So I would be fine with the current state of this patch.
https://gerrit.osmocom.org/c/osmo-bts/+/35132/comment/2cc61db2_e210eeb4
PS2, Line 578: dummy_facch:
> Maybe moving the GSM48_CMODE_SPEECH_AMR case inside the default with an "if" block is cleaner than a […]
Alternatively, we can move generation of dummy FACCH into a `static inline` function (`src/osmo-bts-trx/sched_utils.h` would be a good place for it) and just call it, hoping that the compiler would inline it properly for us.
--
To view, visit https://gerrit.osmocom.org/c/osmo-bts/+/35132?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: I056f379715c91ad968f198e112d363a9009dc1c3
Gerrit-Change-Number: 35132
Gerrit-PatchSet: 2
Gerrit-Owner: jolly <andreas(a)eversberg.eu>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: falconia <falcon(a)freecalypso.org>
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-CC: pespin <pespin(a)sysmocom.de>
Gerrit-Attention: jolly <andreas(a)eversberg.eu>
Gerrit-Attention: pespin <pespin(a)sysmocom.de>
Gerrit-Comment-Date: Mon, 27 Nov 2023 18:13:20 +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: jolly, pespin.
falconia has posted comments on this change. ( https://gerrit.osmocom.org/c/osmo-bts/+/35132?usp=email )
Change subject: Transmit invalid AMR speech blocks instead of dummy FACCH
......................................................................
Patch Set 2:
(5 comments)
Commit Message:
https://gerrit.osmocom.org/c/osmo-bts/+/35132/comment/501505b4_b36add36
PS2, Line 12: TCH/HS
TCH/AHS, not TCH/HS.
File src/osmo-bts-trx/sched_lchan_tchf.c:
https://gerrit.osmocom.org/c/osmo-bts/+/35132/comment/4d3c04d4_04757578
PS2, Line 541: AMR
Maybe say TCH/AFS rather than just AMR, for consistency.
https://gerrit.osmocom.org/c/osmo-bts/+/35132/comment/1d489c6e_ac89dd64
PS2, Line 541: * - If the channel mode is AMR, transmit a dummy with speech
> I'd document here the rationale about "FACCH displaces two speech frames rather than one".
This C module and function are for TCH/F only, hence the TCH/H-specific problem you are referring to does not apply here. We could keep doing dummy FACCH for all TCH/F modes, but the idea is to be consistent with what we do in TCH/H.
File src/osmo-bts-trx/sched_lchan_tchh.c:
https://gerrit.osmocom.org/c/osmo-bts/+/35132/comment/89f63bda_a3d1555f
PS2, Line 453: /* - If the channel mode is TCH/HS or TCH/EFS, transmit a dummy
The overall structure of the comment after your change no longer makes sense. Either cover both TCH/HS and TCH/AHS cases in one clause (with "CRC3 or CRC6" wording), or leave the non-AMR TCH/HS clause alone (like you did in TCH/F) and add a new clause for TCH/AHS as in TCH/H version of AMR.
https://gerrit.osmocom.org/c/osmo-bts/+/35132/comment/193d7373_6cc69db0
PS2, Line 453: TCH/EFS
If we are keeping the whole comment structure as-is (see my other comment), this part should read TCH/AHS and not TCH/EFS.
--
To view, visit https://gerrit.osmocom.org/c/osmo-bts/+/35132?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: I056f379715c91ad968f198e112d363a9009dc1c3
Gerrit-Change-Number: 35132
Gerrit-PatchSet: 2
Gerrit-Owner: jolly <andreas(a)eversberg.eu>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: falconia <falcon(a)freecalypso.org>
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-CC: pespin <pespin(a)sysmocom.de>
Gerrit-Attention: jolly <andreas(a)eversberg.eu>
Gerrit-Attention: pespin <pespin(a)sysmocom.de>
Gerrit-Comment-Date: Mon, 27 Nov 2023 18:07: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: dexter.
fixeria has posted comments on this change. ( https://gerrit.osmocom.org/c/docker-playground/+/35136?usp=email )
Change subject: ttcn3-pcu-test/sns: fix PCUIF version number
......................................................................
Patch Set 1:
(1 comment)
Patchset:
PS1:
Just to be sure, doesn't this patch break the `-latest`?
In `jenkins.sh` I see the following:
```
sed -i 's/PCUIF_Types.mp_pcuif_version := 11/PCUIF_Types.mp_pcuif_version := 10/g' $1
```
I guess this needs to be updated too?
--
To view, visit https://gerrit.osmocom.org/c/docker-playground/+/35136?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: docker-playground
Gerrit-Branch: master
Gerrit-Change-Id: I0b37f01f4c7bb829053231339e39ab734f4c8cbc
Gerrit-Change-Number: 35136
Gerrit-PatchSet: 1
Gerrit-Owner: dexter <pmaier(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Attention: dexter <pmaier(a)sysmocom.de>
Gerrit-Comment-Date: Mon, 27 Nov 2023 17:47:17 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Gerrit-MessageType: comment
Attention is currently required from: jolly, neels.
pespin has posted comments on this change. ( https://gerrit.osmocom.org/c/osmo-bsc/+/35135?usp=email )
Change subject: Only check for intersecting AMR codec support on matching TS rate
......................................................................
Patch Set 1:
(1 comment)
Patchset:
PS1:
is there any change in behavior with this patch? The matching should fail in the other case and continue exactly the same way as now?
--
To view, visit https://gerrit.osmocom.org/c/osmo-bsc/+/35135?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-bsc
Gerrit-Branch: master
Gerrit-Change-Id: Ia4a8e7f22dc652655ee7c5458624df8ae136dd95
Gerrit-Change-Number: 35135
Gerrit-PatchSet: 1
Gerrit-Owner: jolly <andreas(a)eversberg.eu>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: neels <nhofmeyr(a)sysmocom.de>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
Gerrit-Attention: jolly <andreas(a)eversberg.eu>
Gerrit-Attention: neels <nhofmeyr(a)sysmocom.de>
Gerrit-Comment-Date: Mon, 27 Nov 2023 17:44:04 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Gerrit-MessageType: comment
Attention is currently required from: falconia, jolly.
pespin has posted comments on this change. ( https://gerrit.osmocom.org/c/osmo-bts/+/35132?usp=email )
Change subject: Transmit invalid AMR speech blocks instead of dummy FACCH
......................................................................
Patch Set 2:
(2 comments)
File src/osmo-bts-trx/sched_lchan_tchf.c:
https://gerrit.osmocom.org/c/osmo-bts/+/35132/comment/325da77a_20c4b21a
PS2, Line 541: * - If the channel mode is AMR, transmit a dummy with speech
I'd document here the rationale about "FACCH displaces two speech frames rather than one".
https://gerrit.osmocom.org/c/osmo-bts/+/35132/comment/dd18f27e_42886a15
PS2, Line 578: dummy_facch:
Maybe moving the GSM48_CMODE_SPEECH_AMR case inside the default with an "if" block is cleaner than adding a goto here...
--
To view, visit https://gerrit.osmocom.org/c/osmo-bts/+/35132?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: I056f379715c91ad968f198e112d363a9009dc1c3
Gerrit-Change-Number: 35132
Gerrit-PatchSet: 2
Gerrit-Owner: jolly <andreas(a)eversberg.eu>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: falconia <falcon(a)freecalypso.org>
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-CC: pespin <pespin(a)sysmocom.de>
Gerrit-Attention: jolly <andreas(a)eversberg.eu>
Gerrit-Attention: falconia <falcon(a)freecalypso.org>
Gerrit-Comment-Date: Mon, 27 Nov 2023 17:38:44 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Gerrit-MessageType: comment
dexter has uploaded this change for review. ( https://gerrit.osmocom.org/c/docker-playground/+/35136?usp=email )
Change subject: ttcn3-pcu-test/sns: fix PCUIF version number
......................................................................
ttcn3-pcu-test/sns: fix PCUIF version number
The current master of OsmoPCU is now using PCUIF version number 12.
However, the configuration file of the the SNS tests still sets it to
11.
Related: OS#6275
Change-Id: I0b37f01f4c7bb829053231339e39ab734f4c8cbc
---
M ttcn3-pcu-test/sns/PCU_Tests.cfg
1 file changed, 15 insertions(+), 1 deletion(-)
git pull ssh://gerrit.osmocom.org:29418/docker-playground refs/changes/36/35136/1
diff --git a/ttcn3-pcu-test/sns/PCU_Tests.cfg b/ttcn3-pcu-test/sns/PCU_Tests.cfg
index d62f52d..2b11462 100644
--- a/ttcn3-pcu-test/sns/PCU_Tests.cfg
+++ b/ttcn3-pcu-test/sns/PCU_Tests.cfg
@@ -59,7 +59,7 @@
}
}
}
-PCUIF_Types.mp_pcuif_version := 11
+PCUIF_Types.mp_pcuif_version := 12
[MAIN_CONTROLLER]
--
To view, visit https://gerrit.osmocom.org/c/docker-playground/+/35136?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: docker-playground
Gerrit-Branch: master
Gerrit-Change-Id: I0b37f01f4c7bb829053231339e39ab734f4c8cbc
Gerrit-Change-Number: 35136
Gerrit-PatchSet: 1
Gerrit-Owner: dexter <pmaier(a)sysmocom.de>
Gerrit-MessageType: newchange
Attention is currently required from: arehbein, laforge.
pespin has posted comments on this change. ( https://gerrit.osmocom.org/c/libosmo-netif/+/35069?usp=email )
Change subject: stream_{cli,srv}: Add support for SCTP in OSMO_IO mode
......................................................................
Patch Set 5:
(2 comments)
File src/stream_cli.c:
https://gerrit.osmocom.org/c/libosmo-netif/+/35069/comment/aee0a035_64754502
PS5, Line 474: .read_cb = stream_cli_iofd_read_cb,
Here for sctp we'd have a cmsg read cb, which would call something like stream_sctp_recvmsg_wrapper() to transform it into what our regular sctp msgb look like.
https://gerrit.osmocom.org/c/libosmo-netif/+/35069/comment/7ca7433d_08a0fab6
PS5, Line 949: osmo_iofd_sctp_send_msgb(cli->iofd, msg, MSG_NOSIGNAL);
code here would here convert to cmsg API I mentioned in the osmo_io patch.
--
To view, visit https://gerrit.osmocom.org/c/libosmo-netif/+/35069?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: libosmo-netif
Gerrit-Branch: master
Gerrit-Change-Id: I6cf5bad5f618e71c80017960c38009b089dbd6a1
Gerrit-Change-Number: 35069
Gerrit-PatchSet: 5
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-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
Gerrit-Attention: arehbein <arehbein(a)sysmocom.de>
Gerrit-Attention: laforge <laforge(a)osmocom.org>
Gerrit-Comment-Date: Mon, 27 Nov 2023 17:13:31 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Gerrit-MessageType: comment
Attention is currently required from: daniel.
pespin has posted comments on this change. ( https://gerrit.osmocom.org/c/osmo-ggsn/+/35084?usp=email )
Change subject: gtp: Add net GTP cause values and a function to check for success
......................................................................
Patch Set 2:
(2 comments)
File gtp/gtp.h:
https://gerrit.osmocom.org/c/osmo-ggsn/+/35084/comment/155c0048_6102e8d1
PS2, Line 106: #define GTPCAUSE_129 129 /* For future use 129-176 */
You broke the API compat here.
If we deem these not necessary, then simply leave the comment and remove the defines, so that we don't keep updating (removing and adding) them.
https://gerrit.osmocom.org/c/osmo-ggsn/+/35084/comment/b4a98099_63dc652a
PS2, Line 142: static inline bool gtp_cause_successful(uint8_t cause)
not sure this is really useful to have here, I'd would have left it for the specific app. In any case one usually wants to check the exact cause in order to act differently here AFAIR.
--
To view, visit https://gerrit.osmocom.org/c/osmo-ggsn/+/35084?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-ggsn
Gerrit-Branch: master
Gerrit-Change-Id: I9c3bf64537ef2223e29f8082861fa32fde26bf68
Gerrit-Change-Number: 35084
Gerrit-PatchSet: 2
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: lynxis lazus <lynxis(a)fe80.eu>
Gerrit-Reviewer: osmith <osmith(a)sysmocom.de>
Gerrit-CC: pespin <pespin(a)sysmocom.de>
Gerrit-Attention: daniel <dwillmann(a)sysmocom.de>
Gerrit-Comment-Date: Mon, 27 Nov 2023 16:54:47 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Gerrit-MessageType: comment
Attention is currently required from: fixeria, laforge, osmith.
pespin has posted comments on this change. ( https://gerrit.osmocom.org/c/libosmocore/+/35134?usp=email )
Change subject: rlp: Add support for 576bit RLP frames
......................................................................
Patch Set 3: Code-Review+1
(2 comments)
File src/gsm/rlp.c:
https://gerrit.osmocom.org/c/libosmocore/+/35134/comment/04b5d671_30c7b931
PS3, Line 74: /* we only support 240 bit so far */
this is not true anymore?
https://gerrit.osmocom.org/c/libosmocore/+/35134/comment/713c2947_a0fc4408
PS3, Line 88: out->fcs = (data[data_len-1] << 16) | (data[data_len-2]) << 8 | (data[data_len-3] << 0);
all this could really go into the previous commit.
--
To view, visit https://gerrit.osmocom.org/c/libosmocore/+/35134?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: Idfdcabb19fe8733fb9c5ee76a39b0bf4cdf60c2c
Gerrit-Change-Number: 35134
Gerrit-PatchSet: 3
Gerrit-Owner: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: osmith <osmith(a)sysmocom.de>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
Gerrit-Attention: osmith <osmith(a)sysmocom.de>
Gerrit-Attention: laforge <laforge(a)osmocom.org>
Gerrit-Attention: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Comment-Date: Mon, 27 Nov 2023 16:37:42 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: Yes
Gerrit-MessageType: comment
laforge has submitted this change. ( https://gerrit.osmocom.org/c/osmo-bsc/+/30252?usp=email )
Change subject: recover BORKEN lchans for missing ACK scenarios
......................................................................
recover BORKEN lchans for missing ACK scenarios
We already recover broken lchans where an ACTIV ACK or REL ACK arrives
late. Now add a recovery path for lchans that are broken because no
ACTIV ACK or REL ACK arrives at all.
Add a timeout of X28 = 30s to the lchan BORKEN state.
On timeout, attempt both a Channel Activation and a Channel Release. If
any of them is ACKed, we have successfully synced BTS and BSC's state.
After successful recovery, place the lchan back in the UNUSED state,
available for servicing subscribers.
If recovery is unsuccessful, just continue to attempt recovery every
further X28 seconds.
Patch-by: osmith, nhofmeyr
Related: osmo-ttcn3-hacks I9b4ddfc4a337808d9d5ec538c25fd390b1b2530f
Related: OS#5106
Related: SYS#6655
Change-Id: Ic4728b3efe843ea63e2a0b54b1ea8a925347484a
---
M doc/lchan-fsm.dot
M include/osmocom/bsc/lchan_fsm.h
M src/osmo-bsc/lchan_fsm.c
M src/osmo-bsc/net_init.c
M tests/timer.vty
5 files changed, 142 insertions(+), 0 deletions(-)
Approvals:
osmith: Looks good to me, but someone else must approve
Jenkins Builder: Verified
laforge: Looks good to me, approved
daniel: Looks good to me, but someone else must approve
diff --git a/doc/lchan-fsm.dot b/doc/lchan-fsm.dot
index fe35903..82ef922 100644
--- a/doc/lchan-fsm.dot
+++ b/doc/lchan-fsm.dot
@@ -32,6 +32,7 @@
WAIT_TS_READY -> UNUSED [label="error/timeout",style=dashed,constraint=false]
{WAIT_ACTIV_ACK,WAIT_RF_RELEASE_ACK} -> BORKEN [label="error/timeout",style=dashed]
BORKEN -> WAIT_AFTER_ERROR [label="late RF Release ACK"]
+ BORKEN -> WAIT_RF_RELEASE_ACK [label="late Activation ACK"]
WAIT_RLL_RTP_ESTABLISH -> WAIT_RLL_RTP_RELEASED [label=error,style=dashed]
WAIT_ACTIV_ACK -> rtp [label="LCHAN_RTP_EV_LCHAN_READY",style=dotted]
@@ -44,4 +45,13 @@
WAIT_RSL_CHAN_MODE_MODIFY_ACK -> ESTABLISHED [label="LCHAN_EV_RSL_CHAN_MODE_MODIFY_ACK\nno change to RTP"]
WAIT_RR_CHAN_MODE_MODIFY_ACK -> BORKEN [label="error/timeout",style=dashed]
WAIT_RSL_CHAN_MODE_MODIFY_ACK -> BORKEN [label="error/timeout",style=dashed]
+
+ BORKEN -> RECOVER_WAIT_ACTIV_ACK [label="X28"]
+ RECOVER_WAIT_ACTIV_ACK -> BORKEN [label="error/timeout",style=dashed]
+
+ RECOVER_WAIT_ACTIV_ACK -> UNUSED [label="rx ACK"]
+ RECOVER_WAIT_ACTIV_ACK -> RECOVER_WAIT_RF_RELEASE_ACK [label="rx NACK"]
+
+ RECOVER_WAIT_RF_RELEASE_ACK -> UNUSED [label="rx ACK"]
+ RECOVER_WAIT_RF_RELEASE_ACK -> BORKEN [label="error/timeout",style=dashed]
}
diff --git a/include/osmocom/bsc/lchan_fsm.h b/include/osmocom/bsc/lchan_fsm.h
index cf9f20f..3c7bbc1 100644
--- a/include/osmocom/bsc/lchan_fsm.h
+++ b/include/osmocom/bsc/lchan_fsm.h
@@ -33,6 +33,8 @@
LCHAN_ST_WAIT_RF_RELEASE_ACK,
LCHAN_ST_WAIT_AFTER_ERROR,
LCHAN_ST_BORKEN,
+ LCHAN_ST_RECOVER_WAIT_ACTIV_ACK, /*< Attempt to recover from BORKEN: first try to activate the lchan */
+ LCHAN_ST_RECOVER_WAIT_RF_RELEASE_ACK, /*< Attempt to recover from BORKEN: then try to release it */
};
enum lchan_fsm_event {
diff --git a/src/osmo-bsc/lchan_fsm.c b/src/osmo-bsc/lchan_fsm.c
index d6dfe3a..a663326 100644
--- a/src/osmo-bsc/lchan_fsm.c
+++ b/src/osmo-bsc/lchan_fsm.c
@@ -334,6 +334,9 @@
[LCHAN_ST_WAIT_AFTER_ERROR] = { .T = -3111 },
[LCHAN_ST_WAIT_RR_CHAN_MODE_MODIFY_ACK] = { .T = -13 },
[LCHAN_ST_WAIT_RSL_CHAN_MODE_MODIFY_ACK] = { .T = -14 },
+ [LCHAN_ST_BORKEN] = { .T = -28 },
+ [LCHAN_ST_RECOVER_WAIT_ACTIV_ACK] = { .T = -6 },
+ [LCHAN_ST_RECOVER_WAIT_RF_RELEASE_ACK] = { .T = -6 },
};
/* Transition to a state, using the T timer defined in lchan_fsm_timeouts.
@@ -380,6 +383,8 @@
[LCHAN_ST_BORKEN] = LCHAN_ST_BORKEN,
[LCHAN_ST_WAIT_RR_CHAN_MODE_MODIFY_ACK] = LCHAN_ST_WAIT_RF_RELEASE_ACK,
[LCHAN_ST_WAIT_RSL_CHAN_MODE_MODIFY_ACK] = LCHAN_ST_WAIT_RF_RELEASE_ACK,
+ [LCHAN_ST_RECOVER_WAIT_ACTIV_ACK] = LCHAN_ST_BORKEN,
+ [LCHAN_ST_RECOVER_WAIT_RF_RELEASE_ACK] = LCHAN_ST_BORKEN,
};
#define lchan_fail(fmt, args...) lchan_fail_to(lchan_fsm_on_error[fi->state], fmt, ## args)
@@ -1631,6 +1636,71 @@
}
}
+static void lchan_fsm_recover_wait_activ_ack_onenter(struct osmo_fsm_inst *fi, uint32_t prev_state)
+{
+ int rc;
+ struct gsm_lchan *lchan = lchan_fi_lchan(fi);
+
+ LOG_LCHAN(lchan, LOGL_INFO, "attempting to recover from BORKEN lchan\n");
+
+ lchan->type = GSM_LCHAN_SDCCH;
+ lchan->activate.info.ta_known = true;
+
+ chan_counts_ts_update(lchan->ts);
+
+ rc = rsl_tx_chan_activ(lchan, RSL_ACT_INTRA_NORM_ASS, 0);
+ if (rc)
+ lchan_fail("Tx Chan Activ failed: %s (%d)", strerror(-rc), rc);
+}
+
+static void lchan_fsm_recover_wait_activ_ack(struct osmo_fsm_inst *fi, uint32_t event, void *data)
+{
+ struct gsm_lchan *lchan = lchan_fi_lchan(fi);
+
+ switch (event) {
+
+ case LCHAN_EV_RSL_CHAN_ACTIV_ACK:
+ lchan_fsm_state_chg(LCHAN_ST_RECOVER_WAIT_RF_RELEASE_ACK);
+ break;
+
+ case LCHAN_EV_RSL_CHAN_ACTIV_NACK:
+ /* If an earlier lchan activ got through to the BTS, but the
+ * ACK did not get back to the BSC, it may still be active on
+ * the BTS side. Proceed to release it. */
+ LOG_LCHAN(lchan, LOGL_NOTICE, "received NACK for activation of BORKEN lchan, assuming still active\n");
+ lchan_fsm_state_chg(LCHAN_ST_RECOVER_WAIT_RF_RELEASE_ACK);
+ break;
+
+ default:
+ OSMO_ASSERT(false);
+ }
+}
+
+static void lchan_fsm_recover_wait_rf_release_ack_onenter(struct osmo_fsm_inst *fi, uint32_t prev_state)
+{
+ int rc;
+ struct gsm_lchan *lchan = lchan_fi_lchan(fi);
+
+ rc = rsl_tx_rf_chan_release(lchan);
+ if (rc)
+ lchan_fail("Tx RSL RF Channel Release failed: %s (%d)\n", strerror(-rc), rc);
+}
+
+static void lchan_fsm_recover_wait_rf_release_ack(struct osmo_fsm_inst *fi, uint32_t event, void *data)
+{
+ struct gsm_lchan *lchan = lchan_fi_lchan(fi);
+ switch (event) {
+
+ case LCHAN_EV_RSL_RF_CHAN_REL_ACK:
+ LOG_LCHAN(lchan, LOGL_NOTICE, "successfully recovered BORKEN lchan\n");
+ lchan_fsm_state_chg(LCHAN_ST_UNUSED);
+ break;
+
+ default:
+ OSMO_ASSERT(false);
+ }
+}
+
#define S(x) (1 << (x))
static const struct osmo_fsm_state lchan_fsm_states[] = {
@@ -1820,6 +1890,32 @@
| S(LCHAN_ST_WAIT_RF_RELEASE_ACK)
| S(LCHAN_ST_UNUSED)
| S(LCHAN_ST_WAIT_AFTER_ERROR)
+ | S(LCHAN_ST_RECOVER_WAIT_ACTIV_ACK)
+ ,
+ },
+ [LCHAN_ST_RECOVER_WAIT_ACTIV_ACK] {
+ .name = "RECOVER_WAIT_ACTIV_ACK",
+ .onenter = lchan_fsm_recover_wait_activ_ack_onenter,
+ .action = lchan_fsm_recover_wait_activ_ack,
+ .in_event_mask = 0
+ | S(LCHAN_EV_RSL_CHAN_ACTIV_ACK)
+ | S(LCHAN_EV_RSL_CHAN_ACTIV_NACK)
+ ,
+ .out_state_mask = 0
+ | S(LCHAN_ST_BORKEN)
+ | S(LCHAN_ST_RECOVER_WAIT_RF_RELEASE_ACK)
+ ,
+ },
+ [LCHAN_ST_RECOVER_WAIT_RF_RELEASE_ACK] {
+ .name = "RECOVER_WAIT_RF_RELEASE_ACK",
+ .onenter = lchan_fsm_recover_wait_rf_release_ack_onenter,
+ .action = lchan_fsm_recover_wait_rf_release_ack,
+ .in_event_mask = 0
+ | S(LCHAN_EV_RSL_RF_CHAN_REL_ACK)
+ ,
+ .out_state_mask = 0
+ | S(LCHAN_ST_BORKEN)
+ | S(LCHAN_ST_UNUSED)
,
},
};
@@ -1893,6 +1989,10 @@
lchan_fsm_state_chg(LCHAN_ST_UNUSED);
return 0;
+ case LCHAN_ST_BORKEN:
+ lchan_fsm_state_chg(LCHAN_ST_RECOVER_WAIT_ACTIV_ACK);
+ return 0;
+
default:
lchan->release.in_error = true;
lchan->release.rsl_error_cause = RSL_ERR_INTERWORKING;
diff --git a/src/osmo-bsc/net_init.c b/src/osmo-bsc/net_init.c
index d97fd01..e5d3fad 100644
--- a/src/osmo-bsc/net_init.c
+++ b/src/osmo-bsc/net_init.c
@@ -74,6 +74,7 @@
" after this amount of idle time, forget internally cumulated time remainders. Zero to always"
" keep remainders. See also X16, X17." },
{ .T = -25, .default_val = 5, .desc = "Timeout for initial user data after an MSC initiated an SCCP connection to the BSS" },
+ { .T = -28, .default_val = 30, .desc = "Interval at which to try to recover a BORKEN lchan" },
{ .T = -3105, .default_val = GSM_NY1_DEFAULT, .unit = OSMO_TDEF_CUSTOM,
.desc = "Ny1: Maximum number of Physical Information (re)transmissions" },
{ .T = -3111, .default_val = 4, .desc = "Wait time after lchan was released in error (should be T3111 + 2s)" },
diff --git a/tests/timer.vty b/tests/timer.vty
index e418054..9b18439 100644
--- a/tests/timer.vty
+++ b/tests/timer.vty
@@ -34,6 +34,7 @@
net: X17 = 0 ms Rounding threshold for all_allocated:* rate counters: round up to the next counter increment after this many milliseconds. If set to half of X16 (or 0), employ the usual round() behavior: round up after half of a granularity period. If set to 1, behave like ceil(): already increment the counter immediately when all channels are allocated. If set >= X16, behave like floor(): only increment after a full X16 period of all channels being occupied. See also X16, X18 (default: 0 ms)
net: X18 = 60000 ms Forget-sum period for all_allocated:* rate counters: after this amount of idle time, forget internally cumulated time remainders. Zero to always keep remainders. See also X16, X17. (default: 60000 ms)
net: X25 = 5 s Timeout for initial user data after an MSC initiated an SCCP connection to the BSS (default: 5 s)
+net: X28 = 30 s Interval at which to try to recover a BORKEN lchan (default: 30 s)
net: X3105 = 17 Ny1: Maximum number of Physical Information (re)transmissions (default: 17)
net: X3111 = 4 s Wait time after lchan was released in error (should be T3111 + 2s) (default: 4 s)
net: X3113 = 60 s Maximum Paging Request Transmit Delay Threshold: If the estimated transmit delay of the messages in the paging queue surpasses this threshold, then new incoming paging requests will if possible replace a request in retransmission state from the queue or otherwise be discarded, hence limiting the size of the queue and maximum delay of its scheduled requests. X3113 also serves as the upper boundary for dynamic T3113 when estimating the expected maximum delay to get a response (default: 60 s)
@@ -90,6 +91,7 @@
net: X17 = 0 ms Rounding threshold for all_allocated:* rate counters: round up to the next counter increment after this many milliseconds. If set to half of X16 (or 0), employ the usual round() behavior: round up after half of a granularity period. If set to 1, behave like ceil(): already increment the counter immediately when all channels are allocated. If set >= X16, behave like floor(): only increment after a full X16 period of all channels being occupied. See also X16, X18 (default: 0 ms)
net: X18 = 60000 ms Forget-sum period for all_allocated:* rate counters: after this amount of idle time, forget internally cumulated time remainders. Zero to always keep remainders. See also X16, X17. (default: 60000 ms)
net: X25 = 5 s Timeout for initial user data after an MSC initiated an SCCP connection to the BSS (default: 5 s)
+net: X28 = 30 s Interval at which to try to recover a BORKEN lchan (default: 30 s)
net: X3105 = 17 Ny1: Maximum number of Physical Information (re)transmissions (default: 17)
net: X3111 = 4 s Wait time after lchan was released in error (should be T3111 + 2s) (default: 4 s)
net: X3113 = 60 s Maximum Paging Request Transmit Delay Threshold: If the estimated transmit delay of the messages in the paging queue surpasses this threshold, then new incoming paging requests will if possible replace a request in retransmission state from the queue or otherwise be discarded, hence limiting the size of the queue and maximum delay of its scheduled requests. X3113 also serves as the upper boundary for dynamic T3113 when estimating the expected maximum delay to get a response (default: 60 s)
--
To view, visit https://gerrit.osmocom.org/c/osmo-bsc/+/30252?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-bsc
Gerrit-Branch: master
Gerrit-Change-Id: Ic4728b3efe843ea63e2a0b54b1ea8a925347484a
Gerrit-Change-Number: 30252
Gerrit-PatchSet: 14
Gerrit-Owner: osmith <osmith(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: daniel <dwillmann(a)sysmocom.de>
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: neels <nhofmeyr(a)sysmocom.de>
Gerrit-Reviewer: osmith <osmith(a)sysmocom.de>
Gerrit-CC: pespin <pespin(a)sysmocom.de>
Gerrit-MessageType: merged
Attention is currently required from: neels.
laforge has posted comments on this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/35098?usp=email )
Change subject: bsc: tests recovery from BORKEN after release failed
......................................................................
Patch Set 1: Code-Review+2
--
To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/35098?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: I9b4ddfc4a337808d9d5ec538c25fd390b1b2530f
Gerrit-Change-Number: 35098
Gerrit-PatchSet: 1
Gerrit-Owner: neels <nhofmeyr(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: daniel <dwillmann(a)sysmocom.de>
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Attention: neels <nhofmeyr(a)sysmocom.de>
Gerrit-Comment-Date: Mon, 27 Nov 2023 16:32:33 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: Yes
Gerrit-MessageType: comment
laforge has submitted this change. ( https://gerrit.osmocom.org/c/osmo-ggsn/+/35125?usp=email )
Change subject: libgtp: Use gtp_cause_successful() instead of GTPCAUSE_ACC_REQ
......................................................................
libgtp: Use gtp_cause_successful() instead of GTPCAUSE_ACC_REQ
In some cases the phone requests a PDP context type that isn't available
no the PGW/GGSN, e.g. phone requests a combined IPv4/v6 context, but
only IPv4 is supported.
In that case the GGSN can send a Create PDP Context Response with cause
"New PDP type due to network preference" or "New PDP type due to single
address bearer only". libgtp should continue handling these cause values
like the "Request Accepted" cause. Use the new gtp_cause_successful()
function for that.
Related: OS#6268
Change-Id: I7dd1e0aa185530e1e2d0402742df833c61a787a7
---
M gtp/gtp.c
1 file changed, 27 insertions(+), 8 deletions(-)
Approvals:
osmith: Looks good to me, but someone else must approve
fixeria: Looks good to me, approved
Jenkins Builder: Verified
diff --git a/gtp/gtp.c b/gtp/gtp.c
index 1ebc6dc..43e56b5 100644
--- a/gtp/gtp.c
+++ b/gtp/gtp.c
@@ -995,7 +995,7 @@
/* Now send off a reply to the peer */
gtp_create_pdp_resp(gsn, pdp->version, pdp, cause);
- if (cause != GTPCAUSE_ACC_REQ)
+ if (!gtp_cause_successful(cause))
gtp_freepdp(gsn, pdp);
return 0;
@@ -1011,7 +1011,7 @@
gtpie_tv1(&packet, &length, GTP_MAX, GTPIE_CAUSE, cause);
- if (cause == GTPCAUSE_ACC_REQ) {
+ if (gtp_cause_successful(cause)) {
if (version == 0)
gtpie_tv0(&packet, &length, GTP_MAX, GTPIE_QOS_PROFILE0,
@@ -1445,7 +1445,7 @@
}
/* Check all conditional information elements */
- if (GTPCAUSE_ACC_REQ == cause) {
+ if (gtp_cause_successful(cause)) {
if (version == 0) {
if (gtpie_gettv0(ie, GTPIE_QOS_PROFILE0, 0,
@@ -1667,7 +1667,7 @@
gtpie_tv1(&packet, &length, GTP_MAX, GTPIE_CAUSE, cause);
- if (cause == GTPCAUSE_ACC_REQ) {
+ if (gtp_cause_successful(cause)) {
if (version == 0)
gtpie_tv0(&packet, &length, GTP_MAX, GTPIE_QOS_PROFILE0,
@@ -1997,7 +1997,7 @@
/* Check all conditional information elements */
/* TODO: This does not handle GGSN-initiated update responses */
- if (cause == GTPCAUSE_ACC_REQ) {
+ if (gtp_cause_successful(cause)) {
if (version == 0) {
if (gtpie_gettv0(ie, GTPIE_QOS_PROFILE0, 0,
&pdp->qos_neg0,
@@ -2172,7 +2172,7 @@
gtp_resp(version, gsn, pdp, &packet, length, peer, fd,
get_seq(pack), get_tid(pack));
- if (cause == GTPCAUSE_ACC_REQ) {
+ if (gtp_cause_successful(cause)) {
if ((teardown) || (version == 0)) { /* Remove all contexts */
gtp_freepdp_teardown(gsn, linked_pdp);
} else {
@@ -2198,7 +2198,6 @@
}
}
}
- /* if (cause == GTPCAUSE_ACC_REQ) */
return 0;
}
@@ -2350,7 +2349,7 @@
}
/* Check the cause value (again) */
- if ((GTPCAUSE_ACC_REQ != cause) && (GTPCAUSE_NON_EXIST != cause)) {
+ if (!gtp_cause_successful(cause) && (GTPCAUSE_NON_EXIST != cause)) {
rate_ctr_inc2(gsn->ctrg, GSN_CTR_ERR_UNEXPECTED_CAUSE);
GTP_LOGPKG(LOGL_ERROR, peer, pack, len,
"Unexpected cause value received: %d\n", cause);
--
To view, visit https://gerrit.osmocom.org/c/osmo-ggsn/+/35125?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-ggsn
Gerrit-Branch: master
Gerrit-Change-Id: I7dd1e0aa185530e1e2d0402742df833c61a787a7
Gerrit-Change-Number: 35125
Gerrit-PatchSet: 1
Gerrit-Owner: daniel <dwillmann(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: dexter <pmaier(a)sysmocom.de>
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: lynxis lazus <lynxis(a)fe80.eu>
Gerrit-Reviewer: osmith <osmith(a)sysmocom.de>
Gerrit-MessageType: merged
laforge has submitted this change. ( https://gerrit.osmocom.org/c/osmo-bsc/+/35008?usp=email )
(
2 is the latest approved patch-set.
No files were changed between the latest approved patch-set and the submitted one.
)Change subject: ASCI: Repeat notification after assigning MS to VGCS/VBS channel
......................................................................
ASCI: Repeat notification after assigning MS to VGCS/VBS channel
The assignment is repeated because the calling subscriber may not
receive the notification on the DCCH, during handover process. After the
assignment is complete, the calling subscriber will receive
notification.
This cannot be done automatically by the BTS, because the BTS has no
relation between the notifications and the channels.
The notification is required, so that the MS knows the channel to listen
to when leaving the uplink the first time. If no notification is
received, the MS will abort the call.
Change-Id: Ife568b8c2756be332c0b8de21111f66f6e537c4d
---
M src/osmo-bsc/vgcs_fsm.c
1 file changed, 23 insertions(+), 0 deletions(-)
Approvals:
Jenkins Builder: Verified
laforge: Looks good to me, but someone else must approve
fixeria: Looks good to me, approved
diff --git a/src/osmo-bsc/vgcs_fsm.c b/src/osmo-bsc/vgcs_fsm.c
index 22f955a..37473c5 100644
--- a/src/osmo-bsc/vgcs_fsm.c
+++ b/src/osmo-bsc/vgcs_fsm.c
@@ -795,6 +795,8 @@
/* Report talker detection to call state machine. */
if (conn->vgcs_chan.call)
osmo_fsm_inst_dispatch(conn->vgcs_chan.call->vgcs_call.fi, VGCS_EV_CALLING_ASSIGNED, conn);
+ /* Repeat notification for the MS that has been assigned. */
+ rsl_notification_cmd(conn->lchan->ts->trx->bts, conn->lchan, &conn->vgcs_chan.gc_ie, NULL);
break;
case VGCS_EV_CLEANUP:
LOG_CHAN(conn, LOGL_DEBUG, "SCCP connection clearing.\n");
--
To view, visit https://gerrit.osmocom.org/c/osmo-bsc/+/35008?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-bsc
Gerrit-Branch: master
Gerrit-Change-Id: Ife568b8c2756be332c0b8de21111f66f6e537c4d
Gerrit-Change-Number: 35008
Gerrit-PatchSet: 3
Gerrit-Owner: jolly <andreas(a)eversberg.eu>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-MessageType: merged
daniel has posted comments on this change. ( https://gerrit.osmocom.org/c/libosmocore/+/35131?usp=email )
Change subject: coding: gsm0503_tch_{afs,ahs}_encode(): add ability to emit BFI
......................................................................
Patch Set 2:
(1 comment)
File src/coding/gsm0503_coding.c:
https://gerrit.osmocom.org/c/libosmocore/+/35131/comment/b498414c_ac020e9e
PS2, Line 2476: if (!len) {
This is already very repetetive and now even more so. Could you just set tch_len, <whatever 81 in osmo_crc8gen_set_bits is) and gsm0503_conv_fn in the switch statement and then have a generic part after that checks for !len and does the memset/calls these functions with the appropriate parameters.
--
To view, visit https://gerrit.osmocom.org/c/libosmocore/+/35131?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: I82ce2adf995a4b42d1f378c5819f88d773b9104a
Gerrit-Change-Number: 35131
Gerrit-PatchSet: 2
Gerrit-Owner: jolly <andreas(a)eversberg.eu>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: falconia <falcon(a)freecalypso.org>
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-CC: daniel <dwillmann(a)sysmocom.de>
Gerrit-Comment-Date: Mon, 27 Nov 2023 16:28:40 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Gerrit-MessageType: comment
laforge has submitted this change. ( https://gerrit.osmocom.org/c/libosmocore/+/34986?usp=email )
Change subject: LAPDm: Add support for RTS based polling
......................................................................
LAPDm: Add support for RTS based polling
The lower layer must set the 'POLLING_ONLY' flag and provide frame
number when polling a frame. If T200 is pending, it is started with a
timeout frame number in advance to given frame number.
The lower layer must call lapdm_t200_fn() after a frame has been
received or if a frame has not been received. Also it must be called
after a TCH frame has been received. LAPDm uses this to check the T200
timeout condition.
A new function is used to set the frame number based timeout values.
Related: OS#4074
Change-Id: I6ebe83f829d7751ea9de1d90eb478c7a628db64c
---
M TODO-RELEASE
M include/osmocom/gsm/lapdm.h
M src/gsm/lapdm.c
M src/gsm/libosmogsm.map
4 files changed, 178 insertions(+), 11 deletions(-)
Approvals:
Jenkins Builder: Verified
daniel: Looks good to me, but someone else must approve
laforge: Looks good to me, approved
diff --git a/TODO-RELEASE b/TODO-RELEASE
index 1d56d45..226450b 100644
--- a/TODO-RELEASE
+++ b/TODO-RELEASE
@@ -10,3 +10,4 @@
core ADD osmo_sock_multiaddr_{add,del}_local_addr()
core ADD gsmtap_inst_fd2() core, DEPRECATE gsmtap_inst_fd()
isdn ABI change add states and flags for external T200 handling
+gsm ABI change add T200 timer states to lapdm_datalink
diff --git a/include/osmocom/gsm/lapdm.h b/include/osmocom/gsm/lapdm.h
index 1a39fca..db66680 100644
--- a/include/osmocom/gsm/lapdm.h
+++ b/include/osmocom/gsm/lapdm.h
@@ -33,6 +33,9 @@
struct lapdm_msg_ctx mctx; /*!< context of established connection */
struct lapdm_entity *entity; /*!< LAPDm entity we are part of */
+
+ uint32_t t200_fn; /*!< T200 timer in frames */
+ uint32_t t200_timeout; /*!< T200 timeout frame number */
};
/*! LAPDm datalink SAPIs */
@@ -119,6 +122,11 @@
void lapdm_entity_set_flags(struct lapdm_entity *le, unsigned int flags);
void lapdm_channel_set_flags(struct lapdm_channel *lc, unsigned int flags);
+void lapdm_entity_set_t200_fn(struct lapdm_entity *le, const uint32_t *t200_fn);
+void lapdm_channel_set_t200_fn(struct lapdm_channel *lc, const uint32_t *t200_fn_dcch, const uint32_t *t200_fn_acch);
+
int lapdm_phsap_dequeue_prim(struct lapdm_entity *le, struct osmo_phsap_prim *pp);
+int lapdm_phsap_dequeue_prim_fn(struct lapdm_entity *le, struct osmo_phsap_prim *pp, uint32_t fn);
+void lapdm_t200_fn(struct lapdm_entity *le, uint32_t fn);
/*! @} */
diff --git a/src/gsm/lapdm.c b/src/gsm/lapdm.c
index 43f5662..d609317 100644
--- a/src/gsm/lapdm.c
+++ b/src/gsm/lapdm.c
@@ -27,6 +27,7 @@
#include <stdio.h>
#include <stdint.h>
+#include <inttypes.h>
#include <string.h>
#include <errno.h>
@@ -196,9 +197,9 @@
char name[256];
if (name_pfx) {
snprintf(name, sizeof(name), "%s[%s]", name_pfx, i == 0 ? "0" : "3");
- lapdm_dl_init(&le->datalink[i], le, t200_ms[i], n200, name);
+ lapdm_dl_init(&le->datalink[i], le, (t200_ms) ? t200_ms[i] : 0, n200, name);
} else
- lapdm_dl_init(&le->datalink[i], le, t200_ms[i], n200, NULL);
+ lapdm_dl_init(&le->datalink[i], le, (t200_ms) ? t200_ms[i] : 0, n200, NULL);
}
lapdm_entity_set_mode(le, mode);
@@ -358,6 +359,18 @@
/* if there is a pending message, queue it */
if (le->tx_pending || le->flags & LAPDM_ENT_F_POLLING_ONLY) {
+ struct msgb *old_msg;
+
+ /* In 'Polling only' mode there can be only one message. */
+ if (le->flags & LAPDM_ENT_F_POLLING_ONLY) {
+ /* Overwrite existing message by removing it first. */
+ if ((old_msg = msgb_dequeue(&dl->dl.tx_queue))) {
+ msgb_free(old_msg);
+ /* Reset V(S) to V(A), because there is no outstanding message now. */
+ dl->dl.v_send = dl->dl.v_ack;
+ }
+ }
+
*msgb_push(msg, 1) = pad;
*msgb_push(msg, 1) = link_id;
*msgb_push(msg, 1) = chan_nr;
@@ -377,21 +390,55 @@
return le->l1_prim_cb(&pp.oph, le->l1_ctx);
}
+/* Get transmit frame from queue, if any. In polling mode, indicate RTS to LAPD and start T200, if pending. */
+static struct msgb *tx_dequeue_msgb(struct lapdm_datalink *dl, uint32_t fn)
+{
+ struct msgb *msg;
+
+ /* Call RTS function of LAPD, to poll next frame. */
+ if (dl->entity->flags & LAPDM_ENT_F_POLLING_ONLY) {
+ struct lapd_msg_ctx lctx;
+ int rc;
+
+ /* Poll next frame. */
+ lctx.dl = &dl->dl;
+ rc = lapd_ph_rts_ind(&lctx);
+
+ /* If T200 has been started, calculate timeout FN. */
+ if (rc == 1) {
+ /* Set T200 in advance. */
+ dl->t200_timeout = fn;
+ ADD_MODULO(dl->t200_timeout, dl->t200_fn, GSM_MAX_FN);
+
+ LOGDL(&dl->dl, LOGL_INFO,
+ "T200 running from FN %"PRIu32" to FN %"PRIu32" (%"PRIu32" frames).\n",
+ fn, dl->t200_timeout, dl->t200_fn);
+ }
+ }
+
+ /* If there is no frame from LAPD, send UI frame, if any. */
+ msg = msgb_dequeue(&dl->dl.tx_queue);
+ if (msg)
+ LOGDL(&dl->dl, LOGL_INFO, "Sending frame from TX queue. (FN %"PRIu32")\n", fn);
+ return msg;
+}
+
/* Dequeue a Downlink message for DCCH (dedicated channel) */
-static struct msgb *tx_dequeue_dcch_msgb(struct lapdm_entity *le)
+static struct msgb *tx_dequeue_dcch_msgb(struct lapdm_entity *le, uint32_t fn)
{
struct msgb *msg;
/* SAPI=0 always has higher priority than SAPI=3 */
- msg = msgb_dequeue(&le->datalink[DL_SAPI0].dl.tx_queue);
- if (msg == NULL) /* no SAPI=0 messages, dequeue SAPI=3 (if any) */
- msg = msgb_dequeue(&le->datalink[DL_SAPI3].dl.tx_queue);
+ msg = tx_dequeue_msgb(&le->datalink[DL_SAPI0], fn);
+ if (msg == NULL) { /* no SAPI=0 messages, dequeue SAPI=3 (if any) */
+ msg = tx_dequeue_msgb(&le->datalink[DL_SAPI3], fn);
+ }
return msg;
}
/* Dequeue a Downlink message for ACCH (associated channel) */
-static struct msgb *tx_dequeue_acch_msgb(struct lapdm_entity *le)
+static struct msgb *tx_dequeue_acch_msgb(struct lapdm_entity *le, uint32_t fn)
{
struct lapdm_datalink *dl;
int last = le->last_tx_dequeue;
@@ -403,7 +450,7 @@
/* next */
i = (i + 1) % n;
dl = &le->datalink[i];
- if ((msg = msgb_dequeue(&dl->dl.tx_queue)))
+ if ((msg = tx_dequeue_msgb(dl, fn)))
break;
} while (i != last);
@@ -417,7 +464,7 @@
/*! dequeue a msg that's pending transmission via L1 and wrap it into
* a osmo_phsap_prim */
-int lapdm_phsap_dequeue_prim(struct lapdm_entity *le, struct osmo_phsap_prim *pp)
+int lapdm_phsap_dequeue_prim_fn(struct lapdm_entity *le, struct osmo_phsap_prim *pp, uint32_t fn)
{
struct msgb *msg;
uint8_t pad;
@@ -425,9 +472,9 @@
/* Dequeue depending on channel type: DCCH or ACCH.
* See 3GPP TS 44.005, section 4.2.2 "Priority". */
if (le == &le->lapdm_ch->lapdm_dcch)
- msg = tx_dequeue_dcch_msgb(le);
+ msg = tx_dequeue_dcch_msgb(le, fn);
else
- msg = tx_dequeue_acch_msgb(le);
+ msg = tx_dequeue_acch_msgb(le, fn);
if (!msg)
return -ENODEV;
@@ -449,6 +496,57 @@
return 0;
}
+static void lapdm_t200_fn_dl(struct lapdm_datalink *dl, uint32_t fn)
+{
+ uint32_t diff;
+
+ OSMO_ASSERT((dl->dl.lapd_flags & LAPD_F_RTS));
+
+ /* If T200 is running, check if it has fired. */
+ if (dl->dl.t200_rts != LAPD_T200_RTS_RUNNING)
+ return;
+
+ /* Calculate how many frames fn is behind t200_timeout.
+ * If it is negative (>= GSM_MAX_FN / 2), we have not reached t200_timeout yet.
+ * If it is 0 or positive, we reached it or we are a bit too late, which is not a problem.
+ */
+ diff = fn;
+ ADD_MODULO(diff, GSM_MAX_FN - dl->t200_timeout, GSM_MAX_FN);
+ if (diff >= GSM_MAX_FN / 2)
+ return;
+
+ LOGDL(&dl->dl, LOGL_INFO, "T200 timeout at FN %"PRIu32", detected at FN %"PRIu32".\n", dl->t200_timeout, fn);
+
+ lapd_t200_timeout(&dl->dl);
+}
+
+/*! Get receive frame number from L1. It is used to check the T200 timeout.
+ * This function is used if LAPD is in RTS mode only. (Applies if the LAPDM_ENT_F_POLLING_ONLY flag is set.)
+ * This function must be called for every valid or invalid data frame received.
+ * The frame number fn must be the frame number of the first burst of a data frame.
+ * This function must be called after the frame is delivered to layer 2.
+ * In case of TCH, this this function must be called for every speech frame received, meaning that there was no valid
+ * data frame. */
+void lapdm_t200_fn(struct lapdm_entity *le, uint32_t fn)
+{
+ unsigned int i;
+
+ if (!(le->flags & LAPDM_ENT_F_POLLING_ONLY)) {
+ LOGP(DLLAPD, LOGL_ERROR, "Function call not allowed on timer based T200.\n");
+ return;
+ }
+
+ for (i = 0; i < ARRAY_SIZE(le->datalink); i++)
+ lapdm_t200_fn_dl(&le->datalink[i], fn);
+}
+
+/*! dequeue a msg that's pending transmission via L1 and wrap it into
+ * a osmo_phsap_prim */
+int lapdm_phsap_dequeue_prim(struct lapdm_entity *le, struct osmo_phsap_prim *pp)
+{
+ return lapdm_phsap_dequeue_prim_fn(le, pp, 0);
+}
+
/* get next frame from the tx queue. because the ms has multiple datalinks,
* each datalink's queue is read round-robin.
*/
@@ -853,6 +951,7 @@
return -EINVAL;
}
/* send to LAPD */
+ LOGDL(lctx.dl, LOGL_DEBUG, "Frame received at FN %"PRIu32".\n", fn);
rc = lapd_ph_data_ind(msg, &lctx);
break;
case LAPDm_FMT_Bter:
@@ -1494,7 +1593,20 @@
/*! Set the flags of a LAPDm entity */
void lapdm_entity_set_flags(struct lapdm_entity *le, unsigned int flags)
{
+ unsigned int dl_flags = 0;
+ struct lapdm_datalink *dl;
+ int i;
+
le->flags = flags;
+
+ /* Set flags at LAPD. */
+ if (le->flags & LAPDM_ENT_F_POLLING_ONLY)
+ dl_flags |= LAPD_F_RTS;
+
+ for (i = 0; i < ARRAY_SIZE(le->datalink); i++) {
+ dl = &le->datalink[i];
+ lapd_dl_set_flags(&dl->dl, dl_flags);
+ }
}
/*! Set the flags of all LAPDm entities in a LAPDm channel */
@@ -1504,4 +1616,25 @@
lapdm_entity_set_flags(&lc->lapdm_acch, flags);
}
+/*! Set the T200 FN timer of a LAPDm entity
+ * \param[in] \ref lapdm_entity
+ * \param[in] t200_fn Array of T200 timeout in frame numbers for all SAPIs (0, 3) */
+void lapdm_entity_set_t200_fn(struct lapdm_entity *le, const uint32_t *t200_fn)
+{
+ unsigned int i;
+
+ for (i = 0; i < ARRAY_SIZE(le->datalink); i++)
+ le->datalink[i].t200_fn = t200_fn[i];
+}
+
+/*! Set the T200 FN timer of all LAPDm entities in a LAPDm channel
+ * \param[in] \ref lapdm_channel
+ * \param[in] t200_fn_dcch Array of T200 timeout in frame numbers for all SAPIs (0, 3) on SDCCH/FACCH
+ * \param[in] t200_fn_acch Array of T200 timeout in frame numbers for all SAPIs (0, 3) on SACCH */
+void lapdm_channel_set_t200_fn(struct lapdm_channel *lc, const uint32_t *t200_fn_dcch, const uint32_t *t200_fn_acch)
+{
+ lapdm_entity_set_t200_fn(&lc->lapdm_dcch, t200_fn_dcch);
+ lapdm_entity_set_t200_fn(&lc->lapdm_acch, t200_fn_acch);
+}
+
/*! @} */
diff --git a/src/gsm/libosmogsm.map b/src/gsm/libosmogsm.map
index 056d320..6bb3b4b 100644
--- a/src/gsm/libosmogsm.map
+++ b/src/gsm/libosmogsm.map
@@ -587,7 +587,11 @@
lapdm_entity_reset;
lapdm_entity_set_flags;
lapdm_entity_set_mode;
+lapdm_entity_set_t200_fn;
+lapdm_channel_set_t200_fn;
lapdm_phsap_dequeue_prim;
+lapdm_phsap_dequeue_prim_fn;
+lapdm_t200_fn;
lapdm_phsap_up;
lapdm_rslms_recvmsg;
--
To view, visit https://gerrit.osmocom.org/c/libosmocore/+/34986?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: I6ebe83f829d7751ea9de1d90eb478c7a628db64c
Gerrit-Change-Number: 34986
Gerrit-PatchSet: 17
Gerrit-Owner: jolly <andreas(a)eversberg.eu>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: daniel <dwillmann(a)sysmocom.de>
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: neels <nhofmeyr(a)sysmocom.de>
Gerrit-MessageType: merged
laforge has submitted this change. ( https://gerrit.osmocom.org/c/libosmocore/+/35015?usp=email )
(
2 is the latest approved patch-set.
No files were changed between the latest approved patch-set and the submitted one.
)Change subject: LAPDm: Add a flag to enable suppression of subsequent REJ frame
......................................................................
LAPDm: Add a flag to enable suppression of subsequent REJ frame
This behaviour was default in earlier versions of LAPDm/LAPD. Because it
is only required for osmocom-bb, a flag is added to enable it there.
Related: OS#5969
Change-Id: I93994dbbd1fc2c9edb8f3015c6b18ecd0fce0565
---
M include/osmocom/gsm/lapdm.h
M include/osmocom/isdn/lapd_core.h
M src/gsm/lapdm.c
M src/isdn/lapd_core.c
4 files changed, 19 insertions(+), 3 deletions(-)
Approvals:
Jenkins Builder: Verified
laforge: Looks good to me, approved
fixeria: Looks good to me, but someone else must approve
diff --git a/include/osmocom/gsm/lapdm.h b/include/osmocom/gsm/lapdm.h
index 08b808c..42ebbce 100644
--- a/include/osmocom/gsm/lapdm.h
+++ b/include/osmocom/gsm/lapdm.h
@@ -50,6 +50,7 @@
#define LAPDM_ENT_F_EMPTY_FRAME 0x0001
#define LAPDM_ENT_F_POLLING_ONLY 0x0002
+#define LAPDM_ENT_F_DROP_2ND_REJ 0x0004
/*! a LAPDm Entity */
struct lapdm_entity {
diff --git a/include/osmocom/isdn/lapd_core.h b/include/osmocom/isdn/lapd_core.h
index 776d4f4..1e010af 100644
--- a/include/osmocom/isdn/lapd_core.h
+++ b/include/osmocom/isdn/lapd_core.h
@@ -86,6 +86,7 @@
/*! lapd_flags */
#define LAPD_F_RTS 0x0001
+#define LAPD_F_DROP_2ND_REJ 0x0002
/*! LAPD T200 state in RTS mode */
enum lapd_t200_rts {
diff --git a/src/gsm/lapdm.c b/src/gsm/lapdm.c
index 28644c2..fb892d2 100644
--- a/src/gsm/lapdm.c
+++ b/src/gsm/lapdm.c
@@ -1637,6 +1637,8 @@
/* Set flags at LAPD. */
if (le->flags & LAPDM_ENT_F_POLLING_ONLY)
dl_flags |= LAPD_F_RTS;
+ if (le->flags & LAPDM_ENT_F_DROP_2ND_REJ)
+ dl_flags |= LAPD_F_DROP_2ND_REJ;
for (i = 0; i < ARRAY_SIZE(le->datalink); i++) {
dl = &le->datalink[i];
diff --git a/src/isdn/lapd_core.c b/src/isdn/lapd_core.c
index 34748a4..d98edae 100644
--- a/src/isdn/lapd_core.c
+++ b/src/isdn/lapd_core.c
@@ -1633,9 +1633,8 @@
ns, dl->v_recv, lapd_state_name(dl->state));
/* discard data */
msgb_free(msg);
- if (dl->seq_err_cond != 1) {
- /* FIXME: help me understand what exactly todo here
- */
+ /* Send reject, but suppress second reject if LAPD_F_DROP_2ND_REJ flag is set. */
+ if (dl->seq_err_cond != 1 || !(dl->lapd_flags & LAPD_F_DROP_2ND_REJ)) {
dl->seq_err_cond = 1;
lapd_send_rej(lctx, lctx->p_f);
} else {
--
To view, visit https://gerrit.osmocom.org/c/libosmocore/+/35015?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: I93994dbbd1fc2c9edb8f3015c6b18ecd0fce0565
Gerrit-Change-Number: 35015
Gerrit-PatchSet: 9
Gerrit-Owner: jolly <andreas(a)eversberg.eu>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-MessageType: merged
laforge has submitted this change. ( https://gerrit.osmocom.org/c/libosmocore/+/35048?usp=email )
Change subject: LAPD: Indicate sequence error after indicating received data
......................................................................
LAPD: Indicate sequence error after indicating received data
First indicated the received data in an I frame, if possible. Then
indicate the sequence error using MDL-ERROR-INDICATION. This way the
data is delivered before the error is handled by BSC.
Also there is no reason to indicate sequence error on supervisory
frames.
See §8.7.4 of 3GPP TS 44.006.
Related: OS#5968
Change-Id: I535c18018bf0df4124a5e9618238028fa31be289
---
M src/isdn/lapd_core.c
1 file changed, 34 insertions(+), 5 deletions(-)
Approvals:
laforge: Looks good to me, approved
Jenkins Builder: Verified
pespin: Looks good to me, but someone else must approve
diff --git a/src/isdn/lapd_core.c b/src/isdn/lapd_core.c
index d98edae..b32ed26 100644
--- a/src/isdn/lapd_core.c
+++ b/src/isdn/lapd_core.c
@@ -796,8 +796,9 @@
lapd_start_t200(dl);
}
-/* 5.5.3.1: Common function to acknowlege frames up to the given N(R) value */
-static void lapd_acknowledge(struct lapd_msg_ctx *lctx)
+/* 5.5.3.1: Common function to acknowlege frames up to the given N(R) value
+ * In case of a sequence error, the cause is returned with negative sign. */
+static int lapd_acknowledge(struct lapd_msg_ctx *lctx)
{
struct lapd_datalink *dl = lctx->dl;
uint8_t nr = lctx->n_recv;
@@ -838,7 +839,7 @@
*/
if (sub_mod(nr, dl->v_ack, dl->v_range) > sub_mod(dl->v_send, dl->v_ack, dl->v_range)) {
LOGDL(dl, LOGL_NOTICE, "N(R) sequence error\n");
- mdl_error(MDL_CAUSE_SEQ_ERR, lctx);
+ return -MDL_CAUSE_SEQ_ERR;
}
}
@@ -861,6 +862,8 @@
/* Start T203, if T200 is not running in MF EST state, if enabled */
if (!lapd_is_t200_started(dl) && (dl->t203_sec || dl->t203_usec) && (dl->state == LAPD_STATE_MF_EST))
lapd_start_t203(dl);
+
+ return 0;
}
/* L1 -> L2 */
@@ -1576,6 +1579,7 @@
int length = lctx->length;
int rc;
bool i_frame_in_queue = false;
+ int mdl_cause = 0;
LOGDL(dl, LOGL_INFO, "I received in state %s on SAPI(%u)\n",
lapd_state_name(dl->state), lctx->sapi);
@@ -1652,7 +1656,9 @@
}
/* Even if N(s) sequence error, acknowledge to N(R)-1 */
/* 5.5.3.1: Acknowlege all transmitted frames up the N(R)-1 */
- lapd_acknowledge(lctx); /* V(A) is also set here */
+ mdl_cause = lapd_acknowledge(lctx); /* V(A) is also set here */
+ if (mdl_cause < 0)
+ mdl_error(-mdl_cause, lctx);
/* Send message, if possible due to acknowledged data */
lapd_send_i(dl, __LINE__, false);
@@ -1673,7 +1679,7 @@
}
/* 5.5.3.1: Acknowlege all transmitted frames up the the N(R)-1 */
- lapd_acknowledge(lctx); /* V(A) is also set here */
+ mdl_cause = lapd_acknowledge(lctx); /* V(A) is also set here */
/* Only if we are not in own receiver busy condition */
if (!dl->own_busy) {
@@ -1718,6 +1724,10 @@
} else
LOGDL(dl, LOGL_INFO, "I frame ignored during own receiver busy condition\n");
+ /* Indicate sequence error, if exists. */
+ if (mdl_cause < 0)
+ mdl_error(-mdl_cause, lctx);
+
/* Check for P bit */
if (lctx->p_f) {
/* 5.5.2.1 */
--
To view, visit https://gerrit.osmocom.org/c/libosmocore/+/35048?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: I535c18018bf0df4124a5e9618238028fa31be289
Gerrit-Change-Number: 35048
Gerrit-PatchSet: 8
Gerrit-Owner: jolly <andreas(a)eversberg.eu>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
Gerrit-MessageType: merged
Attention is currently required from: jolly, neels.
laforge has posted comments on this change. ( https://gerrit.osmocom.org/c/libosmocore/+/34985?usp=email )
Change subject: LAPD: Add support for RTS based polling and T200
......................................................................
Patch Set 9: Code-Review+2
--
To view, visit https://gerrit.osmocom.org/c/libosmocore/+/34985?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: Ib961b5a44911b99b0487641533301749c0286995
Gerrit-Change-Number: 34985
Gerrit-PatchSet: 9
Gerrit-Owner: jolly <andreas(a)eversberg.eu>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: daniel <dwillmann(a)sysmocom.de>
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: neels <nhofmeyr(a)sysmocom.de>
Gerrit-Attention: jolly <andreas(a)eversberg.eu>
Gerrit-Attention: neels <nhofmeyr(a)sysmocom.de>
Gerrit-Comment-Date: Mon, 27 Nov 2023 16:25:49 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: Yes
Gerrit-MessageType: comment
Attention is currently required from: jolly.
laforge has posted comments on this change. ( https://gerrit.osmocom.org/c/libosmocore/+/35048?usp=email )
Change subject: LAPD: Indicate sequence error after indicating received data
......................................................................
Patch Set 7: Code-Review+2
--
To view, visit https://gerrit.osmocom.org/c/libosmocore/+/35048?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: I535c18018bf0df4124a5e9618238028fa31be289
Gerrit-Change-Number: 35048
Gerrit-PatchSet: 7
Gerrit-Owner: jolly <andreas(a)eversberg.eu>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
Gerrit-Attention: jolly <andreas(a)eversberg.eu>
Gerrit-Comment-Date: Mon, 27 Nov 2023 16:25:32 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: Yes
Gerrit-MessageType: comment
Attention is currently required from: jolly, neels.
laforge has posted comments on this change. ( https://gerrit.osmocom.org/c/libosmocore/+/34986?usp=email )
Change subject: LAPDm: Add support for RTS based polling
......................................................................
Patch Set 16: Code-Review+2
--
To view, visit https://gerrit.osmocom.org/c/libosmocore/+/34986?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: I6ebe83f829d7751ea9de1d90eb478c7a628db64c
Gerrit-Change-Number: 34986
Gerrit-PatchSet: 16
Gerrit-Owner: jolly <andreas(a)eversberg.eu>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: daniel <dwillmann(a)sysmocom.de>
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: neels <nhofmeyr(a)sysmocom.de>
Gerrit-Attention: jolly <andreas(a)eversberg.eu>
Gerrit-Attention: neels <nhofmeyr(a)sysmocom.de>
Gerrit-Comment-Date: Mon, 27 Nov 2023 16:25:26 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: Yes
Gerrit-MessageType: comment
Attention is currently required from: fixeria, neels.
pespin has posted comments on this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/35053?usp=email )
Change subject: msc: test re-assignment to match codec with MT
......................................................................
Patch Set 2: Code-Review+1
(3 comments)
File msc/BSC_ConnectionHandler.ttcn:
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/35053/comment/078ac4ba_1cf6…
PS2, Line 986: /* What to Codec (Chosen) to send back in Assignment Complete */
"What to Codec to" doesn't make sense to me?
You mean "What codec to encode/transmit back in Assignment Complete"?
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/35053/comment/bc9a68e1_bf65…
PS2, Line 993: BSSMAP_FIELD_CodecElements re_ass_req_codecs,
Sounds like "optional" is missing in this field.
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/35053/comment/0ed52d20_3a44…
PS2, Line 995: re_ass_compl_chosen_codec
> Done
Sounds like "optional" is missing in this field.
--
To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/35053?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: I402ed0523a2a87b83f29c5577b2c828102005d53
Gerrit-Change-Number: 35053
Gerrit-PatchSet: 2
Gerrit-Owner: neels <nhofmeyr(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
Gerrit-Attention: neels <nhofmeyr(a)sysmocom.de>
Gerrit-Attention: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Comment-Date: Mon, 27 Nov 2023 16:18:24 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: Yes
Comment-In-Reply-To: neels <nhofmeyr(a)sysmocom.de>
Comment-In-Reply-To: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-MessageType: comment
Attention is currently required from: arehbein.
laforge 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 3: Code-Review+2
--
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: 3
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-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Attention: arehbein <arehbein(a)sysmocom.de>
Gerrit-Comment-Date: Mon, 27 Nov 2023 16:17:30 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: Yes
Gerrit-MessageType: comment
Attention is currently required from: fixeria, osmith.
laforge has posted comments on this change. ( https://gerrit.osmocom.org/c/libosmocore/+/35134?usp=email )
Change subject: rlp: Add support for 576bit RLP frames
......................................................................
Patch Set 3:
(1 comment)
Patchset:
PS1:
> maybe add a new test for 576bit RLP frames?
I don't yet have any real-world captures of 576bit RLP frames, sorry. The 240bit frames were actual captured frames between modems. To get 576bit frame captures I'd have to find a set of modems with RLPv2 support over 14.4kbps channels - something I don't have available to me [yet?].
--
To view, visit https://gerrit.osmocom.org/c/libosmocore/+/35134?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: Idfdcabb19fe8733fb9c5ee76a39b0bf4cdf60c2c
Gerrit-Change-Number: 35134
Gerrit-PatchSet: 3
Gerrit-Owner: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: osmith <osmith(a)sysmocom.de>
Gerrit-Attention: osmith <osmith(a)sysmocom.de>
Gerrit-Attention: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Comment-Date: Mon, 27 Nov 2023 16:16:40 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Comment-In-Reply-To: osmith <osmith(a)sysmocom.de>
Gerrit-MessageType: comment
Attention is currently required from: fixeria, osmith.
laforge has posted comments on this change. ( https://gerrit.osmocom.org/c/libosmocore/+/35123?usp=email )
Change subject: Add a GSM RLP decoder and encoder
......................................................................
Patch Set 6:
(2 comments)
File src/gsm/rlp.c:
https://gerrit.osmocom.org/c/libosmocore/+/35123/comment/8adc5e49_d264ef57
PS5, Line 85: //out->fcs = (data[240/8-3] << 16) | (data[240/8-2]) << 8 | (data[240/8-1] << 0);
> do you want to keep this?
it was removed by the next patch, but I now cleaned it up and removed it here.
File tests/rlp/rlp_test.c:
https://gerrit.osmocom.org/c/libosmocore/+/35123/comment/f2502fb8_d97d439d
PS4, Line 4: #if 0
> debugging leftovers?
Done
--
To view, visit https://gerrit.osmocom.org/c/libosmocore/+/35123?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: I2d9bd8eb4f0cd0f72c436996767b199429596917
Gerrit-Change-Number: 35123
Gerrit-PatchSet: 6
Gerrit-Owner: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: osmith <osmith(a)sysmocom.de>
Gerrit-Attention: osmith <osmith(a)sysmocom.de>
Gerrit-Attention: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Comment-Date: Mon, 27 Nov 2023 16:15:32 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Comment-In-Reply-To: osmith <osmith(a)sysmocom.de>
Comment-In-Reply-To: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-MessageType: comment
Attention is currently required from: fixeria, laforge, osmith.
Hello Jenkins Builder, fixeria, osmith,
I'd like you to reexamine a change. Please visit
https://gerrit.osmocom.org/c/libosmocore/+/35134?usp=email
to look at the new patch set (#3).
The following approvals got outdated and were removed:
Code-Review+1 by osmith
Change subject: rlp: Add support for 576bit RLP frames
......................................................................
rlp: Add support for 576bit RLP frames
The code so far only supported 240bit RLP frames; Add support for
576bit in this patch. We still only support versions 0+1 and not
version 2.
Change-Id: Idfdcabb19fe8733fb9c5ee76a39b0bf4cdf60c2c
---
M src/gsm/rlp.c
1 file changed, 39 insertions(+), 20 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/34/35134/3
--
To view, visit https://gerrit.osmocom.org/c/libosmocore/+/35134?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: Idfdcabb19fe8733fb9c5ee76a39b0bf4cdf60c2c
Gerrit-Change-Number: 35134
Gerrit-PatchSet: 3
Gerrit-Owner: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: osmith <osmith(a)sysmocom.de>
Gerrit-Attention: osmith <osmith(a)sysmocom.de>
Gerrit-Attention: laforge <laforge(a)osmocom.org>
Gerrit-Attention: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-MessageType: newpatchset
Attention is currently required from: fixeria, laforge, osmith.
Hello Jenkins Builder, fixeria, osmith,
I'd like you to reexamine a change. Please visit
https://gerrit.osmocom.org/c/libosmocore/+/35123?usp=email
to look at the new patch set (#7).
Change subject: Add a GSM RLP decoder and encoder
......................................................................
Add a GSM RLP decoder and encoder
This code implements a decoder and encoder for the RLP (Radio Link
Protocol) as used in the bearer channel of GSM CSD (Circuit Switched
Data).
Change-Id: I2d9bd8eb4f0cd0f72c436996767b199429596917
---
M include/osmocom/gsm/Makefile.am
A include/osmocom/gsm/rlp.h
M src/gsm/Makefile.am
M src/gsm/libosmogsm.map
A src/gsm/rlp.c
M tests/Makefile.am
A tests/rlp/rlp_test.c
A tests/rlp/rlp_test.ok
M tests/testsuite.at
9 files changed, 602 insertions(+), 2 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/23/35123/7
--
To view, visit https://gerrit.osmocom.org/c/libosmocore/+/35123?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: I2d9bd8eb4f0cd0f72c436996767b199429596917
Gerrit-Change-Number: 35123
Gerrit-PatchSet: 7
Gerrit-Owner: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: osmith <osmith(a)sysmocom.de>
Gerrit-Attention: osmith <osmith(a)sysmocom.de>
Gerrit-Attention: laforge <laforge(a)osmocom.org>
Gerrit-Attention: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-MessageType: newpatchset
Attention is currently required from: fixeria, laforge, osmith.
Hello Jenkins Builder, fixeria, osmith,
I'd like you to reexamine a change. Please visit
https://gerrit.osmocom.org/c/libosmocore/+/35123?usp=email
to look at the new patch set (#6).
The following approvals got outdated and were removed:
Code-Review+1 by fixeria, Code-Review+1 by osmith, Verified+1 by Jenkins Builder
Change subject: Add a GSM RLP decoder and encoder
......................................................................
Add a GSM RLP decoder and encoder
This code implements a decoder and encoder for the RLP (Radio Link
Protocol) as used in the bearer channel of GSM CSD (Circuit Switched
Data).
Change-Id: I2d9bd8eb4f0cd0f72c436996767b199429596917
---
M include/osmocom/gsm/Makefile.am
A include/osmocom/gsm/rlp.h
M src/gsm/Makefile.am
M src/gsm/libosmogsm.map
A src/gsm/rlp.c
M tests/Makefile.am
A tests/rlp/rlp_test.c
A tests/rlp/rlp_test.ok
M tests/testsuite.at
9 files changed, 603 insertions(+), 2 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/23/35123/6
--
To view, visit https://gerrit.osmocom.org/c/libosmocore/+/35123?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: I2d9bd8eb4f0cd0f72c436996767b199429596917
Gerrit-Change-Number: 35123
Gerrit-PatchSet: 6
Gerrit-Owner: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: osmith <osmith(a)sysmocom.de>
Gerrit-Attention: osmith <osmith(a)sysmocom.de>
Gerrit-Attention: laforge <laforge(a)osmocom.org>
Gerrit-Attention: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-MessageType: newpatchset
Attention is currently required from: jolly.
pespin has posted comments on this change. ( https://gerrit.osmocom.org/c/libosmocore/+/35048?usp=email )
Change subject: LAPD: Indicate sequence error after indicating received data
......................................................................
Patch Set 7: Code-Review+1
--
To view, visit https://gerrit.osmocom.org/c/libosmocore/+/35048?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: I535c18018bf0df4124a5e9618238028fa31be289
Gerrit-Change-Number: 35048
Gerrit-PatchSet: 7
Gerrit-Owner: jolly <andreas(a)eversberg.eu>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
Gerrit-Attention: jolly <andreas(a)eversberg.eu>
Gerrit-Comment-Date: Mon, 27 Nov 2023 16:01:09 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: Yes
Gerrit-MessageType: comment