AgeCommit message (Collapse)AuthorFilesLines
2013-10-11dyn PDCH: Add algorithm to defragment shared TCH/F+PDCH channelsjolly/dyn_pdchAndreas Eversberg4-2/+191
This algorithm ensures that gaps between active TCH/F+PDCH channels are removed, by assigning active connections to standard TCH/F or by assigning them to consecutive TCH/F+PDCH channels.
2013-10-11dyn PDCH: Automatically deactivate/activate PDCH on TCH/F+PDCH channelAndreas Eversberg3-6/+52
Shared TCH/F+PDCH channels are handled as regular TCH/F channels. If they are activated, the PDCH mode is deactivated prior activation. After deactivation, PDCH mode is restored.
2013-10-11dyn PDCH: Fix TCH/F+PDCH allocation and direction of chan_alloc()Andreas Eversberg2-23/+22
The TCH/F+PDCH allocation is always allowed, even if the current PDCH mode is not TCH/F. (This is required to allocate a TCH/F channel with actived PDCH, that needs to be deactivate afterwards.) The reverse search of free slot ("channel allocator ascending") is now performed correctly.
2013-10-11dyn PDCH: Add new_lchan argument to bsc_handover_start()Andreas Eversberg5-10/+10
This is useful, if the user already allocated a new lchan. If NULL is given, the lchan is allocated by bsc_handover_start, as before.
2013-10-11dyn PDCH: Cleanup of rsl_chan_activate_lchan() and usersAndreas Eversberg5-14/+14
Timing advance is stored inside lchan structure, so it is removed from arguments. This is useful, if other actions are required prior calling rsl_chan_activate_lchan. (like deactivating PDCH first) The "shifted TA value" that is required by BS11 is now calculated inside rsl_chan_activate_lchan and not by each user.
2013-09-19MNCC: Add IMSI to CALL CONFIRM messageAndreas Eversberg1-0/+4
LCR requires IMSI to correlate calls for MPTY (multi party conference) and ECT (call transfer).
2013-08-12nitb: Add a test command for stress testing all BTSsHolger Hans Peter Freyther1-0/+31
Add a VTY command that will attempt to all allocate all lchans that can provide a SDCCH. This can be used to stress-test a BTS and the radio link timeout and activation/release of it.
2013-08-08HO: Add option to allow immediate retry of assignment/handover if failedAndreas Eversberg6-6/+74
If a number of retries is configured, the retry is allowed. If it fails more than the number of retries, the penalty timer is started to prevent subsequent retries for the given time. Add test case that will test that handover is blocked after the exact number of handover retries are performed.
2013-07-29Upgrade MNCC version to 3Andreas Eversberg1-1/+1
In order to allow full codec negotiation between MS and MNCC application, MNCC_LCHAN_MODIFY must be sent with lchan_type and lchan_mode. Both attributes define the actual codec. They are used by OpenBSC to assign to given channel type and set correct mode.
2013-07-29Handover test functionAndreas Eversberg7-1/+1670
2013-07-29HO: New improved handover algorithmAndreas Eversberg10-43/+1798
The handover algorithm selects the best cell, tries to solve congestion of cells and forces handover in case of bad radio link: Handover shall ensure that the mobile station is always on the best cell during a call. This results in best speech quality and allows a lower TX level (up-link) to save battery and reduce interference. Sometimes this is not desirable, especially if a cell with large coverage becomes congested after handover. In this situation it makes sense to balance the usage between cells to prevent congestion. If a cell is congested, one or several mobile stations need to be handovered to a different cell, even if that cell is not the best cell for these mobile station. In case that a mobile station needs to handover to prevent a loss of radio link, it makes sense to handover it to a cell that is congested afterwards. In this situation, a different mobile station on the congested target cell can be handovered to a non-congested neighbor cell, to solve or balance the congestion. Because congestion of TCH/F and TCH/H is handled individually or bad quality might require change from TCH/H to TCH/F, assignment instead of handover might be used to change the channel within the same BTS. This new algorithm handles both assigment and handover depending on the target BTS.
2013-07-29HO: Change debug category at handover decision: DHO -> DHODECAndreas Eversberg1-7/+7
2013-07-29HO: Move handover VTY commands, prepare for other HO algorithmsAndreas Eversberg8-327/+531
A special VTY command "handover algorithm x" is used to set the algorithm. A union of all handover option is provided, but depending on the selected algorithm, only the specific options are accepted, others are rejected. At VTY write, only the specific options are written to the config file.
2013-07-29Fix: Increase the number of measurement report history to 10Andreas Eversberg2-1/+3
If we want to average over up to 10 measurement reports (as configurable at VTY), we need a history of at least 10 measurements.
2013-07-29Fix: meas_rep.c will only use valid DL measurement reportsAndreas Eversberg1-4/+19
When averaging measurements, only the valid reports are used. If there is no valid report in the averaging window at all, an error is returned.
2013-07-29Add a queue to bsc_api to queue DTAP messages during handover/assignmentAndreas Eversberg2-0/+67
2013-07-29Fix assignment failure handling at bsc_api.cAndreas Eversberg1-2/+4
If assignment fails, we must check if the secondary lchan has been released already. This can happen if the BTS indicates a CHANNEL FAILURE INDICATION, then the BSC already released the secondary lchan.
2013-07-29Debug messages show which unsupported codecs are removed from bcap and whyAndreas Eversberg1-17/+62
2013-07-29HO: Improve silent call featureAndreas Eversberg6-19/+65
Since we use late assignment now, we must assign requested channel after paging response.
2013-07-29HO: Allow assignment trigger via VTY commandAndreas Eversberg1-9/+12
If handover is triggered without a BTS given, the handover logic will use assignment instead of handover.
2013-07-29Correctly set T3105 for ipaccess BTS typeAndreas Eversberg1-1/+5
The given value is 10 * ms, so 13 is used instead of 128. If T3105 is set at config to something greater 0, it is used instead of the default value.
2013-07-29Allow assignment to TCH channel with signalling only modeAndreas Eversberg1-3/+2
This makes sense, if silent call is used. Assignment allows to change from SDCCH (or whatever was available) to given TCH rate.
2013-07-29Do not perform assignment, if the new channel equals the current oneAndreas Eversberg1-0/+7
This can happen, if a TCH/H was requested, but because it is not available, a TCH/F is allocated. If the old channel was TCH/F already, it makes no sense to assign it.
2013-07-29HO: Add handover decision debugging categoryAndreas Eversberg2-1/+9
2013-07-29HO: In case of assignment failure, release all call control transactionsAndreas Eversberg3-0/+17
If the initial assignment to the TCH channel fails, the call is released and the MNCC application receives cause 41 (Temporary Failure).
2013-07-29HO: If handover logic is used to do assignment, signal assignment resultAndreas Eversberg2-0/+31
2013-07-29HO: Always update rqd_ta after receiving measurement reportAndreas Eversberg1-0/+2
The up-to-date rqd_ta is required for assignment command. If the phone moves, the timing advance might change. The rqd_ta will be updated by each measurement report.
2013-07-29HO: Changed availablilty of ts_is_usable() from static to externAndreas Eversberg2-1/+2
2013-07-29HO: Count neighbor measurements and reduce window of neigh_meas_avgAndreas Eversberg1-0/+8
Always start with a counter of 0 for a new measurement report. If the neigh_meas_avg is caluclated over the given window, the window is reduced, if there are less measurement reports received so far.
2013-07-29HO: Count the actual meas.rep. get_meas_rep_avg fails if not reachedAndreas Eversberg4-1/+10
get_meas_rep_avg will return -EINVAL, if the required number of measurements are not reached. There will be no handover possible until the given number of measurements are available.
2013-07-29Fix of checking TCH rate at chan_compat_with_modeAndreas Eversberg1-1/+5
In case of current channel equals TCH/F and we request half rate, we must return 0, so the calling function will trigger assignment.
2013-07-29HO: Bultin MNCC application ignores lchan_type and uses selected codecAndreas Eversberg1-29/+33
The lchan_type depends on selected codec, but in case of AMR, this can be any lchan_type (TCH/F or TCH/H). The actual rate of both peers are not relevant for ARM, because voice data is compatible.(*) *: The rates must match. This is not yet considered.
2013-07-29HO: MNCC interface uses lchan_mode and lchan_type to modify channelAndreas Eversberg1-2/+68
The MNCC application must provide the lchan_type with the lchan_mode, since FR and HR codec depends on given lchan_type. In case of AMR, the lchan_type is ignored and an available channel type is selected. In case of EFR, the given lchan_type (must be full rate) is used.
2013-07-29HO: Remove all TCH rates from bearer capability that are not availableAndreas Eversberg1-0/+11
When the MNCC application negotiates the codec, it must be sure that the TCH rates of the neotiation results can be assigned to the MS. Therefore not only the codecs that are unsupported by BTS are removed, but also the codecs that require channels that are not available.
2013-07-29HO: Assign SDCCH on channel requestAndreas Eversberg1-11/+37
This is needed, so channel can be negotiated before the actual channel type is assigned. In case there is no SDCCH available, try to assign what ever the MS requested. If this is not possible try to assign TCH/F. If this is still not possible, reject channel request.
2013-07-29HO: Store bearer capabilities of MS at connection structure for later useAndreas Eversberg2-0/+13
Handover might require change in codec, especially when switching between AFS (AMR on TCH/F) and AHS (AMR on TCH/H). In this case the handover decision must know if a different target rate is supported by the MS or not.
2013-07-29HO: Add a penalty timer list to the subscriber connection entityAndreas Eversberg2-0/+21
This penalty timer is used to temporarily block cells where handover or assignment failed or where handover is not allowed. This is usefull to prevent repeated handover attempts to broken cells or cells that have limited allowed distance.
2013-07-29HO: Add new configuration parameters to VTY and data structure of BTSAndreas Eversberg5-39/+286
2013-07-29HO: Move handover config from GSMNET to BTS nodeAndreas Eversberg8-166/+163
This is required for individual BTS configuration.
2013-07-29HO: Add function to count currently ongoing handovers to a given BTSAndreas Eversberg2-3/+26
In order to keep processing power at BTS at a defined level, the handover decision might want to limit maximum number of slots that require RACH detection.
2013-07-29HO: Count number of free timeslot on a given BTSAndreas Eversberg2-0/+50
This is needed for handover algorithm to balance free slots and to prevent congestion of one cell, while other cells still have free capacities.
2013-07-29HO: Send Channel Mode and Multirate IE along with handover commandAndreas Eversberg1-0/+7
This is needed, if the channel mode should change when doing handover. A change in channel mode makes sense, if available resources at the new BTS are different.
2013-07-29HO: Return "unknown", if subscriber is not set at subscr_name()Andreas Eversberg1-0/+2
This makes things easier when doing tests with fake BTS and fake lchans. There is no need to create any subscriber to test the handover process.
2013-07-29Fix: Handle CM service request on already secured channel correctlyAndreas Eversberg1-0/+5
A CM service request must be acknowledged also, when encryption is already enabled. Without encryption enabled, the security status is GSM_SECURITY_NOTAVAIL, which causes a CM service acknowledge. On initial CM service request, the security status is GSM_SECURITY_SUCCEED, if encryption is enabled. This will not lead to an acknowledge, because the cyphering command implies an acknowlege. An additional CM service request requires an acknowledge, so I added a new security status: GSM_SECURITY_ALREADY
2013-07-29Allow handling of TCH/F and TCH/H frames from layer 4Andreas Eversberg1-2/+3
2013-07-29osmo-nitb support for codec negotiationAndreas Eversberg5-69/+109
Since codec negotiation is done automatically, there is no need to define codec for TCH/F and TCH/H via VTY anymore.
2013-07-29If requested TCH/H channel is not available, try assigning TCH/FAndreas Eversberg1-0/+11
If MNCC application requests a half rate channel, the channel might not be available, due to different cell configuration, so the full rate channel is used.
2013-07-29Fix: If half rate channel is used, indicate hr when modifying channel modeAndreas Eversberg1-1/+2
2013-07-29Fix: If paging for half rate was requested, use hr, if supported by MSAndreas Eversberg1-1/+1
2013-07-29Fixed AMR payload type selection and handlingAndreas Eversberg1-1/+4