summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2010-04-09 10:51:38 +0200
committerHarald Welte <laforge@gnumonks.org>2010-04-09 10:51:38 +0200
commit0e9d250407f589cff312adc6c9e2c83f6af37de5 (patch)
treedd38c32a0cf7a14bded270ac817e8c4b927a6e4f /src
parentcba99230bebe5f36ffac648840e64058b35d9632 (diff)
layer1: fix off-by-one error when transmitting bursts in the uplink
Prior to this fix, only 3 out of 4 bursts of every mac block were received by the BTS at all. Thanks to Dieter Spaar for spending so much time to debug this issue!
Diffstat (limited to 'src')
-rw-r--r--src/target/firmware/layer1/tpu_window.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/target/firmware/layer1/tpu_window.c b/src/target/firmware/layer1/tpu_window.c
index c36fd827..0b30e80b 100644
--- a/src/target/firmware/layer1/tpu_window.c
+++ b/src/target/firmware/layer1/tpu_window.c
@@ -101,6 +101,12 @@ void l1s_tx_win_ctrl(uint16_t arfcn, enum l1_txwin_type wtype, uint8_t pwr)
/* uplink is three TS after downlink ( "+ 32" gives a TA of 1) */
uint16_t offset = (L1_BURST_LENGTH_Q * 3) + 28;
+ /* this is needed to cause a delay of one more TDMA frame,
+ * otherwise we have an off-by-one error and send the bursts
+ * at the wrong point in time, resulting in only 3 out of 4
+ * bursts arriving at the BTS */
+ tpu_enq_at(5000 - 10); /* TPU_CLOCK_RANGE - EPSILON_SYNC */
+
#ifdef CONFIG_TX_ENABLE
/* window open for TRF6151 and RFFE */
rffe_mode(gsm_arfcn2band(arfcn), 1);