daniel has submitted this change. ( https://gerrit.osmocom.org/c/libosmo-abis/+/30618 )
Change subject: ipa: Guard against calling ipa_client_conn_open* multiple times
......................................................................
ipa: Guard against calling ipa_client_conn_open* multiple times
Change-Id: I574af543429d01c9522e267265e97e4efe55b60c
---
M src/input/ipa.c
1 file changed, 3 insertions(+), 0 deletions(-)
Approvals:
Jenkins Builder: Verified
osmith: Looks good to me, but someone else must approve
laforge: Looks good to me, but someone else must approve
fixeria: Looks good to me, approved
diff --git a/src/input/ipa.c b/src/input/ipa.c
index 62b21e5..94e7e5a 100644
--- a/src/input/ipa.c
+++ b/src/input/ipa.c
@@ -249,6 +249,9 @@
{
int ret;
+ if (link->ofd->fd != -1)
+ return -EINVAL;
+
link->state = IPA_CLIENT_LINK_STATE_CONNECTING;
ret = osmo_sock_init2(AF_INET, SOCK_STREAM, IPPROTO_TCP,
link->local_addr, link->local_port,
--
To view, visit https://gerrit.osmocom.org/c/libosmo-abis/+/30618
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: libosmo-abis
Gerrit-Branch: master
Gerrit-Change-Id: I574af543429d01c9522e267265e97e4efe55b60c
Gerrit-Change-Number: 30618
Gerrit-PatchSet: 2
Gerrit-Owner: daniel <dwillmann(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: osmith <osmith(a)sysmocom.de>
Gerrit-MessageType: merged
pespin has uploaded a new patch set (#2). ( https://gerrit.osmocom.org/c/osmo-pcu/+/30639 )
Change subject: tests/TbfTest: reproduce buggy corner case: MS with TBFs on 2 TRXs
......................................................................
tests/TbfTest: reproduce buggy corner case: MS with TBFs on 2 TRXs
Add a test which showcases a scenario where the PCU ends up with 1
GprsMs object holding a DL-TBF in a weird condition hald in one TRX and
half in other due to ms_merge().
This test (slightly adapted) used to cause a crash in osmo-pcu.git
586ddda9bc09d60f2d491158de843825cb7c876a (a few versions behind current
master).
Related: SYS#6231
Change-Id: Ic16b5e96debf91e72684833cd64253687857f3aa
---
M tests/tbf/TbfTest.cpp
M tests/tbf/TbfTest.err
2 files changed, 207 insertions(+), 0 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-pcu refs/changes/39/30639/2
--
To view, visit https://gerrit.osmocom.org/c/osmo-pcu/+/30639
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-pcu
Gerrit-Branch: master
Gerrit-Change-Id: Ic16b5e96debf91e72684833cd64253687857f3aa
Gerrit-Change-Number: 30639
Gerrit-PatchSet: 2
Gerrit-Owner: pespin <pespin(a)sysmocom.de>
Gerrit-MessageType: newpatchset
pespin has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-pcu/+/30640 )
Change subject: Avoid moving DL-TBF from old_msg to new_ms during ms_merge
......................................................................
Avoid moving DL-TBF from old_msg to new_ms during ms_merge
The DL-TBF assigned to another MS object may have a totally different
set of reserved resources (TS set, TRX, etc.), so one cannot simply move
those to the new MS. To start with, if the 2 MS are on different TRX it
is clear that one of them will not be really in operation. That's most
probably the DL-TBF being in ASSIGN state on CCCH waiting for PCUIF_CNF
and later X2002 to trigger to start sending DL blocks, but without
confirmation whether the MS is really there. Since the other new MS
object probably has a UL-TBF, that's the one probably operative, and
hence a new DL-TBF can be created at that same time and assigned through
UL-TBF's PACCH.
Unit test test_ms_merge_dl_tbf_different_trx showcases the above
scenario.
Related: SYS#6231
Related: OS#5700
Related: 677bebbe5c49d4607322e96053fe14ddd78d9549
Change-Id: Ie8cb49d5492cfc4cbf8340f3f376b0e6105e8c82
---
M src/gprs_ms.c
M src/tbf_dl_fsm.c
M tests/tbf/TbfTest.cpp
M tests/tbf/TbfTest.err
4 files changed, 98 insertions(+), 61 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-pcu refs/changes/40/30640/1
diff --git a/src/gprs_ms.c b/src/gprs_ms.c
index 29d226f..eb76fa2 100644
--- a/src/gprs_ms.c
+++ b/src/gprs_ms.c
@@ -453,15 +453,6 @@
llc_queue_move_and_merge(&ms->llc_queue, &old_ms->llc_queue);
- if (!ms_dl_tbf(ms) && ms_dl_tbf(old_ms)) {
- struct gprs_rlcmac_dl_tbf *dl_tbf = ms_dl_tbf(old_ms);
- LOGPTBFDL(dl_tbf, LOGL_NOTICE,
- "Merge MS: Move DL TBF: %s => %s\n",
- old_ms_name, ms_name(ms));
- /* Move the DL TBF to the new MS */
- tbf_set_ms(dl_tbf_as_tbf(dl_tbf), ms);
- }
-
/* Clean up the old MS object */
/* TODO: Use timer? */
if (ms_ul_tbf(old_ms) && !tbf_timers_pending((struct gprs_rlcmac_tbf *)ms_ul_tbf(old_ms), T_MAX))
diff --git a/src/tbf_dl_fsm.c b/src/tbf_dl_fsm.c
index 7d1f9b1..6b455da 100644
--- a/src/tbf_dl_fsm.c
+++ b/src/tbf_dl_fsm.c
@@ -163,7 +163,19 @@
* listening on PDCH) in order to move to FLOW state and start
* transmitting data to it. When X2002 triggers (see cb timer
* end of the file) it will send TBF_EV_ASSIGN_READY_CCCH back
- * to us here. */
+ * to us here.
+ */
+ if (!(ctx->state_flags & (1 << GPRS_RLCMAC_FLAG_CCCH))) {
+ /* This can happen if we initiated a CCCH DlAss from an
+ * older TBF object (same TLLI) towards BTS, and the DL-TBF
+ * was recreated and is now trying to be assigned throguh
+ * PACCH.
+ */
+ LOGPTBFDL(ctx->dl_tbf, LOGL_INFO,
+ "Ignoring event ASSIGN_PCUIF_CNF from BTS "
+ "(CCCH was not requested on current assignment)\n");
+ break;
+ }
fi->T = -2002;
val = osmo_tdef_get(the_pcu->T_defs, fi->T, OSMO_TDEF_MS, -1);
sec = val / 1000;
diff --git a/tests/tbf/TbfTest.cpp b/tests/tbf/TbfTest.cpp
index d35f70b..561d0b2 100644
--- a/tests/tbf/TbfTest.cpp
+++ b/tests/tbf/TbfTest.cpp
@@ -2449,7 +2449,9 @@
gprs_bssgp_init(bts, 5234, 5234, 1, 1, false, 0, 0, 0);
/* Handle LLC frame 1. This will create the TBF we want in TRX1 and
- * we'll have it upgrade to multislot on TRX0 later. */
+ * we'll have it upgrade to multislot on TRX0 later. This will trigger a
+ * CCCH Dl ImAss towards BTS PCUIF. The confirmation from BTS is
+ * injected further below (TBF_EV_ASSIGN_PCUIF_CNF). */
memset(llc_buf, 1, sizeof(llc_buf));
rc = dl_tbf_handle(bts, old_tlli, 0, imsi, ms_class, 0,
delay_csec, llc_buf, sizeof(llc_buf));
@@ -2478,28 +2480,21 @@
rc = dl_tbf_handle(bts, new_tlli, old_tlli, imsi, ms_class, 0,
delay_csec, llc_buf, sizeof(llc_buf));
OSMO_ASSERT(rc >= 0);
- /* Here we assert DL-TBF is currently moved to the new MS, which is wrong! */
- OSMO_ASSERT(dl_tbf == ms_dl_tbf(second_ms));
+ /* Here we assert a new DL-TBF is created in the new MS (hence old from TRX1 is deleted and new one is in TRX0): */
+ dl_tbf = ms_dl_tbf(second_ms);
+ OSMO_ASSERT(tbf_get_trx(dl_tbf) == trx0);
+ OSMO_ASSERT(dl_tbf->control_ts != old_dl_control_ts);
+ OSMO_ASSERT(dl_tbf == llist_first_entry_or_null(&trx0->dl_tbfs, struct llist_item, list)->entry);
+ OSMO_ASSERT(NULL == llist_first_entry_or_null(&trx1->dl_tbfs, struct llist_item, list));
/* Here BTS would answer with data_cnf and trigger
* bts_rcv_imm_ass_cnf(), which would trigger TBF_EV_ASSIGN_PCUIF_CNF.
- * That in turn would set up timer X2002. Finally, X2002 timeout
- * moves it to ASSIGN state for multislot upgrade. We set X2002 timeout to 0 here to get
- * immediate trigger through osmo_select_main() */
+ * Since that's for an older DL-TBF assignment which no longer exists, it is ignored. */
OSMO_ASSERT(osmo_tdef_set(the_pcu->T_defs, -2002, 0, OSMO_TDEF_MS) == 0);
osmo_fsm_inst_dispatch(ms_dl_tbf(second_ms)->state_fi, TBF_EV_ASSIGN_PCUIF_CNF, NULL);
osmo_select_main(0);
- OSMO_ASSERT(dl_tbf == ms_dl_tbf(second_ms));
- OSMO_ASSERT(dl_tbf->state_is(TBF_ST_ASSIGN));
- /* Here we validate DL-TBF was intially allocated in TRX1 but moved to TRX0 during multislot upgrade: */
- OSMO_ASSERT(tbf_get_trx(dl_tbf) == trx0);
- OSMO_ASSERT(old_dl_control_ts != dl_tbf->control_ts);
- /* dl_tbf is still in the list of trx1 so that the PktDlAss on the old
- * TRX/TS can be scheduled to assign the new TRX/TS allocation: */
- OSMO_ASSERT(dl_tbf == llist_first_entry_or_null(&trx1->dl_tbfs, struct llist_item, list)->entry);
-
- /* get the PACCH PktDlAss for the DL-TBF: */
+ /* get the PACCH PktDlAss for the DL-TBF, allocated one the UL-TBF from the new MS obj: */
request_dl_rlc_block(dl_tbf->bts, dl_tbf->control_ts, &fn);
fprintf(stderr, "=== end %s ===\n", __func__);
diff --git a/tests/tbf/TbfTest.err b/tests/tbf/TbfTest.err
index ead39bc..9ad295e 100644
--- a/tests/tbf/TbfTest.err
+++ b/tests/tbf/TbfTest.err
@@ -2319,25 +2319,49 @@
Old MS: TLLI = 0xf1223344, TA = 7, IMSI = 0011223344, LLC = 0
There is a new MS object for the same MS: (0xf1223344, '0011223344') -> (0xf5667788, '')
MS(TLLI-0xf5667788:TA-7:MSCLS-1-0:UL) Merge MS: MS(IMSI-0011223344:TLLI-0xf1223344:TA-7:MSCLS-1-0:UL:DL)
-TBF(DL:TFI-0-0-0:STATE-FINISHED:GPRS:IMSI-0011223344:TLLI-0xf1223344) Merge MS: Move DL TBF: MS(IMSI-0011223344:TLLI-0xf1223344:TA-7:MSCLS-1-0:UL:DL) => MS(IMSI-0011223344:TLLI-0xf5667788:TA-7:MSCLS-1-0:UL)
-MS(IMSI-0011223344:TLLI-0xf1223344:TA-7:MSCLS-1-0:UL) Detaching TBF: TBF(DL:TFI-0-0-0:STATE-FINISHED:GPRS:IMSI-0011223344:TLLI-0xf1223344)
-MS(IMSI-0011223344:TLLI-0xf5667788:TA-7:MSCLS-1-0:UL) Attaching DL TBF: TBF(DL:TFI-0-0-0:STATE-FINISHED:GPRS:IMSI-0011223344:TLLI-0xf5667788)
TBF(UL:TFI-0-0-0:STATE-FLOW:GPRS:IMSI-0011223344:TLLI-0xf1223344) free
PDCH(bts=0,trx=0,ts=7) Detaching TBF(UL:TFI-0-0-0:STATE-FLOW:GPRS:IMSI-0011223344:TLLI-0xf1223344), 2 TBFs, USFs = 03, TFIs = 00000003.
-MS(IMSI-0011223344:TLLI-0xf1223344:TA-7:MSCLS-1-0) Detaching TBF: TBF(UL:TFI-0-0-0:STATE-FLOW:GPRS:IMSI-0011223344:TLLI-0xf1223344)
+MS(IMSI-0011223344:TLLI-0xf1223344:TA-7:MSCLS-1-0:DL) Detaching TBF: TBF(UL:TFI-0-0-0:STATE-FLOW:GPRS:IMSI-0011223344:TLLI-0xf1223344)
********** UL-TBF ends here **********
UL_ACK_TBF(UL:TFI-0-0-0:STATE-FLOW:GPRS:IMSI-0011223344:TLLI-0xf1223344){NONE}: Deallocated
UL_TBF(UL:TFI-0-0-0:STATE-FLOW:GPRS:IMSI-0011223344:TLLI-0xf1223344){FLOW}: Deallocated
UL_ASS_TBF(UL:TFI-0-0-0:STATE-FLOW:GPRS:IMSI-0011223344:TLLI-0xf1223344){NONE}: Deallocated
DL_ASS_TBF(UL:TFI-0-0-0:STATE-FLOW:GPRS:IMSI-0011223344:TLLI-0xf1223344){NONE}: Deallocated
-MS(IMSI-0011223344:TLLI-0xf1223344:TA-7:MSCLS-1-0) Clearing MS object
-MS(TA-7:MSCLS-1-0) Destroying MS object
+MS(IMSI-0011223344:TLLI-0xf1223344:TA-7:MSCLS-1-0:DL) Clearing MS object
Modifying MS object, TLLI: 0xf5667788 confirmed
-MS(IMSI-0011223344:TLLI-0xf5667788:TA-7:MSCLS-1-0:UL:DL) appending 4 bytes to DL LLC queue
+MS(IMSI-0011223344:TLLI-0xf5667788:TA-7:MSCLS-1-0:UL) appending 4 bytes to DL LLC queue
+MS(IMSI-0011223344:TLLI-0xf5667788:TA-7:MSCLS-1-0:UL) ********** DL-TBF starts here **********
+MS(IMSI-0011223344:TLLI-0xf5667788:TA-7:MSCLS-1-0:UL) Allocating DL TBF
+UL_ASS_TBF{NONE}: Allocated
+DL_ASS_TBF{NONE}: Allocated
+DL_TBF{NEW}: Allocated
+[DL] algo A <multi> (suggested TRX: 0): Alloc start
+- Skipping TS 0, because not enabled
+- Skipping TS 1, because not enabled
+- Skipping TS 2, because not enabled
+- Skipping TS 3, because not enabled
+- Skipping TS 4, because not enabled
+- Skipping TS 5, because not enabled
+- Skipping TS 6, because not enabled
+[DL] Assign downlink TS=7 TFI=1
+PDCH(bts=0,trx=0,ts=7) Attaching TBF(DL:STATE-NEW:GPRS:IMSI-0011223344:TLLI-0xf5667788), 2 TBFs, USFs = 02, TFIs = 00000003.
+TBF(DL:TFI-0-0-1:STATE-NEW:GPRS:IMSI-0011223344:TLLI-0xf5667788) Setting Control TS PDCH(bts=0,trx=0,ts=7)
+TBF(DL:TFI-0-0-1:STATE-NEW:GPRS:IMSI-0011223344:TLLI-0xf5667788) Allocated: trx = 0, ul_slots = 80, dl_slots = 80
+MS(IMSI-0011223344:TLLI-0xf5667788:TA-7:MSCLS-1-0:UL) Attaching DL TBF: TBF(DL:TFI-0-0-1:STATE-NEW:GPRS:IMSI-0011223344:TLLI-0xf5667788)
+TBF(DL:TFI-0-0-1:STATE-NEW:GPRS:IMSI-0011223344:TLLI-0xf5667788) [DOWNLINK] START (PACCH)
+TBF(DL:TFI-0-0-1:STATE-NEW:GPRS:IMSI-0011223344:TLLI-0xf5667788) Send downlink assignment on PACCH, because TBF(UL:TFI-0-0-1:STATE-FLOW:GPRS:IMSI-0011223344:TLLI-0xf5667788) exists
+DL_ASS_TBF(UL:TFI-0-0-1:STATE-FLOW:GPRS:IMSI-0011223344:TLLI-0xf5667788){NONE}: Received Event SCHED_ASS
+DL_ASS_TBF(UL:TFI-0-0-1:STATE-FLOW:GPRS:IMSI-0011223344:TLLI-0xf5667788){NONE}: state_chg to SEND_ASS
+DL_TBF(DL:TFI-0-0-1:STATE-NEW:GPRS:IMSI-0011223344:TLLI-0xf5667788){NEW}: Received Event ASSIGN_ADD_PACCH
+TBF(DL:TFI-0-0-1:STATE-NEW:GPRS:IMSI-0011223344:TLLI-0xf5667788) set ass. type PACCH [prev CCCH:0, PACCH:0]
+DL_TBF(DL:TFI-0-0-1:STATE-NEW:GPRS:IMSI-0011223344:TLLI-0xf5667788){NEW}: state_chg to ASSIGN
+TBF(DL:TFI-0-0-1:STATE-ASSIGN:GPRS:IMSI-0011223344:TLLI-0xf5667788) Starting timer X2001 [assignment (PACCH)] with 2 sec. 0 microsec
New MS: TLLI = 0xf5667788, TA = 7, IMSI = 0011223344, LLC = 1
MS(IMSI-0011223344:TLLI-0xf5667788:TA-7:MSCLS-1-0:UL:DL) Destroying MS object
MS(IMSI-0011223344:TLLI-0xf5667788:TA-7:MSCLS-1-0:DL) Detaching TBF: TBF(UL:TFI-0-0-1:STATE-FLOW:GPRS:IMSI-0011223344:TLLI-0xf5667788)
-MS(IMSI-0011223344:TLLI-0xf5667788:TA-7:MSCLS-1-0) Detaching TBF: TBF(DL:TFI-0-0-0:STATE-FINISHED:GPRS:IMSI-0011223344:TLLI-0xf5667788)
+MS(IMSI-0011223344:TLLI-0xf5667788:TA-7:MSCLS-1-0) Detaching TBF: TBF(DL:TFI-0-0-1:STATE-ASSIGN:GPRS:IMSI-0011223344:TLLI-0xf5667788)
+MS(TA-7:MSCLS-1-0:DL) Destroying MS object
+MS(TA-7:MSCLS-1-0) Detaching TBF: TBF(DL:TFI-0-0-0:STATE-FINISHED:GPRS)
=== end test_tbf_ra_update_rach ===
=== start test_tbf_dl_flow_and_rach_two_phase ===
PDCH(bts=0,trx=0,ts=7) PDCH state: disabled => enabled
@@ -2700,20 +2724,16 @@
Modifying MS object, UL TLLI: 0xffffffff -> 0xf1223344, not yet confirmed
MS(TLLI-0xf1223344:TA-7:MSCLS-0-0:UL) Merge MS: MS(IMSI-0011223344:TLLI-0xf1223344:TA-7:MSCLS-1-0:DL)
Modifying MS object, TLLI = 0xf1223344, MS class 0 -> 1
-TBF(DL:TFI-0-0-0:STATE-ASSIGN:GPRS:IMSI-0011223344:TLLI-0xf1223344) Merge MS: Move DL TBF: MS(IMSI-0011223344:TLLI-0xf1223344:TA-7:MSCLS-1-0:DL) => MS(IMSI-0011223344:TLLI-0xf1223344:TA-7:MSCLS-1-0:UL)
-MS(IMSI-0011223344:TLLI-0xf1223344:TA-7:MSCLS-1-0) Detaching TBF: TBF(DL:TFI-0-0-0:STATE-ASSIGN:GPRS:IMSI-0011223344:TLLI-0xf1223344)
-MS(IMSI-0011223344:TLLI-0xf1223344:TA-7:MSCLS-1-0:UL) Attaching DL TBF: TBF(DL:TFI-0-0-0:STATE-ASSIGN:GPRS:IMSI-0011223344:TLLI-0xf1223344)
-MS(IMSI-0011223344:TLLI-0xf1223344:TA-7:MSCLS-1-0) Clearing MS object
-MS(TA-7:MSCLS-1-0) Destroying MS object
-UL_TBF(UL:TFI-0-0-0:STATE-NEW:GPRS){FLOW}: Received Event FIRST_UL_DATA_RECVD
-TBF(DL:TFI-0-0-0:STATE-ASSIGN:GPRS:IMSI-0011223344:TLLI-0xf1223344) Got first UL data while DL-TBF pending, killing it
TBF(DL:TFI-0-0-0:STATE-ASSIGN:GPRS:IMSI-0011223344:TLLI-0xf1223344) free
PDCH(bts=0,trx=0,ts=7) Detaching TBF(DL:TFI-0-0-0:STATE-ASSIGN:GPRS:IMSI-0011223344:TLLI-0xf1223344), 1 TBFs, USFs = 01, TFIs = 00000001.
-MS(IMSI-0011223344:TLLI-0xf1223344:TA-7:MSCLS-1-0:UL) Detaching TBF: TBF(DL:TFI-0-0-0:STATE-ASSIGN:GPRS:IMSI-0011223344:TLLI-0xf1223344)
+MS(IMSI-0011223344:TLLI-0xf1223344:TA-7:MSCLS-1-0) Detaching TBF: TBF(DL:TFI-0-0-0:STATE-ASSIGN:GPRS:IMSI-0011223344:TLLI-0xf1223344)
********** DL-TBF ends here **********
DL_TBF(DL:TFI-0-0-0:STATE-NEW:GPRS:IMSI-0011223344:TLLI-0xf1223344){ASSIGN}: Deallocated
UL_ASS_TBF(DL:TFI-0-0-0:STATE-NEW:GPRS:IMSI-0011223344:TLLI-0xf1223344){NONE}: Deallocated
DL_ASS_TBF(DL:TFI-0-0-0:STATE-NEW:GPRS:IMSI-0011223344:TLLI-0xf1223344){NONE}: Deallocated
+MS(IMSI-0011223344:TLLI-0xf1223344:TA-7:MSCLS-1-0) Clearing MS object
+MS(TA-7:MSCLS-1-0) Destroying MS object
+UL_TBF(UL:TFI-0-0-0:STATE-NEW:GPRS){FLOW}: Received Event FIRST_UL_DATA_RECVD
TBF(UL:TFI-0-0-0:STATE-FLOW:GPRS:IMSI-0011223344:TLLI-0xf1223344) Assembling frames: (len=20)
TBF(UL:TFI-0-0-0:STATE-FLOW:GPRS:IMSI-0011223344:TLLI-0xf1223344) Frame 1 starts at offset 4, length=16, is_complete=1
TBF(UL:TFI-0-0-0:STATE-FLOW:GPRS:IMSI-0011223344:TLLI-0xf1223344) complete UL frame len=16
@@ -9503,34 +9523,53 @@
There is a new MS object for the same MS: (0xa3c2f953, '001001000000001') -> (0xecc1f953, '')
MS(TLLI-0xecc1f953:TA-220:MSCLS-0-0:UL) Merge MS: MS(IMSI-001001000000001:TLLI-0xa3c2f953:TA-220:MSCLS-11-0:DL)
Modifying MS object, TLLI = 0xecc1f953, MS class 0 -> 11
-TBF(DL:TFI-0-1-0:STATE-ASSIGN:GPRS:IMSI-001001000000001:TLLI-0xa3c2f953) Merge MS: Move DL TBF: MS(IMSI-001001000000001:TLLI-0xa3c2f953:TA-220:MSCLS-11-0:DL) => MS(IMSI-001001000000001:TLLI-0xecc1f953:TA-220:MSCLS-11-0:UL)
+TBF(DL:TFI-0-1-0:STATE-ASSIGN:GPRS:IMSI-001001000000001:TLLI-0xa3c2f953) free
+PDCH(bts=0,trx=1,ts=5) Detaching TBF(DL:TFI-0-1-0:STATE-ASSIGN:GPRS:IMSI-001001000000001:TLLI-0xa3c2f953), 1 TBFs, USFs = 00, TFIs = 00000001.
MS(IMSI-001001000000001:TLLI-0xa3c2f953:TA-220:MSCLS-11-0) Detaching TBF: TBF(DL:TFI-0-1-0:STATE-ASSIGN:GPRS:IMSI-001001000000001:TLLI-0xa3c2f953)
-MS(IMSI-001001000000001:TLLI-0xecc1f953:TA-220:MSCLS-11-0:UL) Attaching DL TBF: TBF(DL:TFI-0-1-0:STATE-ASSIGN:GPRS:IMSI-001001000000001:TLLI-0xecc1f953)
+********** DL-TBF ends here **********
+DL_TBF(DL:TFI-0-1-0:STATE-NEW:GPRS:IMSI-001001000000001:TLLI-0xa3c2f953){ASSIGN}: Deallocated
+UL_ASS_TBF(DL:TFI-0-1-0:STATE-NEW:GPRS:IMSI-001001000000001:TLLI-0xa3c2f953){NONE}: Deallocated
+DL_ASS_TBF(DL:TFI-0-1-0:STATE-NEW:GPRS:IMSI-001001000000001:TLLI-0xa3c2f953){NONE}: Deallocated
MS(IMSI-001001000000001:TLLI-0xa3c2f953:TA-220:MSCLS-11-0) Clearing MS object
MS(TA-220:MSCLS-11-0) Destroying MS object
Modifying MS object, TLLI: 0xecc1f953 confirmed
-MS(IMSI-001001000000001:TLLI-0xecc1f953:TA-220:MSCLS-11-0:UL:DL) appending 19 bytes to DL LLC queue
-DL_TBF(DL:TFI-0-1-0:STATE-ASSIGN:GPRS:IMSI-001001000000001:TLLI-0xecc1f953){ASSIGN}: Received Event ASSIGN_PCUIF_CNF
-TBF(DL:TFI-0-1-0:STATE-ASSIGN:GPRS:IMSI-001001000000001:TLLI-0xecc1f953) Starting timer X2002 [assignment (AGCH)] with 0 sec. 0 microsec
-DL_TBF(DL:TFI-0-1-0:STATE-ASSIGN:GPRS:IMSI-001001000000001:TLLI-0xecc1f953){ASSIGN}: Timeout of X2002
-TBF(DL:TFI-0-1-0:STATE-ASSIGN:GPRS:IMSI-001001000000001:TLLI-0xecc1f953) Changing Control TS PDCH(bts=0,trx=1,ts=5) -> PDCH(bts=0,trx=0,ts=2)
-TBF(DL:TFI-0-1-0:STATE-ASSIGN:GPRS:IMSI-001001000000001:TLLI-0xecc1f953) Upgrade to multislot
-PDCH(bts=0,trx=1,ts=5) Detaching TBF(DL:TFI-0-1-0:STATE-ASSIGN:GPRS:IMSI-001001000000001:TLLI-0xecc1f953), 1 TBFs, USFs = 00, TFIs = 00000001.
-[DL] algo B <multi> (suggested TRX: -1): Alloc start
+MS(IMSI-001001000000001:TLLI-0xecc1f953:TA-220:MSCLS-11-0:UL) appending 19 bytes to DL LLC queue
+MS(IMSI-001001000000001:TLLI-0xecc1f953:TA-220:MSCLS-11-0:UL) ********** DL-TBF starts here **********
+MS(IMSI-001001000000001:TLLI-0xecc1f953:TA-220:MSCLS-11-0:UL) Allocating DL TBF
+UL_ASS_TBF{NONE}: Allocated
+DL_ASS_TBF{NONE}: Allocated
+DL_TBF{NEW}: Allocated
+[DL] algo B <multi> (suggested TRX: 0): Alloc start
Found first unallocated TRX=0 TFI=0
Selected DL slots: (TS=0)".DDDddd."(TS=7), multi
-[DL] algo B <multi> (suggested TRX: -1): using 3 slots
+[DL] algo B <multi> (suggested TRX: 0): using 3 slots
- Assigning DL TS 1
-PDCH(bts=0,trx=0,ts=1) Attaching TBF(DL:TFI-0-0-0:STATE-ASSIGN:GPRS:IMSI-001001000000001:TLLI-0xecc1f953), 1 TBFs, USFs = 00, TFIs = 00000001.
+PDCH(bts=0,trx=0,ts=1) Attaching TBF(DL:TFI-0-0-0:STATE-NEW:GPRS:IMSI-001001000000001:TLLI-0xecc1f953), 1 TBFs, USFs = 00, TFIs = 00000001.
- Assigning DL TS 2
-PDCH(bts=0,trx=0,ts=2) Attaching TBF(DL:TFI-0-0-0:STATE-ASSIGN:GPRS:IMSI-001001000000001:TLLI-0xecc1f953), 1 TBFs, USFs = 01, TFIs = 00000001.
+PDCH(bts=0,trx=0,ts=2) Attaching TBF(DL:TFI-0-0-0:STATE-NEW:GPRS:IMSI-001001000000001:TLLI-0xecc1f953), 1 TBFs, USFs = 01, TFIs = 00000001.
- Assigning DL TS 3
-PDCH(bts=0,trx=0,ts=3) Attaching TBF(DL:TFI-0-0-0:STATE-ASSIGN:GPRS:IMSI-001001000000001:TLLI-0xecc1f953), 1 TBFs, USFs = 00, TFIs = 00000001.
-TBF(DL:TFI-0-0-0:STATE-ASSIGN:GPRS:IMSI-001001000000001:TLLI-0xecc1f953) Send downlink assignment on PACCH, because TBF(DL:TFI-0-0-0:STATE-ASSIGN:GPRS:IMSI-001001000000001:TLLI-0xecc1f953) exists
-DL_ASS_TBF(DL:TFI-0-0-0:STATE-ASSIGN:GPRS:IMSI-001001000000001:TLLI-0xecc1f953){NONE}: Received Event SCHED_ASS
-DL_ASS_TBF(DL:TFI-0-0-0:STATE-ASSIGN:GPRS:IMSI-001001000000001:TLLI-0xecc1f953){NONE}: state_chg to SEND_ASS
-DL_TBF(DL:TFI-0-0-0:STATE-ASSIGN:GPRS:IMSI-001001000000001:TLLI-0xecc1f953){ASSIGN}: Received Event ASSIGN_ADD_PACCH
-TBF(DL:TFI-0-0-0:STATE-ASSIGN:GPRS:IMSI-001001000000001:TLLI-0xecc1f953) set ass. type PACCH [prev CCCH:0, PACCH:0]
+PDCH(bts=0,trx=0,ts=3) Attaching TBF(DL:TFI-0-0-0:STATE-NEW:GPRS:IMSI-001001000000001:TLLI-0xecc1f953), 1 TBFs, USFs = 00, TFIs = 00000001.
+TBF(DL:TFI-0-0-0:STATE-NEW:GPRS:IMSI-001001000000001:TLLI-0xecc1f953) Setting Control TS PDCH(bts=0,trx=0,ts=2)
+TBF(DL:TFI-0-0-0:STATE-NEW:GPRS:IMSI-001001000000001:TLLI-0xecc1f953) Allocated: trx = 0, ul_slots = 04, dl_slots = 0e
+MS(IMSI-001001000000001:TLLI-0xecc1f953:TA-220:MSCLS-11-0:UL) Attaching DL TBF: TBF(DL:TFI-0-0-0:STATE-NEW:GPRS:IMSI-001001000000001:TLLI-0xecc1f953)
+TBF(DL:TFI-0-0-0:STATE-NEW:GPRS:IMSI-001001000000001:TLLI-0xecc1f953) [DOWNLINK] START (PACCH)
+TBF(DL:TFI-0-0-0:STATE-NEW:GPRS:IMSI-001001000000001:TLLI-0xecc1f953) Send downlink assignment on PACCH, because TBF(UL:TFI-0-0-0:STATE-NEW:GPRS:IMSI-001001000000001:TLLI-0xecc1f953) exists
+DL_ASS_TBF(UL:TFI-0-0-0:STATE-NEW:GPRS:IMSI-001001000000001:TLLI-0xecc1f953){NONE}: Received Event SCHED_ASS
+DL_ASS_TBF(UL:TFI-0-0-0:STATE-NEW:GPRS:IMSI-001001000000001:TLLI-0xecc1f953){NONE}: state_chg to SEND_ASS
+DL_TBF(DL:TFI-0-0-0:STATE-NEW:GPRS:IMSI-001001000000001:TLLI-0xecc1f953){NEW}: Received Event ASSIGN_ADD_PACCH
+TBF(DL:TFI-0-0-0:STATE-NEW:GPRS:IMSI-001001000000001:TLLI-0xecc1f953) set ass. type PACCH [prev CCCH:0, PACCH:0]
+DL_TBF(DL:TFI-0-0-0:STATE-NEW:GPRS:IMSI-001001000000001:TLLI-0xecc1f953){NEW}: state_chg to ASSIGN
+TBF(DL:TFI-0-0-0:STATE-ASSIGN:GPRS:IMSI-001001000000001:TLLI-0xecc1f953) Starting timer X2001 [assignment (PACCH)] with 2 sec. 0 microsec
+DL_TBF(DL:TFI-0-0-0:STATE-NEW:GPRS:IMSI-001001000000001:TLLI-0xecc1f953){ASSIGN}: Received Event ASSIGN_PCUIF_CNF
+TBF(DL:TFI-0-0-0:STATE-ASSIGN:GPRS:IMSI-001001000000001:TLLI-0xecc1f953) Ignoring event ASSIGN_PCUIF_CNF from BTS (CCCH was not requested on current assignment)
+DL_ASS_TBF(UL:TFI-0-0-0:STATE-NEW:GPRS:IMSI-001001000000001:TLLI-0xecc1f953){SEND_ASS}: Received Event CREATE_RLCMAC_MSG
+PDCH(bts=0,trx=0,ts=2) POLL scheduled at FN 0 + 13 = 13
+TBF(UL:TFI-0-0-0:STATE-NEW:GPRS:IMSI-001001000000001:TLLI-0xecc1f953) start Packet Downlink Assignment (PACCH) for TBF(DL:TFI-0-0-0:STATE-ASSIGN:GPRS:IMSI-001001000000001:TLLI-0xecc1f953)
++++++++++++++++++++++++++ TX : Packet Downlink Assignment +++++++++++++++++++++++++
+------------------------- TX : Packet Downlink Assignment -------------------------
+TBF(UL:TFI-0-0-0:STATE-NEW:GPRS:IMSI-001001000000001:TLLI-0xecc1f953) Scheduled DL Assignment polling on PACCH (FN=13, TS=2)
+DL_ASS_TBF(UL:TFI-0-0-0:STATE-NEW:GPRS:IMSI-001001000000001:TLLI-0xecc1f953){SEND_ASS}: state_chg to WAIT_ACK
+PDCH(bts=0,trx=0,ts=2) FN=0 Scheduling control message at RTS for TBF(UL:TFI-0-0-0:STATE-NEW:GPRS:IMSI-001001000000001:TLLI-0xecc1f953)
=== end test_ms_merge_dl_tbf_different_trx ===
MS(IMSI-001001000000001:TLLI-0xecc1f953:TA-220:MSCLS-11-0:UL:DL) Destroying MS object
MS(IMSI-001001000000001:TLLI-0xecc1f953:TA-220:MSCLS-11-0:DL) Detaching TBF: TBF(UL:TFI-0-0-0:STATE-NEW:GPRS:IMSI-001001000000001:TLLI-0xecc1f953)
--
To view, visit https://gerrit.osmocom.org/c/osmo-pcu/+/30640
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-pcu
Gerrit-Branch: master
Gerrit-Change-Id: Ie8cb49d5492cfc4cbf8340f3f376b0e6105e8c82
Gerrit-Change-Number: 30640
Gerrit-PatchSet: 1
Gerrit-Owner: pespin <pespin(a)sysmocom.de>
Gerrit-MessageType: newchange
Attention is currently required from: Hoernchen, laforge.
Hoernchen has posted comments on this change. ( https://gerrit.osmocom.org/c/libosmocore/+/30633 )
Change subject: logging: add log level cache
......................................................................
Patch Set 6:
(1 comment)
Patchset:
PS5:
> I am also not hapy but we do unfortunately not know the difference between internal functions and ex […]
...that was -O3, it still exists for O3, however.
--
To view, visit https://gerrit.osmocom.org/c/libosmocore/+/30633
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: libosmocore
Gerrit-Branch: master
Gerrit-Change-Id: I35f8dd9127dd6e7feae392094fd6b3ce2d32558d
Gerrit-Change-Number: 30633
Gerrit-PatchSet: 6
Gerrit-Owner: Hoernchen <ewild(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-CC: laforge <laforge(a)osmocom.org>
Gerrit-Attention: Hoernchen <ewild(a)sysmocom.de>
Gerrit-Attention: laforge <laforge(a)osmocom.org>
Gerrit-Comment-Date: Fri, 16 Dec 2022 17:50:36 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Comment-In-Reply-To: Hoernchen <ewild(a)sysmocom.de>
Comment-In-Reply-To: laforge <laforge(a)osmocom.org>
Gerrit-MessageType: comment
Attention is currently required from: laforge.
Hoernchen has posted comments on this change. ( https://gerrit.osmocom.org/c/libosmocore/+/30633 )
Change subject: logging: add log level cache
......................................................................
Patch Set 5:
(3 comments)
Patchset:
PS5:
> thanks, it looks reasonably simple in general, which is good. […]
I am also not hapy but we do unfortunately not know the difference between internal functions and exported lib functions so the symbol and function will always exist and can't be removed by the optimizer. The function should in practice not be exported by the lib anyway, it is only used by the vty because there is no proper split, but there is nothing I can do about that... (no, hidden does not help)
A "removed" function with no body looks like this:
❯ gdb -batch -ex 'file libosmocore.so' -ex 'disassemble log_cache_update'
Dump of assembler code for function log_cache_update:
0x00000000000281e6 <+0>: endbr64
0x00000000000281ea <+4>: push %rbp
0x00000000000281eb <+5>: mov %rsp,%rbp
0x00000000000281ee <+8>: mov %edi,-0x4(%rbp)
0x00000000000281f1 <+11>: mov %esi,%ecx
0x00000000000281f3 <+13>: mov %edx,%eax
0x00000000000281f5 <+15>: mov %ecx,%edx
0x00000000000281f7 <+17>: mov %dl,-0x8(%rbp)
0x00000000000281fa <+20>: mov %al,-0xc(%rbp)
0x00000000000281fd <+23>: nop
0x00000000000281fe <+24>: pop %rbp
0x00000000000281ff <+25>: ret
End of assembler dump.
Quite a lot of code for "nothing", and not really something I'd like to have for actual embedded targets...
File src/logging.c:
https://gerrit.osmocom.org/c/libosmocore/+/30633/comment/774b77dd_d5765455
PS5, Line 1037: log_update_cache
> this is not guarded by !EMBEDDED, unlike other invocations?
got lost, since i'm unable to build "embedded" libosmocore.
https://gerrit.osmocom.org/c/libosmocore/+/30633/comment/b656a0f5_fadc45de
PS5, Line 1534: log
> you just checked it is != NULL above, so that should be a NOP?
d
--
To view, visit https://gerrit.osmocom.org/c/libosmocore/+/30633
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: libosmocore
Gerrit-Branch: master
Gerrit-Change-Id: I35f8dd9127dd6e7feae392094fd6b3ce2d32558d
Gerrit-Change-Number: 30633
Gerrit-PatchSet: 5
Gerrit-Owner: Hoernchen <ewild(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-CC: laforge <laforge(a)osmocom.org>
Gerrit-Attention: laforge <laforge(a)osmocom.org>
Gerrit-Comment-Date: Fri, 16 Dec 2022 17:46:53 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Comment-In-Reply-To: laforge <laforge(a)osmocom.org>
Gerrit-MessageType: comment
Attention is currently required from: Hoernchen.
Hello Jenkins Builder,
I'd like you to reexamine a change. Please visit
https://gerrit.osmocom.org/c/libosmocore/+/30633
to look at the new patch set (#6).
Change subject: logging: add log level cache
......................................................................
logging: add log level cache
This ensures multithreaded logging attempts, in particular ones that do
nothing, do not hold the lock just for checking the level, which
interferes with other logging attempts.
Change-Id: I35f8dd9127dd6e7feae392094fd6b3ce2d32558d
---
M include/osmocom/core/logging.h
M src/logging.c
M src/vty/logging_vty.c
M tests/bitgen/bitgen_test.c
M tests/ctrl/ctrl_test.c
5 files changed, 123 insertions(+), 5 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/33/30633/6
--
To view, visit https://gerrit.osmocom.org/c/libosmocore/+/30633
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: libosmocore
Gerrit-Branch: master
Gerrit-Change-Id: I35f8dd9127dd6e7feae392094fd6b3ce2d32558d
Gerrit-Change-Number: 30633
Gerrit-PatchSet: 6
Gerrit-Owner: Hoernchen <ewild(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-CC: laforge <laforge(a)osmocom.org>
Gerrit-Attention: Hoernchen <ewild(a)sysmocom.de>
Gerrit-MessageType: newpatchset
Attention is currently required from: osmith.
daniel has posted comments on this change. ( https://gerrit.osmocom.org/c/libosmo-abis/+/30618 )
Change subject: ipa: Guard against calling ipa_client_conn_open* multiple times
......................................................................
Patch Set 2:
(1 comment)
File src/input/ipa.c:
https://gerrit.osmocom.org/c/libosmo-abis/+/30618/comment/a45b5d80_3415d3f4
PS2, Line 253: return -EINVAL;
> maybe log an error message?
I don't think here's the right place. We return other errors without logging below as well and the places that call ipa_client_conn_open(2) usually log failures.
--
To view, visit https://gerrit.osmocom.org/c/libosmo-abis/+/30618
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: libosmo-abis
Gerrit-Branch: master
Gerrit-Change-Id: I574af543429d01c9522e267265e97e4efe55b60c
Gerrit-Change-Number: 30618
Gerrit-PatchSet: 2
Gerrit-Owner: daniel <dwillmann(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-Attention: osmith <osmith(a)sysmocom.de>
Gerrit-Comment-Date: Fri, 16 Dec 2022 17:29:24 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Comment-In-Reply-To: osmith <osmith(a)sysmocom.de>
Gerrit-MessageType: comment
daniel has posted comments on this change. ( https://gerrit.osmocom.org/c/osmo-bts/+/30638 )
Change subject: oc2gbts_mgr_calib: Don't cast timespec_t to time_t
......................................................................
Patch Set 1:
(1 comment)
Patchset:
PS1:
So we either get
| ../../../git/src/osmo-bts-oc2g/misc/oc2gbts_mgr_calib.c:174:2: error: aggregate value used where an integer was expected
| mgr->gps.gps_fix_now = (time_t) data->fix.time;
in the OE build without this patch or
misc/oc2gbts_mgr_calib.c:174:39: error: request for member ‘tv_sec’ in something not a structure or union
mgr->gps.gps_fix_now = data->fix.time.tv_sec;
this in the gerrit build with it
--
To view, visit https://gerrit.osmocom.org/c/osmo-bts/+/30638
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-bts
Gerrit-Branch: master
Gerrit-Change-Id: I6dc8ce303e5cb0fb412857a7f2c925e8cfe9b1e0
Gerrit-Change-Number: 30638
Gerrit-PatchSet: 1
Gerrit-Owner: daniel <dwillmann(a)sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Comment-Date: Fri, 16 Dec 2022 17:15:55 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Gerrit-MessageType: comment