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/.
fixeria gerrit-no-reply at lists.osmocom.orgfixeria has submitted this change. ( https://gerrit.osmocom.org/c/osmo-bts/+/25895 )
Change subject: struct gsm_lchan: group ACCH repetition state fields
......................................................................
struct gsm_lchan: group ACCH repetition state fields
Change-Id: I2680c88f2a51b64f085a92233bc125338622babf
Related: SYS#5114
---
M include/osmo-bts/lchan.h
M src/common/l1sap.c
M src/common/lchan.c
M src/common/measurement.c
M src/common/vty.c
M src/osmo-bts-trx/sched_lchan_xcch.c
6 files changed, 41 insertions(+), 38 deletions(-)
Approvals:
Jenkins Builder: Verified
laforge: Looks good to me, but someone else must approve
pespin: Looks good to me, approved
diff --git a/include/osmo-bts/lchan.h b/include/osmo-bts/lchan.h
index 03b3144..3eb4f93 100644
--- a/include/osmo-bts/lchan.h
+++ b/include/osmo-bts/lchan.h
@@ -304,13 +304,16 @@
/* ECU (Error Concealment Unit) state */
struct osmo_ecu_state *ecu_state;
+ /* Repeated ACCH capabilities and current state */
struct abis_rsl_osmo_rep_acch_cap rep_acch_cap;
- bool repeated_dl_facch_active;
- bool repeated_ul_sacch_active;
- bool repeated_dl_sacch_active;
+ struct {
+ bool dl_facch_active;
+ bool ul_sacch_active;
+ bool dl_sacch_active;
- /* Message buffer to store DL-SACCH repeation candidate */
- struct msgb *rep_sacch;
+ /* Message buffer to store DL-SACCH repeation candidate */
+ struct msgb *dl_sacch_msg;
+ } rep_acch;
/* Cached early Immediate Assignment message: if the Immediate Assignment arrives before the channel is
* confirmed active, then cache it here and send it once the channel is confirmed to be active. This is related
diff --git a/src/common/l1sap.c b/src/common/l1sap.c
index cbe43b4..d94e3bc 100644
--- a/src/common/l1sap.c
+++ b/src/common/l1sap.c
@@ -1037,15 +1037,15 @@
* possible candidates in order to have one ready in case the MS enables
* SACCH repetition. */
- if (lchan->rep_sacch) {
+ if (lchan->rep_acch.dl_sacch_msg) {
if (lchan->meas.l1_info.srr_sro == 0) {
/* Toss previous repetition candidate */
- msgb_free(lchan->rep_sacch);
- lchan->rep_sacch = NULL;
+ msgb_free(lchan->rep_acch.dl_sacch_msg);
+ lchan->rep_acch.dl_sacch_msg = NULL;
} else {
/* Use previous repetition candidate */
- msg = lchan->rep_sacch;
- lchan->rep_sacch = NULL;
+ msg = lchan->rep_acch.dl_sacch_msg;
+ lchan->rep_acch.dl_sacch_msg = NULL;
return msg;
}
}
@@ -1059,7 +1059,7 @@
/* Only LAPDm frames for SAPI 0 may become a repetition
* candidate. */
if (sapi == 0)
- lchan->rep_sacch = msgb_copy(msg, "rep_sacch");
+ lchan->rep_acch.dl_sacch_msg = msgb_copy(msg, "rep_sacch");
return msg;
}
@@ -1143,20 +1143,20 @@
p = msgb_put(msg, GSM_MACBLOCK_LEN);
/* L1-header, if not set/modified by layer 1 */
p[0] = lchan->ms_power_ctrl.current;
- if (lchan->repeated_ul_sacch_active)
+ if (lchan->rep_acch.ul_sacch_active)
p[0] |= 0x40; /* See also: 3GPP TS 44.004, section 7.1 */
p[1] = lchan->ta_ctrl.current;
le = &lchan->lapdm_ch.lapdm_acch;
if (lchan->rep_acch_cap.dl_sacch) {
/* Check if MS requests SACCH repetition and update state accordingly */
if (lchan->meas.l1_info.srr_sro) {
- if (lchan->repeated_dl_sacch_active == false)
+ if (lchan->rep_acch.dl_sacch_active == false)
LOGPLCHAN(lchan, DL1P, LOGL_DEBUG, "DL-SACCH repetition: inactive => active\n");
- lchan->repeated_dl_sacch_active = true;
+ lchan->rep_acch.dl_sacch_active = true;
} else {
- if (lchan->repeated_dl_sacch_active == true)
+ if (lchan->rep_acch.dl_sacch_active == true)
LOGPLCHAN(lchan, DL1P, LOGL_DEBUG, "DL-SACCH repetition: active => inactive\n");
- lchan->repeated_dl_sacch_active = false;
+ lchan->rep_acch.dl_sacch_active = false;
}
pp_msg = lapdm_phsap_dequeue_msg_sacch(lchan, le);
} else {
@@ -1166,7 +1166,7 @@
if (lchan->ts->trx->bts->dtxd)
dtxd_facch = true;
le = &lchan->lapdm_ch.lapdm_dcch;
- if (lchan->repeated_dl_facch_active && lchan->rsl_cmode != RSL_CMOD_SPD_SIGN)
+ if (lchan->rep_acch.dl_facch_active && lchan->rsl_cmode != RSL_CMOD_SPD_SIGN)
pp_msg = lapdm_phsap_dequeue_msg_facch(lchan, le, fn);
else
pp_msg = lapdm_phsap_dequeue_msg(le);
@@ -1427,20 +1427,20 @@
{
uint16_t upper = 0;
uint16_t lower = 0;
- bool prev_repeated_ul_sacch_active = lchan->repeated_ul_sacch_active;
+ bool prev_repeated_ul_sacch_active = lchan->rep_acch.ul_sacch_active;
/* This is an optimization so that we exit as quickly as possible if
* there are no uplink SACCH repetition capabilities present.
* However If the repeated UL-SACCH capabilities vanish for whatever
* reason, we must be sure that UL-SACCH repetition is disabled. */
if (!lchan->rep_acch_cap.ul_sacch) {
- lchan->repeated_ul_sacch_active = false;
+ lchan->rep_acch.ul_sacch_active = false;
goto out;
}
/* Threshold disabled (repetition is always on) */
if (lchan->rep_acch_cap.rxqual == 0) {
- lchan->repeated_ul_sacch_active = true;
+ lchan->rep_acch.ul_sacch_active = true;
goto out;
}
@@ -1459,14 +1459,14 @@
/* If upper/rxqual == 0, then repeated UL-SACCH is always on */
if (ber10k >= upper)
- lchan->repeated_ul_sacch_active = true;
+ lchan->rep_acch.ul_sacch_active = true;
else if (ber10k <= lower)
- lchan->repeated_ul_sacch_active = false;
+ lchan->rep_acch.ul_sacch_active = false;
out:
- if (lchan->repeated_ul_sacch_active == prev_repeated_ul_sacch_active)
+ if (lchan->rep_acch.ul_sacch_active == prev_repeated_ul_sacch_active)
return;
- if (lchan->repeated_ul_sacch_active)
+ if (lchan->rep_acch.ul_sacch_active)
LOGPLCHAN(lchan, DL1P, LOGL_DEBUG, "UL-SACCH repetition: inactive => active\n");
else
LOGPLCHAN(lchan, DL1P, LOGL_DEBUG, "UL-SACCH repetition: active => inactive\n");
diff --git a/src/common/lchan.c b/src/common/lchan.c
index 9661010..423ecc1 100644
--- a/src/common/lchan.c
+++ b/src/common/lchan.c
@@ -296,8 +296,8 @@
msgb_free(lchan->tch.rep_facch[1].msg);
lchan->tch.rep_facch[0].msg = NULL;
lchan->tch.rep_facch[1].msg = NULL;
- msgb_free(lchan->rep_sacch);
- lchan->rep_sacch = NULL;
+ msgb_free(lchan->rep_acch.dl_sacch_msg);
+ lchan->rep_acch.dl_sacch_msg = NULL;
/* fall through */
default:
if (lchan->early_rr_ia) {
diff --git a/src/common/measurement.c b/src/common/measurement.c
index ec06131..52431c5 100644
--- a/src/common/measurement.c
+++ b/src/common/measurement.c
@@ -798,7 +798,7 @@
uint8_t upper;
uint8_t lower;
uint8_t rxqual;
- bool prev_repeated_dl_facch_active = lchan->repeated_dl_facch_active;
+ bool prev_repeated_dl_facch_active = lchan->rep_acch.dl_facch_active;
/* This is an optimization so that we exit as quickly as possible if
* there are no FACCH repetition capabilities present. However If the
@@ -806,13 +806,13 @@
* sure that FACCH repetition is disabled. */
if (!lchan->rep_acch_cap.dl_facch_cmd
&& !lchan->rep_acch_cap.dl_facch_all) {
- lchan->repeated_dl_facch_active = false;
+ lchan->rep_acch.dl_facch_active = false;
goto out;
}
/* Threshold disabled (always on) */
if (lchan->rep_acch_cap.rxqual == 0) {
- lchan->repeated_dl_facch_active = true;
+ lchan->rep_acch.dl_facch_active = true;
goto out;
}
@@ -820,7 +820,7 @@
* (repeated SACCH requested) then it makes sense to enable
* FACCH repetition too. */
if (lchan->meas.l1_info.srr_sro) {
- lchan->repeated_dl_facch_active = true;
+ lchan->rep_acch.dl_facch_active = true;
goto out;
}
@@ -852,14 +852,14 @@
rxqual = meas_res->rxqual_full;
if (rxqual >= upper)
- lchan->repeated_dl_facch_active = true;
+ lchan->rep_acch.dl_facch_active = true;
else if (rxqual <= lower)
- lchan->repeated_dl_facch_active = false;
+ lchan->rep_acch.dl_facch_active = false;
out:
- if (lchan->repeated_dl_facch_active == prev_repeated_dl_facch_active)
+ if (lchan->rep_acch.dl_facch_active == prev_repeated_dl_facch_active)
return;
- if (lchan->repeated_dl_facch_active)
+ if (lchan->rep_acch.dl_facch_active)
LOGPLCHAN(lchan, DL1P, LOGL_DEBUG, "DL-FACCH repetition: inactive => active\n");
else
LOGPLCHAN(lchan, DL1P, LOGL_DEBUG, "DL-FACCH repetition: active => inactive\n");
diff --git a/src/common/vty.c b/src/common/vty.c
index b894ba8..124f7ef 100644
--- a/src/common/vty.c
+++ b/src/common/vty.c
@@ -1723,7 +1723,7 @@
VTY_NEWLINE);
else
cfg_out(vty, "no retransmission (disabled)%s", VTY_NEWLINE);
- if (lchan->repeated_dl_facch_active)
+ if (lchan->rep_acch.dl_facch_active)
cfg_out(vty, "retransmission currently active%s", VTY_NEWLINE);
else
cfg_out(vty, "retransmission currently inactive%s",
@@ -1737,7 +1737,7 @@
VTY_NEWLINE);
else
cfg_out(vty, "no retransmission (disabled)%s", VTY_NEWLINE);
- if (lchan->repeated_dl_sacch_active)
+ if (lchan->rep_acch.dl_sacch_active)
cfg_out(vty, "retransmission currently active%s", VTY_NEWLINE);
else
cfg_out(vty, "retransmission currently inactive%s",
@@ -1751,7 +1751,7 @@
VTY_NEWLINE);
else
cfg_out(vty, "no retransmission (disabled)%s", VTY_NEWLINE);
- if (lchan->repeated_ul_sacch_active)
+ if (lchan->rep_acch.ul_sacch_active)
cfg_out(vty, "retransmission currently active%s", VTY_NEWLINE);
else
cfg_out(vty, "retransmission currently inactive%s",
diff --git a/src/osmo-bts-trx/sched_lchan_xcch.c b/src/osmo-bts-trx/sched_lchan_xcch.c
index e2baefd..e8f46c1 100644
--- a/src/osmo-bts-trx/sched_lchan_xcch.c
+++ b/src/osmo-bts-trx/sched_lchan_xcch.c
@@ -60,7 +60,7 @@
uint16_t ber10k;
int rc;
struct gsm_lchan *lchan = chan_state->lchan;
- bool rep_sacch = L1SAP_IS_LINK_SACCH(trx_chan_desc[bi->chan].link_id) && lchan->repeated_ul_sacch_active;
+ bool rep_sacch = L1SAP_IS_LINK_SACCH(trx_chan_desc[bi->chan].link_id) && lchan->rep_acch.ul_sacch_active;
/* If handover RACH detection is turned on, treat this burst as an Access Burst.
* Handle NOPE.ind as usually to ensure proper Uplink measurement reporting. */
--
To view, visit https://gerrit.osmocom.org/c/osmo-bts/+/25895
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-bts
Gerrit-Branch: master
Gerrit-Change-Id: I2680c88f2a51b64f085a92233bc125338622babf
Gerrit-Change-Number: 25895
Gerrit-PatchSet: 1
Gerrit-Owner: fixeria <vyanitskiy at sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy at sysmocom.de>
Gerrit-Reviewer: laforge <laforge at osmocom.org>
Gerrit-Reviewer: pespin <pespin at sysmocom.de>
Gerrit-MessageType: merged
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20211022/0f557708/attachment.htm>