aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHolger Hans Peter Freyther <zecke@selfish.org>2013-01-17 08:44:07 +0100
committerHolger Hans Peter Freyther <zecke@selfish.org>2013-01-23 18:22:11 +0100
commit61e739912f22a4c6e4eca5ed7852bbc0077ba93e (patch)
tree97391e8662a2e9de2e9935dc92c53503c182622b
parent4a303c7c38b322e5738a9492e077467bddfd3f38 (diff)
sysmobts: Ignore too short messages on the FACCH (but also the SDCCH)
During call testing using an E71 and dialing a number of an expired (lac set to 0) subscribe the CC Release and other messages are sent after or during the channel modification. This appears to lead to some reception issues in the DSP code and giving use empty (u8size == 0) FACCH frames. The real issue might be inside the MNCC code of NITB and the lack of a size check inside the LAPDm code (our msgb has enough data though). Passing the empty FACCH frame into the LAPDm code lead to the generation of RSL ERROR INDICATION with cause FRAME_UNIMPL as some bits were zero. Add a check for 0 into the FACCH code. As the code path is shared with SDCCH it is also discarding zero sized SDCCH frames. These have not been observed during my testing. The lacking size check in LAPDm will be addressed separately. During call testing the IPA CRCX was also failing due the BTS trying to bind to an unassigned IP address.
-rw-r--r--src/osmo-bts-sysmo/l1_if.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/osmo-bts-sysmo/l1_if.c b/src/osmo-bts-sysmo/l1_if.c
index 482f74e5..267a0c29 100644
--- a/src/osmo-bts-sysmo/l1_if.c
+++ b/src/osmo-bts-sysmo/l1_if.c
@@ -678,6 +678,14 @@ static int handle_ph_data_ind(struct femtol1_hdl *fl1, GsmL1_PhDataInd_t *data_i
case GsmL1_Sapi_Sdcch:
case GsmL1_Sapi_FacchF:
case GsmL1_Sapi_FacchH:
+ /* Check and Re-check for the SACCH */
+ if (data_ind->msgUnitParam.u8Size == 0) {
+ LOGP(DL1C, LOGL_NOTICE, "%s %s data is null.\n",
+ gsm_lchan_name(lchan),
+ get_value_string(femtobts_l1sapi_names, data_ind->sapi));
+ break;
+ }
+
/* if this is the first valid message after enabling Rx
* decryption, we have to enable Tx encryption */
if (lchan->ciph_state == LCHAN_CIPH_RX_CONF) {