tnt has uploaded this change for review. (
https://gerrit.osmocom.org/c/osmo-e1d/+/26818
)
Change subject: contrib/e1-prbs-test: Delay the TX pipe fill data until first RX
......................................................................
contrib/e1-prbs-test: Delay the TX pipe fill data until first RX
There is non negligible time between the moment init_timeslot is
called and the moment when we get the first RX (which is when
we start sending out data at the same rate we RX it). And those
1024 byte were borderline not enough to not underflow.
By delaying the 1024 byte pre-fill until we get the first RX,
we ensure the time that pre-fill covers is more consistant and
less dependend on whatever the app/scheduling does during the
init phase.
Signed-off-by: Sylvain Munaut <tnt(a)246tNt.com>
Change-Id: Ic1c93fd138073a75830dc16bb41c4541e68eef90
---
M contrib/e1-prbs-test/internal.h
M contrib/e1-prbs-test/main.c
2 files changed, 7 insertions(+), 4 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-e1d refs/changes/18/26818/1
diff --git a/contrib/e1-prbs-test/internal.h b/contrib/e1-prbs-test/internal.h
index a2c4ef5..64ee146 100644
--- a/contrib/e1-prbs-test/internal.h
+++ b/contrib/e1-prbs-test/internal.h
@@ -30,6 +30,7 @@
struct osmo_prbs prbs; /* PRBS definition */
struct prbs_precomp prbs_pc; /* pre-computed PRBS bytes */
unsigned int prbs_pc_idx; /* next to-be-transmitted byte offset in prbs_pc */
+ bool active; /* started tx ? */
};
struct timeslot_state_rx {
diff --git a/contrib/e1-prbs-test/main.c b/contrib/e1-prbs-test/main.c
index d0809bf..b64cb15 100644
--- a/contrib/e1-prbs-test/main.c
+++ b/contrib/e1-prbs-test/main.c
@@ -66,6 +66,12 @@
len = rc;
process_rx(&ts->rx, ofd->priv_nr, buf, len);
+ /* if this is the first cb, we preload the transmit queue a bit */
+ if (!ts->tx.active) {
+ process_tx(ts, 1024);
+ ts->tx.active = true;
+ }
+
/* generate as many bytes as were read */
process_tx(ts, len);
@@ -79,10 +85,6 @@
ts_init_prbs_tx(ts, g_prbs_offs_tx);
ts_init_prbs_rx(ts, g_prbs_offs_rx);
-
- /* start to put something into the transmit queue, before we get read-triggered
- * later on */
- process_tx(ts, 1024);
}
static int open_slots_e1d(struct test_state *tst, int intf_nr, int line_nr)
--
To view, visit
https://gerrit.osmocom.org/c/osmo-e1d/+/26818
To unsubscribe, or for help writing mail filters, visit
https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-e1d
Gerrit-Branch: master
Gerrit-Change-Id: Ic1c93fd138073a75830dc16bb41c4541e68eef90
Gerrit-Change-Number: 26818
Gerrit-PatchSet: 1
Gerrit-Owner: tnt <tnt(a)246tNt.com>
Gerrit-Reviewer: laforge <laforge(a)osmocom.org>
Gerrit-MessageType: newchange