aboutsummaryrefslogtreecommitdiffstats
path: root/include/osmo-bts
diff options
context:
space:
mode:
authorVadim Yanitskiy <vyanitskiy@sysmocom.de>2021-08-29 19:32:51 +0600
committerfixeria <vyanitskiy@sysmocom.de>2021-09-27 16:02:26 +0000
commitd6ef2bf12fbcc61305c58941d95414c4e131dd30 (patch)
tree98af9aca278eeb43dc96acda3b5141097a09552f /include/osmo-bts
parent056a3632dc5f5aa0e592d07d95955c1241c0dc99 (diff)
osmo-bts-trx: implement Temporary Overpower for SACCH/FACCH
GSM/EDGE Evolution and Performance, Section 12.3 suggests Temporary Overpower as another solution to improve SACCH/FACCH performance in case of bad C/I. The idea here is that you increment the DL transmit power by 2..4dB only for FACCH/SACCH bursts, while keeping all voice bursts at the lower (normal) level as determined by BS power control. SACCH blocks can be recognized by the channel type, since they're always transmitted in specific frames of a multiframe. FACCH blocks, however, are not predictable and can substitute voice blocks at (almost) any time. Thus we need to mark FACCH bursts as such in the logical channel handlers (using TRX_BR_F_FACCH). Change-Id: Ie8a626fefccf1eb07271058e5126ec106cb1abcf Related: SYS#5319
Diffstat (limited to 'include/osmo-bts')
-rw-r--r--include/osmo-bts/gsm_data.h3
-rw-r--r--include/osmo-bts/scheduler.h4
2 files changed, 7 insertions, 0 deletions
diff --git a/include/osmo-bts/gsm_data.h b/include/osmo-bts/gsm_data.h
index 19689e54..fe2862de 100644
--- a/include/osmo-bts/gsm_data.h
+++ b/include/osmo-bts/gsm_data.h
@@ -421,6 +421,9 @@ struct gsm_lchan {
struct gsm_power_ctrl_params ms_dpc_params;
struct gsm_power_ctrl_params bs_dpc_params;
+ /* Temporary Overpower for SACCH/FACCH */
+ uint8_t bs_acch_overpower_db;
+
struct msgb *pending_rel_ind_msg;
/* ECU (Error Concealment Unit) state */
diff --git a/include/osmo-bts/scheduler.h b/include/osmo-bts/scheduler.h
index 80a260fe..d6406474 100644
--- a/include/osmo-bts/scheduler.h
+++ b/include/osmo-bts/scheduler.h
@@ -128,6 +128,8 @@ struct l1sched_chan_state {
struct l1sched_meas_set meas_avg_facch; /* measurement results for last FACCH */
uint16_t ber10k_facch; /* bit error rate for last FACCH */
+ uint8_t dl_facch_bursts; /* number of remaining DL FACCH bursts */
+
/* encryption */
int ul_encr_algo; /* A5/x encry algo downlink */
int dl_encr_algo; /* A5/x encry algo uplink */
@@ -272,6 +274,8 @@ struct trx_ul_burst_ind {
size_t burst_len;
};
+#define TRX_BR_F_FACCH (1 << 0)
+
/*! DL burst request with the corresponding meta info */
struct trx_dl_burst_req {
uint8_t flags; /*!< see TRX_BR_F_* */