fixeria has uploaded this change for review. ( 
https://gerrit.osmocom.org/c/osmo-bts/+/14817


Change subject: common/rsl.c: fix: properly handle SI3 Rest Octets
......................................................................

common/rsl.c: fix: properly handle SI3 Rest Octets

It was noticed with old Sony Ericsson phones (like W595 and K510i)
that the service provided by Osmocom network becomes unreliable
from time to time. The RSSI indicator on those phones shows that
the signal is lost, so neither CS nor PS services are working.

As it then turned out, System Information 3 broadcasted on the
Um interface is different than the one received from the BSC.
In particular, the content SI3 Rest Octets IE is different.

Among with the 'GPRS Indicator', which is actually expected to
indicate whether the PCU is connected or now, SI3 Rest Octets
on the Um interface contain both 'Optional Power Offset' and
'Scheduling if and where' IEs, which are not present in the
original messages from the BSC.

Moreover, as soon as the PCU is connected, 'GPRS Indicator' IE
contains different 'GPRS RA Colour' value, and informs the MS
that System Information 13 is sent on extended BCCH, which
is not even supported by OsmoBTS!

The culprit is in rsl_rx_bcch_info(), where we pass a pointer
to osmo_gsm48_rest_octets_si3_decode(). Instead of passing a
pointer to the beginning of SI3 buffer, we actually need to
shift it to the beginning of the SI3 Rest Octets IE.

This change makes my Sony Ericsson phones happy ;)

Change-Id: Ia962cf21903ba674057cf52746996dd3254bc1c6
---
M src/common/rsl.c
1 file changed, 3 insertions(+), 1 deletion(-)



  git pull ssh://gerrit.osmocom.org:29418/osmo-bts refs/changes/17/14817/1

diff --git a/src/common/rsl.c b/src/common/rsl.c
index 0a613bb..d66fd4e 100644
--- a/src/common/rsl.c
+++ b/src/common/rsl.c
@@ -368,7 +368,9 @@
                                        LCHAN_REL_ACT_REACT;
                        }
                        /* decode original SI3 Rest Octets as sent by BSC */
-                       osmo_gsm48_rest_octets_si3_decode(&bts->si3_ro_decoded, 
GSM_BTS_SI(bts, osmo_si));
+                       const uint8_t *si3_ro_buf = bts->si_buf[osmo_si];
+                       si3_ro_buf += offsetof(struct 
gsm48_system_information_type_3, rest_octets);
+                       osmo_gsm48_rest_octets_si3_decode(&bts->si3_ro_decoded, 
si3_ro_buf);
                        /* patch out GPRS indicator from binary if PCU is not 
connected; will be enabled
                         * after PCU connects */
                        regenerate_si3_restoctets(bts);

--
To view, visit https://gerrit.osmocom.org/c/osmo-bts/+/14817
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-bts
Gerrit-Branch: master
Gerrit-Change-Id: Ia962cf21903ba674057cf52746996dd3254bc1c6
Gerrit-Change-Number: 14817
Gerrit-PatchSet: 1
Gerrit-Owner: fixeria <axilira...@gmail.com>
Gerrit-MessageType: newchange

Reply via email to