This is merely a historical archive of years 2008-2021, before the migration to mailman3.
A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.
dexter gerrit-no-reply at lists.osmocom.orgHello fixeria, I'd like you to do a code review. Please visit https://gerrit.osmocom.org/c/osmo-bts/+/25284 to review the following change. Change subject: osmo-bts-trx: implement Temporary Overpower for SACCH/FACCH ...................................................................... osmo-bts-trx: implement Temporary Overpower for SACCH/FACCH Change-Id: Ie8a626fefccf1eb07271058e5126ec106cb1abcf Related: SYS#5319 --- M include/osmo-bts/gsm_data.h M include/osmo-bts/scheduler.h M src/common/scheduler.c M src/osmo-bts-trx/sched_lchan_tchf.c M src/osmo-bts-trx/sched_lchan_tchh.c 5 files changed, 42 insertions(+), 4 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bts refs/changes/84/25284/1 diff --git a/include/osmo-bts/gsm_data.h b/include/osmo-bts/gsm_data.h index 80f1833..53b3b05 100644 --- a/include/osmo-bts/gsm_data.h +++ b/include/osmo-bts/gsm_data.h @@ -401,6 +401,9 @@ 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 80a260f..d640647 100644 --- a/include/osmo-bts/scheduler.h +++ b/include/osmo-bts/scheduler.h @@ -128,6 +128,8 @@ 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 @@ 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_* */ diff --git a/src/common/scheduler.c b/src/common/scheduler.c index 6e1e4fb..c69c9dd 100644 --- a/src/common/scheduler.c +++ b/src/common/scheduler.c @@ -1278,6 +1278,23 @@ return func(l1ts, &dbr); } +static void trx_sched_acch_overpower(const struct gsm_lchan *lchan, + struct trx_dl_burst_req *br) +{ + const struct trx_chan_desc *desc = &trx_chan_desc[br->chan]; + const uint8_t overpower_db = lchan->bs_acch_overpower_db; + + if (overpower_db == 0) + return; + + if (desc->link_id == LID_SACCH || br->flags & TRX_BR_F_FACCH) { + if (br->att > overpower_db) + br->att -= overpower_db; + else + br->att = 0; + } +} + /* process downlink burst */ void _sched_dl_burst(struct l1sched_ts *l1ts, struct trx_dl_burst_req *br) { @@ -1316,9 +1333,11 @@ br->mod = l1cs->dl_mod_type; /* BS Power reduction (in dB) per logical channel */ - if (l1cs->lchan != NULL) + if (l1cs->lchan != NULL) { br->att = l1cs->lchan->bs_power_ctrl.current; - else /* Ensure no attenuation in the absence of lchan (e.g. on PDCH) */ + /* Temporary Overpower for SACCH/FACCH bursts */ + trx_sched_acch_overpower(l1cs->lchan, br); + } else /* Ensure no attenuation in the absence of lchan (e.g. on PDCH) */ br->att = 0; /* encrypt */ diff --git a/src/osmo-bts-trx/sched_lchan_tchf.c b/src/osmo-bts-trx/sched_lchan_tchf.c index 8e6298c..d2b39d2 100644 --- a/src/osmo-bts-trx/sched_lchan_tchf.c +++ b/src/osmo-bts-trx/sched_lchan_tchf.c @@ -544,10 +544,11 @@ } /* encode bursts (prioritize FACCH) */ - if (msg_facch) + if (msg_facch) { gsm0503_tch_fr_encode(*bursts_p, msg_facch->l2h, msgb_l2len(msg_facch), 1); - else if (tch_mode == GSM48_CMODE_SPEECH_AMR) + chan_state->dl_facch_bursts = 8; + } else if (tch_mode == GSM48_CMODE_SPEECH_AMR) /* the first FN 4,13,21 defines that CMI is included in frame, * the first FN 0,8,17 defines that CMR is included in frame. */ @@ -574,6 +575,11 @@ br->burst_len = GSM_BURST_LEN; + if (chan_state->dl_facch_bursts > 0) { + chan_state->dl_facch_bursts--; + br->flags |= TRX_BR_F_FACCH; + } + LOGL1SB(DL1P, LOGL_DEBUG, l1ts, br, "Transmitting burst=%u.\n", br->bid); return 0; diff --git a/src/osmo-bts-trx/sched_lchan_tchh.c b/src/osmo-bts-trx/sched_lchan_tchh.c index bfebb66..cf0d65d 100644 --- a/src/osmo-bts-trx/sched_lchan_tchh.c +++ b/src/osmo-bts-trx/sched_lchan_tchh.c @@ -434,6 +434,7 @@ if (msg_facch) { gsm0503_tch_hr_encode(*bursts_p, msg_facch->l2h, msgb_l2len(msg_facch)); chan_state->dl_ongoing_facch = 1; /* first of two TCH frames */ + chan_state->dl_facch_bursts = 6; } else if (chan_state->dl_ongoing_facch) /* second of two TCH frames */ chan_state->dl_ongoing_facch = 0; /* we are done with FACCH */ else if (tch_mode == GSM48_CMODE_SPEECH_AMR) @@ -463,6 +464,11 @@ br->burst_len = GSM_BURST_LEN; + if (chan_state->dl_facch_bursts > 0) { + chan_state->dl_facch_bursts--; + br->flags |= TRX_BR_F_FACCH; + } + LOGL1SB(DL1P, LOGL_DEBUG, l1ts, br, "Transmitting burst=%u.\n", br->bid); return 0; -- To view, visit https://gerrit.osmocom.org/c/osmo-bts/+/25284 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-bts Gerrit-Branch: master Gerrit-Change-Id: Ie8a626fefccf1eb07271058e5126ec106cb1abcf Gerrit-Change-Number: 25284 Gerrit-PatchSet: 1 Gerrit-Owner: dexter <pmaier at sysmocom.de> Gerrit-Reviewer: fixeria <vyanitskiy at sysmocom.de> Gerrit-MessageType: newchange -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20210830/c2f61e27/attachment.htm>