Change in ...osmo-bts[master]: common/rsl.c: fix: properly handle SI3 Rest Octets
gerrit-no-reply at lists.osmocom.org
Thu Jul 18 08:17:36 UTC 2019
fixeria has submitted this change and it was merged. ( 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 of SI3 Rest Octets IE is different.
Among with the 'GPRS Indicator', which is actually expected to
indicate whether the PCU is connected or not, 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 ;)
1 file changed, 3 insertions(+), 1 deletion(-)
fixeria: Looks good to me, approved
pespin: Looks good to me, but someone else must approve
Jenkins Builder: Verified
diff --git a/src/common/rsl.c b/src/common/rsl.c
index 0a6a4e5..d09dc4a 100644
@@ -368,7 +368,9 @@
/* 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 = (uint8_t *) GSM_BTS_SI(bts, 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 */
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-Owner: fixeria <axilirator at gmail.com>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <axilirator at gmail.com>
Gerrit-Reviewer: laforge <laforge at gnumonks.org>
Gerrit-Reviewer: pespin <pespin at sysmocom.de>
Gerrit-CC: tnt <tnt at 246tNt.com>
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the gerrit-log