Commit Graph

13 Commits

Author SHA1 Message Date
Andreas.Eversberg 072d7dd4bf target/fw/layer1: Change L1CTL RACH req to properly use all slots
Written-by: Andreas Eversberg <jolly@eversberg.eu>
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2010-10-30 17:31:09 +02:00
Sylvain Munaut 61fdec01f5 fw/layer1: Process the tch_mode and store it for later use
Currently unused since no TCH support ...
Will be used by future commits.

Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2010-09-28 08:04:19 +02:00
Andreas.Eversberg 732f102cc2 fw/layer1: Add support for measurement messages from layer2/3
Written-by: Andreas.Eversberg <jolly@eversberg.eu>
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2010-09-28 08:04:18 +02:00
Andreas.Eversberg 04ffc9bdc0 [layer1] Fixed memory leak issue after releasing dedicated mode
While releasing dedicated mode, pending SDCCH and SACCH messages need to be
flushed. Without it, it would also cause old pending messages to be sent
during next dedicated mode.
2010-09-14 19:13:36 +00:00
Andreas.Eversberg 59894035c5 [layer1] Fixed double IRQ bug
During IRQ handling, disabling and enabling IRQ may cause the same IRQ to
fire again. This is because the condition for this IRQ may be fullfilled
again, while still handling it. Using local_firq_save() and
local_irq_resore() intead, the IRQ handling will be completed before it is
cleared, and may then fire again.

The problem was detected during process of messages from layer23 to layer1.
In the IRQ context, the TX-functions of l23_api.c are called. There,
messages are queued and events are scheduled. During access to a queue or
a scheduler from any IRQ context or from normal context, interrupts must be
locked to prevent nested calls.

If it is not desired to call l23_api.c inside IRQ context, a message queue
must be used. If a message is written to that queue, it must be locked.
Afterwards a signal must be sent to the main process. The main process
locks the queue and de-queues the message. This is how it is done by all
layer 1 drivers of mISDN.
2010-09-12 13:49:41 +00:00
Andreas.Eversberg 3967b5a1a2 [layer1] Added frequency change control to layer 1 (L1CTL_FREQ_REQ)
The given new frequency set will be used at given frame number.
If the frame number is already reached, the frequency set will be changed
directly.

The functionality has been successfully tested.
2010-09-11 18:10:14 +00:00
Andreas.Eversberg 0719e9ac7d [layer1] Added mf_off to shedule next RACH request.
The mf_off value defines the offset of multiframes.
2010-07-13 13:58:41 +00:00
Harald Welte ea3b3826f2 layer1: introduce concept of a 'l1 completion'
The idea is that the L1S part can schedule a completion handler which
will then execute in the asynchronous L1A part.  This should keep the
FIQ priority L1S extremely short, deferring most of the work into
the L1A part that runs in regular process context.
2010-05-17 09:23:35 +02:00
Harald Welte f7af19661a layer1: reorganize code, introduce prim_{pm,rach}.c
The new plan for layer1 is to structure the source code not based on
whether it is part of l1s/l1a or other parts, but based on 'primitives'.

All code that relates to transmitting a RACH burst should be in one
file, same for all code related to power management.  Those files are
called layer1/prim_*.c
2010-04-09 19:56:12 +02:00
Harald Welte 97c8b6f33b start to use libosmocore within the firmware
* remove linuxlist.h copy and use osmocore
 * don't put 'struct gsm_time' into l1ctl packets
 * include rx_level and snr for each burst in l1ctl
 * properly build libosmocore.a for target
 * move gsmtime functions into libosmocore
 * move ctype.h to standard location
2010-03-07 20:56:12 +01:00
Harald Welte a4bb938b39 fix even more compiler warnings 2010-03-07 13:44:52 +01:00
Harald Welte 279cc2e3d8 fix compiler warnings 2010-03-07 13:27:25 +01:00
Harald Welte 26810bd363 add missing async.h file (belongs to 0da792f2522eef475d0beb1690cd02c341415f82) 2010-03-01 23:48:45 +01:00