Hi all,
This patch set adds to libosmocore an optimized Viterbi decodeer for
architecture specific (Intel SSE) and non-specific cases. The
implementation covers codes with constraint lengths of K=5 and K=7 and
rates 1/4 to 3/4, which make up the majority of GSM use cases. Speedup
from the current implementation is in the range of 5 to 20 depending on
the processor and code type. API is unchanged.
Tested on Haswell (i7-4770K) and Atom (D2550). Additional test codes
from osmo-bts are included. Further tests for AWGN bit-error-rate
and benchmarks can be found in the following repository.
https://github.com/ttsou/osmo-conv-test
Here are some examples.
Bit error test for GPRS CS2 with SNR of 5 dB and 100000 bursts.
$ ./conv_test -c 2 -e -r 5 -i 100000
=================================================
[+] Testing: GPRS CS2
[.] Specs: (N=2, K=5, non-recursive, flushed, not punctured)
[.] Input length : ret = 290 exp = 290 -> OK
[.] Output length : ret = 588 exp = 588 -> OK
[.] BER tests:
[..] Testing base:
[..] Input BER.......................... 0.042443
[..] Output BER......................... 0.000006
[..] Output FER......................... 0.001350 (135)
[..] Testing SIMD:
[..] Input BER.......................... 0.042460
[..] Output BER......................... 0.000005
[..] Output FER......................... 0.001240 (124)
Timed AFS benchmark with 8 threads and 100000 bursts per thread.
$ ./conv_test -b -c 10 -j 8 -i 100000
=================================================
[+] Testing: GSM TCH/AFS 6.7
[.] Specs: (N=4, K=5, recursive, flushed, punctured)
[.] Input length : ret = 140 exp = 140 -> OK
[.] Output length : ret = 448 exp = 448 -> OK
[.] Performance benchmark:
[..] Encoding / Decoding 800000 bursts on 8 thread(s):
[..] Testing base:
[..] Elapsed time....................... 4.320001 secs
[..] Rate............................... 25.925920 Mbps
[..] Testing SIMD:
[..] Elapsed time....................... 0.458272 secs
[..] Rate............................... 244.396341 Mbps
[..] Speedup............................ 9.426718
-TT
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512
Hi! First a small update:
we finally decided to _not_ use token mode, as it confuses a lot of
phones, after receiving the token message the SIM goes into an error
state and the only way to recover is to reboot the phone. Now we just
read the IMSI straight from the SIM (using the card python library,
just like osmo-sim-auth does) and register them.
Now, the issue we see is that 1-2 users every day reach a point where
they can make phone calls and send messages, but they can't receive
neither of them. Sometimes the problem can be fixed by running:
> subscriber extension <EXT> clear-requests
but this only work when there are pending requests. In other cases,
the phone has to be rebooted. Did anyone encounter the same issue?
Cheers
Ciaby
-----BEGIN PGP SIGNATURE-----
iQIcBAEBCgAGBQJUef1WAAoJEPU83OtbD4fQ69kQAI7peg30lHwbDPMXnTX80gUu
0dGsiK2iB5oWZ6Ohbs3W+/+xVoMseuG1di6Rk0XT9buN2IOR5fMfAs3INQ2EuAlV
qz1RRn5Ux8uV0RJWyAJoSt7eFh3gbnDgsJ+x8SXEHQRw4rYHG2P+HXyEtncW6A6y
L8/oPeIxH/LlP/55MP3KUY5BnQmN658LnJU9AFSwPkpjn2f/dj4o6mUdWo8haTTQ
UWPWEdhQoeXPBqHsn2cKamT13SmiepMYAGuDEJci9LCS+J8vd70ukAP/oa1L6u1w
+3+RbcNvC9fwAKDLU01b/cu630v6/mhk0lxWNlIz/kNL1aHPZe8QhP5sM4SuLtzj
UaeHLxp4u2Pb7N31b3qtRA4jgl+5YFla5376F3d00jPSfZpmFggFgdRB2qWhF1m8
WucfzLc41dV1AVTdL90ISSRt1LZ/fLHBea8kgUxK+KrhBO7U7AV3PXk9of4EAf7y
VKMX3KZWwtEKhpi0v3PihgW8bS/RaG3zEmsr30QXzXVaZknCfjGi8OOOB0JaHY48
o3g40YpzeyEq1gOyKKfBmtf1qk4GgLyPKfMUoTvXE2oNHmrg3ZlJldABKNzR9qz3
5hsHJ6/QGsBST1E3dphI0Zb6ubLnFwqBl02GyeJELLbtPCLPQMDicx03cqT4BjO3
vzDcPdIWg1sfSomYKMK9
=Zw4T
-----END PGP SIGNATURE-----
Hi,
I would like to introduce new index for the SMS table.
I've run benchmarks using test database with about 8500 records in
both SMS and Subscriber tables. Introducing SMS(dest_addr) index
reduces execution time 4 times for this benchmark.
As far as I can see, db_sms_get_unsent() gets called frequently, so
real-life benefits might also be considerable, especially for the
large datasets.
Patch: https://gist.github.com/ati/5ef481954f5bd38d00fc
SQL queries benchmark script (python):
https://gist.github.com/ati/bd03be698a89e24d8a89
Regards,
Alexander
Dear all,
the valuable L1SAP abstraction has been sitting out of master for too
long time. It is a pity that this has taken so long. I've finally been
able to put some time into osmo-bts again and reviewed the following
patch series. It consists of mostly Andreas' work, interspersed with
smaller patches/fixups that I introduced after the respective original
patch from Andreas.
I have started a sysmobts between all of the major steps in this patch
series and did a short manual tests involving registration (LU) of two
MS, mobile-to-mobile call and vty-to-mobile SMS. So far I couldn't see
any problems. What has not been tested yet is the PCU interface as well
as encryption support. I plan to do this later this week.
I intend to merge the code after this current review cycle. Please take
your time to have a look and provide feedback (if any), so we can get
this over and work on new features again, rather than infrastrutural
changes.
I didn't yet rebase the osmo-bts-trx interface on top of the L1SAP, as I
don't have a hardware setup for it, and I will leave it to the owners of
such hardware to publish/push the respective code after L1SAP is merged.
Regards,
Harald
--
- Harald Welte <laforge(a)gnumonks.org> http://laforge.gnumonks.org/
============================================================================
"Privacy in residential applications is a desirable marketing option."
(ETSI EN 300 175-7 Ch. A6)
Hi, I am trying to configure and run OsmoTRX,OsmoBTS, OsmoNITB and LCR as per instructions at ;
http://openbsc.osmocom.org/trac/wiki/network_from_scratch
After installation of libosmocore when i run ./configure in libosmo-abis-master , I get the error below every time. Please note that I have installed libosmocore-0.6.0 but some how even while running pkg-config --modversion libosmocore command the version is reported as having value of UNKNOWN. I have also set the path of PKG_CONFIG_PATH correctly where the file libosmocore.pc is actually located but still this error is seen.
checking if gcc supports -fvisibility=hidden... yes
checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking for LIBOSMOCORE... no
configure: error: Package requirements (libosmocore >= 0.3.0) were not met:
Requested 'libosmocore >= 0.3.0' but version of Osmocom Core Library is UNKNOWN
Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.
Alternatively, you may set the environment variables LIBOSMOCORE_CFLAGS
and LIBOSMOCORE_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.
Please help me in this regard.
Regards,
Sarosh
Currently when using 'logging print extended-timestamp 1', the
subsecond part (milliseconds) of the printed timestamp is always 0.
This makes it difficult to correlate log entries with PCAP file
entries if there are many of them per second.
This patch changes _output in logging.c to use gettimeofday() instead
of time() when extended timestamps are enabled and replaces the '000'
by the milliseconds computed from tv_usec.
Sponsored-by: On-Waves ehf
---
src/logging.c | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/src/logging.c b/src/logging.c
index c007a45..20b0596 100644
--- a/src/logging.c
+++ b/src/logging.c
@@ -38,6 +38,7 @@
#include <strings.h>
#endif
#include <time.h>
+#include <sys/time.h>
#include <errno.h>
#include <osmocom/core/talloc.h>
@@ -254,11 +255,13 @@ static void _output(struct log_target *target, unsigned int subsys,
if (!cont) {
if (target->print_ext_timestamp) {
struct tm tm;
- time_t timep = time(NULL);
- localtime_r(&timep, &tm);
- ret = snprintf(buf + offset, rem, "%04d%02d%02d%02d%02d%02d000 ",
+ struct timeval tv;
+ gettimeofday(&tv, NULL);
+ localtime_r(&tv.tv_sec, &tm);
+ ret = snprintf(buf + offset, rem, "%04d%02d%02d%02d%02d%02d%03d ",
tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday,
- tm.tm_hour, tm.tm_min, tm.tm_sec);
+ tm.tm_hour, tm.tm_min, tm.tm_sec,
+ (int)(tv.tv_usec / 1000));
if (ret < 0)
goto err;
OSMO_SNPRINTF_RET(ret, rem, offset, len);
--
1.9.1