Hello Jenkins Builder,
I'd like you to reexamine a change. Please visit
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/28092
to look at the new patch set (#2).
Change subject: bsc: test lchan rel during LCS Loc Req
......................................................................
bsc: test lchan rel during LCS Loc Req
Test this scenario:
Emergency call is started;
Location Request is started to locate the emergency;
lchan releases early for any reason;
(Do not send Clear Request immediately);
Location Request is completed, locating the emergency.
Related: SYS#5912
Related: Ib44dd05b0adee84234f671313b156ff6625357cc (osmo-bsc)
Change-Id: Idea690a4aa4aecbe4642a16e96d086cc0538564a
---
M bsc/BSC_Tests.ttcn
1 file changed, 116 insertions(+), 1 deletion(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-ttcn3-hacks refs/changes/92/28092/2
--
To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/28092
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: Idea690a4aa4aecbe4642a16e96d086cc0538564a
Gerrit-Change-Number: 28092
Gerrit-PatchSet: 2
Gerrit-Owner: neels <nhofmeyr(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-MessageType: newpatchset
neels has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-bsc/+/28093 )
Change subject: do not BSSMAP Clear on lchan rel when LCS is still ongoing
......................................................................
do not BSSMAP Clear on lchan rel when LCS is still ongoing
The proper way to fix this is having a use count on the SCCP conn, one
each for a busy lchan and a busy Location Request. That would require a
bunch more work and testing.
This patch is the least-effort way to avoid the following scenario:
Emergency call is started;
Location Request is started to locate the emergency;
lchan releases early for any reason;
Perfectly fine Location Request gets canceled by Clear Request;
The information was there, but we did not forward the location;
No help at emergency because of my code.
Allow Location Request to complete for these cases:
- rx RLL REL IND (or any other reason for gscon_lchan_releasing())
- rx RSL CONN FAIL
Related: SYS#5912
Related: Idea690a4aa4aecbe4642a16e96d086cc0538564a (osmo-ttcn3-hacks)
Change-Id: Ib44dd05b0adee84234f671313b156ff6625357cc
---
M src/osmo-bsc/bsc_subscr_conn_fsm.c
1 file changed, 6 insertions(+), 3 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/93/28093/1
diff --git a/src/osmo-bsc/bsc_subscr_conn_fsm.c b/src/osmo-bsc/bsc_subscr_conn_fsm.c
index 428d200..54d3975 100644
--- a/src/osmo-bsc/bsc_subscr_conn_fsm.c
+++ b/src/osmo-bsc/bsc_subscr_conn_fsm.c
@@ -878,8 +878,9 @@
lchan_forget_conn(conn->lchan);
conn->lchan = NULL;
}
- /* If the conn has no lchan anymore, it was released by the BTS and needs to Clear towards MSC. */
- if (!conn->lchan) {
+ /* If the conn has no lchan anymore, it was released by the BTS and needs to Clear towards MSC.
+ * However, if a Location Request is still busy, do not send Clear Request. */
+ if (!conn->lchan && !conn->lcs.loc_req) {
switch (conn->fi->state) {
case ST_WAIT_CC:
/* The SCCP connection was not yet confirmed by a CC, the BSSAP is not fully established
@@ -984,7 +985,9 @@
conn->lchan->release.rr_cause =
bsc_gsm48_rr_cause_from_rsl_cause(conn->lchan->release.rsl_error_cause);
}
- gscon_bssmap_clear(conn, GSM0808_CAUSE_RADIO_INTERFACE_FAILURE);
+ /* Request BSSMAP Clear, but do not abort an ongoing Location Request */
+ if (!conn->lcs.loc_req)
+ gscon_bssmap_clear(conn, GSM0808_CAUSE_RADIO_INTERFACE_FAILURE);
break;
case GSCON_EV_MGW_MDCX_RESP_MSC:
LOGPFSML(fi, LOGL_DEBUG, "Rx MDCX of MSC side (LCLS?)\n");
--
To view, visit https://gerrit.osmocom.org/c/osmo-bsc/+/28093
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-bsc
Gerrit-Branch: master
Gerrit-Change-Id: Ib44dd05b0adee84234f671313b156ff6625357cc
Gerrit-Change-Number: 28093
Gerrit-PatchSet: 1
Gerrit-Owner: neels <nhofmeyr(a)sysmocom.de>
Gerrit-MessageType: newchange
Attention is currently required from: pespin.
fixeria has posted comments on this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/28091 )
Change subject: ggsn: Append ChargingCharacteristics IE to CreatePdpCtxReq
......................................................................
Patch Set 1: Code-Review-1
(2 comments)
File library/GTP_Templates.ttcn:
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/28091/comment/9c3a9773_0243…
PS1, Line 128: template
Field 'chargingChar' is not 'optional', so please add '(present)'.
This allows to detect potential bugs at compile-time.
https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/28091/comment/eb119856_6f97…
PS1, Line 399: ts_ChargingCharacteristics
You cannot pass 'omit' (as default value) to this template. I guess you want a wrapper function returning:
if (istemplitekind(charging_char, "omit"))
return omit;
else
return ts_ChargingCharacteristics(charging_char);
--
To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/28091
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: Ia0f74041d2107afeaa36b94e33474370b7b07c0e
Gerrit-Change-Number: 28091
Gerrit-PatchSet: 1
Gerrit-Owner: pespin <pespin(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Attention: pespin <pespin(a)sysmocom.de>
Gerrit-Comment-Date: Thu, 12 May 2022 16:42:15 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: Yes
Gerrit-MessageType: comment
pespin has submitted this change. ( https://gerrit.osmocom.org/c/osmo-bsc/+/28089 )
Change subject: Revert "fix fallout from: 'stats: new trackers for lchan life duration'"
......................................................................
Revert "fix fallout from: 'stats: new trackers for lchan life duration'"
This reverts commit a09d78faa97b087e8a17cf29484caf4ffbc27b9e.
The whole original patch is also being reverted, so this fix too.
Change-Id: Ic9b89b3030eb8cfedabbf20ec8fcbcc225fe028f
---
M src/osmo-bsc/lchan_fsm.c
1 file changed, 0 insertions(+), 8 deletions(-)
Approvals:
Jenkins Builder: Verified
fixeria: Looks good to me, but someone else must approve
osmith: Looks good to me, approved
iedemam: Looks good to me, but someone else must approve
diff --git a/src/osmo-bsc/lchan_fsm.c b/src/osmo-bsc/lchan_fsm.c
index 6854465..d693189 100644
--- a/src/osmo-bsc/lchan_fsm.c
+++ b/src/osmo-bsc/lchan_fsm.c
@@ -528,14 +528,6 @@
lchan->mgw_endpoint_ci_bts = NULL;
}
- /* Ensure that the osmo_timer in lchan->active_cc is stopped. This is particularly important for lchan FSM
- * deallocation, so that the timer is no longer active when the lchan FSM instance gets discarded
- * (lchan_fsm_cleanup() calls this function), see OS#5554.
- *
- * Besides that, it is also good to make sure the timer is stopped when the lchan resets, to avoid any false
- * counts being accumulated, however obscure an error situation may be. */
- osmo_time_cc_cleanup(&lchan->active_cc);
-
/* NUL all volatile state */
*lchan = (struct gsm_lchan){
.ts = lchan->ts,
--
To view, visit https://gerrit.osmocom.org/c/osmo-bsc/+/28089
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-bsc
Gerrit-Branch: master
Gerrit-Change-Id: Ic9b89b3030eb8cfedabbf20ec8fcbcc225fe028f
Gerrit-Change-Number: 28089
Gerrit-PatchSet: 1
Gerrit-Owner: pespin <pespin(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-Reviewer: iedemam <michael(a)kapsulate.com>
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-Reviewer: neels <nhofmeyr(a)sysmocom.de>
Gerrit-Reviewer: osmith <osmith(a)sysmocom.de>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
Gerrit-MessageType: merged
fixeria has submitted this change. ( https://gerrit.osmocom.org/c/osmo-bts/+/28086 )
Change subject: measurement: fix matching of SUB frames by TDMA FN
......................................................................
measurement: fix matching of SUB frames by TDMA FN
3GPP TS 45.008, section 8.3 defines active TDMA frame subsets for
TCH channels, which shall always be transmitted even during the
silence periods in DTX mode of operation. Each frame number
listed in this section corresponds to a single burst.
The Uplink measurements always contain TDMA FN of the *first* burst
of a block, so it does not make sense to match the given FN against
all FNs in the respective subset. Instead, we should match only
specific FNs in accordance with the block mapping rules defined in
3GPP TS 45.002, section 7, table 1.
In the active subset for TCH/F there is only one *complete* block
starting at FN=52. Incomplete blocks {52, 53, 54, 55} and {56, 57,
58, 59} contain only 50% of the useful bits (partial SID) and thus
~50% BER, so we don't treat them as SUB.
In the active subsets for TCH/H there are two *complete* blocks
for each sub-slot. Their respective first FNs can be efficiently
defined in a lookup table (see ts45008_dtx_tchh_fn_map[]). Note
that we can use a single lookup table for both sub-slots of TCH/H
because their TDMA FNs do not overlap.
This patch fixes unexpected SUB-RxQual values > 0 on TCH channels
with DTXu enabled and other than AMR (HR, FR, EFR) codec in use.
Change-Id: I8cc3a755a8ad4dc564439aab2298c1e97ac0592d
Related: SYS#5853
---
M src/common/measurement.c
M tests/meas/meas_test.c
2 files changed, 32 insertions(+), 69 deletions(-)
Approvals:
pespin: Looks good to me, but someone else must approve
osmith: Looks good to me, but someone else must approve
fixeria: Looks good to me, approved
Jenkins Builder: Verified
diff --git a/src/common/measurement.c b/src/common/measurement.c
index aa1f5ae..82a1cf4 100644
--- a/src/common/measurement.c
+++ b/src/common/measurement.c
@@ -16,10 +16,17 @@
#include <osmo-bts/power_control.h>
#include <osmo-bts/ta_control.h>
-/* Tables as per TS 45.008 Section 8.3 */
-static const uint8_t ts45008_83_tch_f[] = { 52, 53, 54, 55, 56, 57, 58, 59 };
-static const uint8_t ts45008_83_tch_hs0[] = { 0, 2, 4, 6, 52, 54, 56, 58 };
-static const uint8_t ts45008_83_tch_hs1[] = { 14, 16, 18, 20, 66, 68, 70, 72 };
+/* Active TDMA frame subset for TCH/H in DTX mode (see 3GPP TS 45.008 Section 8.3).
+ * This mapping is used to determine if a L2 block starting at the given TDMA FN
+ * belongs to the SUB set and thus shall always be transmitted in DTX mode. */
+static const uint8_t ts45008_dtx_tchh_fn_map[104] = {
+ /* TCH/H(0): 0, 2, 4, 6, 52, 54, 56, 58 */
+ [0] = 1, /* block { 0, 2, 4, 6} */
+ [52] = 1, /* block {52, 54, 56, 58} */
+ /* TCH/H(1): 14, 16, 18, 20, 66, 68, 70, 72 */
+ [14] = 1, /* block {14, 16, 18, 20} */
+ [66] = 1, /* block {66, 68, 70, 72} */
+};
/* In cases where we less measurements than we expect we must assume that we
* just did not receive the block because it was lost due to bad channel
@@ -36,17 +43,6 @@
.inv_rssi = MEASUREMENT_DUMMY_IRSSI
};
-/* find out if an array contains a given key as element */
-#define ARRAY_CONTAINS(arr, val) array_contains(arr, ARRAY_SIZE(arr), val)
-static bool array_contains(const uint8_t *arr, unsigned int len, uint8_t val) {
- int i;
- for (i = 0; i < len; i++) {
- if (arr[i] == val)
- return true;
- }
- return false;
-}
-
/* Decide if a given frame number is part of the "-SUB" measurements (true) or not (false)
* (this function is only used internally, it is public to call it from unit-tests) */
bool ts45008_83_is_sub(struct gsm_lchan *lchan, uint32_t fn)
@@ -65,7 +61,11 @@
switch (lchan->tch_mode) {
case GSM48_CMODE_SPEECH_V1:
case GSM48_CMODE_SPEECH_EFR:
- if (ARRAY_CONTAINS(ts45008_83_tch_f, fn104))
+ /* Active TDMA frame subset for TCH/F: 52, 53, 54, 55, 56, 57, 58, 59.
+ * There is only one *complete* block in this subset starting at FN=52.
+ * Incomplete blocks {... 52, 53, 54, 55} and {56, 57, 58, 59 ...}
+ * contain only 50% of the useful bits (partial SID) and thus ~50% BER. */
+ if (fn104 == 52)
return true;
break;
case GSM48_CMODE_SIGN:
@@ -81,18 +81,8 @@
case GSM_LCHAN_TCH_H:
switch (lchan->tch_mode) {
case GSM48_CMODE_SPEECH_V1:
- switch (lchan->nr) {
- case 0:
- if (ARRAY_CONTAINS(ts45008_83_tch_hs0, fn104))
- return true;
- break;
- case 1:
- if (ARRAY_CONTAINS(ts45008_83_tch_hs1, fn104))
- return true;
- break;
- default:
- OSMO_ASSERT(0);
- }
+ if (ts45008_dtx_tchh_fn_map[fn104])
+ return true;
break;
case GSM48_CMODE_SIGN:
/* No DTX allowed; SUB=FULL, therefore measurements at all frame numbers are
@@ -432,16 +422,16 @@
/* 1 block SACCH, 24 blocks TCH (see note 1) */
return 25;
} else {
- /* 1 block SACCH, 2 blocks TCH */
- return 3;
+ /* 1 block SACCH, 1 block TCH */
+ return 2;
}
case GSM_PCHAN_TCH_H:
if (lchan->tch_mode == GSM48_CMODE_SIGN) {
/* 1 block SACCH, 12 blocks TCH (see ynote 1) */
return 13;
} else {
- /* 1 block SACCH, 4 blocks TCH */
- return 5;
+ /* 1 block SACCH, 2 blocks TCH */
+ return 3;
}
case GSM_PCHAN_SDCCH8_SACCH8C:
case GSM_PCHAN_SDCCH8_SACCH8C_CBCH:
diff --git a/tests/meas/meas_test.c b/tests/meas/meas_test.c
index a3c514b..4b8aff8 100644
--- a/tests/meas/meas_test.c
+++ b/tests/meas/meas_test.c
@@ -379,44 +379,17 @@
switch (lchan->type) {
case GSM_LCHAN_TCH_F:
- return (fn >= 52 && fn <= 59);
+ /* block {52, 53, 54, 55, 56, 57, 58, 59} */
+ return fn == 52;
case GSM_LCHAN_TCH_H:
- if (lchan->nr == 0) {
- if (fn == 0)
- return true;
- if (fn == 2)
- return true;
- if (fn == 4)
- return true;
- if (fn == 6)
- return true;
- if (fn == 52)
- return true;
- if (fn == 54)
- return true;
- if (fn == 56)
- return true;
- if (fn == 58)
- return true;
- } else if (lchan->nr == 1) {
- if (fn == 14)
- return true;
- if (fn == 16)
- return true;
- if (fn == 18)
- return true;
- if (fn == 20)
- return true;
- if (fn == 66)
- return true;
- if (fn == 68)
- return true;
- if (fn == 70)
- return true;
- if (fn == 72)
- return true;
- } else
- OSMO_ASSERT(false);
+ if (fn == 0) /* H0 block { 0, 2, 4, 6} */
+ return true;
+ if (fn == 52) /* H0 block {52, 54, 56, 58} */
+ return true;
+ if (fn == 14) /* H1 block {14, 16, 18, 20} */
+ return true;
+ if (fn == 66) /* H1 block {66, 68, 70, 72} */
+ return true;
return false;
default:
return false;
--
To view, visit https://gerrit.osmocom.org/c/osmo-bts/+/28086
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-bts
Gerrit-Branch: master
Gerrit-Change-Id: I8cc3a755a8ad4dc564439aab2298c1e97ac0592d
Gerrit-Change-Number: 28086
Gerrit-PatchSet: 2
Gerrit-Owner: fixeria <vyanitskiy(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: osmith <osmith(a)sysmocom.de>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
Gerrit-MessageType: merged