Commit Graph

3619 Commits

Author SHA1 Message Date
Harald Welte 80405458a0 [gprs] NS: replace nsvc->timer_is_tns_alive with nsvc->timer_mode
This will allow to use the timer in more than 2 modes
2010-05-04 07:20:45 +02:00
Harald Welte bbc9fac7b7 [gprs] Unify log messages of the NS protocol implementation 2010-05-04 07:20:44 +02:00
Harald Welte f76aee438e [gprs] correctly calculate the length of the BSSGP PDUs 2010-05-04 07:20:44 +02:00
Harald Welte a2ca4ed960 [gprs] pass BSSGP UL-UNITDATA Cell ID up into GMM layer
BSSGP stores a pointer to the Cell Identifier IE in msgb->cb, which
is later used by the GMM layer to identify the cell that has sent a
given message.

This now also means that the gsm_04_08_gprs.c code is free of any
legacy references to msg->trx or struct gsm_bts.
2010-05-04 07:20:43 +02:00
Harald Welte 8f9a3ee67b [gprs] Use stdint.h types (uintXX_t instead of u_intXX_t)
libosmocore already uses them, it's time (at least for new code)
in openbsc to do the same.
2010-05-04 07:20:43 +02:00
Harald Welte 30bc19a5c6 [gprs] SGSN: Expect all Identifiers to be stored at highest level
We now expect the highest level (actual SGSN GMM code) to know
all identifiers for every element in the protocol stack, i.e.
TLLI, SAPI, BVCI and NSEI.  The layer-inetrnal state is looked
up based on those identifiers.

The reason for this is to ensure only the highest level state
needs to be persistent, while everything else can be regenerated
dynamically (e.g. in a SGSN restart)
2010-05-04 07:20:43 +02:00
Harald Welte ec19c10829 [gprs] Ensure msgb->l3h points to Layer3 (04.08)
In the old code
	l3h = BSSGP, l4h = LLC, cb[gmmh] = 04.08
Now, this has been changed to
	cb[bssgph] = BSSGP, cb[llch] = LLC, l3h = 04.08

This way, GSM general 04.08 and GPRS 04.08 code can expect a
GSM 04.08 header at msgb->l3h
2010-05-04 07:20:43 +02:00
Harald Welte 2577d41526 [gprs] convert ns_cause_str to value_string 2010-05-04 07:20:43 +02:00
Harald Welte 290671d683 [gprs] BSSGP: convert cause strings to value_string 2010-05-04 07:20:43 +02:00
Harald Welte 6752fa43b6 [gprs] introduce BSSGP concept of BTS contextx
A BTS context represents the mapping betewen (RA-ID, Cell-ID) and
(BVCI, NSEI) as well as the per-BVC local state.
2010-05-04 07:20:43 +02:00
Harald Welte 3fddf3c4ef [gprs] Build the SGSN stand-alone and not as part of bsc_hack
Instead of continuing to add more and more functionality to the
bsc_hack binary, we should have the new SGSN code run as a separate
executable.

After this commit we now build a 'osmo_sgsn' executable, using its
own osmo_sgsn.cfg config file.

However, the SGSN is not yet functional, mainly due to the fact that
the BSSGP and GMM code are written with the assumption that there
is a msgb->trx->bts and the according 'sturct gsm_bts' data model
around - which clearly is no longer the case outside of bsc_hack.
2010-05-04 07:20:43 +02:00
Harald Welte 1203de3993 [gprs] fully integrate VTY configuration into Gb proxy
The Gb-proxy is now fully configured by config file / VTY
2010-05-04 07:20:42 +02:00
Harald Welte 3771d09ec0 GPRS: Introduce a GPRS Gb Proxy
The ida of the Gb proxy is to aggregate Gb links with a number of BSS
and then present all the BSSGP-VC's together inside one NS-VC to the
actual SGSN.

The code is not yet expected to be complete.
2010-05-04 07:20:42 +02:00
Harald Welte 24a655f140 gprs: remove msgb->nsvc pointer and replace it with NSEI and BVCI
According to TS 08.16, the BSSGP layer needs to specify NSEI and BVCI when
executing the NS UNITDATA REQUEST primitive of the underlying NS layer.

Rather than passing around a pointer to the 'struct gprs_nsvc', we now
have NSEI and BVCI as members of 'struct obsc_msgb_cb' and set them
when BSSGP hands a message down to NS.

NS then does a lookup of the 'gprs_nsvc' based on the NSEI parameter.
2010-05-04 07:20:42 +02:00
Harald Welte 645609ddc8 gprs: Use new msgb->cb[] for storing a pointer to the NS-VC through which it was received 2010-05-04 07:20:42 +02:00
Harald Welte f030b210e8 GPRS: Modularize the NS implementation
* move UDP listener code for NSIP from input/ipaccess.c and into gprs_ns.c
* add PDU type, IE and CAUSE values for later IP based 3GPP TS 48.016
* support multiple NS-VCs and their lookup based on NSVC and sockaddr_in
* maintain the remote_state (blocked/alive) for each NSVC
* introduce the concept of GPRS_NS instances, move all global vars to instance
* remove hardcoded calls to gprs_bssgp_rcvmsg() and replace it by callback

WARNING: This is not finished code.  While it will compile, it will not work
yet, as BSSGP needs to be converted to properly indicate the NSVC to which it
needs to send data.
2010-05-04 07:20:42 +02:00
Harald Welte 510c3920c8 gprs: Update gprs-sgsn branch to use new msgb->cb layout
The explicit 'tlli, gmmh' members of struct msgb are gone from
current libosmocore and have been replaced by the more generic
'control buffer' mechanism.
2010-05-04 07:20:41 +02:00
Harald Welte c547848ead GPRS: remove hard-coded IP address for NSIP responses from SGSN->BTS 2010-05-04 07:20:41 +02:00
Harald Welte 9ba500559a Create new 'gprs-sgsn' branch on top of 'gprs-conf'
This branch contains the partial SGSN/GGSN implementation that
was originally developed as part of the gprs branch.
2010-05-04 07:20:41 +02:00
Andreas.Eversberg fe1dc19c6e More fixes on layer3.
The current code will scan frequencies, select a cell and camps on it.
No SIM is inserted. Paging requests and Immediate assginments can be seen.

When inserting a SIM card (uncomment it in app_mobile.c), location update
is triggered after selecting a cell. The RACH request is sent, an
Immediate assignment is received, the dedicated mode is requested.
Nothing happens then, because no confirm / abort of layer 2 is received.
2010-05-02 17:40:52 +00:00
Andreas.Eversberg 14974d3dba Many fixes in layer 3:
- Sysinfo storage
- Cell/Network selection process
- Channel request / Paging
2010-05-02 17:13:47 +00:00
Harald Welte 95df5c0179 msgb: initialize cb[] to zero during msgb_reset() 2010-05-01 23:53:26 +02:00
Andreas.Eversberg 8e5f33b4d3 Fixed many issues in MM IDLE mode process. 2010-05-01 18:21:03 +00:00
Harald Welte 20488d4881 Merge commit '35a939463eee58492c88cbe7531288237cdcf454' 2010-05-01 14:27:23 +02:00
Harald Welte 35a939463e Import gsm48_construct_ra() from openbsc 2010-05-01 14:25:22 +02:00
Harald Welte 3c73dda6ca Merge commit 'debf95507461965aa82be2fa2bf34119343cfb0e' 2010-05-01 12:07:56 +02:00
Harald Welte debf955074 gsm48.h: Prevent accidental re-inclusion of same header file 2010-05-01 12:06:48 +02:00
Harald Welte a1c4f765ec import gsm48_parse_ra() and gprs_tlli_type() from openbsc 2010-05-01 12:00:21 +02:00
Holger Hans Peter Freyther 5ba4dc171b Add missing file. 2010-05-01 15:14:05 +08:00
Andreas.Eversberg 30b48d6212 Fixes, especially frequency list parsing. 2010-04-30 18:51:41 +00:00
Harald Welte 871774ee89 Merge commit '074c9f904cb5e4f6ab014d76e4abc079c16fc5d7' 2010-04-30 14:29:56 +02:00
Harald Welte 074c9f904c msgb: introduce msgb->cb (the control buffer) 2010-04-30 14:29:11 +02:00
Harald Welte bb77c9d6cc msgb: remove smsh, llch, tlli and gmmh
This is a lot of GSM/GPRS specific stuff in struct msgb which we want
to avoid.  The 'control buffer' will replace them.
2010-04-30 14:26:12 +02:00
Harald Welte 3120ac3f78 remove the unneeded bts_link pointer from msgb 2010-04-30 14:19:48 +02:00
Harald Welte cb6c26d54e don't enable TX by default!!! 2010-04-29 22:06:54 +02:00
Andreas Eversberg 4dd620d736 Merge branch 'master' of gitosis@git.osmocom.org:osmocom-bb 2010-04-29 20:47:28 +02:00
Andreas Eversberg 516917e836 Fixes and improvements of layer23. 2010-04-29 20:46:11 +02:00
Harald Welte c8d0ef7b58 Merge remote branch 'origin/sylvain/pending' 2010-04-28 11:43:50 +02:00
Harald Welte c3ce8f62f6 Merge commit '100224df0b711c7bf6c1150ce18cf595350cf0bd' 2010-04-28 11:43:37 +02:00
Sylvain Munaut c809be2ac2 layer1/mframe_sched: Make task update safer
We try to prevent switching task at a bad time. The algorithm
just tries to find the first fn at which it's safe to activate
a previously disabled task.

tasks     -> Running tasks
tasks_tgt -> What we aim to run

Since tasks_tgt is still only read, it's safe for the l1a to
modify it without locking.

Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2010-04-28 10:17:34 +02:00
Sylvain Munaut 2afc002e12 fw/layer1: Encapsulate mframe scheduler function better
There was some code meddling with mf_tasks directly. This is
fine if it's just setting/clearing a bit but since we're
gonna need some 'cleverness' into when to activate what to prevent
conflict, it's better to abstract that logic.

Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2010-04-28 10:17:04 +02:00
Sylvain Munaut afc0ee79c4 fw/layer1: Change the tdma_schedule_set return value to # frames spanned
Previously, it returned the number of item + number of frames spanned
by the set. But that value isn't that useful and wasn't used by anyone.

Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2010-04-28 10:16:51 +02:00
Sylvain Munaut ce51a07fef Remove some gsm time keeping utils now in libosmocore
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2010-04-28 10:16:29 +02:00
Sylvain Munaut 9faa6dd1d5 Update libosmocore to 100224df0b
Merge commit '100224df0b711c7bf6c1150ce18cf595350cf0bd' into master
2010-04-28 10:15:37 +02:00
Sylvain Munaut 5571e573f3 fw/layer1: Fix a printf warning uint32_t is 'long unsigned'
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2010-04-28 10:14:24 +02:00
Sylvain Munaut fd38f450ca target/layer1: Fix typo in l23 message reception debug
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2010-04-28 10:14:14 +02:00
Sylvain Munaut 9ef3107463 target_dsp/calypso: Add some pointers to get started in IDA
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2010-04-28 10:13:58 +02:00
Sylvain Munaut 3b5cc0824d target_dsp/calypso: Add a script to convert dump output into usable COFF
Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2010-04-28 10:13:50 +02:00
Sylvain Munaut 100224df0b Update .gitignore
m4/*.m4 -> autoreconf adds stuff there
tests   -> Build product

Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2010-04-28 10:10:47 +02:00
Sylvain Munaut a074ec4b89 gsm 08.08: Fix some u_int8_t -> uint8_t
This breaks the ARM build in osmocom-bb. Besides uint??_t seems to
be the preferred type in osmocore. (coming from stdint.h vs sys/types.h)

Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
2010-04-28 10:05:29 +02:00