From 4e47a7a6ceadb92299b39c48ff83acfbcc2d463c Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Tue, 6 Apr 2010 10:00:16 +0800 Subject: layer1: properly reset fb_once and sb_once when syncing to new cell --- src/target/firmware/include/layer1/sync.h | 3 +++ src/target/firmware/layer1/l23_api.c | 4 +--- src/target/firmware/layer1/sync.c | 12 ++++++++++++ 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/src/target/firmware/include/layer1/sync.h b/src/target/firmware/include/layer1/sync.h index f13d5a97..4bf7f2b4 100644 --- a/src/target/firmware/include/layer1/sync.h +++ b/src/target/firmware/include/layer1/sync.h @@ -101,6 +101,9 @@ void l1s_nb_test(uint8_t base_fn); void l1s_init(void); +/* reset the layer1 as part of synchronizing to a new cell */ +void l1s_reset(void); + /* init.c */ void layer1_init(void); diff --git a/src/target/firmware/layer1/l23_api.c b/src/target/firmware/layer1/l23_api.c index c7903671..1d2c5e42 100644 --- a/src/target/firmware/layer1/l23_api.c +++ b/src/target/firmware/layer1/l23_api.c @@ -175,9 +175,7 @@ static void l1a_l23_rx_cb(uint8_t dlci, struct msgb *msg) printd("L1CTL_DM_EST_REQ (arfcn=%u)\n", sync_req->band_arfcn); /* reset scheduler and hardware */ - l1s.mf_tasks = 0; - tdma_sched_reset(); - l1s_dsp_abort(); + l1s_reset(); /* tune to specified frequency */ trf6151_rx_window(0, sync_req->band_arfcn, 40, 0); diff --git a/src/target/firmware/layer1/sync.c b/src/target/firmware/layer1/sync.c index dfdf64e2..d4b8d12d 100644 --- a/src/target/firmware/layer1/sync.c +++ b/src/target/firmware/layer1/sync.c @@ -1154,6 +1154,18 @@ static void frame_irq(__unused enum irq_nr nr) l1_sync(); } +/* reset the layer1 as part of synchronizing to a new cell */ +void l1s_reset(void) +{ + fb_once = 0; + sb_once = 0; + + /* reset scheduler and hardware */ + l1s.mf_tasks = 0; + tdma_sched_reset(); + l1s_dsp_abort(); +} + void l1s_init(void) { unsigned int i; -- cgit v1.2.3