osmith has submitted this change. ( https://gerrit.osmocom.org/c/libosmocore/+/39503?usp=email )
Change subject: Bump version: 1.10.0.66-db02e → 1.11.0
......................................................................
Bump version: 1.10.0.66-db02e → 1.11.0
Change-Id: I3e414e32645e2ac542f54c385d506ee1d16c8fbe
---
M TODO-RELEASE
M debian/changelog
M src/codec/Makefile.am
M src/core/Makefile.am
M src/ctrl/Makefile.am
M src/gb/Makefile.am
M src/gsm/Makefile.am
M src/vty/Makefile.am
8 files changed, 96 insertions(+), 10 deletions(-)
Approvals:
pespin: Looks good to me, approved
Jenkins Builder: Verified
diff --git a/TODO-RELEASE b/TODO-RELEASE
index 80387fa..0ed7189 100644
--- a/TODO-RELEASE
+++ b/TODO-RELEASE
@@ -7,7 +7,3 @@
# If any interfaces have been added since the last public release: c:r:a + 1.
# If any interfaces have been removed or changed since the last public release: c:r:0.
#library what description / commit summary line
-gb ADD add bssgp_parse_cell_id2/bssgp_create_cell_id2
-gsm ADD add osmo_rai_to_gprs/gprs_rai_to_osmo
-core ADD add API osmo_tundev_get_fd()
-core ADD add API osmo_netdev_set_mtu()
\ No newline at end of file
diff --git a/debian/changelog b/debian/changelog
index f80c4e4..9da8106 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,93 @@
+libosmocore (1.11.0) unstable; urgency=medium
+
+ [ Mychaela N. Falconia ]
+ * codec: add osmo_hr_sid_classify()
+ * tests: add unit test for osmo_hr_sid_classify()
+ * tests: add unit test for osmo_efr_sid_classify()
+ * tests: add unit test for osmo_fr_sid_classify()
+ * osmo_iofd_register: fix the case of changing fd
+
+ [ Alexander Couzens ]
+ * gb: add bssgp_parse_cell_id2/bssgp_create_cell_id2
+ * add convert functions for old gprs_ra_id and the new osmo_routing_area_id
+ * gsm_04_08: define missing reject info causes
+ * protocol: gsm 29.118: add SGSAP_SERV_IND_PAGING_TIMEOUT (osmocom specific)
+ * gsm 04.08: add GSM48 IE GMM_ADD_IDENTITY/RAI2
+ * gsm 04.08: add P-TMSI type values
+ * gprs/gsm_24_301: add include to be self contained
+ * gprs/gsm23003: add osmo_mme_id_cmp & osmo_gummei_cmp
+ * gsm_utils: add gprs_tlli2tmsi()
+ * gsm23.003: add RNC Id
+ * gsm23.003: make the header self-contained
+ * gprs_ns2_sns: add include osmocom/core/talloc.h
+ * gprs_ns2_sns: do_sns_add: ensure ip4/ip6 pointer is set
+ * gprs_ns2_sns: move the NS-ALIVE PDU of a new NS-VC after the SNS-ACK
+ * gprs_ns2_sns: improve search for same NS-VC
+ * gprs_ns2_sns: fix error cases of SNS_ADD
+ * gsm48: add additional GSM 24.008 IE for GMM
+ * Gb/NS: SNS: SNS Ack don't add List of IP4/6 Elements on success.
+
+ [ Harald Welte ]
+ * core/socket.c: Provide more context when printing error message
+ * [cosmetic] core/socket.c: Fix indent of 'case' within 'switch'
+ * core/socket.c: Fix socket binding on IPv4-only hosts
+ * src/core/socket.c: Fix close of negative fd in system_supports_inet6()
+ * Fix building in environments that define _GNU_SOURCE
+
+ [ Neels Hofmeyr ]
+ * coverity CID#272974
+ * coverity CID#272951
+
+ [ Pau Espin Pedrol ]
+ * iuup.c: Add more relevant spec references to the file
+ * netdev: osmo_netdev_set_ifupdown_ind_cb(): Fix documentation copy-paste error
+ * core/tun.c: Fix documentation in ret of osmo_tundev_send
+ * core/tun: Add API osmo_tundev_get_fd
+ * core/netdev: Add API osmo_netdev_set_mtu()
+ * core/tun.c: Fix wrong documentation ret type in tundev_open_fd()
+ * netdev: Explicit cast time() to uint32_t seq_nr
+ * tun: assert tundev!=NULL in osmo_tundev_send
+ * cosmetic: ipa: fix typo in documentation
+ * ctrl: logging improvements
+ * osmo_io: Increase default queue max_length from 32 to 1024
+ * gsmtap: Increase txqueue max_length from 64 to 1024
+ * osmo_io: Improve osmo_iofd_notify_connected() documentation
+ * osmo_io: segmentation cb: Initialize null ptr every iteration
+ * osmo_io: Use early return to simplify code
+ * osmo_io: uring: Setup connect_notify internal ofd during register() op
+ * osmo_io: poll: connect_notify: Avoid calling register
+ * osmo_io: close() op in backend only takes care of closing
+ * osmo_io: Track IOFD_FLAG_FD_REGISTERED in all backends
+ * osmo_io: segmented_read: Avoid triggering read events if user unregisters
+ * osmo_io: Log current queue length upon enqueue failure
+ * osmo_io: iofd_msgb_alloc(): Allow allocating msgb of len=0xffff
+ * osmo_io: segmentation: Remove unneeded impossible check
+ * cosmetic: osmo_io: Improvde documentation of read_cb when segmentation is used
+ * msgb: msgb_copy_resize_c: Fix validation check to avoid memcpy buffer overflow
+ * osmo_io: Support writing to files with mode OSMO_IO_FD_MODE_READ_WRITE
+ * tests/osmo_io: Rework test_file()
+ * tests/osmo_io: Introduce small sleeps waiting for write completion
+ * tests/osmo_io: Introduce small sleeps waiting for read completion
+
+ [ Andreas Eversberg ]
+ * Remove sync() after writing VTY config
+
+ [ Vadim Yanitskiy ]
+ * gsm_12_21.h: fix values for NM_IPAC_F_GPRS_CODING_MCS[1-9]
+ * gsm48_encode_bearer_cap(): properly set 'Structure' in octet 4
+ * tests/gsm0408: remove outdated comment for bcap_csd_2400_v22bis
+
+ [ Eric Wild ]
+ * utils: fix lost inttypes mess for embedded builds
+
+ [ Daniel Willmann ]
+ * gsm_04_08: Add IEs seen during 4G->2G RAU
+
+ [ Oliver Smith ]
+ * utils/osmo-install-dbg-pkgs: new script
+
+ -- Oliver Smith <osmith(a)sysmocom.de> Wed, 12 Feb 2025 09:51:49 +0100
+
libosmocore (1.10.0) unstable; urgency=medium
[ Mychaela N. Falconia ]
diff --git a/src/codec/Makefile.am b/src/codec/Makefile.am
index 17227b6..0c848ed 100644
--- a/src/codec/Makefile.am
+++ b/src/codec/Makefile.am
@@ -1,7 +1,7 @@
# This is _NOT_ the library release version, it's an API version.
# Please read chapter "Library interface versions" of the libtool documentation
# before making any modifications: https://www.gnu.org/software/libtool/manual/html_node/Versioning.html
-LIBVERSION=4:1:0
+LIBVERSION=5:0:1
AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_builddir)/include -I$(top_builddir)
AM_CFLAGS = -Wall $(TALLOC_CFLAGS)
diff --git a/src/core/Makefile.am b/src/core/Makefile.am
index 96e6460..3b03e0d 100644
--- a/src/core/Makefile.am
+++ b/src/core/Makefile.am
@@ -1,7 +1,7 @@
# This is _NOT_ the library release version, it's an API version.
# Please read chapter "Library interface versions" of the libtool documentation
# before making any modifications: https://www.gnu.org/software/libtool/manual/html_node/Versioning.html
-LIBVERSION=22:0:0
+LIBVERSION=23:0:1
AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_builddir)/include -I$(top_builddir)
AM_CFLAGS = -Wall $(TALLOC_CFLAGS) $(PTHREAD_CFLAGS) $(LIBSCTP_CFLAGS) $(LIBMNL_CFLAGS) $(URING_CFLAGS)
diff --git a/src/ctrl/Makefile.am b/src/ctrl/Makefile.am
index 9d3254c..6ccbf68 100644
--- a/src/ctrl/Makefile.am
+++ b/src/ctrl/Makefile.am
@@ -1,7 +1,7 @@
# This is _NOT_ the library release version, it's an API version.
# Please read chapter "Library interface versions" of the libtool documentation
# before making any modifications: https://www.gnu.org/software/libtool/manual/html_node/Versioning.html
-LIBVERSION=9:0:9
+LIBVERSION=9:1:9
AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_builddir)/include -I$(top_builddir)
AM_CFLAGS = -Wall $(TALLOC_CFLAGS)
diff --git a/src/gb/Makefile.am b/src/gb/Makefile.am
index 0aa5b13..fedda1c 100644
--- a/src/gb/Makefile.am
+++ b/src/gb/Makefile.am
@@ -1,7 +1,7 @@
# This is _NOT_ the library release version, it's an API version.
# Please read chapter "Library interface versions" of the libtool documentation
# before making any modifications: https://www.gnu.org/software/libtool/manual/html_node/Versioning.html
-LIBVERSION=16:1:2
+LIBVERSION=17:0:3
AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_builddir)/include -I$(top_builddir)
AM_CFLAGS = -Wall -fno-strict-aliasing \
diff --git a/src/gsm/Makefile.am b/src/gsm/Makefile.am
index 8c70473..b9900e2 100644
--- a/src/gsm/Makefile.am
+++ b/src/gsm/Makefile.am
@@ -1,7 +1,7 @@
# This is _NOT_ the library release version, it's an API version.
# Please read chapter "Library interface versions" of the libtool documentation
# before making any modifications: https://www.gnu.org/software/libtool/manual/html_node/Versioning.html
-LIBVERSION=21:0:1
+LIBVERSION=22:0:2
AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_builddir)/include
AM_CFLAGS = -Wall $(TALLOC_CFLAGS)
diff --git a/src/vty/Makefile.am b/src/vty/Makefile.am
index 4a4f16b..8818d89 100644
--- a/src/vty/Makefile.am
+++ b/src/vty/Makefile.am
@@ -1,7 +1,7 @@
# This is _NOT_ the library release version, it's an API version.
# Please read chapter "Library interface versions" of the libtool documentation
# before making any modifications: https://www.gnu.org/software/libtool/manual/html_node/Versioning.html
-LIBVERSION=13:1:0
+LIBVERSION=13:2:0
AM_CPPFLAGS = -I$(top_srcdir)/include -I$(top_builddir)/include -I$(top_builddir)
AM_CFLAGS = -Wall $(TALLOC_CFLAGS) $(PTHREAD_CFLAGS)
--
To view, visit https://gerrit.osmocom.org/c/libosmocore/+/39503?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: merged
Gerrit-Project: libosmocore
Gerrit-Branch: master
Gerrit-Change-Id: I3e414e32645e2ac542f54c385d506ee1d16c8fbe
Gerrit-Change-Number: 39503
Gerrit-PatchSet: 1
Gerrit-Owner: osmith <osmith(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: osmith <osmith(a)sysmocom.de>
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
pespin has submitted this change. ( https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/39499?usp=email )
Change subject: pcu: Fix TC_dl_cs1_to_cs4 sporadic fail
......................................................................
pcu: Fix TC_dl_cs1_to_cs4 sporadic fail
The test TC_dl_cs1_to_cs4 failed sporadically in ttcn3-pcu-test-asan.
Due to how the DL data arriving at Gb is split in chunks over RLC/MAC
(also based on how CS changes over time), it may happen that the full
PDU content doesn't finish at the exact block number where PCU expects
the DL ACK/NACK. As a result, since PCU delays finishing the DL TBF and
some data for that DL TBF has already not been ACKed (and since there's
no more active DL TBFs), it will decide to retransmit some of the
RLC/MAC blocks which haven't been yet ACKed, instead of transmitting
nothing.
This is an optimization to increase the probabilities the MS has
received all the data.
We need to account for this possibility in f_dl_data_exp_cs(), used in
the mentioned test. In there, it needs to be checked whether the
received DL data block is a retransmission, and use that knowledge to
resolve that all data has been transmitted and hence the final condition
can be checked.
Change-Id: I7fb40689547645adf1d54f43c263161be1d7a440
---
M pcu/GPRS_Components.ttcn
M pcu/PCU_Tests.ttcn
2 files changed, 72 insertions(+), 4 deletions(-)
Approvals:
osmith: Looks good to me, but someone else must approve
fixeria: Looks good to me, approved
laforge: Looks good to me, but someone else must approve
Jenkins Builder: Verified
diff --git a/pcu/GPRS_Components.ttcn b/pcu/GPRS_Components.ttcn
index cf8ef5f..c48497a 100644
--- a/pcu/GPRS_Components.ttcn
+++ b/pcu/GPRS_Components.ttcn
@@ -439,6 +439,17 @@
return n;
}
+function f_dltbf_bsn_is_retrans(inout DlTbf dl_tbf, RlcmacDlBlock dl_block)
+runs on MS_BTS_IFACE_CT return boolean {
+ var boolean is_egprs := ischosen(dl_block.data_egprs);
+ var uint11_t bsn := f_rlcmac_dl_block_get_bsn(dl_block);
+ if (is_egprs) {
+ return f_egprs_acknackdesc_bsn_is_retrans(dl_tbf.egprs_acknack_desc, bsn);
+ } else {
+ return f_acknackdesc_bsn_is_retrans(dl_tbf.acknack_desc, bsn);
+ }
+}
+
function f_dltbf_ack_block(inout DlTbf dl_tbf, RlcmacDlBlock dl_block, BIT1 final_ack := '0'B)
runs on MS_BTS_IFACE_CT {
var boolean is_egprs := ischosen(dl_block.data_egprs);
@@ -796,6 +807,36 @@
return CS_1; /* make compiler happy */
}
+function f_rlcmac_dl_block_get_bsn(RlcmacDlBlock dl_block)
+runs on MS_BTS_IFACE_CT return uint11_t {
+ if (ischosen(dl_block.data_egprs)) {
+ return dl_block.data_egprs.mac_hdr.bsn1;
+ }
+ if (ischosen(dl_block.data)) {
+ return dl_block.data.mac_hdr.hdr_ext.bsn;
+ }
+ setverdict(fail, "DlBlock doesn't contain BSN information:", dl_block);
+ f_shutdown(__BFILE__, __LINE__);
+ return 0; /* make compiler happy */
+}
+
+/* Check whether a given BSN is a retransmission in the not yet ACKed Tx window. */
+function f_acknackdesc_bsn_is_retrans(inout AckNackDescription desc, uint7_t bsn) return boolean
+{
+ var BIT1 received;
+ /* Filling hole? */
+ if (bsn < desc.starting_seq_nr) {
+ received := desc.receive_block_bitmap[lengthof(desc.receive_block_bitmap) - (desc.starting_seq_nr - bsn)];
+ return received == '1'B;
+ }
+ /* Filling hole, wraparound: */
+ if (bsn - desc.starting_seq_nr > lengthof(desc.receive_block_bitmap)) {
+ received := desc.receive_block_bitmap[lengthof(desc.receive_block_bitmap) - (desc.starting_seq_nr + (218 - bsn))];
+ return received == '1'B;
+ }
+ return false; /* make compiler happy */
+}
+
/* TS 44.060 sec 12.3 Ack/Nack Description */
function f_acknackdesc_ack_block(inout AckNackDescription desc, RlcmacDlBlock dl_block, BIT1 final_ack := '0'B)
{
@@ -832,6 +873,29 @@
desc.final_ack := final_ack;
}
+/* Check whether a given BSN is a retransmission in the not yet ACKed Tx window. */
+function f_egprs_acknackdesc_bsn_is_retrans(inout EgprsAckNackDescription desc, uint11_t bsn) return boolean
+{
+ var BIT1 received;
+ var integer inc;
+ var integer v_q := (desc.starting_seq_nr + 2047) mod 2048; /* SSN = V(Q) + 1 */
+
+
+ /* Repetition? */
+ if (bsn < v_q) {
+ /* Filling hole, wraparound: */
+ if (bsn - v_q > lengthof(desc.urbb)) {
+ received := desc.urbb[lengthof(desc.urbb) - (v_q + (2048 - bsn))];
+ return received == '1'B;
+ }
+ return true;
+ }
+
+ inc := bsn - v_q + 1;
+ received := desc.urbb[lengthof(desc.urbb) - inc];
+ return received == '1'B;
+}
+
/* TS 44.060 sec 12.3 Ack/Nack Description */
function f_egprs_acknackdesc_ack_block(inout EgprsAckNackDescription desc, RlcmacDlBlock dl_block, BIT1 final_ack := '0'B)
{
diff --git a/pcu/PCU_Tests.ttcn b/pcu/PCU_Tests.ttcn
index 7aca712..f1f80db 100644
--- a/pcu/PCU_Tests.ttcn
+++ b/pcu/PCU_Tests.ttcn
@@ -1121,6 +1121,13 @@
break;
}
+ if (tx_data_remain == 0 and f_dltbf_bsn_is_retrans(ms.dl_tbf, dl_block)) {
+ /* If PCU already sent all data, it may happen that it retransmits data
+ * not yet ACKed before requesting an ACK after N transmissions. */
+ f_rlcmac_dl_block_exp_data(dl_block, ?, ?, exp_tmp_csmcs);
+ break;
+ }
+
f_rlcmac_dl_block_exp_data(dl_block, ?, bsn, exp_tmp_csmcs);
/* Keep Ack/Nack description updated */
@@ -1140,10 +1147,7 @@
f_rx_rlcmac_dl_block(dl_block, fn);
}
- bsn := (bsn + (bsn_mod-1)) mod bsn_mod; /* previous bsn: bsn -1 */
- f_rlcmac_dl_block_exp_data(prev_dl_block, ?, bsn, exp_final_cs);
-
-
+ f_rlcmac_dl_block_exp_data(prev_dl_block, ?, ?, exp_final_cs);
f_shutdown(__BFILE__, __LINE__, final := true);
}
--
To view, visit https://gerrit.osmocom.org/c/osmo-ttcn3-hacks/+/39499?usp=email
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings?usp=email
Gerrit-MessageType: merged
Gerrit-Project: osmo-ttcn3-hacks
Gerrit-Branch: master
Gerrit-Change-Id: I7fb40689547645adf1d54f43c263161be1d7a440
Gerrit-Change-Number: 39499
Gerrit-PatchSet: 1
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>