Commit Graph

36 Commits

Author SHA1 Message Date
Harald Welte (local) 19ef62a0a5 Introduce and use gsm_lchan_name() in addition to gsm_ts_name()
In many cases we actually want a name / unique ID for the lchan,
not just for the on-air timeslot... especially in SDCCH/8 case,
where 8 SDCCHs share one timeslot...
2009-12-28 13:42:33 +01:00
Harald Welte (local) ccd8845449 rename gsm_lchan_name() to gsm_lchant_name() 2009-12-28 13:41:06 +01:00
Harald Welte f6f2ef9d24 move get_string_value() und get_value_string() into debug.c
this makes bsc_mgcp and ipaccess-proxy compile again
2009-12-27 11:24:55 +01:00
Harald Welte (local) 240ce88185 add 'get_string_value()' as inverse function of 'get_value_string()' 2009-12-26 22:47:55 +01:00
Harald Welte ffa55a4e87 statistics: Introduce 'struct counter' instead of using unsigned long
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-22 20:42:40 +01:00
Sylvain Munaut 4010f1e6f4 bts: Allow config of RACH control parameters tx-integer & max retrans
Tweaking theses can be useful especially tx-integer that influence
both the spread of rach attemps and the delay between two attemps.

Looking up GSM 04.08 3.3.1.1.2 & 10.5.2.29 can help determine good
values. The default are choosed with a wide spacing between attemps
(tx integer = 9 -> T=12 & S=217 (non-combined CCCH/SDCCH) or 115 (for
combined CCCH/SDCCH)). This alleviates the problem of responding to
several RACH attempts by a same MS, allocating several RF channels when
only 1 is needed.

Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2009-12-22 13:43:26 +01:00
Harald Welte f7c28b099f [handover] Real handover algorithm
This implements the handover algorithm (and associated parameters)
as described in Chapter 8 of the book "Performance Enhancements in
a Frequency |Hopping GSM Network" by Thomas Toftegard Nielsen and Jeroen
Wigard.

The parameters such as averaging windows are configured in struct
gsm_network.  We keep some state to trakc up to 10 neighbors as
they are being reported from the MS.

This has so far only been tested in a network with two BTS that
have each other as neighbor.  Networks with morge neighbors might
encounter bugs.
2009-12-21 13:33:10 +01:00
Harald Welte d12b0fdf51 introduce cache of 6 last recently received measurement reports for each lchan 2009-12-15 21:36:05 +01:00
Harald Welte 0b12103965 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 84874c9005 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 6c40def716 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 eab84a112c [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 7322528ca1 [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 b84ddfc22f Assign default values for T3101 and T3113
Without those default values, old config files will no longer work
after commit 23975e718f
2009-12-01 17:36:54 +05:30
Holger Hans Peter Freyther 2d501ea26a [vty] Add option to disable RF on a given TRX.
- Make sure that on runtime the Radio Carrier can be
  locked and unlocked. The vty code calls into the
  Abis NM to lock/unlock the channel and the state is
  stored there.

- Make sure that on start the Radio Carries remains
  offline and we are not starting it. On start the
  radio carrier is either locked or unlocked. This means
  the RSL will not connect until the RF is unlocked. It
  will connect then. To see RSL bringup failures one
  needs to parse the RSL nack message.

- When the TRX is locked on startup the RSL link will
  only be established after it will be unlocked.
2009-11-24 13:08:50 +01:00
Harald Welte ccda96517c move 'struct value_string' and 'get_value_string()' to gsm_data 2009-11-12 22:28:18 +09:00
Holger Hans Peter Freyther 5ea731338d [misc] Use talloc_zero instead of talloc and later memset 2009-10-29 02:29:45 +01:00
Mike Haben 2449b37dfe [USSD] various USSD improvements
- Improved handling of extension-number string (as per review)
- Guard against a buffer-overflow if mobile sends a too-long USSD
- declare some function-parameters const
- fix gsm_ts_name function to display the right BTS number (bts->nr rather than bts->bts_nr)
2009-10-26 20:39:26 +01:00
Harald Welte a1499d00a5 [GPRS] introudce PDCH and PDCH/TCH physical channels
GPRS needs PDCH (Packet Data Channels), and we need support in
our data model as well as OML and RSL for it
2009-10-24 10:25:50 +02:00
Harald Welte 55dd443ac2 [GPRS] add data structures for OML of NSE,CELL,NSVCE
Supporting GPRS means we have a number of additional OML objects to
deal with.  We need to extend our gsm_bts structure to at least
include the nm_state for each of those objects.
2009-10-24 10:19:14 +02:00
Mike Haben e2d8227499 [ipaccess] Add nanoBTS 1900 support
Add support for 1900 nanoBTS by using unified bts_type
GSM_BTS_TYPE_NANOBTS for 900, 1800 and 1900 versions.

Reduce the nanoBTS enum values to one and derive the
version from the user supplied band. In the future we
might want to do auto band detection.

The configuration file needs to be changed to refer
to nanobts instead of nanobts900/nanobts1800.

Signed-off-by: Mike Haben <michael.haben@btinternet.com>
Signed-off-by: Holger Hans Peter Freyther <zecke@selfish.org>
2009-10-05 12:12:54 +02:00
Holger Hans Peter Freyther e48b9562a4 [lac] Do not use the reserved LAC 0x0 for two different things
We are using LAC=0 for remembering that a GSM subscriber is
detached. I recently added code to gsm_bts_by_lac that will
return every BTS in case the lac is 0. Harald highlightes
that we would now search for detached subscribers at every
BTS of our network which is clearly not what we want.

Introduce two defines for the two reserved LAC, add a
pointer to the specification, check that our config files
do not contain these reserved values, use the define
and change gsm_bts_by_lac to use the other define.
2009-10-01 04:07:15 +02:00
Holger Hans Peter Freyther 45f9b3d3fc [paging] Use one of the two reserved LAC to page every BTS
For the on-waves.com MSC case we want to page every BTS reached
of the network. Our gsm_subscriber entry does not have a LAC
entry set and defaults to zero. Use the reserved 0x0000 to
indicate that we want to use every bts in the network.

This will influence the paging code to start and stop paging.
2009-09-28 12:50:49 +02:00
Harald Welte (local) 0e451d0f2e add 'ms max power' vty command to set the maximum MS power in dBm 2009-08-13 10:14:26 +02:00
Harald Welte (local) 69de397ff4 add a authorization policy field to the network and VTY
this is not being used yet
2009-08-12 20:53:36 +02:00
Harald Welte 42581829ec the actual config file code (not just config files)
this was missing from commit a08a9acdb6
2009-08-08 16:12:58 +02:00
Harald Welte 1d014a5dfc parse_btstype() can use const qualifier 2009-08-08 15:38:29 +02:00
Harald Welte a171a1be47 implement gsm_pchan_parse() function 2009-08-07 00:24:39 +02:00
Harald Welte 9fb3b8bff4 change order of BTS and TRX list as well as band names for prettier printout 2009-08-06 19:05:58 +02:00
Andreas Eversberg 8226fa7016 the pointer "tall_bsc_ctx" belongs to the gsm_data.c file not to include file. 2009-06-29 15:19:38 +02:00
Harald Welte e441d9c361 switch to dynamically allocated BTS and TRX data structures
This makes it much easier to do run-time configuration using the vty
interface.
2009-06-21 16:17:15 +02:00
Harald Welte fcd2445d05 Introduce BS and MS power control related functions
* add bts->band field plus corresponding VTY and commandline argument
* add trx->nominal_power and trx->max_power_red fields
* add rsl_chan_bs_power_ctrl() to control TRX RF power for a given TS
* add rsl_chan_ms_power_ctrl() to control MS RF power for a given lchan.
2009-06-20 19:22:18 +02:00
Harald Welte a717d5de8e Merge branch 'mncc-harald' 2009-06-14 22:15:37 +08:00
Holger Hans Peter Freyther 2dceae6ab7 make btstype2str return a const char* to make gcc 4.4 happy 2009-06-12 17:39:38 +02:00
Harald Welte 4bfdfe7f70 reworked MNCC codebase
This is Harald's reworked MNCC base, slowly heading towards integration
into master.  The key changes are:
* provide much more structure to the data in gsm_mncc
* encode_* and decode_* functions now take a structure rather than tons
  of individual arguments (whose order nobody can remember)
* make sure we don't have copies of the same code everywhere by introducing
  mncc_set_cause() and mncc_release_ind()
* save horizontal screen space if possible
* make sure we break lines > 80 characters
2009-06-10 23:25:50 +08:00
Harald Welte 13e10daa33 move openbsc into its own subdirectory 2009-06-10 05:40:52 +08:00