osmo-bts-trx: rx_tchf_fn(): do not treat AFS_SID_UPDATE as SUB frame

We have two similar values in enum gsm0503_amr_dtx_frames:

  * AFS_SID_UPDATE - precursor of SID UPDATE,
  * AFS_SID_UPDATE_CN - the actual SID UPDATE.

The former is internally used by libosmocoding to mark the current
frame as a precursor of the actual SID UPDATE frame - the later.

  +---+---+---+---+---+---+---+---+
  | _ | _ | _ | _ | a | b | c | d |  AFS_SID_UPDATE
  +---+---+---+---+---+---+---+---+
  | a | b | c | d | _ | _ | _ | _ |  AFS_SID_UPDATE_CN
  +---+---+---+---+---+---+---+---+
  ^
  |
  | We're here.

Do not treat the precursor frames as a SUB frames, as they contain
no information (rc=-1) and usually have *expected* BER ~50%.  This
fixes unexpected RXQUAL-SUB > 0 in the Uplink measurements during DTX.

Change-Id: I46f32bbbcb6284615d05b8703945c5ca4da55b92
Related: SYS#5853
This commit is contained in:
Vadim Yanitskiy 2022-04-24 01:45:50 +03:00 committed by laforge
parent 284f16e7d7
commit 1f9fbd8816
1 changed files with 5 additions and 1 deletions

View File

@ -171,7 +171,11 @@ int rx_tchf_fn(struct l1sched_ts *l1ts, const struct trx_ul_burst_ind *bi)
"Received AMR DTX frame (rc=%d, BER %d/%d): %s\n",
rc, n_errors, n_bits_total,
gsm0503_amr_dtx_frame_name(chan_state->amr_last_dtx));
is_sub = 1;
/* ... except AFS_SID_UPDATE, which is in fact a precursor of
* the actual SID UPDATE frame (AFS_SID_UPDATE_CN) and only
* used internally by gsm0503_tch_afs_decode_dtx() */
if (chan_state->amr_last_dtx != AFS_SID_UPDATE)
is_sub = 1;
}
/* The occurrence of the following frames indicates that we