[PATCH] osmo-bsc[master]: vty: Add cmd to configure 3g Early Classmark Sending

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

Pau Espin Pedrol gerrit-no-reply at lists.osmocom.org
Fri Nov 24 12:58:19 UTC 2017


Hello Jenkins Builder,

I'd like you to reexamine a change.  Please visit

    https://gerrit.osmocom.org/5021

to look at the new patch set (#2).

vty: Add cmd to configure 3g Early Classmark Sending

In state prior to this patch, "3G Early Classmark Sending Restriction"
bit in SI3 rest octets was always set to H, which is a sane default as
the policy to send the information is then controlled by "Early
Classmark Sending Control" bit in the same octet.

However, it seems Quortus SoftCore can have some issues decoding the
option, so let's add a vty cmd to be able to disable it for those
having any issues.

Related: SYS#4021

Change-Id: Ic1afe071038a3bb5871d7ff40f665c8644f801ec
---
M include/osmocom/bsc/gsm_data_shared.h
M include/osmocom/bsc/rest_octets.h
M src/libbsc/bsc_vty.c
M src/libbsc/rest_octets.c
M src/libbsc/system_information.c
M src/libcommon/gsm_data.c
6 files changed, 33 insertions(+), 3 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/21/5021/2

diff --git a/include/osmocom/bsc/gsm_data_shared.h b/include/osmocom/bsc/gsm_data_shared.h
index 240be1c..04669e2 100644
--- a/include/osmocom/bsc/gsm_data_shared.h
+++ b/include/osmocom/bsc/gsm_data_shared.h
@@ -885,6 +885,7 @@
 		} data;
 	} si_common;
 	bool early_classmark_allowed;
+	bool early_classmark_allowed_3g;
 	/* for testing only: Have an infinitely long radio link timeout */
 	bool infinite_radio_link_timeout;
 
diff --git a/include/osmocom/bsc/rest_octets.h b/include/osmocom/bsc/rest_octets.h
index 568505a..876e0ab 100644
--- a/include/osmocom/bsc/rest_octets.h
+++ b/include/osmocom/bsc/rest_octets.h
@@ -49,6 +49,7 @@
 	} scheduling;
 	struct gsm48_si3_gprs_ind gprs_ind;
 	/* SI 3 specific */
+	bool early_cm_restrict_3g;
 	bool si2quater_indicator;
 	/* SI 4 specific */
 	struct gsm48_lsa_params lsa_params;
diff --git a/src/libbsc/bsc_vty.c b/src/libbsc/bsc_vty.c
index 3ddd5de..71c2cef 100644
--- a/src/libbsc/bsc_vty.c
+++ b/src/libbsc/bsc_vty.c
@@ -278,8 +278,11 @@
 		bts->si_common.chan_desc.bs_ag_blks_res, VTY_NEWLINE);
 	vty_out(vty, "System Information present: 0x%08x, static: 0x%08x%s",
 		bts->si_valid, bts->si_mode_static, VTY_NEWLINE);
-	vty_out(vty, "Early Classmark Sending: %s%s",
+	vty_out(vty, "Early Classmark Sending: 2G %s, 3G %s%s%s",
 		bts->early_classmark_allowed ? "allowed" : "forbidden",
+		bts->early_classmark_allowed_3g ? "allowed" : "forbidden",
+		bts->early_classmark_allowed_3g && !bts->early_classmark_allowed ?
+		" (forbidden by 2G bit)" : "",
 		VTY_NEWLINE);
 	if (bts->pcu_sock_path)
 		vty_out(vty, "PCU Socket Path: %s%s", bts->pcu_sock_path, VTY_NEWLINE);
@@ -653,6 +656,8 @@
 	}
 	vty_out(vty, "  early-classmark-sending %s%s",
 		bts->early_classmark_allowed ? "allowed" : "forbidden", VTY_NEWLINE);
+	vty_out(vty, "  early-classmark-sending-3g %s%s",
+		bts->early_classmark_allowed_3g ? "allowed" : "forbidden", VTY_NEWLINE);
 	switch (bts->type) {
 	case GSM_BTS_TYPE_NANOBTS:
 	case GSM_BTS_TYPE_OSMOBTS:
@@ -2789,6 +2794,22 @@
 	return CMD_SUCCESS;
 }
 
+DEFUN(cfg_bts_early_cm_3g, cfg_bts_early_cm_3g_cmd,
+	"early-classmark-sending-3g (allowed|forbidden)",
+	"3G Early Classmark Sending\n"
+	"3G Early Classmark Sending is allowed\n"
+	"3G Early Classmark Sending is forbidden\n")
+{
+	struct gsm_bts *bts = vty->index;
+
+	if (!strcmp(argv[0], "allowed"))
+		bts->early_classmark_allowed_3g = true;
+	else
+		bts->early_classmark_allowed_3g = false;
+
+	return CMD_SUCCESS;
+}
+
 DEFUN(cfg_bts_neigh_mode, cfg_bts_neigh_mode_cmd,
 	"neighbor-list mode (automatic|manual|manual-si5)",
 	"Neighbor List\n" "Mode of Neighbor List generation\n"
@@ -4310,6 +4331,7 @@
 	install_element(BTS_NODE, &cfg_bts_si_mode_cmd);
 	install_element(BTS_NODE, &cfg_bts_si_static_cmd);
 	install_element(BTS_NODE, &cfg_bts_early_cm_cmd);
+	install_element(BTS_NODE, &cfg_bts_early_cm_3g_cmd);
 	install_element(BTS_NODE, &cfg_bts_neigh_mode_cmd);
 	install_element(BTS_NODE, &cfg_bts_neigh_cmd);
 	install_element(BTS_NODE, &cfg_bts_si5_neigh_cmd);
diff --git a/src/libbsc/rest_octets.c b/src/libbsc/rest_octets.c
index abd621c..3780be2 100644
--- a/src/libbsc/rest_octets.c
+++ b/src/libbsc/rest_octets.c
@@ -499,9 +499,12 @@
 	/* GPRS Indicator */
 	append_gprs_ind(&bv, &si3->gprs_ind);
 
-	/* 3G Early Classmark Sending Restriction controlled by
+	/* 3G Early Classmark Sending Restriction. If H, then controlled by
 	 * early_cm_ctrl above */
-	bitvec_set_bit(&bv, H);
+	if (si3->early_cm_restrict_3g)
+		bitvec_set_bit(&bv, H);
+	else
+		bitvec_set_bit(&bv, L);
 
 	if (si3->si2quater_indicator) {
 		bitvec_set_bit(&bv, H); /* indicator struct present */
diff --git a/src/libbsc/system_information.c b/src/libbsc/system_information.c
index d54dad8..610bf61 100644
--- a/src/libbsc/system_information.c
+++ b/src/libbsc/system_information.c
@@ -825,6 +825,7 @@
 		.ra_colour = 0,
 		.present = 1,
 	},
+	.early_cm_restrict_3g = true,
 	.si2quater_indicator = false,
 	.lsa_params = {
 		.present = 0,
@@ -871,6 +872,7 @@
 		si_info.si2quater_indicator = false;
 	}
 	si_info.early_cm_ctrl = bts->early_classmark_allowed;
+	si_info.early_cm_restrict_3g = bts->early_classmark_allowed_3g;
 
 	/* SI3 Rest Octets (10.5.2.34), containing
 		CBQ, CELL_RESELECT_OFFSET, TEMPORARY_OFFSET, PENALTY_TIME
diff --git a/src/libcommon/gsm_data.c b/src/libcommon/gsm_data.c
index e085aa6..ef72881 100644
--- a/src/libcommon/gsm_data.c
+++ b/src/libcommon/gsm_data.c
@@ -269,6 +269,7 @@
 	bts->dtxd = false;
 	bts->gprs.ctrl_ack_type_use_block = true; /* use RLC/MAC control block */
 	bts->neigh_list_manual_mode = 0;
+	bts->early_classmark_allowed_3g = true; /* 3g Early Classmark Sending controlled by bts->early_classmark_allowed param */
 	bts->si_common.cell_sel_par.cell_resel_hyst = 2; /* 4 dB */
 	bts->si_common.cell_sel_par.rxlev_acc_min = 0;
 	bts->si_common.si2quater_neigh_list.arfcn = bts->si_common.data.earfcn_list;

-- 
To view, visit https://gerrit.osmocom.org/5021
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newpatchset
Gerrit-Change-Id: Ic1afe071038a3bb5871d7ff40f665c8644f801ec
Gerrit-PatchSet: 2
Gerrit-Project: osmo-bsc
Gerrit-Branch: master
Gerrit-Owner: Pau Espin Pedrol <pespin at sysmocom.de>
Gerrit-Reviewer: Harald Welte <laforge at gnumonks.org>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: Pau Espin Pedrol <pespin at sysmocom.de>



More information about the gerrit-log mailing list