Age | Commit message (Collapse) | Author | Files | Lines |
|
|
|
|
|
Call things by what they do. This method is creating and then connecting
a BSSGP..
|
|
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]
|
|
pcu_l1_if.cpp:195:13: warning: 'void pcu_l1if_tx_bcch(uint8_t*, int)' defined but not used [-Wunused-function]
|
|
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]
|
|
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]
|
|
Fixes:
csn1.cpp:124:20: warning: 'CSN_DESCR_type' defined but not used [-Wunused-variable]
|
|
|
|
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.
|
|
|
|
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.
|
|
|
|
This continues with the previous changes to reduce the global state.
|
|
|
|
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
|
|
|
|
This way the pcu can be easily stopped with a sysvinit script.
|
|
|
|
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.
|
|
This bumps the PCU API version to 5 and requires osmo-bts >= 0.2.0.
|
|
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.
|
|
This makes sure that the UDP local port of the Gb link is actually
set to what is configured via OML from OpenBSC.
|
|
CSN_RECURSIVE_TARRAY_2.
We should offset pointer to data after each iteration.
|
|
|
|
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.
|
|
--enable-sysmocom-bts=no does not work because the enableval variable
is not used.
|
|
|
|
|
|
This is usefull to identifiy memory leaks while using libosmogb.
|
|
|
|
Especially each data message from SGSN caused two memory leaks, which
resulted in increasing memory usage while receiving date from SGSN.
|
|
This allows to track memory leaks of all memory that is allocated by
talloc. Especially bitvector allocations is tracked now.
|
|
|
|
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.
|
|
|
|
|
|
|
|
|
|
Without calling gprs_ns_vty_init(), the NS specific VTY commands are not
activated.
|
|
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.
|
|
|
|
|
|
|