path: root/openbsc/src/handover_logic.c
AgeCommit message (Collapse)AuthorFilesLines
2011-03-03re-structure the OpenBSC directory layoutHarald Welte1-393/+0
The new structure divides the code into a number of libraries for the BSC core functionality, MSC core functionality, Abis transport, TRAU and other bits. This doesn't introduce any functional code change but simply moves around files and alters Makefile.am accordingly. Next step would be to disentangle a lot of the inter-library dependencies and make the individual bits of code more independent.
2011-01-06bsc: Clear the hand-over in case the new_lchan is failingHolger Hans Peter Freyther1-2/+4
When the new_lchan for handover is failing we should stop the handover operation. This is fixing a crash that we get a timeout on the lchan and have no conn set to it. Introduce a flag to the bsc_clear_handover to not free the lchan. In case the ho_lchan is failing we do not want to call lchan_release as it would reset the state.
2011-01-06rtp: Move the RTP Proxy code out of RSL into the BSC/MSC domainHolger Hans Peter Freyther1-42/+4
Instead of creating the sockets in the RSL code we will do this in the CRCX_ACK, MDCX_ACK, DLCX_IND signal handler of gsm_04_08. Introduce a handover signal so we can repatch the RTP sockets in the gsm_04_08 as well.
2011-01-01fix spelling mistake in log messageHarald Welte1-1/+1
2011-01-01License change: We are now AGPLv3+ instead of GPLv2+Harald Welte1-6/+5
The reason for this is quite simple: We want to make sure anyone running a customized version of OpenBSC to operate a network will have to release all custom modifiations to the source code.
2010-12-27lchan: Every SS_LCHAN signal now sends a struct lchan_sig_dataHolger Hans Peter Freyther1-1/+3
The SS_LCHAN signals now always include the lchan_sig_data. For the measurement report it will optionally include the measurement report as well. Attempt to update all handlers of this signal as well
2010-12-26ho: Access the network after we are known to have an entry.Holger Hans Peter Freyther1-1/+2
2010-12-26ho: Set the conn to NULL before calling lchan_releaseHolger Hans Peter Freyther1-0/+1
In case we fail to activate the lchan set the connection to NULL before calling the lchan release function.
2010-12-21ho: On ho failure clear the subscriber connectionHolger Hans Peter Freyther1-0/+2
Forget about the ho_lchan inside the gsm_subscriber_connection in case of a handover failure, also clear the gsm_subscriber_connection pointer before the lchan is passed to the lchan_free routine.
2010-12-21ho: Make this allocation a child of the BSC talloc contextHolger Hans Peter Freyther1-1/+1
Do not use the NULL context for this allocation. It should hang off the gsm_subscriber_connection but for now at least make it the child of the BSC so it is showing up in the talloc report.
2010-09-06[alloc] Assign a TCH for LU when all SDCCHs are occupied.Holger Hans Peter Freyther1-1/+1
When the cell becomes visible we will be bombed with location updating requests and to reduce the load on the network we should assign as many channels for it as possible. During load peek it is even more important than to have a spare voice channel and in general the LU procedure is pretty fast.
2010-06-30handover: lchan_free will only free the local resources.Holger Hans Peter Freyther1-1/+3
lchan_free only free's the local resource of the BSC but does not release the channel at the BTS. Use lchan_release to properly release the channel. This code assumes that the timeout happens after a CHAN ACT ACK/NACK otherwise we have some problems. The comment indicates that this is the case.
2010-06-30handover: Call bsc_handover_clear from gsm0808_clearHolger Hans Peter Freyther1-0/+24
The bsc_handover_clear will release an in-progress handover and free the lchana and the data associated with this handover
2010-06-30handover: Attempt to use the same gsm_subscriber_conn for new/old channelHolger Hans Peter Freyther1-5/+25
The transaction should not know on which lchan we are operating as this can change due handover. Add untested code to share the subscriber connection of the new and old lchan and move the pointer in case of success/failure. Also on a clear command we will free any resources allocated... This code is not tested and needs to be debugged, but it should have the right structure. I am going to fix a potential memleak in the next commit.
2010-06-28bsc_msc: Remove use_count from the subscriber connectionHolger Hans Peter Freyther1-2/+1
A channel will be released in case of * Errors via the clear_request callback... * no more transactions and operations are going on. This means that if we do something without a transaction the channel might be closed down right away. The bug fix will be to create a transaction/operation.
2010-06-28bsc_api: Allocate the subscriber_connection dynamicallyHolger Hans Peter Freyther1-4/+4
This is a big change to the way we use the subscriber connection. From now on it is is dynamically allocated and we will slowly move from a 1:1 lchan to conn to having more than one lchan per connection. This is the first commit, the subscr_con* methods will move to gsm_data once the use_count is removed from the connection, the freeing of the connection will also change.
2010-04-10[rsl] Set the right state when asking for the activation.Holger Hans Peter Freyther1-0/+1
Set the state to activation to avoid a warning about the getting a CHAN ACK without waiting for it. We set it in the code to make sure it is set after all error checking to avoid inconsistent state as the state is only set back to NONE/ACT due replies from the BTS.
2010-04-10[rsl] Introduce a method to set the state of the lchanHolger Hans Peter Freyther1-1/+1
Setting the state through a dedicated method allows us to track the state transitions and check if they are done in a proper way.
2010-03-25lchan: Change transaction to work on the GSM Subscriber ConnectionHolger Hans Peter Freyther1-1/+1
Change the MSC transaction code to operate on a GSM Subscriber Connection instead of the lchan. This will help us to separate the two commands properly.
2010-03-25lchan: Create a structure for MSC data of the lchanHolger Hans Peter Freyther1-3/+5
Prepare to split the BSC and the MSC part by putting the MSC data for a connection into a "gsm_subscriber_connection" struct and renaming the macros.
2010-02-20split 'libosmocore' from openbsc codebaseHarald Welte1-3/+3
This library is intended to collect all generic/common funcitionality of all Osmocom.org projects, including OpenBSC but also OsmocomBB The library currently includes the following modules: bitvec, comp128, gsm_utils, msgb, select, signal, statistics, talloc, timer, tlv_parse, linuxlist msgb allocation error debugging had to be temporarily disabled as it depends on 'debug.c' functionality which at the moment remains in OpenBSC
2009-12-26[handover] print INFO message when doing handoverHarald Welte1-0/+5
2009-12-24[handover] CRCX ACK without HO reference is normal, not an errorHarald Welte1-2/+2
2009-12-22statistics: Introduce 'struct counter' instead of using unsigned longHarald Welte1-5/+8
This has the advantage that counters can be added all over the code very easily, while having only one routine that stores all of the current counter values to the database. The counters are synced every 60 seconds, providing relatively fine grained statistics about the network usage as time passes by.
2009-12-22keep some internal statistics inside OpenBSCHarald Welte1-0/+8
the statistics will give us some idea about the network load and performance.
2009-12-21handover: set old channel to INACTIVE stateHarald Welte1-1/+4
After receiving the HANDOVER COMPLETE on the new channel, we mark the old channel as INACTIVE and try to release it ASAP.
2009-12-20[handover] implement TCH RTP stream handoverHarald Welte1-1/+69
This patch takes care of handling the RTP streams / sockets during an in-call handover from one BTS to another BTS. It only works in combination with rtp_proxy mode.
2009-12-20handover: don't create negative lchan use countsHarald Welte1-3/+0
trans_lchan_change() takes care of use counts for us.
2009-12-18[handover]: make sure the new lchan keeps the subscriber pointer of the old ↵Harald Welte1-5/+6
lchan also, ensure that we don't print debug messages about handover in non-handover channel activation cases.
2009-12-18handover: use correct handover lookup functionHarald Welte1-1/+1
2009-12-18fix segfault in case of handover timer expirationHarald Welte1-0/+1
2009-12-17logging: introduce log levels at caller siteHarald Welte1-9/+19
This introduces a new LOGP() macro together with LOGL_* definition to support multiple log levels (severities) throughout the codebase. Please note that the actual logging system does not use them yet, in this patch we simply introduce the new macros at the caller site.
2009-12-17don't try multiple concurrent handovers for 1 channelHarald Welte1-0/+5
2009-12-17call trans_lchan_change() from ho_gsm48_ho_compl()Harald Welte1-0/+3
2009-12-17[handover] first functional handover implementationHarald Welte1-3/+24
With this commit, we can successfully hand over a channel from one cell to another cell. We implement asynchronous intra-BSC (but inter-BTS) handover. Changes: * introduce new DHO log category * extend rsl_chan_activate_lchan() with argument for HO reference * introduce actual minimal handover decision making in handover_decision.c * various fixes to bsc_handover_start() in handover_logic.c
2009-11-29[handover] Implement handover control logicHarald Welte1-0/+251
Code to implement handover control logic. A yet-to-be-implemented handover algorithm will call bsc_handover_start(old_lchan, new_bts) to start the handover process.