aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPau Espin Pedrol <pespin@sysmocom.de>2023-06-19 13:58:45 +0200
committerpespin <pespin@sysmocom.de>2023-06-20 09:27:10 +0000
commited94d4cbfa244314136fd72af51eeee8bb5ee744 (patch)
tree70259174d4694c91a84f469ca3ae60f0026e0cc3 /src
parentac1495e7be0d287dbd476c0acbd541c6c70ed713 (diff)
Store T3192 value received from SI13, do some sanity checks
Timer T3192 may be used in the future to know wheter a DL TBF assignment can be sent on PACCH after the last DL TBF has finished (final ACK). Change-Id: Ie5f6251ee773f56771f9a9507711a20e6282aac6
Diffstat (limited to 'src')
-rw-r--r--src/bts.cpp1
-rw-r--r--src/pcu_l1_if.cpp7
2 files changed, 7 insertions, 1 deletions
diff --git a/src/bts.cpp b/src/bts.cpp
index 2dbccdac..177544af 100644
--- a/src/bts.cpp
+++ b/src/bts.cpp
@@ -80,6 +80,7 @@ static struct osmo_tdef T_defs_bts[] = {
{ .T=3168, .default_val=4000, .unit=OSMO_TDEF_MS, .desc="Time MS waits for PACKET UPLINK ACK when establishing a UL TBF", .val=0 },
{ .T=3169, .default_val=5, .unit=OSMO_TDEF_S, .desc="Reuse of USF and TFI(s) after the MS uplink TBF assignment is invalid", .val=0 },
{ .T=3191, .default_val=5, .unit=OSMO_TDEF_S, .desc="Reuse of TFI(s) after sending (1) last RLC Data Block on TBF(s), or (2) PACKET TBF RELEASE for an MBMS radio bearer", .val=0 },
+ { .T=3192, .default_val=1500, .unit=OSMO_TDEF_MS, .desc="Time MS stays monitoring the PDCH after transmitting DL ACK/NACK for last DL block (FBI=1). Configured at the BSC (SI13).", .val=0 },
{ .T=3193, .default_val=1600, .unit=OSMO_TDEF_MS, .desc="Reuse of TFI(s) after reception of final PACKET DOWNLINK ACK/NACK from MS for TBF", .val=0 },
{ .T=3195, .default_val=5, .unit=OSMO_TDEF_S, .desc="Reuse of TFI(s) upon no response from the MS (radio failure or cell change) for TBF/MBMS radio bearer", .val=0 },
{ .T = -16, .default_val = 1000, .unit = OSMO_TDEF_MS,
diff --git a/src/pcu_l1_if.cpp b/src/pcu_l1_if.cpp
index 686853c4..a2569624 100644
--- a/src/pcu_l1_if.cpp
+++ b/src/pcu_l1_if.cpp
@@ -436,8 +436,13 @@ static int pcu_rx_data_ind_bcch(struct gprs_rlcmac_bts *bts, uint8_t *data, uint
si_ro = ((struct gsm48_system_information_type_13*)data)->rest_octets;
if (osmo_gsm48_rest_octets_si13_decode(&bts->si13_ro_decoded, si_ro) < 0)
LOGP(DPCU, LOGL_ERROR, "Error decoding SI13\n");
- /* Update our cached T3168 from it: */
+ /* Update our cached timers from it: */
osmo_tdef_set(bts->T_defs_bts, 3168, bts->si13_ro_decoded.cell_opts.t3168, OSMO_TDEF_MS);
+ osmo_tdef_set(bts->T_defs_bts, 3192, bts->si13_ro_decoded.cell_opts.t3192, OSMO_TDEF_MS);
+ /* Some sanity checks: */
+ if (bts->si13_ro_decoded.cell_opts.t3192 >=
+ osmo_tdef_get(bts->T_defs_bts, 3193, OSMO_TDEF_MS, -1))
+ LOGP(DL1IF, LOGL_ERROR, "Timers incorrectly configured! T3192 >= T3193\n");
break;
default:
LOGP(DL1IF, LOGL_ERROR,