Andreas Eversberg [Sun, 12 Jun 2011 19:39:24 +0000 (21:39 +0200)]
[layer23] Correctly report to restart mobile instance after band change
Mobile instance must be restarted (shutdown / no shutdown) in order to
apply changes to the available ARFCNs.
Andreas Eversberg [Mon, 13 Jun 2011 06:15:26 +0000 (08:15 +0200)]
[layer23] Fixes and improvements of system information decoding
Sylvain Munaut [Sun, 17 Jul 2011 10:05:07 +0000 (12:05 +0200)]
fw/apps: Remove manual gain control with keyboard
- It's broken by the use of compute_gain
- Since there is now an AGC loop, manually setting the register
as no effect.
If someone needs manual gain control for testing, he'll have to
re-implement a proper AGC override.
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
Andreas Eversberg [Sun, 17 Jul 2011 09:12:15 +0000 (11:12 +0200)]
[layer23/mobile] Improvement and fixes of idle mode process
This patch introduces cell re-relection. When camping on a cell, it
scanns neighbour cells. If a 'better' cell is found, the cell is selected.
If the cell is in a different location area, a location upating is
performed under certain conditions.
The 'better' cell depends on various informations that are broadcasted on
the BCCH of a neihbour cell and of course the RX level. Most operators
don't set these informations, so the 'better' cell depend on a better
RX level for the same location area, or a much better RX level (6 dBm)
at a different location area.
There were many issues at the idle mode process that has been fixed.
Expecially when moving, the state machines got stuck, so no more cell search
was possible, or no further calls / location updating was possible.
In order to see the process of cell selection, enter the VTY interface and
enable the network monitor:
enable
monitor network 1 (where '1' is the instance of the MS)
In order to see the current state of the processes, enter:
show ms
Andreas Eversberg [Sun, 17 Jul 2011 08:58:21 +0000 (10:58 +0200)]
[mobile] Corrected output value of PCS power class
Andreas Eversberg [Sun, 17 Jul 2011 08:52:05 +0000 (10:52 +0200)]
[mobile] Adding option to hide most default values in config
In order to shrink config output, a new config option "[no] hide-default"
is added. The config is now easier to read, but does not show all available
options, if they are set to default. Newcommers may want to see all
available options in config. Therefore all options are show by default.
To hide default options, enter:
configure terminal
hide-default
end
Andreas Eversberg [Sun, 17 Jul 2011 08:23:35 +0000 (10:23 +0200)]
[mobile] Adding PCS band to list of maximum ARFCNs to scan in one band
Andreas Eversberg [Sun, 17 Jul 2011 08:18:46 +0000 (10:18 +0200)]
[mobile] Adding security warning, if default IMEI is not changed
Andreas Eversberg [Sun, 12 Jun 2011 20:39:47 +0000 (22:39 +0200)]
[layer23] Adding "neighbour cell" logging category: DNB
Andreas Eversberg [Sun, 26 Jun 2011 08:40:56 +0000 (10:40 +0200)]
[layer23] Detach SIM, if reading fails
This way the mobility management and cell selection process continues as
if no SIM has been inserted.
Andreas Eversberg [Sun, 17 Jul 2011 07:41:19 +0000 (09:41 +0200)]
[layer1] Adding neighbour cell measurement code to layer1.
When listening to BCCH, layer1 may measure the power level of neighbour
cells. A list of neighbour cell frequencies need to be sent to layer1.
After the measurement is done, the results are indicated to layer23.
Andreas Eversberg [Sun, 17 Jul 2011 07:36:49 +0000 (09:36 +0200)]
[layer23] Adding neighbour cell measurement to L1CTL interface.
Andreas Eversberg [Sun, 17 Jul 2011 07:27:35 +0000 (09:27 +0200)]
[rf] Adding rffe_set_gain() and rffe_get_gain() to get/set computed gain
rffe_compute_gain() is the new name for rffe_set_gain(). I needed to change
this, to solve the name collision with the rffe_set_gain() function, which
actually sets the absolute gain.
rffe_get_gain() will now read the absolute gain which has been computed by
rffe_compute_gain() or set by rffe_set_gain().
Andreas Eversberg [Sun, 17 Jul 2011 07:09:32 +0000 (09:09 +0200)]
[layer23] Fixed handling of channel 0 in certain loops
The ARFC counts from 1 to 1023, and then to 0. The index of these loops
count from 1 to 1024. The index 1024 stands for ARFCN 0.
This also reverses commit
eb77945e162ae1968242009372e448b7af51ea50.
Harald Welte [Sat, 16 Jul 2011 16:01:48 +0000 (18:01 +0200)]
tpu_window: Fix int16_t overflow in tpu_window calculation
First we add 55500 to an int16_t, then later we subtract it again.
The bug only didn't become apparent as we wrap twice, once adding
then subtracting.
Discovered by Smatch:
firmware/layer1/tpu_window.c +127 l1s_rx_win_ctrl(24) warn: value 55000 can't fit into 32767 'stop'
Harald Welte [Sat, 16 Jul 2011 15:48:20 +0000 (17:48 +0200)]
calypso/uart.c: Fix array bounds checking
Found by Smatch:
calypso/uart.c +433 uart_baudrate(7) error: buffer overflow 'divider' 7 <= 7
Harald Welte [Sat, 16 Jul 2011 15:46:54 +0000 (17:46 +0200)]
calypso/irq: Fix array bounds checking
Found by Smatch:
calypso/irq.c +200 irq_register_handler(5) error: buffer overflow 'irq_handlers' 32 <= 32
Harald Welte [Sat, 16 Jul 2011 15:41:02 +0000 (17:41 +0200)]
settings.h: IMSI is 15 bytes +1 \0 maximum
If we use a larger field to store the IMSI, we can create overflows when
copying the imsi to other structures that are only 16 bytes in size.
Detected by Smatch:
src/host/layer23/src/mobile/subscriber.c +195 gsm_subscr_testcard(39) error: strcpy() 'set->test_imsi' too large for 'subscr->imsi' (20 vs 16)
Harald Welte [Sat, 16 Jul 2011 15:38:19 +0000 (17:38 +0200)]
sysinfo.h: ARFCN can be 0..1024, so we need an array of 1025 entries
Detected by Smatch:
src/host/layer23/src/mobile/gsm48_rr.c +1658 gsm48_new_sysinfo(23) warn: buffer overflow 's->freq' 1024 <= 1024
Harald Welte [Sat, 16 Jul 2011 15:37:34 +0000 (17:37 +0200)]
gsm48_rr: Don't overflow array boundary
Detected by Smatch:
src/host/layer23/src/mobile/gsm48_rr.c +3021 gsm48_rr_render_ma(89) warn: buffer overflow 'cd->freq_seq_lv' 10 <= 10
src/host/layer23/src/mobile/gsm48_rr.c +3023 gsm48_rr_render_ma(91) error: buffer overflow 'cd->freq_seq_lv' 10 <= 10
Harald Welte [Sat, 16 Jul 2011 15:34:07 +0000 (17:34 +0200)]
osmocon: if we ignore a return value, we don't need to assign it to a variable
Harald Welte [Sat, 16 Jul 2011 12:52:18 +0000 (14:52 +0200)]
osmocon: get rid of some Smash warnings
Holger Hans Peter Freyther [Sat, 16 Jul 2011 07:33:35 +0000 (09:33 +0200)]
misc: Fix crash in cell_log due missing l1_prim_cb
Commit
3538c38835b9120d7cf062fa533f7657768bf0d3 introduced the
l1_prim_cb but the init of the misc apps were not updated, make
it us the generic callback that should restore the previous behavior
Harald Welte [Mon, 27 Jun 2011 06:40:53 +0000 (08:40 +0200)]
lapdm: fix use-after-free
We cannot msgb_free() the msgb and then later reference msg->l2h!
Sylvain Munaut [Sun, 26 Jun 2011 09:43:51 +0000 (11:43 +0200)]
Andreas Eversberg [Sun, 26 Jun 2011 09:41:48 +0000 (11:41 +0200)]
gsm/utils: Adding conversion of "mobile power class" to dBm
Written-by: Andreas Eversberg <jolly@eversberg.eu>
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
Andreas Eversberg [Sat, 25 Jun 2011 20:46:24 +0000 (22:46 +0200)]
fw/l1a: Add a message to safely count the length of a txqueue
(that is by locking)
Written-by: Andreas Eversberg <jolly@eversberg.eu>
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
Sylvain Munaut [Sat, 25 Jun 2011 20:42:38 +0000 (22:42 +0200)]
fw/sercomm: Additional locking needed in drv_pull
Credits to Andreas Eversberg for finding this bug after countless
hours of debug and providing initial patch :)
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
Sylvain Munaut [Sat, 25 Jun 2011 20:38:20 +0000 (22:38 +0200)]
fw/sercomm: Fix up the locking using an 'abstraction' layer
Not _that_ abstract but a long is enough to store a ptr if need
be :p
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
Sylvain Munaut [Sat, 4 Jun 2011 10:24:24 +0000 (12:24 +0200)]
fw/comm/msgb: Protect allocation routine with proper locking
Credits to Andreas Eversberg for finding this bug after countless
hours of debug :)
Written-by: Andreas Eversberg <jolly@eversberg.eu>
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
Sylvain Munaut [Sat, 4 Jun 2011 10:21:52 +0000 (12:21 +0200)]
fw/comm/msgb: Really panic (i.e. lockup) if we run out of msgb
Ideally we should only panic in interrupt context. In user
context, we could wait ...
We could also return NULL and let the calling code deal with it
but it's not ready for that yet.
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
Sylvain Munaut [Sat, 4 Jun 2011 10:20:32 +0000 (12:20 +0200)]
fw/comm: Remove useless include from msgb.c
Left over from the backlight debug code
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
Sylvain Munaut [Sat, 25 Jun 2011 20:26:49 +0000 (22:26 +0200)]
Harald Welte [Sat, 25 Jun 2011 19:39:18 +0000 (21:39 +0200)]
sysinfo: add EXTENDED MEASUREMENT ORDER / MEASUREMENT INFO to SI types
those two are used in the RSL SACCH FILLING messages and delivered
like SI5 / SI6.
Harald Welte [Sat, 25 Jun 2011 19:39:01 +0000 (21:39 +0200)]
RSL: Fix typo
Harald Welte [Sat, 25 Jun 2011 16:32:08 +0000 (18:32 +0200)]
lapdm: properly set the msg->l3h to the contents of the RSL L3_INFO IE
Harald Welte [Fri, 24 Jun 2011 20:05:46 +0000 (22:05 +0200)]
lapdm: introduce a new lapdm_phsap_dequeue_prim()
This function can be called by a TDMA-driven L1 which will never actually want
to receive unsolicited/asynchronous PH-DATA.req primitives, but who will simply
directly poll the LAPDm transmit queue by calling the abovementioned function
Harald Welte [Fri, 24 Jun 2011 13:57:59 +0000 (15:57 +0200)]
lapdm: Don't try to send data using a PH-RACH.req, use PH-DATA.req
Harald Welte [Fri, 24 Jun 2011 13:28:02 +0000 (15:28 +0200)]
lapdm: some more error reporting in case strange primitives arrive from L1
Harald Welte [Fri, 24 Jun 2011 13:26:59 +0000 (15:26 +0200)]
L1CTL is sending PH-DATA.ind, not PH-DATA.req up to LAPDm
Harald Welte [Fri, 24 Jun 2011 11:56:48 +0000 (13:56 +0200)]
introduce LAPDM entity flags for PH-EMPTY_FRAME.req and pollling
polling means that we never try to proactively generate a PH-DATA.req
unless there was a PH-RTS.ind first.
Harald Welte [Fri, 24 Jun 2011 10:23:17 +0000 (12:23 +0200)]
lapdm: Introduce LAPDM_MODE_{BTS,MS} to run on both sides
We also introduce some related functions like
lapdm_{entity,channel}_set_mode()
lapdm_{entity,channel}_reset()
This is all in preparation for the Osmo-BTS Work.
Harald Welte [Thu, 23 Jun 2011 22:42:01 +0000 (00:42 +0200)]
lapdm: implement RSL CHAN RQD generation from PH-RA.ind
Harald Welte [Thu, 23 Jun 2011 22:13:17 +0000 (00:13 +0200)]
lapdm: use msgb_tlv_put instead of manual equivalent
Harald Welte [Thu, 23 Jun 2011 22:04:50 +0000 (00:04 +0200)]
fix some spillage from recent conversion
Harald Welte [Thu, 23 Jun 2011 22:04:37 +0000 (00:04 +0200)]
lapdm: remove dependency to osmocom_data.h
Harald Welte [Thu, 23 Jun 2011 21:57:34 +0000 (23:57 +0200)]
lapdm: remove get_rsl_name() and use libosmogsm:gsm_rsl_name() instead
Harald Welte [Thu, 23 Jun 2011 21:55:20 +0000 (23:55 +0200)]
further decouple lapdm code from osmocom_ms and l1ctl
we introduce a new primitive layer betwen PH and DL, enabling the
use of the LAPDm code in applications that are not based on L1CTL
Harald Welte [Thu, 23 Jun 2011 18:43:13 +0000 (20:43 +0200)]
add value_string definitions for RSL message types
Harald Welte [Thu, 23 Jun 2011 13:04:47 +0000 (15:04 +0200)]
introduce GSM primitive definitions
The idea here is to use the osmocom core primitive code ot abstract out
primitives for inter-layer comunication in GSM.
Harald Welte [Thu, 23 Jun 2011 12:14:20 +0000 (14:14 +0200)]
add new 'prim.h' header file for primitives
Harald Welte [Wed, 22 Jun 2011 21:08:55 +0000 (23:08 +0200)]
add l1ctl_proto.h #includes to lots of files
this is apparently a result of no longer including it indirectly via lapdm.h
Harald Welte [Wed, 22 Jun 2011 21:04:20 +0000 (23:04 +0200)]
remove l1ctl data structure form l2_ph_chan_conf()
This brings us one step closer to de-couple LAPDm from L1CTL
Harald Welte [Wed, 22 Jun 2011 21:01:18 +0000 (23:01 +0200)]
remove l1ctl data structure from l2_ph_data_ind()
Harald Welte [Tue, 21 Jun 2011 17:46:20 +0000 (19:46 +0200)]
lapdm.c: remove unneeded header file #includes
Harald Welte [Sun, 22 May 2011 18:10:34 +0000 (20:10 +0200)]
layer23: make LAPDm code mostly independent of 'struct osmocom_ms'
This is one step in the direction of re-using the lapdm code in osmo-bts.
Harald Welte [Fri, 20 May 2011 16:16:09 +0000 (18:16 +0200)]
remove osmocom_ms reference from lapdm_init()
... yet another step in making lapdm code independent of osmocom_ms
Harald Welte [Thu, 19 May 2011 22:08:22 +0000 (00:08 +0200)]
remove 'osmocom_ms' from struct lapdm_enetity
and replace it with more general l1_ctx nad l3_ctx.
Pablo Neira Ayuso [Thu, 9 Jun 2011 13:04:30 +0000 (15:04 +0200)]
socket: add OSMO_SOCK_F_[CONNECT|BIND|NON_BLOCK] flags
This extends the socket infrastructure in libosmocore to allow
to create non-blocking sockets.
Basically, it replaces the connect0_bind1 parameter by one
flags parameter.
Pablo Neira Ayuso [Mon, 13 Jun 2011 17:15:50 +0000 (19:15 +0200)]
Merge branch 'master' of git.osmocom.org:libosmocore
Harald Welte [Sun, 5 Jun 2011 17:53:56 +0000 (19:53 +0200)]
add missing #include file to sysinfo.h
(otherwise 'struct value_string' would not be defined)
Harald Welte [Sun, 5 Jun 2011 09:22:59 +0000 (11:22 +0200)]
abis_nm.h: Add include to gsm_utils.h
Harald Welte [Tue, 31 May 2011 15:47:54 +0000 (17:47 +0200)]
socket: getaddrinfo(): set AI_PASSIVE if we want to bind
This will tell getaddrinfo() that we want a INADDR_ANY style socket
Holger Hans Peter Freyther [Mon, 30 May 2011 22:42:38 +0000 (00:42 +0200)]
abis_nm: Forward declare the used enums
This file is using enums in that might or might not be
known to the compiler. Forward declare them.
Wolfram Sang [Mon, 30 May 2011 18:03:17 +0000 (20:03 +0200)]
board: mtk: increase RAM sizes in linker script
gcc3 (and some gcc4) produce code which does not fit into the
0x5000-sized RAM sections. Extend them to 0x6000 for now, so it will
build correctly again. The created binary (gcc3) has been successfully
tested on my G2.
Signed-off-by: Wolfram Sang <wolfram@the-dreams.de>
Wolfram Sang [Mon, 30 May 2011 18:03:16 +0000 (20:03 +0200)]
mtk: uart: remove forgotten calypso-include
Dunno how that survived...
Signed-off-by: Wolfram Sang <wolfram@the-dreams.de>
Andreas.Eversberg [Wed, 16 Mar 2011 08:52:01 +0000 (08:52 +0000)]
[layer23] Adding Quadband support and GSM 4x0 support
This makes it possible to use GSM 850 and PCS 1900 bands, as used in the
US. The support relies on the phone hardware.
Each band (900, DCS, 850, PCS, 480 and 450) can be enabled and
disabled individually for each setting.
Sylvain Munaut [Mon, 23 May 2011 21:15:09 +0000 (23:15 +0200)]
fw/rffe/compal: Add support for 850 band
The HW switch supports it.
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
Sylvain Munaut [Sun, 24 Apr 2011 08:36:21 +0000 (10:36 +0200)]
fw/trf6151: Use a #define to enable/disable out-of-spec warnings
We also disable them by default because:
- It can operate fine out of spec
- Some phone will actually do it (like using the DCS port for PCS)
- It's verbose for nothing for most people anyway
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
Sylvain Munaut [Sat, 23 Apr 2011 21:00:24 +0000 (23:00 +0200)]
fw/trf6151: Better PLL settings routines
* We actually support TX 850/1900 now
* We try to find the better settings for a given frequency,
no matter if it's in spec or not ...
(for e.g. TXin in DCS downlink is better done with PCS config)
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
Sylvain Munaut [Sat, 23 Apr 2011 20:27:59 +0000 (22:27 +0200)]
fw/rffe: Add function to query RF wiring
Depending on the chipset and the HW, not all ports are connected
and we need to know what we can use when we have the choice ...
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
Sylvain Munaut [Sun, 29 May 2011 17:49:53 +0000 (19:49 +0200)]
Sylvain Munaut [Sun, 29 May 2011 17:48:15 +0000 (19:48 +0200)]
gsmtap_util: Remove msg_free from the wq call back
write_queue already frees the message after the callback is called.
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
Harald Welte [Sun, 29 May 2011 15:01:26 +0000 (17:01 +0200)]
Makefile: disable the check for sys/socket.h in the libosmocore target build
Sylvain Munaut [Sun, 29 May 2011 13:55:24 +0000 (15:55 +0200)]
src/Makefile: The configure.in was renamed configure.ac -> update Makefile
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
Sylvain Munaut [Sun, 29 May 2011 13:53:59 +0000 (15:53 +0200)]
Sylvain Munaut [Sun, 29 May 2011 13:39:04 +0000 (15:39 +0200)]
gsm/sysinfo: Fix rsl2sitype array size
0xff is the maximum value ... so there is 256 elements.
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
Harald Welte [Sun, 29 May 2011 13:37:49 +0000 (15:37 +0200)]
gsm/sysinfo: don't include netinet/in.h
Harald Welte [Sun, 29 May 2011 13:37:38 +0000 (15:37 +0200)]
bitvec: add missing stdint.h
Harald Welte [Sun, 29 May 2011 13:26:48 +0000 (15:26 +0200)]
socket: remove unused IPv4 related header includes
Harald Welte [Fri, 27 May 2011 16:17:05 +0000 (18:17 +0200)]
Harald Welte [Tue, 24 May 2011 19:31:53 +0000 (21:31 +0200)]
socket: Skip ifa's without ifa->ifa_addr
Apparently getifaddrs() returns ifa's without an ifa_addr set.
Pablo Neira Ayuso [Tue, 24 May 2011 16:31:13 +0000 (18:31 +0200)]
Merge branch 'master' of git.osmocom.org:libosmocore
Harald Welte [Tue, 24 May 2011 15:15:12 +0000 (17:15 +0200)]
Import abis_nm_{chcomb4pchan,pchan4chcomb}() from openbsc
Alexander Huemer [Tue, 24 May 2011 13:16:14 +0000 (15:16 +0200)]
libosmocore: rename configure.in -> configure.ac
rename autoconf input file to align with osmocom-bb host applications,
and because that suffix is preferred nowadays.
Alexander Huemer [Tue, 24 May 2011 13:16:13 +0000 (15:16 +0200)]
libosmocore: add missing AC_LANG_SOURCE for current autoconf
autoconf >=2.68 demands the body of an AC_COMPILE_IFELSE to be wrapped in
an AC_LANG_SOURCE macro, otherwise outputs annoying warnings on the
invocation of `autoreconf -i`. this patch follows that demand.
Harald Welte [Tue, 24 May 2011 13:01:53 +0000 (15:01 +0200)]
Import sytem information related definitions + code from openbsc
Harald Welte [Mon, 23 May 2011 20:17:26 +0000 (22:17 +0200)]
Holger Hans Peter Freyther [Mon, 23 May 2011 19:41:34 +0000 (21:41 +0200)]
abis_nm: Mark the structs as extern to avoid compiler warning
warning: array ‘abis_nm_obj_class_names’ assumed to have one element
Harald Welte [Mon, 23 May 2011 18:41:31 +0000 (20:41 +0200)]
abis_nm: remove abis_nm_obj_class_name / abis_nm_adm_state_name
and export the underlying raw value_string arrays instead:
abis_nm_obj_class_names / abis_nm_adm_state_names.
This permits the caller to use get_string_value() as well as
get_value_string().
Harald Welte [Mon, 23 May 2011 18:30:17 +0000 (20:30 +0200)]
rename abis_nm_adm_name() to abis_nm_adm_state_name()
Pablo Neira Ayuso [Mon, 23 May 2011 17:01:34 +0000 (19:01 +0200)]
Merge branch 'master' of git.osmocom.org:libosmocore
Harald Welte [Sun, 22 May 2011 20:45:16 +0000 (22:45 +0200)]
abis_nm: import definitions and common code on A-bis OML from OpenBSC
Harald Welte [Sun, 22 May 2011 19:57:15 +0000 (21:57 +0200)]
libosmogsm: add ipaccess related header file
Harald Welte [Sun, 22 May 2011 19:47:29 +0000 (21:47 +0200)]
socket: use listen() and SO_REUSEADDR, new osmo_sock_init_ofd() function
osmo_sock_init_ofd() is a wrapper around osmo_sock_init() which will
take care of initializing and registering a 'struct osmo_fd' for the
newly-created socket.
Harald Welte [Sun, 22 May 2011 18:30:18 +0000 (20:30 +0200)]
remove debug printf from socket.c
Harald Welte [Sun, 22 May 2011 18:06:11 +0000 (20:06 +0200)]
gsmtap: deal with apps that call gsmtap_send*() with NULL gsmtap_inst
Harald Welte [Sun, 22 May 2011 17:15:07 +0000 (19:15 +0200)]
vty: print actual application name rather than always OpenBSC on connect
Harald Welte [Sun, 22 May 2011 10:36:55 +0000 (12:36 +0200)]
layer23: update to new GSMTAP API in libosmocore >= 0.3.1
Harald Welte [Sun, 22 May 2011 10:26:42 +0000 (12:26 +0200)]