Commit Graph

97 Commits

Author SHA1 Message Date
Harald Welte 9af6ddfcec License change: We are now AGPLv3+ instead of GPLv2+
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.
2011-01-01 15:39:34 +01:00
Holger Hans Peter Freyther 6f615551a4 abis_nm: Band aid on OML initialisation by queuing messages
Instead of sending many messages we will queue the OML
messages and wait for the ACK/NACK before sending the
next message from the queue. We tag the msgb to remember
if we need to wait for an ack or not.

We keep the order of all messages, on ACKs and similiar
occassions we will drown the queue until we reach a message
that needs to be acked and then wait for that ack again.

Possible breakage can appear when we send an OML (e.g.
BS11 specific message) msg which does not need to be acked
through the abis_nm_sendmsg call. The fix will be to use
the _direct version of this method.

Re-Enable as it might have fixed something... who knows.

Conflicts:

	openbsc/include/openbsc/abis_nm.h
	openbsc/include/openbsc/gsm_data.h
	openbsc/src/abis_nm.c
	openbsc/src/gsm_data.c
2010-12-21 13:53:41 +01:00
Harald Welte f751a10018 bs11_config: show the BPORT0 / BPORT1 configuration in 'query'
This introduces abis_nm_bs11_get_bport_line_cfg() and a parser for the result.
2010-12-14 12:52:16 +01:00
Harald Welte a780a3dc9f network-listen: The BSIC flag is not set as expected 2010-07-30 22:35:31 +02:00
Harald Welte c95cf10d08 [ipaccess-config] fix bugs in generating the PHYSICAL CONFIG attribute
... while asking the BTS to perform tests for us.  The length of the
ARFCN whitelist is the actual length in bytes, not the number of 16bit
ARFCN numbers.

Also, implement a limit, either by rxlevel or by number of ARFCN
that should end up in the whitelist.
2010-07-22 21:54:19 +02:00
Harald Welte af109b9fa9 [abis_nm] fix 2 bugs in parsing IPA Test response messages 2010-07-22 21:54:19 +02:00
Harald Welte 887deabe38 ipaccess-config / network listen: ordered list of RxLevels
Use libosmocore 'rxlev_stat' module to generate an ordered list
of ARFCN's, sorted by RxLev while performing test nr. 64
2010-07-22 21:54:19 +02:00
Harald Welte 549faada21 move ip.access netowrk listen (NWL) to network_listen.c
Also, we now re-start the network listen test after it has finished,
so if you run a test from ipaccess-find, the test will get re-started
and re-started all the time.
2010-07-22 21:54:19 +02:00
Holger Hans Peter Freyther 6d2b66e89a abis_nm: Create a signal data structure for the NACK message
Provide the message type and the msgb of the NACK message.
2010-07-14 02:08:35 +08:00
Holger Hans Peter Freyther 1afbd76155 abis_nm.c: Reading the in_addr can lead to unaligned memory access
The value of the in_addr might not be 32 bit aligned and reading
it can generate an alignment error on ARM. Fix it by using memcpy
to copy the data into a local variable.

There are many more potential alignment issues that we will fix
when we hit them.
2010-06-21 16:40:09 +08:00
laforge f87ebe69d5 [BSC] NM: Correct treatment of ARFCN_LIST for BS-11
For Siemens BS-11, the 'length' value of the ARFCN_LIST IE is interpreted in
violation of the spec.  The spec says it is a length in octets, while Siemens
treats it as 'count of 16bit ARFCN values'.
2010-06-20 15:20:02 +02:00
Harald Welte a39b0f2bb7 [BSC] Implement per-timeslot ARFCN lists for frequency hopping
We now compute the Cell Channel Description for SI 1 by bit-wise
OR of the ARFCN bitmask of each timeslot on all the TRX of the BTS.

Also, support generating a GSM 04.08 Channel Description IE for
the hopping case (with HSN/MAIO instead of ARFCN).

What's still missing now: Sending the 04.08 Mobile Allocation IE
2010-06-20 10:44:53 +02:00
Harald Welte 6e0cd04725 unfinished support for hopping channels 2010-06-20 10:44:52 +02:00
Harald Welte 81c9b9ca3e OML: Introduce minimal VTY command set to interact with OML managed objects 2010-05-31 16:40:40 +02:00
Holger Hans Peter Freyther 64278ede35 sw_load: Specify the trx_nr for the software load
For the multi TRX setup we will need to specify the right trx->nr
to be able to flash the BTS. For the BS11 case we are ignoring the
additional argument.
2010-05-13 00:41:48 +08:00
Holger Hans Peter Freyther 52fd4e4395 ipaccess: Send the reset to the BASEBAND_TRANSC and supply TRX
Send the IPA Restart to a given BTS/TRX, change the signal callbacks
to carry the trx instead of the BTS so we have an easy access to the
right TRX and change the ipaccess-config to use that TRX. This is
fixing the restart with a multi TRX setup.

Even if we have the msg->trx, use the gsm_bts_trx_by_nr and get
the TRX from the fom header. This is because the OpenBSC and the
BTS numbering might not match for the multi TRX case.
2010-05-13 00:41:30 +08:00
Holger Hans Peter Freyther aa0db809e2 abis: Pass the abis_om_obj_inst in the nm_state_event.. 2010-05-13 00:37:48 +08:00
Sylvain Munaut b998d7b219 abis_nm: Fix ACTIVATE SW parameters
The previous code only sent the FILE_ID tag data part,
but according to the GSM 12.21 spec, section 8.3.6, the
full SW Description 'object' must be sent so that includes
the NM_ATT_SW_DESCR tag, the whole FILE_ID and the whole
FILE_VERSION (including tags & length fields).

Note that functionnaly on a nanoBTS 139 I couldn't see any
difference ... whatever I send in there it works ...

Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2010-04-12 19:58:57 +02:00
Holger Hans Peter Freyther acf8a0c59f [misc] Remove whitespace from the end of the line. 2010-03-29 08:47:44 +02:00
Harald Welte 92b1fe4c2d increase the use of 'struct value_string' in abis_nm and gsm_data 2010-03-25 11:45:30 +08:00
Harald Welte 97a282b037 Create new gprs-conf branch with the non-SGSN part of the gprs branch
This new gprs-conf branch is intended to contain everything needed
to configure GPRS in the nanoBTS, but without implementing the SGSN/GGSN
functionality.

The SGSN/GGSN development will happen in a branch based on this branch
called "gprs-sgsn"
2010-03-22 19:02:04 +08:00
Harald Welte dfe6c7d910 split 'libosmocore' from openbsc codebase
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
2010-02-20 16:27:23 +01:00
Harald Welte 39315c4798 [OML] parse attributes depending on BTS type
Some NM attributes are defined differently depending on
the BTS type.  Having one big nm_att_tlvdef[] table for
all BTS types is no longer sufficient.  This patch

* introduces 'struct gsm_bts_model' to describe a BTS model
* adds definitions of gsm_bts_model for BS-11 and nanoBTS
* changes the abis_nm_tlv_parse() function: include a bts pointer
2010-01-10 18:01:52 +01:00
Harald Welte 2ef156db43 bis_nm_ipaccess_set_nvattr() executes on a TRX, not a BTS 2010-01-07 20:45:41 +01:00
Daniel Willmann 7b1dd748ea [abis_nm] Add abis_nm_bs11_set_pll function to change the set/work value
Whether this function changes the set or the work value depends on your
type of login. In FACTORY login it changes the set value, in FIELD login
it changes the work value (which is what is used by the BS11 to tune the
frequency).
2010-01-07 14:03:22 +01:00
Daniel Willmann 4b054c8788 [abis_nm] Add abis_nm_bs11_infield_logon to logon as user field
As this user you are able to set the PLL work value which is especially
useful if your BS11 got detuned by an inaccurate oscillator in your E1
card.
2010-01-07 14:03:22 +01:00
Daniel Willmann 493db4ee3d [abis_nm] Add generic abis_nm_bs11_logon function
Factoring out common logon functionality will allow us to logon as
different user. abis_nm_bs11_factory_logon now uses this function.
2010-01-07 14:03:21 +01:00
Sylvain Munaut 65542c7f59 abis_nm: Consider a STATE CHG without avail_status as an empty avail_status
At least some nanoBTS 139 send the last even (going online) as
'enabled' 'unlocked' but no avail status IE (which I guess mean an empty
set, the doc 12.21 isn't that clear about that).

Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2010-01-07 10:36:24 +01:00
Sylvain Munaut 1f6c11fda8 abis_nm: Introduce & use a nm_is_running function to test gsm_nm_state
This returns true if the gsm_nm_state can be considered 'running'.
Note that we also accept availability==0xff (which is a code for
no value) because according to 12.21 it is perfectly valid.

Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2010-01-03 10:11:24 +01:00
Holger Hans Peter Freyther f31e4745bb [misc] Utilize rf_locking by setting the nm_state.administrative
* On start the vty code will call the abis_nm method and this
  will set the administrative state to unlock/lock
* During startup the BTS will report its state as well and would
  possible overwrite the set administrative. We are only going
  to update the administrative if it was 0 before. This appears
  to work on all of my tests. In case this will not be the case
  for others we will have to split the administrative into two
  sets one for the BTS and one for the BSC.
2009-12-31 03:05:52 +01:00
Holger Hans Peter Freyther 7992867f4b [abis] Refactor sw descr generation to a new methods
* This is used in sw_load_init and sw_load_end and both needs
  to be touche for every BTS. Move it into a common method.
* This was only verified on the nanoBTS.
2009-12-30 09:25:30 +01:00
Holger Hans Peter Freyther 1356c08cc8 [abis] Dispatch a IPAC restart ACK/NACK signal
* Add the NACK version to the list
* Dispatch the signal when we receive the message
* Handle it in ipaccess-config by exiting the application
2009-12-30 09:00:01 +01:00
Holger Hans Peter Freyther 2e83782b1c [ipaccess] Restart only after setting the OML IP, software load
* Do not issue the restart right aways if we have OML IP or
  software load in the queue (hint, we need a real queue of operations
  to carry out... with one big state machine)
* Change the signal_data of ipacc ACK/NACK to contain the msg type
  and the bts pointer.
* Issue a restart for software load and OML and use the BTS pointer
  we got out of the new signal data.
2009-12-30 08:38:43 +01:00
Holger Hans Peter Freyther 086ffa51b4 [abis] Add ACK signal and send it on SET NVATTR ACK
* Add the signal definition to signal.h
* Dispatch the signal from abis_nm.c
* Handle it in ipaccess-config.c and say we are done with work
2009-12-30 04:40:50 +01:00
Holger Hans Peter Freyther c7aabcad1b [ipaccess] Handle LoadAbort coming from the BTS.
* Be bale to abort the load when the BTS is rejecting the file..
2009-12-28 16:40:44 +01:00
Holger Hans Peter Freyther 8f31a8fdae [abis] Set rc to 0 to avoid running into a warning about unknown states
When we have received the End Ack we are just doing nothing as we
are done. This means rc remains -1 and we will print a warning but
there is no need to have a warning...
2009-12-28 11:48:12 +01:00
Holger Hans Peter Freyther 326a632c46 [ipacess] Implement sw_load_end for the nanoBTS
* This should be shared with the sw_load_init routines
  as it is the about the same.
2009-12-28 11:45:43 +01:00
Holger Hans Peter Freyther c5dc0f7ac7 [ipaccess] Properly increment the segs_in_window
Somehow this should be done in the fill method..
2009-12-28 11:28:51 +01:00
Holger Hans Peter Freyther 5a2291e96a [ipaccess] No need to use fdopen for the file (that was leaked too) 2009-12-28 10:23:56 +01:00
Holger Hans Peter Freyther 71bc11e757 [ipaccess] Implement the Load Segment messages... 2009-12-28 10:04:26 +01:00
Holger Hans Peter Freyther 64d9ddde5d [abis] Warn if sw_load_segment is not implemented for the given bts type 2009-12-28 09:21:18 +01:00
Holger Hans Peter Freyther cf269a7f85 [ipaccess] Send the correct Software Load Init for the ipaccess BTS
* The FOM header needs to be different. We need to address the
  base station transceiver, bts, trx set to 0 and ts to 255
* We need to transfer the the \0 of 'id' and 'version'
* We need to issue a NM_ATT_SW_DESCR (just the value)
* We need to use 16bit length for the other two ids..
* After this our Software Load Init is getting an Ack.
2009-12-28 09:05:16 +01:00
Holger Hans Peter Freyther a6faea83e0 [ipaccess] Verify the SDP header before flashing
Print a big fat warning that we do not carefully check the
firmware as the format is not known and that flashing could
be dangerous..
2009-12-28 09:05:16 +01:00
Harald Welte 5b8ed4398e [logging] differentiate DEBUG, NOTICE and ERROR log levels in NM and RSL 2009-12-24 12:20:20 +01:00
Harald Welte d6847a940a use enum for operational state 2009-12-24 10:06:33 +01:00
Holger Hans Peter Freyther 66e8219f96 [sw_load] It turns out there is a header that needs to be read
The magic " SDP" is occuring twice in the file. The first time
seems to be the file header and the second time it is with the
payload. We will need to parse this somehow...
2009-12-23 08:06:31 +01:00
Holger Hans Peter Freyther e7ff91342e [sw_load] For the nanoBTS just open the firmware
* The two version strings are not in an easy to parse header
  and from my trace it appears like the whole file is sent
  to the BTS. So just open the firmware file..
2009-12-23 07:26:57 +01:00
Holger Hans Peter Freyther 306b7219ac [abis] Do not access an array with N elements at index N
Possible crash fixes by preventing accessing the
array out of bounds.
2009-12-21 17:06:07 +01:00
Holger Hans Peter Freyther 17c24c9057 [abis] Properly compare obj_inst->trx_nr to bts->num_trx
* Use >= in this case as we start counting the trx from 0
* This is fixing a problem with multi trx config
2009-12-21 17:00:46 +01:00
Harald Welte b1d4c8ed9d 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