sysmobts: Add a magic number to the hLayer2 to differentiate it
diff mbox

Message ID 1394976458-16342-1-git-send-email-holger@freyther.de
State Accepted
Headers show

Commit Message

Holger Freyther March 16, 2014, 1:27 p.m. UTC
From: Holger Hans Peter Freyther <holger@moiji-mobile.com>

The DSP/FPGA appears to report bogus PhDataInd with hlayer2 == 0.
Currently this would match the TRX==0,TS==0 and SS=0 and then we
report bad measurement reports. Add a magic number to the lower
eight bit of the hLayer2 to differentiate valid numbers.

Addresses:
<0004> measurement.c:97 (bts=0,trx=0,ts=0,ss=0) measurement during state: NONE
<0004> measurement.c:102 (bts=0,trx=0,ts=0,ss=0) no space for uplink measurement
---
 src/osmo-bts-sysmo/oml.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

Patch
diff mbox

diff --git a/src/osmo-bts-sysmo/oml.c b/src/osmo-bts-sysmo/oml.c
index 596680f..7fcd4c6 100644
--- a/src/osmo-bts-sysmo/oml.c
+++ b/src/osmo-bts-sysmo/oml.c
@@ -704,17 +704,24 @@  err:
 
 uint32_t l1if_lchan_to_hLayer(struct gsm_lchan *lchan)
 {
-	return (lchan->nr << 8) | (lchan->ts->nr << 16) | (lchan->ts->trx->nr << 24);
+	return 0xBB
+		| (lchan->nr << 8)
+		| (lchan->ts->nr << 16)
+		| (lchan->ts->trx->nr << 24);
 }
 
 /* obtain a ptr to the lapdm_channel for a given hLayer */
 struct gsm_lchan *
 l1if_hLayer_to_lchan(struct gsm_bts_trx *trx, uint32_t hLayer2)
 {
+	uint8_t magic = hLayer2 & 0xff;
 	uint8_t ts_nr = (hLayer2 >> 16) & 0xff;
 	uint8_t lchan_nr = (hLayer2 >> 8)& 0xff;
 	struct gsm_bts_trx_ts *ts;
 
+	if (magic != 0xBB)
+		return NULL;
+
 	/* FIXME: if we actually run on the BTS, the 32bit field is large
 	 * enough to simply put a pointer inside. */
 	if (ts_nr >= ARRAY_SIZE(trx->ts))