Attention is currently required from: laforge, pespin, lynxis lazus.
fixeria has posted comments on this change. ( https://gerrit.osmocom.org/c/osmo-hlr/+/32511 )
Change subject: hlr: use talloc for memory allocation in osmo_gsup_create_insert_subscriber_data_msg
......................................................................
Patch Set 3: Code-Review-1
(5 comments)
File include/osmocom/hlr/gsup_server.h:
https://gerrit.osmocom.org/c/osmo-hlr/+/32511/comment/1cd87028_0f269f13
PS3, Line 71: osmo_gsup_create_insert_subscriber_data_msg
> this looks like a public API function of libosmo-gsup to me? In that case, we cannot simply break A […]
Looks like it is, although only osmo-hlr seem to be using it. I did `./gits do grep osmo_gsup_create_insert_subscriber_data_msg` and could not find any other osmo-projects using it. But still, I would avoid breaking public API even if none of our projects are using it.
File src/gsup_server.c:
https://gerrit.osmocom.org/c/osmo-hlr/+/32511/comment/6c61462d_d1ca4b91
PS3, Line 455: void *talloc_ctx)
> because it's not guaranteed that gsup is a talloc allocated buffed.
Agreeing with @lynxis here.
File src/hlr.c:
https://gerrit.osmocom.org/c/osmo-hlr/+/32511/comment/09aec568_aa6cc162
PS3, Line 133: sub_upd_ctx
Let's better use `OTC_SELECT` and avoid `goto`s. If you don't like this idea, then maybe allocate this context outside of the loop and then free? Is there really a need to have a dedicated context for each iteration?
File src/lu_fsm.c:
https://gerrit.osmocom.org/c/osmo-hlr/+/32511/comment/7c3c16ba_cb978664
PS3, Line 249: lu_isr_ctx
I suggest simply using `OTC_SELECT` here.
https://gerrit.osmocom.org/c/osmo-hlr/+/32511/comment/facc7931_1ac18ee0
PS3, Line 251: return
memleak!
--
To view, visit https://gerrit.osmocom.org/c/osmo-hlr/+/32511
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-hlr
Gerrit-Branch: master
Gerrit-Change-Id: I00b5c2dfadcf6e0740e93b4c3292d2654d22e80c
Gerrit-Change-Number: 32511
Gerrit-PatchSet: 3
Gerrit-Owner: lynxis lazus <lynxis(a)fe80.eu>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-CC: laforge <laforge(a)osmocom.org>
Gerrit-CC: msuraev <msuraev(a)sysmocom.de>
Gerrit-CC: pespin <pespin(a)sysmocom.de>
Gerrit-Attention: laforge <laforge(a)osmocom.org>
Gerrit-Attention: pespin <pespin(a)sysmocom.de>
Gerrit-Attention: lynxis lazus <lynxis(a)fe80.eu>
Gerrit-Comment-Date: Sun, 30 Apr 2023 18:03:48 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: Yes
Comment-In-Reply-To: laforge <laforge(a)osmocom.org>
Comment-In-Reply-To: pespin <pespin(a)sysmocom.de>
Comment-In-Reply-To: lynxis lazus <lynxis(a)fe80.eu>
Gerrit-MessageType: comment
fixeria has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-bsc/+/32558 )
Change subject: bts: st_op_enabled_on_enter(): resume C0 power reduction
......................................................................
bts: st_op_enabled_on_enter(): resume C0 power reduction
If power saving is enabled for a BTS, it should remain enabled even
if the BTS is restarted for whatever reason. This persistence can be
achieved by re-sending the configured power reduction value whenever
the BTS NM FSM enters the ENABLED state again (i.e. reconnects).
Separate gsm_bts_send_c0_power_red() from gsm_bts_set_c0_power_red()
and call the former from st_op_enabled_on_enter(). All we need to do
is to send the value that was configured before, per-timeslot power
reduction limits remain and need not to be updated.
Take a chance to move logging from BTS specific to the generic code.
Change-Id: Ic3f8a2ab0ffd049a8ed84361a3a588c1e1b23ac6
Related: SYS#6435
(cherry picked from commit 16922c5017faf8efa9bbb840aa564a979019a172)
---
M include/osmocom/bsc/bts.h
M src/osmo-bsc/bts.c
M src/osmo-bsc/bts_osmobts.c
M src/osmo-bsc/nm_bts_fsm.c
4 files changed, 46 insertions(+), 10 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/58/32558/1
diff --git a/include/osmocom/bsc/bts.h b/include/osmocom/bsc/bts.h
index 12becf4..b1aaa6f 100644
--- a/include/osmocom/bsc/bts.h
+++ b/include/osmocom/bsc/bts.h
@@ -814,6 +814,7 @@
int gsm_bts_set_system_infos(struct gsm_bts *bts);
+int gsm_bts_send_c0_power_red(const struct gsm_bts *bts, const uint8_t red);
int gsm_bts_set_c0_power_red(struct gsm_bts *bts, const uint8_t red);
void gsm_bts_stats_reset(struct gsm_bts *bts);
diff --git a/src/osmo-bsc/bts.c b/src/osmo-bsc/bts.c
index 58a4a0b..585eb99 100644
--- a/src/osmo-bsc/bts.c
+++ b/src/osmo-bsc/bts.c
@@ -975,21 +975,30 @@
return 0;
}
+/* Send the given C0 power reduction value to the BTS */
+int gsm_bts_send_c0_power_red(const struct gsm_bts *bts, const uint8_t red)
+{
+ if (!osmo_bts_has_feature(&bts->features, BTS_FEAT_BCCH_POWER_RED))
+ return -ENOTSUP;
+ if (bts->model->power_ctrl_send_c0_power_red == NULL)
+ return -ENOTSUP;
+ return bts->model->power_ctrl_send_c0_power_red(bts, red);
+}
+
+/* Send the given C0 power reduction value to the BTS and update the internal state */
int gsm_bts_set_c0_power_red(struct gsm_bts *bts, const uint8_t red)
{
struct gsm_bts_trx *c0 = bts->c0;
unsigned int tn;
int rc;
- if (!osmo_bts_has_feature(&bts->features, BTS_FEAT_BCCH_POWER_RED))
- return -ENOTSUP;
- if (bts->model->power_ctrl_send_c0_power_red == NULL)
- return -ENOTSUP;
-
- rc = bts->model->power_ctrl_send_c0_power_red(bts, red);
+ rc = gsm_bts_send_c0_power_red(bts, red);
if (rc != 0)
return rc;
+ LOG_BTS(bts, DRSL, LOGL_NOTICE, "%sabling BCCH carrier power reduction "
+ "operation mode (maximum %u dB)\n", red ? "En" : "Dis", red);
+
/* Timeslot 0 is always transmitting BCCH/CCCH */
c0->ts[0].c0_max_power_red_db = 0;
diff --git a/src/osmo-bsc/bts_osmobts.c b/src/osmo-bsc/bts_osmobts.c
index 5f6f86f..ea0405b 100644
--- a/src/osmo-bsc/bts_osmobts.c
+++ b/src/osmo-bsc/bts_osmobts.c
@@ -168,10 +168,6 @@
if (msg == NULL)
return -ENOMEM;
- LOGP(DRSL, LOGL_NOTICE, "%sabling BCCH carrier power reduction "
- "operation mode for BTS%u (maximum %u dB)\n",
- red ? "En" : "Dis", bts->nr, red);
-
/* Abuse the standard BS POWER CONTROL message by specifying 'Common Channel'
* in the Protocol Discriminator field and 'BCCH' in the Channel Number IE. */
dh = (struct abis_rsl_dchan_hdr *) msgb_put(msg, sizeof(*dh));
diff --git a/src/osmo-bsc/nm_bts_fsm.c b/src/osmo-bsc/nm_bts_fsm.c
index 92728dc..ea9fa5c 100644
--- a/src/osmo-bsc/nm_bts_fsm.c
+++ b/src/osmo-bsc/nm_bts_fsm.c
@@ -286,6 +286,13 @@
bts->mo.get_attr_rep_received = false;
bts->mo.set_attr_sent = false;
bts->mo.set_attr_ack_received = false;
+
+ /* Resume power saving on the BCCH carrier, if was enabled */
+ if (bts->c0_max_power_red_db > 0) {
+ LOG_BTS(bts, DRSL, LOGL_NOTICE, "Resuming BCCH carrier power reduction "
+ "operation mode (maximum %u dB)\n", bts->c0_max_power_red_db);
+ gsm_bts_send_c0_power_red(bts, bts->c0_max_power_red_db);
+ }
}
static void st_op_enabled(struct osmo_fsm_inst *fi, uint32_t event, void *data)
--
To view, visit https://gerrit.osmocom.org/c/osmo-bsc/+/32558
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-bsc
Gerrit-Branch: 2023q1
Gerrit-Change-Id: Ic3f8a2ab0ffd049a8ed84361a3a588c1e1b23ac6
Gerrit-Change-Number: 32558
Gerrit-PatchSet: 1
Gerrit-Owner: fixeria <vyanitskiy(a)sysmocom.de>
Gerrit-MessageType: newchange