Change in osmo-bts[master]: WIP: TA loop: Take into account UL SACCH 'Actual Timing advance' field

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
Mon Sep 6 17:20:38 UTC 2021


pespin has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-bts/+/25386 )


Change subject: WIP: TA loop: Take into account UL SACCH 'Actual Timing advance' field
......................................................................

WIP: TA loop: Take into account UL SACCH 'Actual Timing advance' field

First step improving and reworking TA loop:
* Move trigger of the loop to similar place done by BS/MS Power Control
  Loop, that is, upon receivial of UL SACCH block, which contains
information about the TA used to transmit the block encode in L1SACCH
Header. Hence, from computed received TOA and TA used when transmitting
from the MS, we can infer the desired TA to be used by the MS, which
will send back to it later during DL SACCH block.

This new method also permits changing TA quicker, since we have more
confidence that the TA we request is aligned with the one used to
transmit, and we don't simply increment/decrement based on the value we
request to transmit.

Related: SYS#5371
Change-Id: I2d0f128c8dcac93ee382283a1c91fca76623b8fc
---
M include/osmo-bts/ta_control.h
M src/common/l1sap.c
M src/common/measurement.c
M src/common/ta_control.c
M tests/ta_control/ta_control_test.c
M tests/ta_control/ta_control_test.ok
6 files changed, 291 insertions(+), 258 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/osmo-bts refs/changes/86/25386/1

diff --git a/include/osmo-bts/ta_control.h b/include/osmo-bts/ta_control.h
index 168f14a..bf99331 100644
--- a/include/osmo-bts/ta_control.h
+++ b/include/osmo-bts/ta_control.h
@@ -2,4 +2,4 @@
 
 #include <osmo-bts/gsm_data.h>
 
-void lchan_ms_ta_ctrl(struct gsm_lchan *lchan);
+void lchan_ms_ta_ctrl(struct gsm_lchan *lchan, uint8_t ms_tx_ta, int16_t toa256);
diff --git a/src/common/l1sap.c b/src/common/l1sap.c
index e9d58ce..c2c651a 100644
--- a/src/common/l1sap.c
+++ b/src/common/l1sap.c
@@ -53,6 +53,7 @@
 #include <osmo-bts/bts_model.h>
 #include <osmo-bts/handover.h>
 #include <osmo-bts/power_control.h>
+#include <osmo-bts/ta_control.h>
 #include <osmo-bts/msg_utils.h>
 #include <osmo-bts/pcuif_proto.h>
 #include <osmo-bts/cbch.h>
@@ -1632,6 +1633,7 @@
 		lchan->meas.l1_info.ta = l1_hdr->ta;
 		lchan->meas.flags |= LC_UL_M_F_L1_VALID;
 
+		lchan_ms_ta_ctrl(lchan, l1_hdr->ta, data_ind->ta_offs_256bits);
 		lchan_ms_pwr_ctrl(lchan, l1_hdr->ms_pwr, data_ind->rssi, data_ind->lqual_cb);
 		lchan_bs_pwr_ctrl(lchan, (const struct gsm48_hdr *) &data[5]);
 	} else
diff --git a/src/common/measurement.c b/src/common/measurement.c
index 4c49dc9..a4cc668 100644
--- a/src/common/measurement.c
+++ b/src/common/measurement.c
@@ -10,7 +10,6 @@
 #include <osmo-bts/measurement.h>
 #include <osmo-bts/scheduler.h>
 #include <osmo-bts/rsl.h>
-#include <osmo-bts/ta_control.h>
 
 /* Tables as per TS 45.008 Section 8.3 */
 static const uint8_t ts45008_83_tch_f[] = { 52, 53, 54, 55, 56, 57, 58, 59 };
@@ -739,11 +738,6 @@
 
 	lchan_meas_compute_extended(lchan);
 
-	/* Compute new ta_req value. This has to be done here since the value
-	 * in lchan->meas.num_ul_meas together with lchan->meas.ms_toa256
-	 * is needed for the computation. */
-	lchan_ms_ta_ctrl(lchan);
-
 	lchan->meas.num_ul_meas = 0;
 
 	/* return 1 to indicate that the computation has been done and the next
diff --git a/src/common/ta_control.c b/src/common/ta_control.c
index ccb60e2..a89c1a6 100644
--- a/src/common/ta_control.c
+++ b/src/common/ta_control.c
@@ -29,22 +29,63 @@
 #define TA_MIN 0
 #define TA_MAX 63
 
-void lchan_ms_ta_ctrl(struct gsm_lchan *lchan)
-{
-	int16_t toa256 = lchan->meas.ms_toa256;
+//TODO: make configurable over osmo-bts VTY? Pass it BSC->BTS?
+#define TA_MAX_INC_STEP 2
+#define TA_MAX_DEC_STEP 2
 
-	if (toa256 < -TOA256_9OPERCENT && lchan->rqd_ta > TA_MIN) {
-		LOGPLCHAN(lchan, DLOOP, LOGL_INFO,
-			  "TOA is too early (%d), now lowering TA from %d to %d\n",
-			  toa256, lchan->rqd_ta, lchan->rqd_ta - 1);
-		lchan->rqd_ta--;
-	} else if (toa256 > TOA256_9OPERCENT && lchan->rqd_ta < TA_MAX) {
-		LOGPLCHAN(lchan, DLOOP, LOGL_INFO,
-			  "TOA is too late (%d), now raising TA from %d to %d\n",
-			  toa256, lchan->rqd_ta, lchan->rqd_ta + 1);
-		lchan->rqd_ta++;
-	} else
+
+/*! compute the new "Ordered Timing Advance" communicated to the MS and store it in lchan.
+ * \param lchan logical channel for which to compute (and in which to store) new power value.
+ * \param[in] ms_tx_ta The TA used by the MS and reported in L1SACCH, see struct gsm_sacch_l1_hdr field "ta".
+ * \param[in] toa256 Timing advance offset (in 1/256th bits) computed at Rx side
+ */
+void lchan_ms_ta_ctrl(struct gsm_lchan *lchan, uint8_t ms_tx_ta, int16_t toa256)
+{
+	int16_t new_ta;
+	/* Shall we skip current block based on configured interval? */
+	//TODO: implement P_CON_INTERVAL for TA loop
+
+
+	//TODO: we could do averaging as per some config nsomewhere?
+
+	//TODO: Ad
+	int16_t delta_ta = toa256/256;
+	if (toa256 >= 0) {
+		if ((toa256 - (256 * delta_ta)) > TOA256_9OPERCENT)
+			delta_ta++;
+		if (delta_ta > TA_MAX_INC_STEP)
+			delta_ta = TA_MAX_INC_STEP;
+	} else {
+		if ((toa256 - (256 * delta_ta)) < -TOA256_9OPERCENT)
+			delta_ta--;
+		if (delta_ta < TA_MAX_DEC_STEP)
+			delta_ta = TA_MAX_DEC_STEP;
+	}
+
+	new_ta = ms_tx_ta + delta_ta;
+
+	/* Make sure new_ta is never negative: */
+	if (new_ta < TA_MIN)
+		new_ta = TA_MIN;
+
+	/* Don't ask for out of range TA: */
+	if (new_ta > TA_MAX)
+		new_ta = TA_MAX;
+
+	if (lchan->rqd_ta == (uint8_t)new_ta) {
 		LOGPLCHAN(lchan, DLOOP, LOGL_DEBUG,
-			  "TOA is correct (%d), keeping current TA of %d\n",
-			  toa256, lchan->rqd_ta);
+			  "Keeping current TA at %u: TOA was %d\n",
+			  lchan->rqd_ta, toa256);
+		return;
+	}
+
+	LOGPLCHAN(lchan, DLOOP, LOGL_INFO,
+		  "%s TA %u => %u: TOA was too %s (%d)\n",
+		  (uint8_t)new_ta > lchan->rqd_ta ? "Raising" : "Lowering",
+		  lchan->rqd_ta, (uint8_t)new_ta,
+		  (uint8_t)new_ta > lchan->rqd_ta ? "late" : "early",
+		  toa256);
+
+	/* store the resulting new TA in the lchan */
+	lchan->rqd_ta = (uint8_t)new_ta;
 }
diff --git a/tests/ta_control/ta_control_test.c b/tests/ta_control/ta_control_test.c
index 2e981b3..12305cb 100644
--- a/tests/ta_control/ta_control_test.c
+++ b/tests/ta_control/ta_control_test.c
@@ -35,9 +35,6 @@
 	uint8_t rqd_ta_before;
 	int16_t toa256 = toa256_start;
 
-	/* Arbitrary value, high enough so that a computation can happen. */
-	lchan.meas.num_ul_meas = 10;
-
 	printf("toa256_start = %u / 256 = %u, steps = %u\n", toa256_start,
 	       toa256_start / 256, steps);
 
@@ -49,8 +46,7 @@
 
 		rqd_ta_before = lchan.rqd_ta;
 
-		lchan.meas.ms_toa256 = toa256;
-		lchan_ms_ta_ctrl(&lchan);
+		lchan_ms_ta_ctrl(&lchan, rqd_ta_before, toa256);
 
 		rqd_ta_after = lchan.rqd_ta;
 		toa256 -= (rqd_ta_after - rqd_ta_before) * 256;
diff --git a/tests/ta_control/ta_control_test.ok b/tests/ta_control/ta_control_test.ok
index 8ebe5d5..79de8ad 100644
--- a/tests/ta_control/ta_control_test.ok
+++ b/tests/ta_control/ta_control_test.ok
@@ -2,81 +2,81 @@
 Step #0
   lchan.rqd_ta (before) = 0
   toa256 (before) = 4096 / 256 = 16
-  lchan.rqd_ta (after) = 1
-  toa256 (after) = 3840 / 256 = 15
-Step #1
-  lchan.rqd_ta (before) = 1
-  toa256 (before) = 3840 / 256 = 15
   lchan.rqd_ta (after) = 2
   toa256 (after) = 3584 / 256 = 14
-Step #2
+Step #1
   lchan.rqd_ta (before) = 2
   toa256 (before) = 3584 / 256 = 14
-  lchan.rqd_ta (after) = 3
-  toa256 (after) = 3328 / 256 = 13
-Step #3
-  lchan.rqd_ta (before) = 3
-  toa256 (before) = 3328 / 256 = 13
   lchan.rqd_ta (after) = 4
   toa256 (after) = 3072 / 256 = 12
-Step #4
+Step #2
   lchan.rqd_ta (before) = 4
   toa256 (before) = 3072 / 256 = 12
-  lchan.rqd_ta (after) = 5
-  toa256 (after) = 2816 / 256 = 11
-Step #5
-  lchan.rqd_ta (before) = 5
-  toa256 (before) = 2816 / 256 = 11
   lchan.rqd_ta (after) = 6
   toa256 (after) = 2560 / 256 = 10
-Step #6
+Step #3
   lchan.rqd_ta (before) = 6
   toa256 (before) = 2560 / 256 = 10
-  lchan.rqd_ta (after) = 7
-  toa256 (after) = 2304 / 256 = 9
-Step #7
-  lchan.rqd_ta (before) = 7
-  toa256 (before) = 2304 / 256 = 9
   lchan.rqd_ta (after) = 8
   toa256 (after) = 2048 / 256 = 8
-Step #8
+Step #4
   lchan.rqd_ta (before) = 8
   toa256 (before) = 2048 / 256 = 8
-  lchan.rqd_ta (after) = 9
-  toa256 (after) = 1792 / 256 = 7
-Step #9
-  lchan.rqd_ta (before) = 9
-  toa256 (before) = 1792 / 256 = 7
   lchan.rqd_ta (after) = 10
   toa256 (after) = 1536 / 256 = 6
-Step #10
+Step #5
   lchan.rqd_ta (before) = 10
   toa256 (before) = 1536 / 256 = 6
-  lchan.rqd_ta (after) = 11
-  toa256 (after) = 1280 / 256 = 5
-Step #11
-  lchan.rqd_ta (before) = 11
-  toa256 (before) = 1280 / 256 = 5
   lchan.rqd_ta (after) = 12
   toa256 (after) = 1024 / 256 = 4
-Step #12
+Step #6
   lchan.rqd_ta (before) = 12
   toa256 (before) = 1024 / 256 = 4
-  lchan.rqd_ta (after) = 13
-  toa256 (after) = 768 / 256 = 3
-Step #13
-  lchan.rqd_ta (before) = 13
-  toa256 (before) = 768 / 256 = 3
   lchan.rqd_ta (after) = 14
   toa256 (after) = 512 / 256 = 2
-Step #14
+Step #7
   lchan.rqd_ta (before) = 14
   toa256 (before) = 512 / 256 = 2
-  lchan.rqd_ta (after) = 15
-  toa256 (after) = 256 / 256 = 1
+  lchan.rqd_ta (after) = 16
+  toa256 (after) = 0 / 256 = 0
+Step #8
+  lchan.rqd_ta (before) = 16
+  toa256 (before) = 0 / 256 = 0
+  lchan.rqd_ta (after) = 16
+  toa256 (after) = 0 / 256 = 0
+Step #9
+  lchan.rqd_ta (before) = 16
+  toa256 (before) = 0 / 256 = 0
+  lchan.rqd_ta (after) = 16
+  toa256 (after) = 0 / 256 = 0
+Step #10
+  lchan.rqd_ta (before) = 16
+  toa256 (before) = 0 / 256 = 0
+  lchan.rqd_ta (after) = 16
+  toa256 (after) = 0 / 256 = 0
+Step #11
+  lchan.rqd_ta (before) = 16
+  toa256 (before) = 0 / 256 = 0
+  lchan.rqd_ta (after) = 16
+  toa256 (after) = 0 / 256 = 0
+Step #12
+  lchan.rqd_ta (before) = 16
+  toa256 (before) = 0 / 256 = 0
+  lchan.rqd_ta (after) = 16
+  toa256 (after) = 0 / 256 = 0
+Step #13
+  lchan.rqd_ta (before) = 16
+  toa256 (before) = 0 / 256 = 0
+  lchan.rqd_ta (after) = 16
+  toa256 (after) = 0 / 256 = 0
+Step #14
+  lchan.rqd_ta (before) = 16
+  toa256 (before) = 0 / 256 = 0
+  lchan.rqd_ta (after) = 16
+  toa256 (after) = 0 / 256 = 0
 Step #15
-  lchan.rqd_ta (before) = 15
-  toa256 (before) = 256 / 256 = 1
+  lchan.rqd_ta (before) = 16
+  toa256 (before) = 0 / 256 = 0
   lchan.rqd_ta (after) = 16
   toa256 (after) = 0 / 256 = 0
 Step #16
@@ -105,78 +105,78 @@
 Step #0
   lchan.rqd_ta (before) = 0
   toa256 (before) = 4000 / 256 = 15
-  lchan.rqd_ta (after) = 1
-  toa256 (after) = 3744 / 256 = 14
-Step #1
-  lchan.rqd_ta (before) = 1
-  toa256 (before) = 3744 / 256 = 14
   lchan.rqd_ta (after) = 2
   toa256 (after) = 3488 / 256 = 13
-Step #2
+Step #1
   lchan.rqd_ta (before) = 2
   toa256 (before) = 3488 / 256 = 13
-  lchan.rqd_ta (after) = 3
-  toa256 (after) = 3232 / 256 = 12
-Step #3
-  lchan.rqd_ta (before) = 3
-  toa256 (before) = 3232 / 256 = 12
   lchan.rqd_ta (after) = 4
   toa256 (after) = 2976 / 256 = 11
-Step #4
+Step #2
   lchan.rqd_ta (before) = 4
   toa256 (before) = 2976 / 256 = 11
-  lchan.rqd_ta (after) = 5
-  toa256 (after) = 2720 / 256 = 10
-Step #5
-  lchan.rqd_ta (before) = 5
-  toa256 (before) = 2720 / 256 = 10
   lchan.rqd_ta (after) = 6
   toa256 (after) = 2464 / 256 = 9
-Step #6
+Step #3
   lchan.rqd_ta (before) = 6
   toa256 (before) = 2464 / 256 = 9
-  lchan.rqd_ta (after) = 7
-  toa256 (after) = 2208 / 256 = 8
-Step #7
-  lchan.rqd_ta (before) = 7
-  toa256 (before) = 2208 / 256 = 8
   lchan.rqd_ta (after) = 8
   toa256 (after) = 1952 / 256 = 7
-Step #8
+Step #4
   lchan.rqd_ta (before) = 8
   toa256 (before) = 1952 / 256 = 7
-  lchan.rqd_ta (after) = 9
-  toa256 (after) = 1696 / 256 = 6
-Step #9
-  lchan.rqd_ta (before) = 9
-  toa256 (before) = 1696 / 256 = 6
   lchan.rqd_ta (after) = 10
   toa256 (after) = 1440 / 256 = 5
-Step #10
+Step #5
   lchan.rqd_ta (before) = 10
   toa256 (before) = 1440 / 256 = 5
-  lchan.rqd_ta (after) = 11
-  toa256 (after) = 1184 / 256 = 4
-Step #11
-  lchan.rqd_ta (before) = 11
-  toa256 (before) = 1184 / 256 = 4
   lchan.rqd_ta (after) = 12
   toa256 (after) = 928 / 256 = 3
-Step #12
+Step #6
   lchan.rqd_ta (before) = 12
   toa256 (before) = 928 / 256 = 3
-  lchan.rqd_ta (after) = 13
-  toa256 (after) = 672 / 256 = 2
-Step #13
-  lchan.rqd_ta (before) = 13
-  toa256 (before) = 672 / 256 = 2
   lchan.rqd_ta (after) = 14
   toa256 (after) = 416 / 256 = 1
-Step #14
+Step #7
   lchan.rqd_ta (before) = 14
   toa256 (before) = 416 / 256 = 1
   lchan.rqd_ta (after) = 15
   toa256 (after) = 160 / 256 = 0
+Step #8
+  lchan.rqd_ta (before) = 15
+  toa256 (before) = 160 / 256 = 0
+  lchan.rqd_ta (after) = 15
+  toa256 (after) = 160 / 256 = 0
+Step #9
+  lchan.rqd_ta (before) = 15
+  toa256 (before) = 160 / 256 = 0
+  lchan.rqd_ta (after) = 15
+  toa256 (after) = 160 / 256 = 0
+Step #10
+  lchan.rqd_ta (before) = 15
+  toa256 (before) = 160 / 256 = 0
+  lchan.rqd_ta (after) = 15
+  toa256 (after) = 160 / 256 = 0
+Step #11
+  lchan.rqd_ta (before) = 15
+  toa256 (before) = 160 / 256 = 0
+  lchan.rqd_ta (after) = 15
+  toa256 (after) = 160 / 256 = 0
+Step #12
+  lchan.rqd_ta (before) = 15
+  toa256 (before) = 160 / 256 = 0
+  lchan.rqd_ta (after) = 15
+  toa256 (after) = 160 / 256 = 0
+Step #13
+  lchan.rqd_ta (before) = 15
+  toa256 (before) = 160 / 256 = 0
+  lchan.rqd_ta (after) = 15
+  toa256 (after) = 160 / 256 = 0
+Step #14
+  lchan.rqd_ta (before) = 15
+  toa256 (before) = 160 / 256 = 0
+  lchan.rqd_ta (after) = 15
+  toa256 (after) = 160 / 256 = 0
 Step #15
   lchan.rqd_ta (before) = 15
   toa256 (before) = 160 / 256 = 0
@@ -358,241 +358,241 @@
 Step #0
   lchan.rqd_ta (before) = 0
   toa256 (before) = 12345 / 256 = 48
-  lchan.rqd_ta (after) = 1
-  toa256 (after) = 12089 / 256 = 47
-Step #1
-  lchan.rqd_ta (before) = 1
-  toa256 (before) = 12089 / 256 = 47
   lchan.rqd_ta (after) = 2
   toa256 (after) = 11833 / 256 = 46
-Step #2
+Step #1
   lchan.rqd_ta (before) = 2
   toa256 (before) = 11833 / 256 = 46
-  lchan.rqd_ta (after) = 3
-  toa256 (after) = 11577 / 256 = 45
-Step #3
-  lchan.rqd_ta (before) = 3
-  toa256 (before) = 11577 / 256 = 45
   lchan.rqd_ta (after) = 4
   toa256 (after) = 11321 / 256 = 44
-Step #4
+Step #2
   lchan.rqd_ta (before) = 4
   toa256 (before) = 11321 / 256 = 44
-  lchan.rqd_ta (after) = 5
-  toa256 (after) = 11065 / 256 = 43
-Step #5
-  lchan.rqd_ta (before) = 5
-  toa256 (before) = 11065 / 256 = 43
   lchan.rqd_ta (after) = 6
   toa256 (after) = 10809 / 256 = 42
-Step #6
+Step #3
   lchan.rqd_ta (before) = 6
   toa256 (before) = 10809 / 256 = 42
-  lchan.rqd_ta (after) = 7
-  toa256 (after) = 10553 / 256 = 41
-Step #7
-  lchan.rqd_ta (before) = 7
-  toa256 (before) = 10553 / 256 = 41
   lchan.rqd_ta (after) = 8
   toa256 (after) = 10297 / 256 = 40
-Step #8
+Step #4
   lchan.rqd_ta (before) = 8
   toa256 (before) = 10297 / 256 = 40
-  lchan.rqd_ta (after) = 9
-  toa256 (after) = 10041 / 256 = 39
-Step #9
-  lchan.rqd_ta (before) = 9
-  toa256 (before) = 10041 / 256 = 39
   lchan.rqd_ta (after) = 10
   toa256 (after) = 9785 / 256 = 38
-Step #10
+Step #5
   lchan.rqd_ta (before) = 10
   toa256 (before) = 9785 / 256 = 38
-  lchan.rqd_ta (after) = 11
-  toa256 (after) = 9529 / 256 = 37
-Step #11
-  lchan.rqd_ta (before) = 11
-  toa256 (before) = 9529 / 256 = 37
   lchan.rqd_ta (after) = 12
   toa256 (after) = 9273 / 256 = 36
-Step #12
+Step #6
   lchan.rqd_ta (before) = 12
   toa256 (before) = 9273 / 256 = 36
-  lchan.rqd_ta (after) = 13
-  toa256 (after) = 9017 / 256 = 35
-Step #13
-  lchan.rqd_ta (before) = 13
-  toa256 (before) = 9017 / 256 = 35
   lchan.rqd_ta (after) = 14
   toa256 (after) = 8761 / 256 = 34
-Step #14
+Step #7
   lchan.rqd_ta (before) = 14
   toa256 (before) = 8761 / 256 = 34
-  lchan.rqd_ta (after) = 15
-  toa256 (after) = 8505 / 256 = 33
-Step #15
-  lchan.rqd_ta (before) = 15
-  toa256 (before) = 8505 / 256 = 33
   lchan.rqd_ta (after) = 16
   toa256 (after) = 8249 / 256 = 32
-Step #16
+Step #8
   lchan.rqd_ta (before) = 16
   toa256 (before) = 8249 / 256 = 32
-  lchan.rqd_ta (after) = 17
-  toa256 (after) = 7993 / 256 = 31
-Step #17
-  lchan.rqd_ta (before) = 17
-  toa256 (before) = 7993 / 256 = 31
   lchan.rqd_ta (after) = 18
   toa256 (after) = 7737 / 256 = 30
-Step #18
+Step #9
   lchan.rqd_ta (before) = 18
   toa256 (before) = 7737 / 256 = 30
-  lchan.rqd_ta (after) = 19
-  toa256 (after) = 7481 / 256 = 29
-Step #19
-  lchan.rqd_ta (before) = 19
-  toa256 (before) = 7481 / 256 = 29
   lchan.rqd_ta (after) = 20
   toa256 (after) = 7225 / 256 = 28
-Step #20
+Step #10
   lchan.rqd_ta (before) = 20
   toa256 (before) = 7225 / 256 = 28
-  lchan.rqd_ta (after) = 21
-  toa256 (after) = 6969 / 256 = 27
-Step #21
-  lchan.rqd_ta (before) = 21
-  toa256 (before) = 6969 / 256 = 27
   lchan.rqd_ta (after) = 22
   toa256 (after) = 6713 / 256 = 26
-Step #22
+Step #11
   lchan.rqd_ta (before) = 22
   toa256 (before) = 6713 / 256 = 26
-  lchan.rqd_ta (after) = 23
-  toa256 (after) = 6457 / 256 = 25
-Step #23
-  lchan.rqd_ta (before) = 23
-  toa256 (before) = 6457 / 256 = 25
   lchan.rqd_ta (after) = 24
   toa256 (after) = 6201 / 256 = 24
-Step #24
+Step #12
   lchan.rqd_ta (before) = 24
   toa256 (before) = 6201 / 256 = 24
-  lchan.rqd_ta (after) = 25
-  toa256 (after) = 5945 / 256 = 23
-Step #25
-  lchan.rqd_ta (before) = 25
-  toa256 (before) = 5945 / 256 = 23
   lchan.rqd_ta (after) = 26
   toa256 (after) = 5689 / 256 = 22
-Step #26
+Step #13
   lchan.rqd_ta (before) = 26
   toa256 (before) = 5689 / 256 = 22
-  lchan.rqd_ta (after) = 27
-  toa256 (after) = 5433 / 256 = 21
-Step #27
-  lchan.rqd_ta (before) = 27
-  toa256 (before) = 5433 / 256 = 21
   lchan.rqd_ta (after) = 28
   toa256 (after) = 5177 / 256 = 20
-Step #28
+Step #14
   lchan.rqd_ta (before) = 28
   toa256 (before) = 5177 / 256 = 20
-  lchan.rqd_ta (after) = 29
-  toa256 (after) = 4921 / 256 = 19
-Step #29
-  lchan.rqd_ta (before) = 29
-  toa256 (before) = 4921 / 256 = 19
   lchan.rqd_ta (after) = 30
   toa256 (after) = 4665 / 256 = 18
-Step #30
+Step #15
   lchan.rqd_ta (before) = 30
   toa256 (before) = 4665 / 256 = 18
-  lchan.rqd_ta (after) = 31
-  toa256 (after) = 4409 / 256 = 17
-Step #31
-  lchan.rqd_ta (before) = 31
-  toa256 (before) = 4409 / 256 = 17
   lchan.rqd_ta (after) = 32
   toa256 (after) = 4153 / 256 = 16
-Step #32
+Step #16
   lchan.rqd_ta (before) = 32
   toa256 (before) = 4153 / 256 = 16
-  lchan.rqd_ta (after) = 33
-  toa256 (after) = 3897 / 256 = 15
-Step #33
-  lchan.rqd_ta (before) = 33
-  toa256 (before) = 3897 / 256 = 15
   lchan.rqd_ta (after) = 34
   toa256 (after) = 3641 / 256 = 14
-Step #34
+Step #17
   lchan.rqd_ta (before) = 34
   toa256 (before) = 3641 / 256 = 14
-  lchan.rqd_ta (after) = 35
-  toa256 (after) = 3385 / 256 = 13
-Step #35
-  lchan.rqd_ta (before) = 35
-  toa256 (before) = 3385 / 256 = 13
   lchan.rqd_ta (after) = 36
   toa256 (after) = 3129 / 256 = 12
-Step #36
+Step #18
   lchan.rqd_ta (before) = 36
   toa256 (before) = 3129 / 256 = 12
-  lchan.rqd_ta (after) = 37
-  toa256 (after) = 2873 / 256 = 11
-Step #37
-  lchan.rqd_ta (before) = 37
-  toa256 (before) = 2873 / 256 = 11
   lchan.rqd_ta (after) = 38
   toa256 (after) = 2617 / 256 = 10
-Step #38
+Step #19
   lchan.rqd_ta (before) = 38
   toa256 (before) = 2617 / 256 = 10
-  lchan.rqd_ta (after) = 39
-  toa256 (after) = 2361 / 256 = 9
-Step #39
-  lchan.rqd_ta (before) = 39
-  toa256 (before) = 2361 / 256 = 9
   lchan.rqd_ta (after) = 40
   toa256 (after) = 2105 / 256 = 8
-Step #40
+Step #20
   lchan.rqd_ta (before) = 40
   toa256 (before) = 2105 / 256 = 8
-  lchan.rqd_ta (after) = 41
-  toa256 (after) = 1849 / 256 = 7
-Step #41
-  lchan.rqd_ta (before) = 41
-  toa256 (before) = 1849 / 256 = 7
   lchan.rqd_ta (after) = 42
   toa256 (after) = 1593 / 256 = 6
-Step #42
+Step #21
   lchan.rqd_ta (before) = 42
   toa256 (before) = 1593 / 256 = 6
-  lchan.rqd_ta (after) = 43
-  toa256 (after) = 1337 / 256 = 5
-Step #43
-  lchan.rqd_ta (before) = 43
-  toa256 (before) = 1337 / 256 = 5
   lchan.rqd_ta (after) = 44
   toa256 (after) = 1081 / 256 = 4
-Step #44
+Step #22
   lchan.rqd_ta (before) = 44
   toa256 (before) = 1081 / 256 = 4
-  lchan.rqd_ta (after) = 45
-  toa256 (after) = 825 / 256 = 3
-Step #45
-  lchan.rqd_ta (before) = 45
-  toa256 (before) = 825 / 256 = 3
   lchan.rqd_ta (after) = 46
   toa256 (after) = 569 / 256 = 2
-Step #46
+Step #23
   lchan.rqd_ta (before) = 46
   toa256 (before) = 569 / 256 = 2
-  lchan.rqd_ta (after) = 47
-  toa256 (after) = 313 / 256 = 1
+  lchan.rqd_ta (after) = 48
+  toa256 (after) = 57 / 256 = 0
+Step #24
+  lchan.rqd_ta (before) = 48
+  toa256 (before) = 57 / 256 = 0
+  lchan.rqd_ta (after) = 48
+  toa256 (after) = 57 / 256 = 0
+Step #25
+  lchan.rqd_ta (before) = 48
+  toa256 (before) = 57 / 256 = 0
+  lchan.rqd_ta (after) = 48
+  toa256 (after) = 57 / 256 = 0
+Step #26
+  lchan.rqd_ta (before) = 48
+  toa256 (before) = 57 / 256 = 0
+  lchan.rqd_ta (after) = 48
+  toa256 (after) = 57 / 256 = 0
+Step #27
+  lchan.rqd_ta (before) = 48
+  toa256 (before) = 57 / 256 = 0
+  lchan.rqd_ta (after) = 48
+  toa256 (after) = 57 / 256 = 0
+Step #28
+  lchan.rqd_ta (before) = 48
+  toa256 (before) = 57 / 256 = 0
+  lchan.rqd_ta (after) = 48
+  toa256 (after) = 57 / 256 = 0
+Step #29
+  lchan.rqd_ta (before) = 48
+  toa256 (before) = 57 / 256 = 0
+  lchan.rqd_ta (after) = 48
+  toa256 (after) = 57 / 256 = 0
+Step #30
+  lchan.rqd_ta (before) = 48
+  toa256 (before) = 57 / 256 = 0
+  lchan.rqd_ta (after) = 48
+  toa256 (after) = 57 / 256 = 0
+Step #31
+  lchan.rqd_ta (before) = 48
+  toa256 (before) = 57 / 256 = 0
+  lchan.rqd_ta (after) = 48
+  toa256 (after) = 57 / 256 = 0
+Step #32
+  lchan.rqd_ta (before) = 48
+  toa256 (before) = 57 / 256 = 0
+  lchan.rqd_ta (after) = 48
+  toa256 (after) = 57 / 256 = 0
+Step #33
+  lchan.rqd_ta (before) = 48
+  toa256 (before) = 57 / 256 = 0
+  lchan.rqd_ta (after) = 48
+  toa256 (after) = 57 / 256 = 0
+Step #34
+  lchan.rqd_ta (before) = 48
+  toa256 (before) = 57 / 256 = 0
+  lchan.rqd_ta (after) = 48
+  toa256 (after) = 57 / 256 = 0
+Step #35
+  lchan.rqd_ta (before) = 48
+  toa256 (before) = 57 / 256 = 0
+  lchan.rqd_ta (after) = 48
+  toa256 (after) = 57 / 256 = 0
+Step #36
+  lchan.rqd_ta (before) = 48
+  toa256 (before) = 57 / 256 = 0
+  lchan.rqd_ta (after) = 48
+  toa256 (after) = 57 / 256 = 0
+Step #37
+  lchan.rqd_ta (before) = 48
+  toa256 (before) = 57 / 256 = 0
+  lchan.rqd_ta (after) = 48
+  toa256 (after) = 57 / 256 = 0
+Step #38
+  lchan.rqd_ta (before) = 48
+  toa256 (before) = 57 / 256 = 0
+  lchan.rqd_ta (after) = 48
+  toa256 (after) = 57 / 256 = 0
+Step #39
+  lchan.rqd_ta (before) = 48
+  toa256 (before) = 57 / 256 = 0
+  lchan.rqd_ta (after) = 48
+  toa256 (after) = 57 / 256 = 0
+Step #40
+  lchan.rqd_ta (before) = 48
+  toa256 (before) = 57 / 256 = 0
+  lchan.rqd_ta (after) = 48
+  toa256 (after) = 57 / 256 = 0
+Step #41
+  lchan.rqd_ta (before) = 48
+  toa256 (before) = 57 / 256 = 0
+  lchan.rqd_ta (after) = 48
+  toa256 (after) = 57 / 256 = 0
+Step #42
+  lchan.rqd_ta (before) = 48
+  toa256 (before) = 57 / 256 = 0
+  lchan.rqd_ta (after) = 48
+  toa256 (after) = 57 / 256 = 0
+Step #43
+  lchan.rqd_ta (before) = 48
+  toa256 (before) = 57 / 256 = 0
+  lchan.rqd_ta (after) = 48
+  toa256 (after) = 57 / 256 = 0
+Step #44
+  lchan.rqd_ta (before) = 48
+  toa256 (before) = 57 / 256 = 0
+  lchan.rqd_ta (after) = 48
+  toa256 (after) = 57 / 256 = 0
+Step #45
+  lchan.rqd_ta (before) = 48
+  toa256 (before) = 57 / 256 = 0
+  lchan.rqd_ta (after) = 48
+  toa256 (after) = 57 / 256 = 0
+Step #46
+  lchan.rqd_ta (before) = 48
+  toa256 (before) = 57 / 256 = 0
+  lchan.rqd_ta (after) = 48
+  toa256 (after) = 57 / 256 = 0
 Step #47
-  lchan.rqd_ta (before) = 47
-  toa256 (before) = 313 / 256 = 1
+  lchan.rqd_ta (before) = 48
+  toa256 (before) = 57 / 256 = 0
   lchan.rqd_ta (after) = 48
   toa256 (after) = 57 / 256 = 0
 Step #48

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

Gerrit-Project: osmo-bts
Gerrit-Branch: master
Gerrit-Change-Id: I2d0f128c8dcac93ee382283a1c91fca76623b8fc
Gerrit-Change-Number: 25386
Gerrit-PatchSet: 1
Gerrit-Owner: pespin <pespin at sysmocom.de>
Gerrit-MessageType: newchange
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20210906/b60f2157/attachment.htm>


More information about the gerrit-log mailing list