Change in libosmocore[master]: gsm_08_58.h: Extend IPA Power Control Params IEs to pass C/I params

pespin gerrit-no-reply at lists.osmocom.org
Tue Aug 31 19:23:29 UTC 2021


pespin has uploaded this change for review. ( https://gerrit.osmocom.org/c/libosmocore/+/25299 )


Change subject: gsm_08_58.h: Extend IPA Power Control Params IEs to pass C/I params
......................................................................

gsm_08_58.h: Extend IPA Power Control Params IEs to pass C/I params

This commit adds new Osmocom specific IEs required to pass C/I related
Power Control Parameters osmo-bsc => osmo-bts to be used by the MS Power
Control Loop being implemented.

Related: SYS#4917
Change-Id: Iffef0611430ad6c90606149c398d80158633bbca
---
M include/osmocom/gsm/protocol/gsm_08_58.h
M src/gsm/rsl.c
2 files changed, 72 insertions(+), 2 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/99/25299/1

diff --git a/include/osmocom/gsm/protocol/gsm_08_58.h b/include/osmocom/gsm/protocol/gsm_08_58.h
index 9f80816..141c95f 100644
--- a/include/osmocom/gsm/protocol/gsm_08_58.h
+++ b/include/osmocom/gsm/protocol/gsm_08_58.h
@@ -793,8 +793,14 @@
 	RSL_IPAC_EIE_SDCCH_CTL_PARAM	= 0x1a,
 	RSL_IPAC_EIE_AMR_CONV_THRESH 	= 0x1b,
 
+	/* Osmocom specific extensions: */
+	RSL_IPAC_EIE_OSMO_MEAS_AVG_CFG	= 0xf0,
+	RSL_IPAC_EIE_OSMO_MS_PWR_CTL	= 0xf1,
+	RSL_IPAC_EIE_OSMO_PC_THRESH_COMP = 0xf2,
+
 };
 
+/* Value of TLV IE RSL_IPAC_EIE_MEAS_AVG_CFG */
 struct ipac_preproc_ave_cfg {
 #if OSMO_IS_LITTLE_ENDIAN
 	uint8_t h_reqave:5,
@@ -811,7 +817,32 @@
 #endif
 }__attribute__ ((packed));
 
-/*! MS/BS Power Control Thresholds */
+
+struct osmo_preproc_ave_cfg_field {
+#if OSMO_IS_LITTLE_ENDIAN
+	uint8_t h_reqave:5,
+		ave_enabled:1,
+		reserved:2;
+	uint8_t h_reqt:5,
+		ave_method:3;
+#elif OSMO_IS_BIG_ENDIAN
+/* auto-generated from the little endian part above (libosmocore/contrib/struct_endianess.py) */
+	uint8_t reserved:2, ave_enabled:1, h_reqave:5;
+	uint8_t ave_method:3, h_reqt:5;
+#endif
+}__attribute__ ((packed));
+/* Value of TLV IE RSL_IPAC_EIE_OSMO_MEAS_AVG_CFG: */
+struct osmo_preproc_ave_cfg {
+	struct osmo_preproc_ave_cfg_field ci_fr;
+	struct osmo_preproc_ave_cfg_field ci_hr;
+	struct osmo_preproc_ave_cfg_field ci_amr_fr;
+	struct osmo_preproc_ave_cfg_field ci_amr_hr;
+	struct osmo_preproc_ave_cfg_field ci_sdcch;
+	struct osmo_preproc_ave_cfg_field ci_gprs;
+	uint8_t params[0]; /* Contains params for each above, appended one after the other */
+}__attribute__ ((packed));
+
+/*! MS/BS Power Control Thresholds (RSL_IPAC_EIE_MS_PWR_CTL) */
 struct ipac_preproc_pc_thresh {
 #if OSMO_IS_LITTLE_ENDIAN
 	uint8_t l_rxlev:6, reserved_l_rxlev:2;
@@ -826,6 +857,17 @@
 #endif
 }__attribute__ ((packed));
 
+/*! Osmocom extension for: MS/BS Power Control Thresholds (RSL_IPAC_EIE_OSMO_MS_PWR_CTL) */
+struct osmo_preproc_pc_thresh {
+	/* Carrier-to-Interference (C/I), in dB: */
+	int8_t l_ci_fr; int8_t u_ci_fr; /* FR/EFR */
+	int8_t l_ci_hr; int8_t u_ci_hr; /* HR */
+	int8_t l_ci_amr_fr; int8_t u_ci_amr_fr; /* AMR FR */
+	int8_t l_ci_amr_hr; int8_t u_ci_amr_hr; /* AMR HR */
+	int8_t l_ci_sdcch; int8_t u_ci_sdcch; /* SDCCH */
+	int8_t l_ci_gprs; int8_t u_ci_gprs; /* GPRS */
+}__attribute__ ((packed));
+
 /*! Handover Thresholds */
 struct ipac_preproc_ho_thresh {
 #if OSMO_IS_LITTLE_ENDIAN
@@ -854,7 +896,7 @@
 #endif
 }__attribute__ ((packed));
 
-/*! PC Threshold Comparators */
+/*! PC Threshold Comparators (RSL_IPAC_EIE_PC_THRESH_COMP) */
 struct ipac_preproc_pc_comp {
 #if OSMO_IS_LITTLE_ENDIAN
 	uint8_t p1:5, reserved_p1:3;
@@ -881,6 +923,30 @@
 #endif
 }__attribute__ ((packed));
 
+/*! Osmocom extension for: PC Threshold Comparators (RSL_IPAC_EIE_OSMO_PC_THRESH_COMP) */
+struct ipac_preproc_pc_comp_field {
+	#if OSMO_IS_LITTLE_ENDIAN
+	uint8_t lower_p:5, reserved_lower_p:3;
+	uint8_t lower_n:5, reserved_lower_n:3;
+	uint8_t upper_p:5, reserved_upper_p:3;
+	uint8_t upper_n:5, reserved_upper_n:3;
+	#elif OSMO_IS_BIG_ENDIAN
+	uint8_t reserved_lower_p:3, lower_p:5;
+	uint8_t reserved_lower_n:3, lower_n:5;
+	uint8_t reserved_upper_p:3, upper_p:5;
+	uint8_t reserved_upper_n:3, upper_n:5;
+	#endif
+}__attribute__ ((packed));
+struct osmo_preproc_pc_comp {
+	/* Used for Carrier-to-Interference (C/I), in dB: */
+	struct ipac_preproc_pc_comp_field ci_fr;
+	struct ipac_preproc_pc_comp_field ci_hr;
+	struct ipac_preproc_pc_comp_field ci_amr_fr;
+	struct ipac_preproc_pc_comp_field ci_amr_hr;
+	struct ipac_preproc_pc_comp_field ci_sdcch;
+	struct ipac_preproc_pc_comp_field ci_gprs;
+}__attribute__ ((packed));
+
 /*! HO Threshold Comparators */
 struct ipac_preproc_ho_comp {
 #if OSMO_IS_LITTLE_ENDIAN
diff --git a/src/gsm/rsl.c b/src/gsm/rsl.c
index a7fa81d..1d74de8 100644
--- a/src/gsm/rsl.c
+++ b/src/gsm/rsl.c
@@ -620,6 +620,10 @@
 		[RSL_IPAC_EIE_3G_NCELL_LIST]	= { TLV_TYPE_TLV },
 		[RSL_IPAC_EIE_SDCCH_CTL_PARAM]	= { TLV_TYPE_TV },
 		[RSL_IPAC_EIE_AMR_CONV_THRESH] 	= { TLV_TYPE_FIXED, 9 },
+		/* Osmocom extensions: */
+		[RSL_IPAC_EIE_OSMO_MEAS_AVG_CFG]= { TLV_TYPE_TLV },
+		[RSL_IPAC_EIE_OSMO_MS_PWR_CTL]	= { TLV_TYPE_TLV },
+		[RSL_IPAC_EIE_OSMO_PC_THRESH_COMP]= { TLV_TYPE_TLV },
 	},
 };
 

-- 
To view, visit https://gerrit.osmocom.org/c/libosmocore/+/25299
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings

Gerrit-Project: libosmocore
Gerrit-Branch: master
Gerrit-Change-Id: Iffef0611430ad6c90606149c398d80158633bbca
Gerrit-Change-Number: 25299
Gerrit-PatchSet: 1
Gerrit-Owner: pespin <pespin at sysmocom.de>
Gerrit-MessageType: newchange
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20210831/d482f838/attachment.htm>


More information about the gerrit-log mailing list