Change in osmo-pcu[master]: Get rid of bts->egprs_enabled

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/.

laforge gerrit-no-reply at lists.osmocom.org
Mon Nov 9 11:21:32 UTC 2020


laforge has submitted this change. ( https://gerrit.osmocom.org/c/osmo-pcu/+/20994 )

Change subject: Get rid of bts->egprs_enabled
......................................................................

Get rid of bts->egprs_enabled

BTS simply notifies the PCU about the supported MCS, and PCU is
responsible for providing correct data formatting supported for the BTS
and the target MS.

Related: OS#4544
Change-Id: Ifcf23771bd23afc64ca6fea38948f98f2d134ecb
---
M src/bts.h
M src/gprs_bssgp_pcu.cpp
M src/pcu_l1_if.cpp
M tests/edge/EdgeTest.cpp
M tests/tbf/TbfTest.cpp
M tests/types/TypesTest.cpp
6 files changed, 17 insertions(+), 26 deletions(-)

Approvals:
  Jenkins Builder: Verified
  neels: Looks good to me, but someone else must approve
  laforge: Looks good to me, approved



diff --git a/src/bts.h b/src/bts.h
index 6a2d3b0..9f2f898 100644
--- a/src/bts.h
+++ b/src/bts.h
@@ -137,7 +137,6 @@
 
 	uint8_t force_two_phase;
 	uint8_t alpha, gamma;
-	bool egprs_enabled;
 	bool dl_tbf_preemptive_retransmission;
 	uint8_t si13[GSM_MACBLOCK_LEN];
 	bool si13_is_set;
diff --git a/src/gprs_bssgp_pcu.cpp b/src/gprs_bssgp_pcu.cpp
index f87681c..4865211 100644
--- a/src/gprs_bssgp_pcu.cpp
+++ b/src/gprs_bssgp_pcu.cpp
@@ -740,18 +740,23 @@
 {
 	int num = 0;
 	int i;
+	bool mcs_any = false;
 
-	if (bts->egprs_enabled) {
+	/* First check if we support any MCS: */
+	for (i = 8; i >= 0; i--) {
+		if (bts->mcs_mask & (1 << i)) {
+			num = i + 1;
+			mcs_any = true;
+			break;
+		}
+	}
+
+	if (mcs_any) {
 		if (!bts->cs_adj_enabled) {
 			if (bts->initial_mcs_dl) {
 				num = bts->initial_mcs_dl;
 			} else {
-				for (i = 8; i >= 0; i--) {
-					if (bts->mcs_mask & (1 << i)) {
-						num = i + 1;
-						break;
-					}
-				}
+				/* We found "num" for free in the loop above */
 			}
 		} else if (bts->bts->max_mcs_dl()) {
 			num = bts->bts->max_mcs_dl();
@@ -808,6 +813,9 @@
 	ms_bucket_size = bts->fc_ms_bucket_size;
 	ms_leak_rate = bts->fc_ms_leak_rate;
 
+	/* FIXME: This calculation is mostly wrong. It should be done based on
+	   currently established TBF (and whether the related (egprs)_ms_class
+	   as per which CS/MCS they support). */
 	if (leak_rate == 0) {
 		int meas_rate;
 		int usage; /* in 0..1000 */
diff --git a/src/pcu_l1_if.cpp b/src/pcu_l1_if.cpp
index 127029b..738d0f1 100644
--- a/src/pcu_l1_if.cpp
+++ b/src/pcu_l1_if.cpp
@@ -623,15 +623,13 @@
 	}
 	bts_set_max_cs(bts, bts->vty.max_cs_dl, bts->vty.max_cs_ul); /* recalc max CS values */
 
-	bts->egprs_enabled = false;
 	bts->mcs_mask = 0;
 	for (i = 0; i < 9; i++) {
 		uint8_t allowed = !!(info_ind->flags & (PCU_IF_FLAG_MCS1 << i));
 		bts->mcs_mask |= allowed << i;
-		if (allowed) {
-			bts->egprs_enabled = true;
+		if (allowed)
 			LOGP(DL1IF, LOGL_DEBUG, " Use MCS%d\n", i + 1);
-		}
+
 	}
 	bts_set_max_mcs(bts, bts->vty.max_mcs_dl, bts->vty.max_mcs_ul); /* recalc max MCS values */
 
diff --git a/tests/edge/EdgeTest.cpp b/tests/edge/EdgeTest.cpp
index 5845f4d..67ed2a7 100644
--- a/tests/edge/EdgeTest.cpp
+++ b/tests/edge/EdgeTest.cpp
@@ -1157,7 +1157,6 @@
 	gprs_rlcmac_trx *trx;
 
 	bts = the_bts->bts_data();
-	bts->egprs_enabled = true;
 	bts->alloc_algorithm = alloc_algorithm_a;
 	bts->initial_cs_dl = cs;
 	bts->initial_cs_ul = cs;
diff --git a/tests/tbf/TbfTest.cpp b/tests/tbf/TbfTest.cpp
index 40b7b9c..505f510 100644
--- a/tests/tbf/TbfTest.cpp
+++ b/tests/tbf/TbfTest.cpp
@@ -1737,7 +1737,6 @@
 
 	setup_bts(&the_bts, ts_no, 4);
 	the_bts.bts_data()->initial_mcs_dl = 9;
-	the_bts.bts_data()->egprs_enabled = true;
 	bts = the_bts.bts_data();
 	bts->ws_base = 128;
 	bts->ws_pdch = 64;
@@ -2177,7 +2176,6 @@
 	setup_bts(&the_bts, ts_no);
 
 	/* EGPRS-only */
-	bts->egprs_enabled = true;
 
 	gprs_bssgp_init(bts, 3234, 3234, 1, 1, false, 0, 0, 0);
 
@@ -2257,7 +2255,6 @@
 	ws_check(dl_tbf, __func__, 4, 64, true, false);
 
 	/* EGPRS-only */
-	bts->egprs_enabled = true;
 
 	/* Does support EGPRS */
 	ms = the_bts.ms_alloc(ms_class, ms_class);
@@ -2297,7 +2294,6 @@
 	gprs_bssgp_init(bts, 5234, 5234, 1, 1, false, 0, 0, 0);
 
 	/* EGPRS-only */
-	bts->egprs_enabled = true;
 
 	/* Does support EGPRS */
 	ms = the_bts.ms_alloc(ms_class, ms_class);
@@ -2330,7 +2326,6 @@
 
 	setup_bts(&the_bts, ts_no, 4);
 	the_bts.bts_data()->initial_mcs_dl = 9;
-	the_bts.bts_data()->egprs_enabled = true;
 
 	ul_tbf = puan_urbb_len_issue(&the_bts, ts_no, tlli, &fn, qta,
 		ms_class, egprs_ms_class);
@@ -2471,7 +2466,6 @@
 
 	setup_bts(&the_bts, ts_no, 4);
 	the_bts.bts_data()->initial_mcs_dl = 9;
-	the_bts.bts_data()->egprs_enabled = true;
 
 	ul_tbf = tbf_li_decoding(&the_bts, ts_no, tlli, &fn, qta,
 		ms_class, egprs_ms_class);
@@ -2515,7 +2509,6 @@
 
 	setup_bts(&the_bts, ts_no);
 	OSMO_ASSERT(osmo_tdef_set(bts->T_defs_pcu, -2031, 200, OSMO_TDEF_MS) == 0);
-	bts->egprs_enabled = true;
 	/* ARQ II */
 	bts->dl_arq_type = EGPRS_ARQ2;
 
@@ -2599,7 +2592,6 @@
 
 	setup_bts(&the_bts, ts_no, 4);
 	the_bts.bts_data()->initial_mcs_dl = 9;
-	the_bts.bts_data()->egprs_enabled = true;
 
 	ul_tbf = establish_ul_tbf_two_phase_spb(&the_bts, ts_no, tlli, &fn, qta,
 		ms_class, egprs_ms_class);
@@ -2629,7 +2621,6 @@
 
 	setup_bts(&the_bts, ts_no, 4);
 	the_bts.bts_data()->initial_mcs_dl = 9;
-	the_bts.bts_data()->egprs_enabled = true;
 
 	ul_tbf = establish_ul_tbf_two_phase(&the_bts, ts_no, tlli, &fn, qta,
 		ms_class, egprs_ms_class);
@@ -3054,7 +3045,6 @@
 	bts->cs_downgrade_threshold = 0;
 	setup_bts(&the_bts, ts_no);
 	OSMO_ASSERT(osmo_tdef_set(bts->T_defs_pcu, -2031, 200, OSMO_TDEF_MS) == 0);
-	bts->egprs_enabled = true;
 	/* ARQ II */
 	bts->dl_arq_type = EGPRS_ARQ2;
 
@@ -3083,7 +3073,6 @@
 	bts->cs_downgrade_threshold = 0;
 	setup_bts(&the_bts, ts_no);
 	OSMO_ASSERT(osmo_tdef_set(bts->T_defs_pcu, -2031, 200, OSMO_TDEF_MS) == 0);
-	bts->egprs_enabled = true;
 
 	/* ARQ I resegmentation support */
 	bts->dl_arq_type = EGPRS_ARQ1;
@@ -3115,7 +3104,6 @@
 
 	setup_bts(&the_bts, ts_no);
 	OSMO_ASSERT(osmo_tdef_set(bts->T_defs_pcu, -2031, 200, OSMO_TDEF_MS) == 0);
-	bts->egprs_enabled = true;
 	/* ARQ II */
 	bts->dl_arq_type = EGPRS_ARQ2;
 
diff --git a/tests/types/TypesTest.cpp b/tests/types/TypesTest.cpp
index eeebc70..feccf42 100644
--- a/tests/types/TypesTest.cpp
+++ b/tests/types/TypesTest.cpp
@@ -670,7 +670,6 @@
 	fprintf(stderr, "############## test_egprs_ul_ack_nack\n");
 
 	BTS the_bts;
-	the_bts.bts_data()->egprs_enabled = true;
 	the_bts.bts_data()->alloc_algorithm = alloc_algorithm_a;
 	the_bts.bts_data()->trx[0].pdch[4].enable();
 

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

Gerrit-Project: osmo-pcu
Gerrit-Branch: master
Gerrit-Change-Id: Ifcf23771bd23afc64ca6fea38948f98f2d134ecb
Gerrit-Change-Number: 20994
Gerrit-PatchSet: 4
Gerrit-Owner: pespin <pespin at sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy at sysmocom.de>
Gerrit-Reviewer: laforge <laforge at osmocom.org>
Gerrit-Reviewer: neels <nhofmeyr at sysmocom.de>
Gerrit-MessageType: merged
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20201109/1fce1135/attachment.htm>


More information about the gerrit-log mailing list