Attention is currently required from: osmith.
pespin has posted comments on this change. ( https://gerrit.osmocom.org/c/osmo-ccid-firmware/+/28186 )
Change subject: contrib/jenkins.sh: skip upload if nothing new
......................................................................
Patch Set 1: Code-Review+1
--
To view, visit https://gerrit.osmocom.org/c/osmo-ccid-firmware/+/28186
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-ccid-firmware
Gerrit-Branch: master
Gerrit-Change-Id: I3f70d6149b29ec2ff7f185dfae8bc8d4a1953dc2
Gerrit-Change-Number: 28186
Gerrit-PatchSet: 1
Gerrit-Owner: osmith <osmith(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: pespin <pespin(a)sysmocom.de>
Gerrit-Attention: osmith <osmith(a)sysmocom.de>
Gerrit-Comment-Date: Wed, 25 May 2022 16:21:32 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: Yes
Gerrit-MessageType: comment
osmith has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-ccid-firmware/+/28186 )
Change subject: contrib/jenkins.sh: skip upload if nothing new
......................................................................
contrib/jenkins.sh: skip upload if nothing new
The contrib/jenkins.sh script gets triggered daily. Do not upload new
files unless a new commit was added (then the filename changes).
Otherwise the binary and timestamp change on the server each day, which
is confusing and potentially makes catching regressions harder.
I've also considered disabling the daily trigger for this repository,
but I think it's better to keep it so we notice without much delay if
changes in libosmocore or the toolchain cause a build failure.
Change-Id: I3f70d6149b29ec2ff7f185dfae8bc8d4a1953dc2
---
M contrib/jenkins.sh
1 file changed, 16 insertions(+), 8 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-ccid-firmware refs/changes/86/28186/1
diff --git a/contrib/jenkins.sh b/contrib/jenkins.sh
index 7877dcf..961acf1 100755
--- a/contrib/jenkins.sh
+++ b/contrib/jenkins.sh
@@ -71,14 +71,22 @@
[ftp.osmocom.org]:48 ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIK8iivY70EiR5NiGChV39gRLjNpC8lvu1ZdHtdMw2zuX
EOF
SSH_COMMAND="ssh -o 'UserKnownHostsFile=/build/known_hosts' -p 48"
- rsync --archive --copy-links --verbose --compress --delete --rsh "$SSH_COMMAND" \
- $TOPDIR/sysmoOCTSIM/gcc/sysmoOCTSIM.{bin,elf} \
- binaries@ftp.osmocom.org:web-files/osmo-ccid-firmware/latest/
- rsync --archive --verbose --compress --rsh "$SSH_COMMAND" \
- --exclude $TOPDIR/sysmoOCTSIM/gcc/sysmoOCTSIM.bin \
- --exclude $TOPDIR/sysmoOCTSIM/gcc/sysmoOCTSIM.elf \
- $TOPDIR/sysmoOCTSIM/gcc/*-*.{bin,elf} \
- binaries@ftp.osmocom.org:web-files/osmo-ccid-firmware/all/
+ LATEST_BIN="$(cd "$TOPDIR"/sysmoOCTSIM/gcc/; ls -1 sysmoOCTSIM-*-*.bin)"
+
+ echo "LATEST_BIN: $LATEST_BIN"
+
+ if rsync --rsh "$SSH_COMMAND" binaries@ftp.osmocom.org:web-files/osmo-ccid-firmware/all/ | grep -q "$LATEST_BIN"; then
+ echo "Skipping upload, $LATEST_BIN has already been uploaded."
+ else
+ rsync --archive --copy-links --verbose --compress --delete --rsh "$SSH_COMMAND" \
+ $TOPDIR/sysmoOCTSIM/gcc/sysmoOCTSIM.{bin,elf} \
+ binaries@ftp.osmocom.org:web-files/osmo-ccid-firmware/latest/
+ rsync --archive --verbose --compress --rsh "$SSH_COMMAND" \
+ --exclude $TOPDIR/sysmoOCTSIM/gcc/sysmoOCTSIM.bin \
+ --exclude $TOPDIR/sysmoOCTSIM/gcc/sysmoOCTSIM.elf \
+ $TOPDIR/sysmoOCTSIM/gcc/*-*.{bin,elf} \
+ binaries@ftp.osmocom.org:web-files/osmo-ccid-firmware/all/
+ fi
fi
echo
--
To view, visit https://gerrit.osmocom.org/c/osmo-ccid-firmware/+/28186
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-ccid-firmware
Gerrit-Branch: master
Gerrit-Change-Id: I3f70d6149b29ec2ff7f185dfae8bc8d4a1953dc2
Gerrit-Change-Number: 28186
Gerrit-PatchSet: 1
Gerrit-Owner: osmith <osmith(a)sysmocom.de>
Gerrit-MessageType: newchange
pespin has submitted this change. ( https://gerrit.osmocom.org/c/osmo-mgw/+/28183 )
Change subject: IuUP: Support RFCI ID != RFCI Index
......................................................................
IuUP: Support RFCI ID != RFCI Index
The initially merged IuUP API and implementation in libosmocore assumed
that RFCI with ID was always in the position of its ID inside the list
of RFCIs. This was the case for messages sent by ip.access nano3g as well
as our own osmocom implementation. However it was noticed that other nodes
from other vendors actually use other order, as allowed by the IuUP message
format.
Hence, we need to break the assumption and provide explicit ID
information in the list.
NOTICE: This commit implies an API change when using libosmogsm.
However, the previous API was never available in any libosmogsm release,
and only available in both libosmogsm and osmo-mgw master, so we are
only breaking compatibility between different master versions, which is
acceptable.
Related: SYS#5969
Depends: libosmocore.git Change-Id Ib21cee2e30bf83dff4e167f79541796007af9845
Change-Id: I40ebf36ad37f5196751caf2297a340e538ad28bc
---
M TODO-RELEASE
M include/osmocom/mgcp/mgcp_conn.h
M src/libosmo-mgcp/mgcp_iuup.c
3 files changed, 42 insertions(+), 25 deletions(-)
Approvals:
osmith: Looks good to me, but someone else must approve
laforge: Looks good to me, but someone else must approve
pespin: Looks good to me, approved
Jenkins Builder: Verified
diff --git a/TODO-RELEASE b/TODO-RELEASE
index c5a3b36..f4a57fc 100644
--- a/TODO-RELEASE
+++ b/TODO-RELEASE
@@ -24,3 +24,4 @@
# If any interfaces have been removed or changed since the last public release, a=0.
#
#library what description / commit summary line
+libosmogsm >1.6.0 use of iuup.h (libosmocore.git Ib21cee2e30bf83dff4e167f79541796007af9845)
diff --git a/include/osmocom/mgcp/mgcp_conn.h b/include/osmocom/mgcp/mgcp_conn.h
index 5ba6836..7338027 100644
--- a/include/osmocom/mgcp/mgcp_conn.h
+++ b/include/osmocom/mgcp/mgcp_conn.h
@@ -98,7 +98,7 @@
struct {
struct osmo_iuup_instance *iui;
bool active_init; /* true: Send IuUP Init */
- int rfci_idx_no_data; /* Index for RFCI NO_DATA (-1 if not available) */
+ int rfci_id_no_data; /* RFCI Id for RFCI NO_DATA (-1 if not available) */
bool configured;
struct osmo_iuup_rnl_prim *init_ind;
} iuup;
diff --git a/src/libosmo-mgcp/mgcp_iuup.c b/src/libosmo-mgcp/mgcp_iuup.c
index 5af481d..1fea392 100644
--- a/src/libosmo-mgcp/mgcp_iuup.c
+++ b/src/libosmo-mgcp/mgcp_iuup.c
@@ -64,19 +64,29 @@
static int _find_rfci_no_data(struct osmo_iuup_rnl_prim *irp)
{
int i;
+ uint8_t rfci_cnt = 0;
/* Find RFCI containing NO_DATA: */
- for (i = 0; i < irp->u.status.u.initialization.num_rfci; i++) {
+ for (i = 0; i < ARRAY_SIZE(irp->u.status.u.initialization.rfci); i++) {
+ struct osmo_iuup_rfci *rfci = &irp->u.status.u.initialization.rfci[i];
int j;
- bool is_no_data = true;
+ bool is_no_data;
+ if (!rfci->used)
+ continue;
+ rfci_cnt++;
+
+ is_no_data = true;
for (j = 0; j < irp->u.status.u.initialization.num_subflows; j++) {
- if (irp->u.status.u.initialization.subflow_sizes[i][j]) {
+ if (rfci->subflow_sizes[j]) {
is_no_data = false;
break;
}
}
- if (is_no_data) {
- return i;
- }
+ if (is_no_data)
+ return rfci->id;
+
+ /* early loop termination: */
+ if (rfci_cnt == irp->u.status.u.initialization.num_subflows)
+ break;
}
return -1;
}
@@ -85,20 +95,30 @@
static int8_t _conn_iuup_amr_ft_2_rfci(struct mgcp_conn_rtp *conn_rtp, uint8_t ft)
{
int8_t i;
+ uint8_t rfci_cnt = 0;
unsigned match_bytes = (unsigned)osmo_amr_bytes(ft);
struct osmo_iuup_rnl_prim *irp = conn_rtp->iuup.init_ind;
OSMO_ASSERT(irp);
/* TODO: cache this somehow */
- for (i = 0; i < irp->u.status.u.initialization.num_rfci; i++) {
+ for (i = 0; i < ARRAY_SIZE(irp->u.status.u.initialization.rfci); i++) {
+ struct osmo_iuup_rfci *rfci = &irp->u.status.u.initialization.rfci[i];
int j;
- unsigned num_bits = 0;
- for (j = 0; j < irp->u.status.u.initialization.num_subflows; j++)
- num_bits += irp->u.status.u.initialization.subflow_sizes[i][j];
- if (match_bytes == (num_bits + 7)/8)
- return i;
- }
+ unsigned num_bits;
+ if (!rfci->used)
+ continue;
+ rfci_cnt++;
+ num_bits = 0;
+ for (j = 0; j < irp->u.status.u.initialization.num_subflows; j++)
+ num_bits += rfci->subflow_sizes[j];
+ if (match_bytes == (num_bits + 7)/8)
+ return rfci->id;
+
+ /* early loop termination: */
+ if (rfci_cnt == irp->u.status.u.initialization.num_subflows)
+ break;
+ }
return -1;
}
@@ -134,9 +154,9 @@
conn_rtp->iuup.active_init = true;
/* Find RFCI containing NO_DATA: */
- conn_rtp->iuup.rfci_idx_no_data = _find_rfci_no_data(init_ind);
+ conn_rtp->iuup.rfci_id_no_data = _find_rfci_no_data(init_ind);
- /* Copy over the rfci_idx_no_data, since we reuse the same subflow set: */
+ /* Copy over the rfci_id_no_data, since we reuse the same subflow set: */
msg = msgb_copy_c(conn_rtp->conn, irp->oph.msg, "iuup-init-copy");
conn_rtp->iuup.init_ind = (struct osmo_iuup_rnl_prim *)msgb_data(msg);
conn_rtp->iuup.init_ind->oph.msg = msg;
@@ -149,12 +169,8 @@
irp2->u.config.supported_versions_mask = def_configure_req.supported_versions_mask;
irp2->u.config.num_rfci = irp->u.status.u.initialization.num_rfci;
irp2->u.config.num_subflows = irp->u.status.u.initialization.num_subflows;
- memcpy(irp2->u.config.subflow_sizes, irp->u.status.u.initialization.subflow_sizes,
- IUUP_MAX_RFCIS * IUUP_MAX_SUBFLOWS * sizeof(irp2->u.config.subflow_sizes[0][0]));
irp2->u.config.IPTIs_present = irp->u.status.u.initialization.IPTIs_present;
- if (irp->u.status.u.initialization.IPTIs_present)
- memcpy(irp2->u.config.IPTIs, irp->u.status.u.initialization.IPTIs,
- IUUP_MAX_RFCIS * sizeof(irp2->u.config.IPTIs[0]));
+ memcpy(irp2->u.config.rfci, irp->u.status.u.initialization.rfci, sizeof(irp2->u.config.rfci));
irp2->u.config.t_init = def_configure_req.t_init;
irp2->u.config.t_ta = def_configure_req.t_ta;
irp2->u.config.t_rc = def_configure_req.t_rc;
@@ -350,7 +366,7 @@
struct msgb *msg;
/* Find RFCI containing NO_DATA: */
- conn_rtp_src->iuup.rfci_idx_no_data = _find_rfci_no_data(irp);
+ conn_rtp_src->iuup.rfci_id_no_data = _find_rfci_no_data(irp);
msg = msgb_copy_c(conn_rtp_src->conn, irp->oph.msg, "iuup-init-copy");
conn_rtp_src->iuup.init_ind = (struct osmo_iuup_rnl_prim *)msgb_data(msg);
@@ -554,7 +570,7 @@
OSMO_ASSERT(conn_rtp->iuup.iui);
osmo_iuup_instance_set_user_prim_cb(conn_rtp->iuup.iui, _conn_iuup_user_prim_cb, conn_rtp);
osmo_iuup_instance_set_transport_prim_cb(conn_rtp->iuup.iui, _conn_iuup_transport_prim_cb, conn_rtp);
- conn_rtp->iuup.rfci_idx_no_data = -1;
+ conn_rtp->iuup.rfci_id_no_data = -1;
return 0;
}
@@ -701,7 +717,7 @@
struct osmo_iuup_rnl_prim *irp;
int rc;
- if (conn_rtp->iuup.rfci_idx_no_data == -1) {
+ if (conn_rtp->iuup.rfci_id_no_data == -1) {
LOG_CONN_RTP(conn_rtp, LOGL_NOTICE, "No RFCI NO_DATA found, unable to send dummy packet\n");
return -ENOTSUP;
}
@@ -709,7 +725,7 @@
irp = osmo_iuup_rnl_prim_alloc(conn_rtp->conn, OSMO_IUUP_RNL_DATA, PRIM_OP_REQUEST, MGW_IUUP_MSGB_SIZE);
irp->u.data.frame_nr = 0;
irp->u.data.fqc = IUUP_FQC_FRAME_GOOD;
- irp->u.data.rfci = conn_rtp->iuup.rfci_idx_no_data;
+ irp->u.data.rfci = conn_rtp->iuup.rfci_id_no_data;
irp->oph.msg->l3h = irp->oph.msg->tail;
if ((rc = osmo_iuup_rnl_prim_down(conn_rtp->iuup.iui, irp)) != 0) {
LOG_CONN_RTP(conn_rtp, LOGL_ERROR, "Failed Tx RTP dummy payload down the IuUP layer\n");
--
To view, visit https://gerrit.osmocom.org/c/osmo-mgw/+/28183
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-mgw
Gerrit-Branch: master
Gerrit-Change-Id: I40ebf36ad37f5196751caf2297a340e538ad28bc
Gerrit-Change-Number: 28183
Gerrit-PatchSet: 2
Gerrit-Owner: pespin <pespin(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: daniel <dwillmann(a)sysmocom.de>
Gerrit-Reviewer: dexter <pmaier(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-Reviewer: pespin <pespin(a)sysmocom.de>
Gerrit-MessageType: merged