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 uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-bsc/+/21787 ) Change subject: power_control: send RSL_IE_{MS,BS}_POWER_PARAM on CHANnel ACTIVation ...................................................................... power_control: send RSL_IE_{MS,BS}_POWER_PARAM on CHANnel ACTIVation Change-Id: I586b1c9e16390757b015c2871a36abc3975e0fc4 Related: SYS#4918 --- M include/osmocom/bsc/bts.h M src/osmo-bsc/abis_rsl.c 2 files changed, 65 insertions(+), 8 deletions(-) git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/87/21787/1 diff --git a/include/osmocom/bsc/bts.h b/include/osmocom/bsc/bts.h index fc5ec40..97e2ff8 100644 --- a/include/osmocom/bsc/bts.h +++ b/include/osmocom/bsc/bts.h @@ -184,6 +184,9 @@ void (*e1line_bind_ops)(struct e1inp_line *line); + /* (Optional) encoding function for MS/BS Power Control paramaters */ + int (*enc_power_params)(struct msgb *msg, const struct gsm_power_ctrl_params *cp); + void (*config_write_bts)(struct vty *vty, struct gsm_bts *bts); void (*config_write_trx)(struct vty *vty, struct gsm_bts_trx *trx); void (*config_write_ts)(struct vty *vty, struct gsm_bts_trx_ts *ts); diff --git a/src/osmo-bsc/abis_rsl.c b/src/osmo-bsc/abis_rsl.c index f8ea5a5..917726a 100644 --- a/src/osmo-bsc/abis_rsl.c +++ b/src/osmo-bsc/abis_rsl.c @@ -486,6 +486,59 @@ } } +static void add_power_control_params(struct msgb *msg, + const struct gsm_bts *bts, + enum gsm_power_ctrl_dir dir) +{ + const struct gsm_power_ctrl_params *cp; + uint8_t tag, msg_len, *ie_len; + int rc; + + if (dir == GSM_PWR_CTRL_DIR_UL) { + tag = RSL_IE_MS_POWER_PARAM; + cp = bts->ms_power_ctrl; + } else { + tag = RSL_IE_BS_POWER_PARAM; + cp = bts->bs_power_ctrl; + } + + /* These parameters are only valid for dynamic mode */ + if (cp->mode != GSM_PWR_CTRL_MODE_DYN_BTS) + return; + + switch (bts->type) { + case GSM_BTS_TYPE_NANOBTS: + case GSM_BTS_TYPE_OSMOBTS: + /* For both ip.access nanoBTS and osmoBTS we send MS/BS Power Control + * parameters once - right after the RSL connection is established. + * However, we may still need to send an empty IE here in order to + * indicate that dynamic power control is to be performed by BTS. */ + msgb_tlv_put(msg, tag, 0, NULL); + return; + default: + /* Since IE {MS,BS}_POWER_PARAM content is operator dependent, it's not + * known if non-osmocom BTS models will support an empty IE, so let's + * better skip sending it unless we know for sure what each expects. */ + if (bts->model->enc_power_params == NULL) + return; + + /* Put tag first, length will be updated later */ + ie_len = msgb_tl_put(msg, tag); + msg_len = msgb_length(msg); + + rc = bts->model->enc_power_params(msg, cp); + if (rc != 0) { + LOGP(DRSL, LOGL_ERROR, "Failed to encode MS/BS Power Control " + "parameters, omitting this IE (tag 0x%02x)\n", tag); + msgb_get(msg, msg_len - 2); + return; + } + + /* Update length part of the containing IE */ + *ie_len = msgb_length(msg) - msg_len; + } +} + /* Chapter 8.4.1 */ int rsl_tx_chan_activ(struct gsm_lchan *lchan, uint8_t act_type, uint8_t ho_ref) { @@ -570,15 +623,16 @@ break; } - msgb_tv_put(msg, RSL_IE_BS_POWER, lchan->bs_power); - msgb_tv_put(msg, RSL_IE_MS_POWER, lchan->ms_power); + if (bts->bs_power_ctrl->mode != GSM_PWR_CTRL_MODE_NONE) + msgb_tv_put(msg, RSL_IE_BS_POWER, lchan->bs_power); + if (bts->ms_power_ctrl->mode != GSM_PWR_CTRL_MODE_NONE) + msgb_tv_put(msg, RSL_IE_MS_POWER, lchan->ms_power); + msgb_tv_put(msg, RSL_IE_TIMING_ADVANCE, ta); - /* indicate MS power control to be performed by BTS: */ - if (bts->type == GSM_BTS_TYPE_OSMOBTS) - msgb_tl_put(msg, RSL_IE_MS_POWER_PARAM); - /* else: Since IE MS_POWER_PARAM content is operator dependent, it's not - known if non-osmocom BTS models will support an empty IE, so let's - better skip sending it unless we know for sure what each expects. */ + + /* BS/MS Power Control Parameters (if supported by BTS model) */ + add_power_control_params(msg, bts, GSM_PWR_CTRL_DIR_DL); + add_power_control_params(msg, bts, GSM_PWR_CTRL_DIR_UL); mr_config_for_bts(lchan, msg); rep_acch_cap_for_bts(lchan, msg); -- To view, visit https://gerrit.osmocom.org/c/osmo-bsc/+/21787 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: osmo-bsc Gerrit-Branch: master Gerrit-Change-Id: I586b1c9e16390757b015c2871a36abc3975e0fc4 Gerrit-Change-Number: 21787 Gerrit-PatchSet: 1 Gerrit-Owner: fixeria <vyanitskiy at sysmocom.de> Gerrit-MessageType: newchange -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20201218/36ab5ac0/attachment.htm>