trxcon/scheduler: FACCH: ensure fake measurements for BFI

According to 3GPP TS 45.003, clauses 4.2.5 and 4.3.5:

 - one FACCH/F frame steals a single speech frame,
 - one FACCH/H frame steals two speech frames.

A BFI (Bad Frame Indication) needs to be sent for each stolen
speech frame. This does not apply to CSD (data) channels though.

The BFI frames must have measurement data attached to them, and
due to their virtual nature (they do not actually come from the
air interface), the measurements must be crafted by trxcon.

Assigning a negative value to n_errors makes the code below the
'bfi' label craft fake measurement data. Otherwise, the actual
measurements belonging to the FACCH frame will be used.

Change-Id: Ia2f7c3cf7b1ef3737da6b1818cae2f001ee8768f
This commit is contained in:
Vadim Yanitskiy 2020-03-02 03:29:47 +07:00 committed by laforge
parent 2060b5b7cc
commit 12357a7d37
2 changed files with 4 additions and 2 deletions

View File

@ -136,7 +136,8 @@ int rx_tchf_fn(struct trx_instance *trx, struct trx_ts *ts,
sched_send_dt_ind(trx, ts, lchan, l2, GSM_MACBLOCK_LEN, sched_send_dt_ind(trx, ts, lchan, l2, GSM_MACBLOCK_LEN,
n_errors, false, false); n_errors, false, false);
/* Send BFI instead of stolen TCH frame */ /* Send BFI substituting a stolen TCH frame */
n_errors = -1; /* ensure fake measurements */
goto bfi; goto bfi;
} else { } else {
/* A good TCH frame received */ /* A good TCH frame received */

View File

@ -315,7 +315,8 @@ int rx_tchh_fn(struct trx_instance *trx, struct trx_ts *ts,
sched_send_dt_ind(trx, ts, lchan, l2, GSM_MACBLOCK_LEN, sched_send_dt_ind(trx, ts, lchan, l2, GSM_MACBLOCK_LEN,
n_errors, false, false); n_errors, false, false);
/* 1/2 BFI */ /* Send BFI substituting 1/2 stolen TCH frames */
n_errors = -1; /* ensure fake measurements */
goto bfi; goto bfi;
} else { } else {
/* A good TCH frame received */ /* A good TCH frame received */