Projects
osmocom:master
osmo-pcu
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
Expand all
Collapse all
Changes of Revision 104
View file
osmo-pcu.spec
Changed
@@ -14,13 +14,13 @@ Name: osmo-pcu Requires: osmocom-master -Version: 1.2.0.117.8c52 +Version: 1.2.0.118.40a2 Release: 0 Summary: Osmocom GPRS Packet Control Unit (PCU) License: GPL-2.0-only Group: Productivity/Telephony/Servers URL: https://osmocom.org/projects/osmopcu -Source: osmo-pcu_1.2.0.117.8c52.tar.xz +Source: osmo-pcu_1.2.0.118.40a2.tar.xz Source1: rpmlintrc BuildRequires: autoconf BuildRequires: automake
View file
commit_40a297f3b0c8e1670d46a4974750dd3335bc7885.txt
Added
View file
commit_8c52bef6c62bc681fbc18a863f36cc7756388ebd.txt
Deleted
View file
osmo-pcu_1.2.0.117.8c52.dsc
Deleted
@@ -1,21 +0,0 @@ -Format: 3.0 (native) -Source: osmo-pcu -Binary: osmo-pcu, osmo-pcu-dbg, osmo-pcu-doc -Architecture: any all -Version: 1.2.0.117.8c52 -Maintainer: Osmocom team <openbsc@lists.osmocom.org> -Homepage: http://osmocom.org/projects/osmopcu -Standards-Version: 3.9.8 -Vcs-Browser: https://gitea.osmocom.org/cellular-infrastructure/osmo-pcu -Vcs-Git: https://gitea.osmocom.org/cellular-infrastructure/osmo-pcu -Build-Depends: debhelper (>= 10), dh-autoreconf, autotools-dev, pkg-config, libosmo-abis-dev (>= 1.4.0), libosmocore-dev (>= 1.8.0), osmo-gsm-manuals-dev (>= 1.4.0) -Package-List: - osmo-pcu deb net optional arch=any - osmo-pcu-dbg deb debug extra arch=any - osmo-pcu-doc deb doc optional arch=all -Checksums-Sha1: - 6987a2c1f312f402245d4dedd50fb6c8e2081707 419688 osmo-pcu_1.2.0.117.8c52.tar.xz -Checksums-Sha256: - ab68aa3fe2c407a1581bca2708ad50882d9a154e3c72441975d5c3334214db9c 419688 osmo-pcu_1.2.0.117.8c52.tar.xz -Files: - 8d3fc46c8c542452ef81870285f1e00d 419688 osmo-pcu_1.2.0.117.8c52.tar.xz
View file
osmo-pcu_1.2.0.118.40a2.dsc
Added
@@ -0,0 +1,21 @@ +Format: 3.0 (native) +Source: osmo-pcu +Binary: osmo-pcu, osmo-pcu-dbg, osmo-pcu-doc +Architecture: any all +Version: 1.2.0.118.40a2 +Maintainer: Osmocom team <openbsc@lists.osmocom.org> +Homepage: http://osmocom.org/projects/osmopcu +Standards-Version: 3.9.8 +Vcs-Browser: https://gitea.osmocom.org/cellular-infrastructure/osmo-pcu +Vcs-Git: https://gitea.osmocom.org/cellular-infrastructure/osmo-pcu +Build-Depends: debhelper (>= 10), dh-autoreconf, autotools-dev, pkg-config, libosmo-abis-dev (>= 1.4.0), libosmocore-dev (>= 1.8.0), osmo-gsm-manuals-dev (>= 1.4.0) +Package-List: + osmo-pcu deb net optional arch=any + osmo-pcu-dbg deb debug extra arch=any + osmo-pcu-doc deb doc optional arch=all +Checksums-Sha1: + 6c27a0fdd6d1f2f09e960a11b8b179beaa064c37 420076 osmo-pcu_1.2.0.118.40a2.tar.xz +Checksums-Sha256: + 72e543b380a29a028fc816053dc13f555aae6c010c038fa4207d3b4645a49076 420076 osmo-pcu_1.2.0.118.40a2.tar.xz +Files: + e1bd3f94fd6a71a0a8cf9caa579d6a26 420076 osmo-pcu_1.2.0.118.40a2.tar.xz
View file
osmo-pcu_1.2.0.117.8c52.tar.xz/.tarball-version -> osmo-pcu_1.2.0.118.40a2.tar.xz/.tarball-version
Changed
@@ -1 +1 @@ -1.2.0.117-8c52 +1.2.0.118-40a2
View file
osmo-pcu_1.2.0.117.8c52.tar.xz/debian/changelog -> osmo-pcu_1.2.0.118.40a2.tar.xz/debian/changelog
Changed
@@ -1,8 +1,8 @@ -osmo-pcu (1.2.0.117.8c52) unstable; urgency=medium +osmo-pcu (1.2.0.118.40a2) unstable; urgency=medium * Automatically generated changelog entry for building the Osmocom master feed - -- Osmocom OBS scripts <info@osmocom.org> Tue, 20 Jun 2023 09:40:23 +0000 + -- Osmocom OBS scripts <info@osmocom.org> Tue, 20 Jun 2023 11:44:26 +0000 osmo-pcu (1.2.0) unstable; urgency=medium
View file
osmo-pcu_1.2.0.117.8c52.tar.xz/src/gprs_ms.c -> osmo-pcu_1.2.0.118.40a2.tar.xz/src/gprs_ms.c
Changed
@@ -1368,20 +1368,31 @@ dl_tbf = ms_dl_tbf(ms); if (dl_tbf) { - if (tbf_state(dl_tbf_as_tbf_const(dl_tbf)) == TBF_ST_WAIT_RELEASE) { - LOGPTBFDL(dl_tbf, LOGL_DEBUG, "in WAIT RELEASE state (T3193), so reuse TBF\n"); + switch (tbf_state(dl_tbf_as_tbf_const(dl_tbf))) { + case TBF_ST_WAIT_RELEASE: + LOGPTBFDL(dl_tbf, LOGL_DEBUG, "in WAIT RELEASE state (T3192), so reuse TBF\n"); rc = ms_new_dl_tbf_assigned_on_pacch(ms, dl_tbf_as_tbf(dl_tbf)); + return rc; + case TBF_ST_WAIT_REUSE_TFI: + /* According to DL TBF state it should be back to CCCH, let's check UL TBF to have more information. */ + break; + case TBF_ST_RELEASING: + /* Something went wrong (T3195), delay for later. */ + default: + /* DL TBF in working status (do nothing)*/ + return 0; } - } else { - /* Check if we can create a DL TBF to start sending the enqueued - * data. Otherwise it will be triggered later when it is reachable - * again. */ - if (ms_is_reachable_for_dl_ass(ms)) { - if (ms_ul_tbf(ms)) - rc = ms_new_dl_tbf_assigned_on_pacch(ms, ul_tbf_as_tbf(ms_ul_tbf(ms))); - else - rc = ms_new_dl_tbf_assigned_on_pch(ms); - } + + } + + /* Check if we can create a DL TBF to start sending the enqueued + * data. Otherwise it will be triggered later when it is reachable + * again. */ + if (ms_is_reachable_for_dl_ass(ms)) { + if (ms_ul_tbf(ms)) + rc = ms_new_dl_tbf_assigned_on_pacch(ms, ul_tbf_as_tbf(ms_ul_tbf(ms))); + else + rc = ms_new_dl_tbf_assigned_on_pch(ms); } return rc; }
View file
osmo-pcu_1.2.0.117.8c52.tar.xz/src/pdch.cpp -> osmo-pcu_1.2.0.118.40a2.tar.xz/src/pdch.cpp
Changed
@@ -429,8 +429,9 @@ "TBF is gone TLLI=0x%08x\n", tlli); return; } - if (tbf->state_is(TBF_ST_WAIT_RELEASE) && - tbf->direction == new_tbf->direction) + if ((tbf->state_is(TBF_ST_WAIT_RELEASE) || + tbf->state_is(TBF_ST_WAIT_REUSE_TFI)) && + tbf->direction == new_tbf->direction) tbf_free(tbf); osmo_fsm_inst_dispatch(new_tbf->state_fi, TBF_EV_ASSIGN_ACK_PACCH, NULL);
View file
osmo-pcu_1.2.0.117.8c52.tar.xz/src/tbf_dl_fsm.c -> osmo-pcu_1.2.0.118.40a2.tar.xz/src/tbf_dl_fsm.c
Changed
@@ -34,7 +34,8 @@ TBF_ST_ASSIGN = {}, TBF_ST_FLOW = {}, TBF_ST_FINISHED = {}, - TBF_ST_WAIT_RELEASE = { .T = 3193 }, + TBF_ST_WAIT_RELEASE = { .T = 3192 }, + TBF_ST_WAIT_REUSE_TFI = { /* .T = 3193 set manually onenter subtracting T3192 */ }, TBF_ST_RELEASING = { .T = 3195 }, }; @@ -243,8 +244,9 @@ break; case TBF_EV_FINAL_ACK_RECVD: /* We received Final Ack (DL ACK/NACK) from MS. move to - * WAIT_RELEASE, we wait there for release or re-use the TBF in - * case we receive more DL data to tx */ + * WAIT_RELEASE, where MS stays monitoring PDCH over T3192 span, + * where we can use this DL TBF to assign a new one in case we + * receive more DL data to Tx */ tbf_dl_fsm_state_chg(fi, TBF_ST_WAIT_RELEASE); break; case TBF_EV_MAX_N3105: @@ -259,6 +261,14 @@ { struct tbf_dl_fsm_ctx *ctx = (struct tbf_dl_fsm_ctx *)fi->priv; + /* T3192 is running on the MS and has also been armed by this FSM now. + * During that time, it is possible to reach the MS over PACCH to assign + * new DL TBF. + * Upon T3192 expiration, FSM will transition to TBF_ST_WAIT_REUSE_TFI + * for some more time (T3193 - T3192) until internally freeing the TBF + * object, at which time the resources can be reused. + */ + mod_ass_type(ctx, GPRS_RLCMAC_FLAG_CCCH, false); } @@ -266,10 +276,41 @@ { switch (event) { case TBF_EV_FINAL_ACK_RECVD: - /* ignore, duplicate ACK, we already know about since we are in WAIT_RELEASE */ + /* ignore, duplicate ACK, we already know about since we left ST_FINISHED */ break; - case TBF_EV_MAX_N3105: - tbf_dl_fsm_state_chg(fi, TBF_ST_RELEASING); + default: + OSMO_ASSERT(0); + } +} + +static void st_wait_reuse_tfi_on_enter(struct osmo_fsm_inst *fi, uint32_t prev_state) +{ + struct tbf_dl_fsm_ctx *ctx = (struct tbf_dl_fsm_ctx *)fi->priv; + struct GprsMs *ms = tbf_ms(ctx->tbf); + unsigned long t3192, t3193, res; + + /* T3192 has expired, so the MS is not listening on that PACCH anymore. + * Still, wait until remaining of T3193 expiration (>T3192) to internally + * free the TBF, at which point the TFI and other allocated resources + * will be freed and can then be reused. + */ + + t3192 = osmo_tdef_get(ms->bts->T_defs_bts, 3192, OSMO_TDEF_MS, -1); + t3193 = osmo_tdef_get(ms->bts->T_defs_bts, 3193, OSMO_TDEF_MS, -1); + /* As per spec T3193 shall be greater than T3192, but let's be safe against wrong configs: */ + res = (t3193 >= t3192) ? (t3193 - t3192) : 0; + fi->T = 3193; + LOGPTBF(ctx->tbf, LOGL_DEBUG, "Waiting %lu sec. %lu microsec (T3193 - T3192) REUSE TFI\n", + res / 1000, (res % 1000) * 1000); + osmo_timer_schedule(&fi->timer, res / 1000, (res % 1000) * 1000); +} + +static void st_wait_reuse_tfi(struct osmo_fsm_inst *fi, uint32_t event, void *data) +{ + /* Simply wait for T3193 timeout, it will tbf_free() */ + switch (event) { + case TBF_EV_FINAL_ACK_RECVD: + /* ignore, duplicate ACK, we already know about since we left ST_FINISHED */ break; default: OSMO_ASSERT(0); @@ -334,6 +375,9 @@ case -2002: handle_timeout_X2002(fi); break; + case 3192: + tbf_dl_fsm_state_chg(fi, TBF_ST_WAIT_REUSE_TFI); + break; case -2001: LOGPTBFDL(ctx->dl_tbf, LOGL_NOTICE, "releasing due to PACCH assignment timeout.\n"); /* fall-through */ @@ -401,11 +445,21 @@ X(TBF_EV_FINAL_ACK_RECVD) | X(TBF_EV_MAX_N3105), .out_state_mask = + X(TBF_ST_WAIT_REUSE_TFI) | X(TBF_ST_RELEASING), .name = "WAIT_RELEASE", .action = st_wait_release, .onenter = st_wait_release_on_enter, }, + TBF_ST_WAIT_REUSE_TFI = { + .in_event_mask = + X(TBF_EV_FINAL_ACK_RECVD), + .out_state_mask = + X(TBF_ST_RELEASING), + .name = "WAIT_REUSE_TFI", + .action = st_wait_reuse_tfi, + .onenter = st_wait_reuse_tfi_on_enter, + }, TBF_ST_RELEASING = { .in_event_mask = X(TBF_EV_DL_ACKNACK_MISS),
View file
osmo-pcu_1.2.0.117.8c52.tar.xz/src/tbf_fsm.h -> osmo-pcu_1.2.0.118.40a2.tar.xz/src/tbf_fsm.h
Changed
@@ -52,7 +52,8 @@ TBF_ST_ASSIGN, /* wait for downlink assignment */ TBF_ST_FLOW, /* RLC/MAC flow, resource needed */ TBF_ST_FINISHED, /* flow finished, wait for release */ - TBF_ST_WAIT_RELEASE,/* DL TBF: wait for release or restart */ + TBF_ST_WAIT_RELEASE, /* DL TBF: wait for release or restart */ + TBF_ST_WAIT_REUSE_TFI, /* DL TBF: wait to reuse TFI after last PKT ACK/NACK */ TBF_ST_RELEASING, /* releasing, wait to free TFI/USF */ };
View file
osmo-pcu_1.2.0.117.8c52.tar.xz/tests/tbf/TbfTest.err -> osmo-pcu_1.2.0.118.40a2.tar.xz/tests/tbf/TbfTest.err
Changed
@@ -295,7 +295,7 @@ DL_TBF(DL:TFI-0-0-0:G){FINISHED}: state_chg to WAIT_RELEASE TBF(DL:TFI-0-0-0:G:TLLI-0xffeeddcc){WAIT_RELEASE} unset ass. type CCCH prev CCCH:1, PACCH:0 MS(TLLI-0xffeeddcc:TA-0:MSCLS-45-0:DL) appending 200 bytes to DL LLC queue -TBF(DL:TFI-0-0-0:G:TLLI-0xffeeddcc){WAIT_RELEASE} in WAIT RELEASE state (T3193), so reuse TBF +TBF(DL:TFI-0-0-0:G:TLLI-0xffeeddcc){WAIT_RELEASE} in WAIT RELEASE state (T3192), so reuse TBF DL algo A <multi> (suggested TRX: 0): Alloc start - Skipping TS 0, because not enabled - Skipping TS 1, because not enabled @@ -573,7 +573,7 @@ DL_TBF(DL:TFI-0-0-0:G){FINISHED}: state_chg to WAIT_RELEASE TBF(DL:TFI-0-0-0:G:TLLI-0xffeeddcc){WAIT_RELEASE} unset ass. type CCCH prev CCCH:1, PACCH:0 MS(TLLI-0xffeeddcc:TA-0:MSCLS-45-0:DL) appending 200 bytes to DL LLC queue -TBF(DL:TFI-0-0-0:G:TLLI-0xffeeddcc){WAIT_RELEASE} in WAIT RELEASE state (T3193), so reuse TBF +TBF(DL:TFI-0-0-0:G:TLLI-0xffeeddcc){WAIT_RELEASE} in WAIT RELEASE state (T3192), so reuse TBF DL algo A <multi> (suggested TRX: 0): Alloc start - Skipping TS 0, because not enabled - Skipping TS 1, because not enabled
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.