It appears to me that for NM_OC_BS11 mo was either NULL or the
one mo value from NM_OC_BS11_RACK. The break inside the nested
switch case didn't break from the outer one.
Fixes Coverity: CID 1040728
---
openbsc/src/libcommon/gsm_data_shared.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/openbsc/src/libcommon/gsm_data_shared.c b/openbsc/src/libcommon/gsm_data_shared.c
index 9a50f6b..1b0814c 100644
--- a/openbsc/src/libcommon/gsm_data_shared.c
+++ b/openbsc/src/libcommon/gsm_data_shared.c
@@ -390,6 +390,7 @@ gsm_objclass2mo(struct gsm_bts *bts, uint8_t obj_class,
default:
return NULL;
}
+ break;
case NM_OC_BS11_RACK:
mo = &bts->bs11.rack.mo;
break;
--
1.8.3.2
Hi all,
I'm moving this conversation from private to public. I think Sylvain
and Andreas might be interested in participating.
---------- Forwarded message ----------
From: Thomas Tsou <tom(a)tsou.cc>
Date: Tue, Jul 9, 2013 at 2:51 AM
Subject: Re: DSP optimization
To: Alexander Chemeris <alexander.chemeris(a)gmail.com>
On Mon, Jul 8, 2013 at 6:52 AM, Alexander Chemeris
<alexander.chemeris(a)gmail.com> wrote:
> Wow, optimization of 5-16x for Viterbi is huge indeed. I wonder what
> would be results for our Atoms.
Without SSE, just C only butterfly, the improvement is around 4x. SSE
3 (Atom) forces a small change on the normalization (not separated out
yet), but the results weren't very far off from SSE 4.1 when I tested
on Core 2 Duo.
I might try to manipulate the interface to read in the state tables
instead of the generator polynomials. That would really help with
testing and integration, but I'm not sure yet. There are many ways to
go here.
> What is problematic with the runtime detection? CPU autodetection on
> Linux should be as easy as reading /proc/cpuinfo. But I see an issue
> is with correctly setting up build system to generate all version on
> the same run. I think we could leave CPU autodetection for the
> "everything else" milestone, using compile time selection for now.
I think compile time detection is more appropriate. For GSM / LTE
we're almost always dealing with fixed sized vectors and not odd
calculations (e.g. 1023 size FFT), so it's unlikely that the results
will change on repeated runs.
/proc/cpuinfo parsing scripts I've seen have been prone to breakage.
If you have a really good one, let me know. I usually prefer to run
configure checks against the actual instruction, but that can get
messy with a lot of checks. Anyhow, I'm not worrying about this now.
> What repository will you push at? We need to have at least master
> branch and dual-channel branch working with the optimizations. And I
> believe everyone would be happy to see optimizations in the
> libosmocore for the benefit of other projects as well. I don't foresee
> any issues with a slight change in the API of libosmocore if it is
> justified - just send an RFC/patch to the OpenBSC mailing list and it
> will be reviewed.
Non-Viterbi changes are sigProc.cpp changes only, so they are not
branch-specific - they will probably merge into the oldest available
OpenBTS releases. The Viterbi changes merge into Andreas's branch,
which is a very large change. For now, somebody needs to write it,
which is why I'm considering making the interfaces match.
Attached are the standalone unit test cases for SSE 4.2. As previously
mentioned, Atom needs SSE3 only. I'll add the ifdefs for those
shortly. I don't know if there's an appropriate repository for these
right now - linking libosmocore from the transceiver for comparison
purposes only seems silly. I just generated a temporary tarball for
the time being.
Thomas
--
Regards,
Alexander Chemeris.
CEO, Fairwaves LLC / ООО УмРадио
http://fairwaves.ru
Hi Thomas,
What is the reason you disabled setting power attenuation an receive
gain for the second trx? Since both channels in UmTRX are independent,
it should be possible to control tx power and rx gain independently.
In the "SETPOWER" command handler:
if (mPrimary)
mRadioInterface->setPowerAttenuation(dbPwr);
In the "SETRXGAIN" it's even stranger, as it's set twice in case of primary trx:
newGain = mRadioInterface->setRxGain(newGain);
mEnergyThreshold = INIT_ENERGY_THRSHD;
if (mPrimary)
newGain = mRadioInterface->setRxGain(newGain);
--
Regards,
Alexander Chemeris.
CEO, Fairwaves LLC / ООО УмРадио
http://fairwaves.ru
Dear LaF0rge, Andreas,
I am really disappointed about the used process for this change. As
an absolute minimum run "make check" after bigger changes. The run
takes about 20 seconds (and that is probably 15s in the timer test),
I have to spend way more time fixing the fall-out from that and it
creates the impression that you do not value my time!
I think Andreas should have posted this kind of change to the mailing
list and ask for review. The way it was done is really unacceptable
and the build is still broken. And to make it worse I think the change
is wrong in several ways:
1.) The issue of the last '7bit' being 'empty' only applies to USSD/CB:
"If the total number of characters to be sent equals (8n-1) where
n=1,2,3 etc. then there are 7 spare bits at the end of the message.
To avoid the situation where the receiving entity confuses 7 binary
zero pad bits as the @ character, the carriage return or <CR> character
(defined in subclause 7.1.1) shall be used for padding in this situation,
just as for Cell Broadcast."
In SMS one has both the octet length and the character length inside
the messages. In USSD this information is not present.
2.) The semantic of the change is bad.
+ octet_len = response_len*7/8;
+ if (response_len*7%8 != 0)
+ octet_len++;
+ /* Warning, response_len indicates the amount of septets
+ * (characters), we need amount of octets occupied */
Every caller of gsm_7bit_encode now needs to consider adding this change,
it is better to move this into gsm_utils.c. E.g. take a look at my branch
called zecke/features/alpha-numeric for a gsm_7bit_encode_oct. Which
comes with a testcase... and moves this responsibility into libosmocore
and is based on the real octets written (instead of trying to figure it
our afterwards).
We all make money by working on Osmocom sub-projects and I really can't
stand such amateurish work. Can we force reset master to before the merge
and try again?
cheers
holger
Hi
in order to decode Cipher Mode Command from Alcatel S-12, please accept a
patch to gsm0808.c
Without it OpenBSC rejects ciphering, and procedures are broken from MSC
side
@@ -305,6 +305,7 @@
[GSM0808_IE_CELL_IDENTIFIER] = { TLV_TYPE_TLV },
[GSM0808_IE_CHOSEN_CHANNEL] = { TLV_TYPE_TV },
[GSM0808_IE_LAYER_3_INFORMATION] = { TLV_TYPE_TLV },
+ [GSM0808_IE_LAYER_3_HEADER_INFORMATION] = { TLV_TYPE_TLV
},
[GSM0808_IE_SPEECH_VERSION] = { TLV_TYPE_TV },
[GSM0808_IE_CHOSEN_ENCR_ALG] = { TLV_TYPE_TV },
},
Right now there is a pilot with MNO, and Telscale SS7 Card runs code for
A-interface gateway,
converting BSSAP/SS7 to SCCPoverIP + rtp.
It seems that such a gateway also has to adapt OpenBSC to each particular
MSC.
As an example, DTAP portion of Cipher Mode Complete must be removed for
proper operation with S12.
Code will published as soon as pilot succeeds.
Best Regards,
Dmitri
hi,
while trying to do a second call (hold the first, dial another number),
i found out that there is no acknowledge for a CM service request, when
encyption is enabled. the attached patch will fix it.
regards,
andreas
Hi everyone,
I have to setup a complete call with voice support and also a complete working GPRS network with just simulation and no physical base station, is it achievable?
It would be great if someone could enlighten me on this.
Thanks and regards,
Priyanka