diff options
author | Holger Hans Peter Freyther <zecke@selfish.org> | 2013-01-17 08:44:07 +0100 |
---|---|---|
committer | Holger Hans Peter Freyther <zecke@selfish.org> | 2013-01-23 18:22:11 +0100 |
commit | 61e739912f22a4c6e4eca5ed7852bbc0077ba93e (patch) | |
tree | 97391e8662a2e9de2e9935dc92c53503c182622b /src/osmo-bts-sysmo/l1_if.c | |
parent | 4a303c7c38b322e5738a9492e077467bddfd3f38 (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.
Diffstat (limited to 'src/osmo-bts-sysmo/l1_if.c')
-rw-r--r-- | src/osmo-bts-sysmo/l1_if.c | 8 |
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) { |