aboutsummaryrefslogtreecommitdiffstats
path: root/src
AgeCommit message (Collapse)AuthorFilesLines
2013-07-30bssgp: The method creates and the connects.. reflect that in the nameHolger Hans Peter Freyther3-3/+3
Call things by what they do. This method is creating and then connecting a BSSGP..
2013-07-30bitvector: Address compiler warnings about unsigned/signedHolger Hans Peter Freyther2-8/+9
Fixes: bitvector.cpp: In function 'int bitvec_pack(bitvec*, uint8_t*)': bitvector.cpp:53:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] bitvector.cpp: In function 'int bitvec_unpack(bitvec*, uint8_t*)': bitvector.cpp:63:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] bitvector.cpp: In function 'uint64_t bitvec_read_field(bitvec*, unsigned int&, unsigned int)': bitvector.cpp:91:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] bitvector.cpp: In function 'int bitvec_write_field(bitvec*, unsigned int&, uint64_t, unsigned int)': bitvector.cpp:108:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
2013-07-30pcu_l1_if.cpp: Remove unused method and commentHolger Hans Peter Freyther1-6/+0
pcu_l1_if.cpp:195:13: warning: 'void pcu_l1if_tx_bcch(uint8_t*, int)' defined but not used [-Wunused-function]
2013-07-30femtobts: Remove code that is causing warnings with GCC 4.8Holger Hans Peter Freyther2-15/+0
femtobts.c:250:2: warning: excess elements in array initializer [enabled by default] { SuperFemto_ClkSrcId_NetList, "nwl" }, ^ femtobts.c:250:2: warning: (near initialization for ‘femtobts_clksrc_names’) [enabled by default] femtobts.c:251:2: warning: excess elements in array initializer [enabled by default] { 0, NULL } ^ femtobts.c:251:2: warning: (near initialization for ‘femtobts_clksrc_names’) [enabled by default]
2013-07-30csn1: Fix various printf/format issues pointed out by gccHolger Hans Peter Freyther1-4/+6
This might clash with C++11 and literal values but we will see that once the compilers enable that by default. Fixes: csn1.cpp: In function 'gint16 csnStreamDecoder(csnStream_t*, const CSN_DESCR*, bitvec*, unsigned int&, void*)': csn1.cpp:864:17: warning: format '%d' expects argument of type 'int', but argument 8 has type 'guint64 {aka long unsigned int}' [-Wformat] csn1.cpp:1144:15: warning: format '%u' expects argument of type 'unsigned int', but argument 7 has type 'uint64_t {aka long long unsigned int}' [-Wformat] csn1.cpp:1150:15: warning: format '%u' expects argument of type 'unsigned int', but argument 7 has type 'uint64_t {aka long long unsigned int}' [-Wformat] csn1.cpp: In function 'gint16 csnStreamEncoder(csnStream_t*, const CSN_DESCR*, bitvec*, unsigned int&, void*)': csn1.cpp:2119:17: warning: format '%d' expects argument of type 'int', but argument 8 has type 'guint64 {aka long unsigned int}' [-Wformat]
2013-07-30csn1: Remove unused code from the fileHolger Hans Peter Freyther1-38/+0
Fixes: csn1.cpp:124:20: warning: 'CSN_DESCR_type' defined but not used [-Wunused-variable]
2013-07-30misc: Move the parsing of the ms_class from RA Capabilities to a methodHolger Hans Peter Freyther1-32/+43
Decrease the number of lines of a single method by splitting things up. The fewer lines of code, branches and side-effects in a method, the easier it will be to understand. The other benefit is that one can start creating unit tests for the some parts of the code.
2013-07-30bssgp: Remove commented out code that is currently not used.Holger Hans Peter Freyther1-4/+0
2013-07-30bssgp: Reset the BVC and NSVC state in the destroy routineHolger Hans Peter Freyther1-0/+4
This might explain the issue of the BVCI > 1 not being unblocked as the internal state has not been re-set when destroying the bssgp.
2013-07-30misc: Move the nsvc_unblocked into the struct osmo_pcuHolger Hans Peter Freyther1-5/+6
2013-07-30misc: Move the bvc_timer into the struct osmo_pcuHolger Hans Peter Freyther1-9/+9
This continues with the previous changes to reduce the global state.
2013-07-30misc: Remove the unused sgsn pointer from the compilation unitHolger Hans Peter Freyther1-1/+0
2013-07-30misc: Move the struct bssgp_bvc_ctx into the struct osmo_pcuHolger Hans Peter Freyther4-24/+31
2013-07-30misc: Introduce a struct osmo_pcu and move things into it.Holger Hans Peter Freyther1-24/+32
One of the issues with not properly re-setting everything is that due the global state it is not clear which variables belong together and how long it exists. Begin with creating a osmo_pcu and moving things into this class. Think of an organic cell, this commit is introducing the cell wall around it... and defines what is inside and what is outside of it.
2013-07-27misc: Add an option exit/quit when the BSSGP is supposed to be destroyedHolger Hans Peter Freyther6-6/+23
The PCU does not properly re-set the state when the connection to the BTS is lost (and the SGSN potentially is re-started during that). This results in the BSSGP BVCI > 1 remaining blocked and no data will be accepted by the SGSN. Add the '-e' option and exit the PCU when the BSSGP/NS are getting destroyed.
2013-07-27misc: Remove if (timer_pending) stop_timer idiom from the codeHolger Hans Peter Freyther2-6/+3
osmo_timer_del is an idempotent operation. There is no requirement to check if it is running. If you don't want a timer to run, delete it. Maybe one should have called the method _unschedule, _cancel to make this more clear.
2013-05-13Added timing advance support for up and downlink TBFsAndreas Eversberg7-11/+185
The timing advance of any TBF is stored when it ends. Whenever a new TBF with the same TLLI is created (downlink TBF), the stored TA is recalled. This algorithm assumes that the mobile does not move too fast during transfer. Also the mobile must start a connection in order to get correct initial timing advance. This algorithm does not implement the timing advance procedure as defined in TS 04.60. To implement the standard timing advance procedure, the BTS must decode RACH on certain bursts, the mobile is expected to send them. This requires much more complexity to a transceiver like USRP/UmTRX or Calypso BTS. The algorithm was tested at TA >= 8 and works quite well.
2013-05-09Allow to enable realtime priority for the BTS processAndreas Eversberg1-1/+22
I ported the Holger's scheduling patch from sysmobts to osmo-pcu. This is usefull, if PCU uses direct access to the DSP of sysmobts. The latency to respond to a PH-READY_TO_SEND.ind may not be higher than 18ms. Currently we are using nice to increase our priority but for a heavily loaded cell this is not enough. Add an option to enable realtime scheduling and use it in the screenrc. Linux offers two realtime scheduling classes these are SCHED_FIFO and SCHED_RR. For SCHED_FIFO the process is running as long as possible (potentially taking all the CPU and never yielding it), for SCHED_RR the process can still be pre-empted at the end of the timeslice. Using SCHED_RR appears to be the more safe option as a run-a-way sysmobts process will not be able to take all the CPU time.
2013-03-19Make the code handle SIGTERM.Holger Hans Peter Freyther1-0/+1
This way the pcu can be easily stopped with a sysvinit script.
2013-03-17Fix: Correctly display SGSN remote IP at debuggingAndreas Eversberg1-1/+4
2013-03-17Introduce new file for various measurementsAndreas Eversberg8-49/+271
The measurements include: - DL bandwidth usage - DL packet loss rate - DL measurements by mobile - UL measurements by BTS In order to receive DL measurements from mobile, it must be enabled via system information message at BSC.
2013-03-17Add RSSI of data blocks to PCU interface0.2.00.2Andreas Eversberg7-11/+14
This bumps the PCU API version to 5 and requires osmo-bts >= 0.2.0.
2013-03-16Use default 'alpha' value of 0Andreas Eversberg1-1/+1
Since we don't know the RX and TX parameters of the BTS that might be used with PCU, the MS should not adapt the TX power from the RX level. So the MS should always transmits with same power. Finding an 'alpha' and 'gamma' value that will result in a constant RX level at the BTS is a task of deployment.
2013-03-10PCU: respect the PCU-side "local port" as configured via L1 IFHarald Welte3-7/+11
This makes sure that the UDP local port of the Gb link is actually set to what is configured via OML from OpenBSC.
2013-03-01Fixed decoding and encoding of CSN_RECURSIVE_TARRAY, CSN_RECURSIVE_TARRAY_1, ↵Ivan Kluchnikov1-4/+4
CSN_RECURSIVE_TARRAY_2. We should offset pointer to data after each iteration.
2013-02-04Fixed memory leaks caused by not freeing msgb in udp_read_cb() function.Ivan Kluchnikov1-0/+1
2013-01-25Fixed closing of PDCH when enabling sysmo-bts' direct DSP accessAndreas Eversberg2-2/+2
If not compiled with this support, the closing function does not exists, so it must not be called. Removed a "#warning", because closing is already supported.
2013-01-17pcu_main: Add '-V' to obtain the (compile) version of osmo-pcu0.1.00.1Harald Welte1-1/+6
2013-01-17VTY: complete the copyright messageHarald Welte1-1/+2
2013-01-16Use PCU's talloc context to allocate libosmogb instancesAndreas Eversberg1-2/+2
This is usefull to identifiy memory leaks while using libosmogb.
2013-01-16Free each fl1h (sysmo-bts' layer 1 handler) when closing BTS<->PCU socketAndreas Eversberg2-1/+10
2013-01-16Fixed memory leaks caused by not freeing bitvectorAndreas Eversberg2-0/+5
Especially each data message from SGSN caused two memory leaks, which resulted in increasing memory usage while receiving date from SGSN.
2013-01-16Use global PCU's talloc context for all talloc callsAndreas Eversberg2-1/+5
This allows to track memory leaks of all memory that is allocated by talloc. Especially bitvector allocations is tracked now.
2013-01-15Various fixes for multi slot allocation algotihmAndreas Eversberg1-19/+44
2013-01-15Get rid of allocating first timeslot at tfi_allocAndreas Eversberg4-37/+37
This simpliefies the allocation process. tfi_alloc is responsible to allocate a TFI, not a time slot. The first time slot available depends on multislot class and on other ongoing TBF (concurrent TBFs), so it is part of the allocation algorithm to select it.
2013-01-14Adding missing initialization of logging to RLCMACTest.cppAndreas Eversberg1-0/+9
2013-01-11make sure to register NS protocol to the VTYHarald Welte1-0/+1
Without calling gprs_ns_vty_init(), the NS specific VTY commands are not activated.
2012-12-18Adding direct access to DSP of sysmoBTS for PDTCH trafficeAndreas Eversberg11-10/+1277
In order to use this feature, sysmoBTS requires option "-M", otherwise the traffic is forwarded through socket interface. This is essential, if PCU runs on processor of sysmoBTS. The reaction time and delay of PDTCH frames could heavily degrade proper packet flow.
2012-12-18Fix: Align TLLI to 32 bit margin, before converting itAndreas Eversberg1-1/+3
2012-12-18Fix of debug names and initial log levelsAndreas Eversberg1-7/+7
2012-12-18Doc: Update on README and tbf.txtAndreas Eversberg1-1/+1
2012-12-18Rework on multislot allocation algorithmAndreas Eversberg3-31/+69
The slots are choosen in a way that later selection of slots for concurrent TBFs will have the same downlink/uplink control channel (PACCH). This is required for polling acknowledge of new TBF assignment on PACCH. The MS will always have the same PACCH uplink slot while beeing in packet transfer mode.
2012-12-18Added paging PS support by Ivan KluchnikovAndreas Eversberg4-3/+82
Original code: c7e7f6868b6f24346424dee904f4e76d3f216ff4 (The code was committed earlier, but got lost somehow.) I added IMSI, so the paging request is sent in correct paging group. Also I excluded rest octets from pseudo length. It is tested and it work.
2012-12-18Use seperate function to parse IMSI from BSSGP messageAndreas Eversberg1-20/+31
2012-12-18Fix: Don't use TIMING_ADVANCE_INDEX in assignment messages, if not usedAndreas Eversberg3-18/+39
Some MS will leave packet transfer mode, if TAI is given, but no timing advance control messages are sent on PTCCH. This could results in permanent loss of larger packets.
2012-12-18Fix: Drop ongoing UL TBF, if another UL TBF is established for same TLLIAndreas Eversberg1-2/+12
This happens, if the mobile looses coverage and establishes a subsequent uplink TBF.
2012-12-18Fix: Handling of final acknowledge on downlink TBFsAndreas Eversberg1-10/+11
It is essential to initialize the first_fin_ack variable. Also it is essential not to free TBF, in case the final ack is not received, but all frames have been acked. In this special case, we resend the final block again and again (and poll), until we receive the final ack.
2012-12-18Fix: Be sure to check if the PACKET DOWNLINK ACK belongs to the polled MSAndreas Eversberg1-2/+8
2012-12-18Adding flow chart diagram of ongoing TBFs and their eventsAndreas Eversberg4-4/+180
It is quite essential. It shows how TBFs are related and helps to estimate states and timers (timeouts) of the MS. In order to use it, it must be defined by a switch at gprs_rlcmac.h.
2012-12-18Fix: Free CS paging messagesAndreas Eversberg1-3/+8