Commit Graph

1299 Commits

Author SHA1 Message Date
Sylvain Munaut 7a50ca8fe5 Never allocate transaction ID 7
According to GSM 04.07 11.2.3.1.3 , TID 7 is "reserved
for future extensions".

Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2009-12-19 03:22:30 +01:00
Sylvain Munaut 7b9852cc95 Fix subscr ref leak for multi CM SERV REQ
Multiple CM SERVICE REQUEST can happen on a single RR
connection, in this case, since the subscr reference is
tracked through lchan->subscr and will only be put'd once
on lchan_free, we need to make sure we don't get several
reference ....

Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2009-12-19 03:22:25 +01:00
Sylvain Munaut 40c2332b5b Use 'new' rather than 'unknown' when starting transaction
'unknown' has a negative connotation for a case that's totally
normal so refer to it as 'new' so it doesn't sound like a problem.

Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2009-12-19 03:22:16 +01:00
Sylvain Munaut e02fb9a8ac Fix transaction_id displayed in debug message
In SMS debug messages, we always display the transaction ID
as if we were 'sending' the message.

Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2009-12-19 03:22:04 +01:00
Sylvain Munaut 163a24a61a Fix typos in debug message / comments
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2009-12-19 03:21:51 +01:00
Harald Welte b4290e0221 [handover] lchan use count handling in case of trans_lchan_change() 2009-12-18 14:51:48 +01:00
Harald Welte 72331e6a07 remove call_handling.h, a reminescent of old days 2009-12-18 14:50:57 +01:00
Harald Welte fedc19e656 [handover]: make sure the new lchan keeps the subscriber pointer of the old lchan
also, ensure that we don't print debug messages about handover in non-handover
channel activation cases.
2009-12-18 14:50:08 +01:00
Harald Welte bc2e539642 handover: use correct handover lookup function 2009-12-18 11:52:03 +01:00
Harald Welte 4c0d7791f5 for now we only do handover of TCH channels 2009-12-18 11:49:20 +01:00
Harald Welte 6d8220ce08 fix segfault in case of handover timer expiration 2009-12-18 11:49:03 +01:00
Harald Welte debeab2a92 add handover.h file to Makefile.am to make distcheck happy 2009-12-17 23:13:38 +01:00
Harald Welte cf2ec4ae4e logging: introduce log levels at caller site
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-17 23:10:46 +01:00
Harald Welte aef376f9dd don't try multiple concurrent handovers for 1 channel 2009-12-17 22:23:21 +01:00
Harald Welte bf4e76dc0f [vty] ensure we mark fd in writefd once we vty_out() something 2009-12-17 21:59:28 +01:00
Harald Welte f8c5070060 call trans_lchan_change() from ho_gsm48_ho_compl() 2009-12-17 17:14:43 +01:00
Harald Welte 2c99807592 introduce trans_lchan_change() to update transaction about lchan change 2009-12-17 17:13:28 +01:00
Harald Welte b90d7bd850 [handover] first functional handover implementation
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-12-17 00:31:10 +01:00
Harald Welte d0841fa5a5 make handover reference a function call argument 2009-12-17 00:25:18 +01:00
Harald Welte aa0efa1bd4 assign measurement report lchan member after memset'ing it 2009-12-16 23:29:34 +01:00
Harald Welte 573e1fe00e measurement report: correctly parse BSIC of first neighbor cell 2009-12-16 23:29:12 +01:00
Harald Welte 5a989a9160 ip.access: Keep OML/RSL up/down state per-bts for multi-BTS setups 2009-12-16 17:32:37 +01:00
Harald Welte 0e4fa785cc print measurement reports more verbosely 2009-12-16 16:52:07 +01:00
Harald Welte da58d3e1bd 04.08: fix off-by-one error while parsing measurement results 2009-12-16 16:49:21 +01:00
Harald Welte 44d2faafde fix bug in bitvec resulting in all bits being set to 0xff 2009-12-16 15:59:24 +01:00
Harald Welte e285bad2d0 [system_information] Print more debugging about what's going on 2009-12-16 11:57:48 +01:00
Harald Welte 31a0b823d0 mroe comments on meas_rep data structures 2009-12-15 21:36:59 +01:00
Harald Welte f947681e75 introduce cache of 6 last recently received measurement reports for each lchan 2009-12-15 21:36:05 +01:00
Harald Welte 792a1d41b3 add BSIC parameter to gsm_bts_neighbor()
When looking for the gsm_bts of a neighbor cell, use BSIC and ARFCN
tuple rather than just ARFCN for better identification purpose.
2009-12-15 00:21:31 +01:00
Harald Welte 2a4708678b Implement gsm_bts_neighbor() function to determine neighbor BTS
We will need this for the actual handover algorithm implementation, as we will
only know the current BTS and the BCCH ARFCN of the strongest cell in the
measurement reports.  Using this new function, we can resolve the matching
gsm_bts.
2009-12-14 22:33:02 +01:00
Harald Welte 3c626b2789 04.08 MEAS REP: Convert relative cell number to ARFCN
Since we are keeping a bitvec of the neighbor cells, we can now use
bitvec_get_nth_set_bit() to determine the ARFCN for each reported
cell in the 04.08 MEASUREMENT REPORT.
2009-12-14 22:24:28 +01:00
Harald Welte 5925cf702e bitvec: Introduce bitvec_get_nth_set_bit() function
This is particularly important for determining the ARFCN for cells
reported in 04.08 MEAS REP.
2009-12-14 22:23:27 +01:00
Harald Welte 6ae6467640 system_information: use bitvec to generate frequency lists
We use a 1024-bit-sized bitvec to generate the BA and neighbor frequency list.

This bitvec is still generated from the list of all BTS's inside the BSC, but
this patch is the first step to generalize this, i.e. generate arbitrary
neighbor lists.
2009-12-14 22:07:14 +01:00
Harald Welte 63043c900a bitvec updates and code simplification
* introduce a new bitvec_get_bit_pos() function to determine the bit value
  at a given position inside a bit vector
* make sure bitvec_{get,set}_bit_pos() share code as possible
2009-12-14 22:04:31 +01:00
Harald Welte bc47966086 [system_information] fix bit map 0 frequency list generation
Our frequency lists for GSM900 were completely wrong, as the bit map 0
encoding was not used correctly.  This patch should fix it.
2009-12-14 20:25:05 +01:00
Harald Welte c6b3c8cf04 fix compiler warnings in gsm_04_08.c 2009-12-14 17:51:15 +01:00
Harald Welte 238cd5a379 make sure BSIC is patched into NM tables before initializing BS11 2009-12-14 17:49:52 +01:00
Harald Welte 284ddba652 [PATCH] fix MM INFO parsing in vty_interface 2009-12-14 17:49:15 +01:00
Harald Welte a310f3edb9 Add VTY setting for whether or not to sending MM INFO 2009-12-14 09:00:24 +01:00
Harald Welte bcc2bef3c6 fix segfault in token_auth on SS_SUBSCR != ATTACH 2009-12-13 12:56:47 +01:00
Harald Welte edf48af899 introduce new signal every time we get a mobile identity 2009-12-13 12:39:18 +01:00
Harald Welte 52af195c7b [RRLP] make RRLP mode configurable from config file
We now support different RRLP modes (including "none" to disable RRLP),
you can configure it via "rrlp mode" in the "network" section of
openbsc.cfg.
2009-12-13 10:53:12 +01:00
Harald Welte 3d1f9b6c40 Gracefully reject non-speech calls
As we currently really only deal with voice/speech calls and don't
support FAX and DATA (CSD) calls, we now gracefully reject them.
2009-12-12 21:36:53 +01:00
Harald Welte 5ea9e8e429 make speech calls with NECI=1 work
Fix minor bug with speech calls in case of NECI=1
2009-12-12 21:16:38 +01:00
Harald Welte 9ed54ff064 [04.08] use lchan_auto_release to quickly close channel
In some cases, we can try to close the lchan a bit faster than our
lchan release timeout:
* After we've sent LOC UPD ACCEPT and MM INFO
* After a phone has confirmed the RELEASE of a call
2009-12-12 21:00:48 +01:00
Harald Welte 1250337bce If we're trying to allocate TCH/H but don't have it, fallback to TCH/F
The rationale is as following:

If we have NECI=1, then the phone will request a channel with CHREQ
"0100xxxx Originating speech call from dual-rate mobile station when TCH/H is
 sufficient and supported by the MS for speech calls", then we will try to
allocate a TCH/H [as it is sufficient].

However, if there are no free TCH/H slots on the BTS, we abandon and can't
handle the MO call at all :(
2009-12-12 20:58:20 +01:00
Harald Welte 1f0eca2a6c If we establish a TCH/H voice call, the reason is CALL, not OTHER 2009-12-12 20:57:52 +01:00
Harald Welte 059b6a84b5 [RSL] print human-readable channel type during channel allocation failure 2009-12-12 20:53:23 +01:00
Harald Welte b761bf8bd9 [VTY] add more cell reselection parameters to VTY
allow setting of 'cell reselection hysteresis' and 'rxlev access min' from VTY
for experiments with cell reselection.
2009-12-12 18:17:25 +01:00
Harald Welte 8e9d179beb print some more RF related information about BTS in VTY 2009-12-12 15:38:16 +01:00