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-----
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)
I am also trying to do that. How far have you gotten?
I am stuck at
bts connect: 'localhost'; waitForBTSReady.
This is what I see
# gst
GNU Smalltalk ready
st> PackageLoader fileInPackage: #FakeBTS
Loading package OsmoLogging
Loading package OsmoCore
Loading package Parser
Loading package PetitParser
Loading package Sockets
Loading package OsmoNetwork
Loading package OsmoGSM
Loading package FakeBTS
PackageLoader
PackageLoaderts := FakeBTS.BTS new.
a BTS
st> bts btsId: '1/0/0'
a BTS
st> bts connect: 'localhost'; waitForBTSReady.
Stop
Object: nil error: did not understand #+
MessageNotUnderstood(Exception)>>signal (ExcHandling.st:254)
UndefinedObject(Object)>>doesNotUnderstand: #+ (SysExcept.st:1407)
Sockets.TCPSocketImpl(FileDescriptor)>>nextAvailable:into:startingAt:
(FileDescr.st:802)
optimized [] in Sockets.StreamSocket>>newReadBuffer:
(Sockets.star#VFS.ZipFile/Sockets.st:1323)
Sockets.ReadBuffer>>atEnd (Sockets.star#VFS.ZipFile/Buffers.st:129)
Sockets.ReadBuffer>>pastEnd (Sockets.star#VFS.ZipFile/Buffers.st:137)
Sockets.ReadBuffer(PositionableStream)>>next (PosStream.st:78)
Sockets.StreamSocket>>next (Sockets.star#VFS.ZipFile/Sockets.st:1217)
Sockets.StreamSocket>>nextByte
(OsmoNetwork.star#VFS.ZipFile/core/Extensions.st:125)
Sockets.StreamSocket>>nextBytes:signed:
(OsmoNetwork.star#VFS.ZipFile/core/Extensions.st:113)
Sockets.StreamSocket>>nextUshort
(OsmoNetwork.star#VFS.ZipFile/core/Extensions.st:102)
Osmo.IPADemuxer>>next (OsmoNetwork.star#VFS.ZipFile/ipa/IPAMuxer.st:39)
[] in FakeBTS.BTSOmlConnection(FakeBTS.BTSConnectionBase)>>processOne
(FakeBTS.star#VFS.ZipFile/BTSConnection.st:159)
BlockClosure>>on:do:on:do: (BlkClosure.st:206)
FakeBTS.BTSOmlConnection(FakeBTS.BTSConnectionBase)>>processOne
(FakeBTS.star#VFS.ZipFile/BTSConnection.st:172)
optimized [] in FakeBTS.BTSConnectionBase>>connect:port:
(FakeBTS.star#VFS.ZipFile/BTSConnection.st:145)
[] in Process>>onBlock:at:suspend: (Process.st:392)
BlockClosure>>on:do: (BlkClosure.st:193)
[] in Process>>onBlock:at:suspend: (Process.st:393)
BlockClosure>>ensure: (BlkClosure.st:269)
[] in Process>>onBlock:at:suspend: (Process.st:370)
[] in BlockClosure>>asContext: (BlkClosure.st:179)
BlockContext class>>fromClosure:parent: (BlkContext.st:68)
*** HERE IT JUST WAITS AND I PRESS CTRL-C ***
Object: nil error: interrupted!!!
SystemExceptions.UserInterrupt(Exception)>>signal (ExcHandling.st:254)
SystemExceptions.UserInterrupt class(Exception class)>>signal
(ExcHandling.st:151)
UndefinedObject(Object)>>userInterrupt (Object.st:1414)
FakeBTS.BTS>>waitForBTSReady (FakeBTS.star#VFS.ZipFile/BTS.st:393)
UndefinedObject>>executeStatements (a String:1)
nil
st>
>
>
> Hi,
> I'm trying to set an "OpenBSC network-in-the-box (NITB) mode" using a
> BTS demo/simulator, but couldn't find any good instructions guide for
> it.
> Any help will happily accepted.
> I followed this guide:
> http://openbsc.osmocom.org/trac/wiki/Building_OpenBSC
> and tried to use this simulator instructions:
> http://openbsc.osmocom.org/trac/wiki/simulation
> Best regards,
> Arik
A few declarations are missing.
This patch adds forward declarations for struct used for pointers
only and an include directive (osmocom/core/select.h) to get a full
definition of struct osmo_fd.
Sponsored-by: On-Waves ehf
---
include/osmocom/abis/ipa.h | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/include/osmocom/abis/ipa.h b/include/osmocom/abis/ipa.h
index 19815f6..6f40a40 100644
--- a/include/osmocom/abis/ipa.h
+++ b/include/osmocom/abis/ipa.h
@@ -4,8 +4,13 @@
#include <stdint.h>
#include <osmocom/core/linuxlist.h>
#include <osmocom/core/timer.h>
+#include <osmocom/core/select.h>
#include <osmocom/gsm/ipa.h>
+struct e1inp_line;
+struct e1inp_ts;
+struct msgb;
+
struct ipa_server_link {
struct e1inp_line *line;
struct osmo_fd ofd;
--
1.9.1
A pointer to struct osmo_fd is used in a few prototypes declared in
gsm/ipa.h, but is neither declared explicitly nor is such a
declaration reachable via the given include directives.
This patch adds a forward declaration of this type to ensure proper
compilation.
Sponsored-by: On-Waves ehf
---
include/osmocom/gsm/ipa.h | 2 ++
1 file changed, 2 insertions(+)
diff --git a/include/osmocom/gsm/ipa.h b/include/osmocom/gsm/ipa.h
index 2878676..1227ee1 100644
--- a/include/osmocom/gsm/ipa.h
+++ b/include/osmocom/gsm/ipa.h
@@ -5,6 +5,8 @@
#include <osmocom/core/msgb.h>
#include <osmocom/gsm/tlv.h>
+struct osmo_fd;
+
/* internal (host-only) data structure */
struct ipaccess_unit {
uint16_t site_id;
--
1.9.1
From: Holger Hans Peter Freyther <holger(a)moiji-mobile.com>
The new lchan will be in speech mode already but for AMR we will
need to provide a working multirate config in the channel activation,
otherwise the channel act might be nacked.
Copy the config from the current lchan into the new lchan. The
abis code simply added the mrconf if the speech mode was amr.
Before this commit the invalidate mrconf with all zeroes was
copied/sent.
---
openbsc/src/libbsc/handover_logic.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/openbsc/src/libbsc/handover_logic.c b/openbsc/src/libbsc/handover_logic.c
index 9284f7e..ff6e993 100644
--- a/openbsc/src/libbsc/handover_logic.c
+++ b/openbsc/src/libbsc/handover_logic.c
@@ -133,6 +133,7 @@ int bsc_handover_start(struct gsm_lchan *old_lchan, struct gsm_bts *bts)
new_lchan->bs_power = old_lchan->bs_power;
new_lchan->rsl_cmode = old_lchan->rsl_cmode;
new_lchan->tch_mode = old_lchan->tch_mode;
+ new_lchan->mr_conf = old_lchan->mr_conf;
new_lchan->conn = old_lchan->conn;
new_lchan->conn->ho_lchan = new_lchan;
--
2.1.3