Change in ...osmo-pcu[master]: Use osmo_tdef to implement dl-tbf-idle-time

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.

pespin gerrit-no-reply at lists.osmocom.org
Tue Sep 17 11:17:57 UTC 2019


pespin has submitted this change and it was merged. ( https://gerrit.osmocom.org/c/osmo-pcu/+/15454 )

Change subject: Use osmo_tdef to implement dl-tbf-idle-time
......................................................................

Use osmo_tdef to implement dl-tbf-idle-time

Change-Id: I5e4f0d2f90e643600b7752525d6c2830856c9d3b
---
M src/bts.cpp
M src/bts.h
M src/gprs_rlcmac_sched.cpp
M src/pcu_main.cpp
M src/pcu_vty.c
M src/tbf_dl.cpp
M tests/tbf/TbfTest.cpp
7 files changed, 27 insertions(+), 21 deletions(-)

Approvals:
  Jenkins Builder: Verified
  osmith: Looks good to me, but someone else must approve
  pespin: Looks good to me, approved



diff --git a/src/bts.cpp b/src/bts.cpp
index 2423400..a8760ae 100644
--- a/src/bts.cpp
+++ b/src/bts.cpp
@@ -84,6 +84,7 @@
 	{ .T=-2001, .default_val=2,   .unit=OSMO_TDEF_S,  .desc="PACCH assignment timer (s)",               .val=0 },
 	{ .T=-2002, .default_val=200, .unit=OSMO_TDEF_MS, .desc="Waiting after IMM.ASS confirm timer (ms)", .val=0 },
 	{ .T=-2030, .default_val=60,  .unit=OSMO_TDEF_S,  .desc="Time to keep an idle MS object alive (s)", .val=0 }, /* slightly above T3314 (default 44s, 24.008, 11.2.2) */
+	{ .T=-2031, .default_val=2000, .unit=OSMO_TDEF_MS, .desc="Time to keep an idle DL TBF alive (ms)",  .val=0 },
 	{ .T=0, .default_val=0, .unit=OSMO_TDEF_S, .desc=NULL, .val=0 } /* empty item at the end */
 };
 
diff --git a/src/bts.h b/src/bts.h
index 5f25d02..fab9bcb 100644
--- a/src/bts.h
+++ b/src/bts.h
@@ -133,7 +133,6 @@
 	uint8_t force_two_phase;
 	uint8_t alpha, gamma;
 	uint8_t egprs_enabled;
-	uint32_t dl_tbf_idle_msec; /* hold time for idle DL TBFs */
 	bool dl_tbf_preemptive_retransmission;
 	uint8_t si13[GSM_MACBLOCK_LEN];
 	bool si13_is_set;
diff --git a/src/gprs_rlcmac_sched.cpp b/src/gprs_rlcmac_sched.cpp
index da54d9f..e16cf39 100644
--- a/src/gprs_rlcmac_sched.cpp
+++ b/src/gprs_rlcmac_sched.cpp
@@ -247,9 +247,10 @@
 						    uint8_t ts, uint32_t fn, int age)
 {
 	const gprs_rlc_dl_window *w = tbf->window();
-	unsigned long msecs = osmo_tdef_get(bts->T_defs_pcu, 3190, OSMO_TDEF_MS, -1);
+	unsigned long msecs_t3190 = osmo_tdef_get(bts->T_defs_pcu, 3190, OSMO_TDEF_MS, -1);
+	unsigned long dl_tbf_idle_msec = osmo_tdef_get(bts->T_defs_pcu, -2031, OSMO_TDEF_MS, -1);
 	int age_thresh1 = msecs_to_frames(200);
-	int age_thresh2 = msecs_to_frames(OSMO_MIN(msecs/2, bts->dl_tbf_idle_msec));
+	int age_thresh2 = msecs_to_frames(OSMO_MIN(msecs_t3190/2, dl_tbf_idle_msec));
 
 	if (tbf->is_control_ts(ts) && tbf->need_control_ts())
 		return DL_PRIO_CONTROL;
diff --git a/src/pcu_main.cpp b/src/pcu_main.cpp
index e423718..9b1319c 100644
--- a/src/pcu_main.cpp
+++ b/src/pcu_main.cpp
@@ -252,7 +252,6 @@
 	bts->ws_pdch = 0;
 
 	bts->llc_codel_interval_msec = LLC_CODEL_USE_DEFAULT;
-	bts->dl_tbf_idle_msec = 2000;
 	bts->llc_idle_ack_csec = 10;
 
 	/*
diff --git a/src/pcu_vty.c b/src/pcu_vty.c
index 477486c..6592cae 100644
--- a/src/pcu_vty.c
+++ b/src/pcu_vty.c
@@ -253,9 +253,6 @@
 		vty_out(vty, " two-phase-access%s", VTY_NEWLINE);
 	vty_out(vty, " alpha %d%s", bts->alpha, VTY_NEWLINE);
 	vty_out(vty, " gamma %d%s", bts->gamma * 2, VTY_NEWLINE);
-	if (bts->dl_tbf_idle_msec)
-		vty_out(vty, " dl-tbf-idle-time %d%s", bts->dl_tbf_idle_msec,
-			VTY_NEWLINE);
 	if (!bts->dl_tbf_preemptive_retransmission)
 		vty_out(vty, " no dl-tbf-preemptive-retransmission%s", VTY_NEWLINE);
 	if (strcmp(bts->pcu_sock_path, PCU_SOCK_DEFAULT))
@@ -850,27 +847,31 @@
 }
 
 #define IDLE_TIME_STR "keep an idle DL TBF alive for the time given\n"
-DEFUN(cfg_pcu_dl_tbf_idle_time,
+DEFUN_DEPRECATED(cfg_pcu_dl_tbf_idle_time,
       cfg_pcu_dl_tbf_idle_time_cmd,
       "dl-tbf-idle-time <1-5000>",
       IDLE_TIME_STR "idle time in msec")
 {
+	vty_out(vty, "%% 'dl-tbf-idle-time' is now deprecated: use 'timer X2031 <val>' instead%s", VTY_NEWLINE);
+
 	struct gprs_rlcmac_bts *bts = bts_main_data();
 
-	bts->dl_tbf_idle_msec = atoi(argv[0]);
-
+	if (osmo_tdef_set(bts->T_defs_pcu, -2031, atoi(argv[0]), OSMO_TDEF_MS) < 0)
+		return CMD_WARNING;
 	return CMD_SUCCESS;
 }
 
-DEFUN(cfg_pcu_no_dl_tbf_idle_time,
+DEFUN_DEPRECATED(cfg_pcu_no_dl_tbf_idle_time,
       cfg_pcu_no_dl_tbf_idle_time_cmd,
       "no dl-tbf-idle-time",
       NO_STR IDLE_TIME_STR)
 {
+	vty_out(vty, "%% 'no dl-tbf-idle-time' is now deprecated: use 'timer X2031 0' instead%s", VTY_NEWLINE);
+
 	struct gprs_rlcmac_bts *bts = bts_main_data();
 
-	bts->dl_tbf_idle_msec = 0;
-
+	if (osmo_tdef_set(bts->T_defs_pcu, -2031, 0, OSMO_TDEF_MS) < 0)
+		return CMD_WARNING;
 	return CMD_SUCCESS;
 }
 
diff --git a/src/tbf_dl.cpp b/src/tbf_dl.cpp
index 37bd3ee..12c098a 100644
--- a/src/tbf_dl.cpp
+++ b/src/tbf_dl.cpp
@@ -1235,11 +1235,13 @@
 bool gprs_rlcmac_dl_tbf::keep_open(unsigned fn) const
 {
 	int keep_time_frames;
+	unsigned long dl_tbf_idle_msec;
 
-	if (bts_data()->dl_tbf_idle_msec == 0)
+	dl_tbf_idle_msec = osmo_tdef_get(bts_data()->T_defs_pcu, -2031, OSMO_TDEF_MS, -1);
+	if (dl_tbf_idle_msec == 0)
 		return false;
 
-	keep_time_frames = msecs_to_frames(bts_data()->dl_tbf_idle_msec);
+	keep_time_frames = msecs_to_frames(dl_tbf_idle_msec);
 	return frames_since_last_drain(fn) <= keep_time_frames;
 }
 
diff --git a/tests/tbf/TbfTest.cpp b/tests/tbf/TbfTest.cpp
index 7241a35..2036023 100644
--- a/tests/tbf/TbfTest.cpp
+++ b/tests/tbf/TbfTest.cpp
@@ -156,6 +156,7 @@
 	bts->initial_cs_dl = cs;
 	bts->initial_cs_ul = cs;
 	osmo_tdef_set(bts->T_defs_pcu, -2030, 0, OSMO_TDEF_S);
+	osmo_tdef_set(bts->T_defs_pcu, -2031, 0, OSMO_TDEF_S);
 	trx = &bts->trx[0];
 
 	trx->pdch[ts_no].enable();
@@ -318,6 +319,7 @@
 	uint32_t fn = 0;
 	uint8_t trx_no;
 	uint32_t tlli = 0xffeeddcc;
+	unsigned long dl_tbf_idle_msec;
 
 	uint8_t rbb[64/8];
 
@@ -328,7 +330,7 @@
 	bts = the_bts.bts_data();
 
 	setup_bts(&the_bts, ts_no);
-	bts->dl_tbf_idle_msec = 200;
+	OSMO_ASSERT(osmo_tdef_set(bts->T_defs_pcu, -2031, 200, OSMO_TDEF_MS) == 0);
 
 	dl_tbf = create_dl_tbf(&the_bts, ms_class, 0, &trx_no);
 	dl_tbf->update_ms(tlli, GPRS_RLCMAC_DL_TBF);
@@ -362,7 +364,8 @@
 	RCV_ACK(false, dl_tbf, rbb); /* Receive an ACK */
 
 	/* Timeout (make sure fn % 52 remains valid) */
-	fn += 52 * ((msecs_to_frames(bts->dl_tbf_idle_msec + 100) + 51)/ 52);
+	dl_tbf_idle_msec = osmo_tdef_get(bts->T_defs_pcu, -2031, OSMO_TDEF_MS, -1);
+	fn += 52 * ((msecs_to_frames(dl_tbf_idle_msec + 100) + 51)/ 52);
 	request_dl_rlc_block(dl_tbf, &fn);
 
 	OSMO_ASSERT(dl_tbf->state_is(GPRS_RLCMAC_FINISHED));
@@ -2529,7 +2532,7 @@
 	bts = the_bts.bts_data();
 
 	setup_bts(&the_bts, ts_no);
-	bts->dl_tbf_idle_msec = 200;
+	OSMO_ASSERT(osmo_tdef_set(bts->T_defs_pcu, -2031, 200, OSMO_TDEF_MS) == 0);
 	bts->egprs_enabled = 1;
 	/* ARQ II */
 	bts->dl_arq_type = EGPRS_ARQ2;
@@ -3064,7 +3067,7 @@
 	bts = the_bts.bts_data();
 	bts->cs_downgrade_threshold = 0;
 	setup_bts(&the_bts, ts_no);
-	bts->dl_tbf_idle_msec = 200;
+	OSMO_ASSERT(osmo_tdef_set(bts->T_defs_pcu, -2031, 200, OSMO_TDEF_MS) == 0);
 	bts->egprs_enabled = 1;
 	/* ARQ II */
 	bts->dl_arq_type = EGPRS_ARQ2;
@@ -3093,7 +3096,7 @@
 	bts = the_bts.bts_data();
 	bts->cs_downgrade_threshold = 0;
 	setup_bts(&the_bts, ts_no);
-	bts->dl_tbf_idle_msec = 200;
+	OSMO_ASSERT(osmo_tdef_set(bts->T_defs_pcu, -2031, 200, OSMO_TDEF_MS) == 0);
 	bts->egprs_enabled = 1;
 
 	/* ARQ I resegmentation support */
@@ -3125,7 +3128,7 @@
 	bts = the_bts.bts_data();
 
 	setup_bts(&the_bts, ts_no);
-	bts->dl_tbf_idle_msec = 200;
+	OSMO_ASSERT(osmo_tdef_set(bts->T_defs_pcu, -2031, 200, OSMO_TDEF_MS) == 0);
 	bts->egprs_enabled = 1;
 	/* ARQ II */
 	bts->dl_arq_type = EGPRS_ARQ2;

-- 
To view, visit https://gerrit.osmocom.org/c/osmo-pcu/+/15454
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-pcu
Gerrit-Branch: master
Gerrit-Change-Id: I5e4f0d2f90e643600b7752525d6c2830856c9d3b
Gerrit-Change-Number: 15454
Gerrit-PatchSet: 5
Gerrit-Owner: pespin <pespin at sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <laforge at gnumonks.org>
Gerrit-Reviewer: osmith <osmith at sysmocom.de>
Gerrit-Reviewer: pespin <pespin at sysmocom.de>
Gerrit-MessageType: merged
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20190917/4f4822cd/attachment.htm>


More information about the gerrit-log mailing list