iedemam has uploaded this change for review.

View Change

Expand VTY option which controls use of TCH for signalling

For statistical clarity and site tuning, it is sometimes
desirable to completely disable the use of TCH for signaling.

In the existing version of this VTY command, there is no way to
accomplish this. We can only restrict TCH for signaling non-voice
related actions.

This patch adds the ability to completely disable signaling on TCH.

Change-Id: I4459941ddad4e4a3bec8409b180d9a23a735e640
---
M include/osmocom/bsc/bts.h
M src/osmo-bsc/abis_rsl.c
M src/osmo-bsc/bts.c
M src/osmo-bsc/bts_vty.c
4 files changed, 20 insertions(+), 12 deletions(-)

git pull ssh://gerrit.osmocom.org:29418/osmo-bsc refs/changes/76/28276/1
diff --git a/include/osmocom/bsc/bts.h b/include/osmocom/bsc/bts.h
index 66cf68f..ce86c4c 100644
--- a/include/osmocom/bsc/bts.h
+++ b/include/osmocom/bsc/bts.h
@@ -514,9 +514,11 @@
* interference reported in RSL Resource Indication. */
bool chan_alloc_avoid_interf;

- /* When true (default), TCH can be allocated to serve
- * non-voicecall-related signalling services when SDCCHs are exhausted */
- bool chan_alloc_allow_tch_for_signalling;
+ /* If SDCCHs are exhausted:
+ * when 1 (default), TCH can be allocated for all signaling purposes
+ * when 0, TCH can only be used for voicecall-related signaling purposes
+ * when -1, TCH can never be used for signaling purposes. */
+ int chan_alloc_allow_tch_for_signalling;

enum neigh_list_manual_mode neigh_list_manual_mode;
/* parameters from which we build SYSTEM INFORMATION */
diff --git a/src/osmo-bsc/abis_rsl.c b/src/osmo-bsc/abis_rsl.c
index d37fac8..efd4e06 100644
--- a/src/osmo-bsc/abis_rsl.c
+++ b/src/osmo-bsc/abis_rsl.c
@@ -2178,7 +2178,8 @@
* in the code below, all other channel requests will get an SDCCH first
* (if possible). */

- if (gsm_chreq_reason_is_voicecall(rqd->reason) || bts->chan_alloc_allow_tch_for_signalling) {
+ if (bts->chan_alloc_allow_tch_for_signalling == 1
+ || (gsm_chreq_reason_is_voicecall(rqd->reason) && bts->chan_alloc_allow_tch_for_signalling == 0)) {
if (!lchan) {
LOG_BTS(bts, DRSL, LOGL_NOTICE, "CHAN RQD[%s]: no resources for %s 0x%x, retrying with %s\n",
get_value_string(gsm_chreq_descs, rqd->reason), gsm_lchant_name(GSM_LCHAN_SDCCH),
diff --git a/src/osmo-bsc/bts.c b/src/osmo-bsc/bts.c
index d0adb2a..d844e68 100644
--- a/src/osmo-bsc/bts.c
+++ b/src/osmo-bsc/bts.c
@@ -295,7 +295,7 @@
bts->neigh_list_manual_mode = NL_MODE_AUTOMATIC;
bts->early_classmark_allowed_3g = true; /* 3g Early Classmark Sending controlled by bts->early_classmark_allowed param */
bts->si_unused_send_empty = true;
- bts->chan_alloc_allow_tch_for_signalling = true;
+ bts->chan_alloc_allow_tch_for_signalling = 1;
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;
diff --git a/src/osmo-bsc/bts_vty.c b/src/osmo-bsc/bts_vty.c
index ba4215a..d3e7383 100644
--- a/src/osmo-bsc/bts_vty.c
+++ b/src/osmo-bsc/bts_vty.c
@@ -567,19 +567,22 @@

DEFUN_ATTR(cfg_bts_chan_alloc_allow_tch_for_signalling,
cfg_bts_chan_alloc_allow_tch_for_signalling_cmd,
- "channel allocator allow-tch-for-signalling (0|1)",
+ "channel allocator allow-tch-for-signalling (0|1|call-only)",
"Channel Allocator\n" "Channel Allocator\n"
- "Configure whether TCH/H or TCH/F channels can be used to serve non-call-related signalling if SDCCHs are exhausted\n"
- "Forbid use of TCH for non-call-related signalling purposes\n"
- "Allow use of TCH for non-call-related signalling purposes (default)\n",
+ "Configure when TCH/H or TCH/F channels can be used to serve signalling if SDCCHs are exhausted\n"
+ "Never allow TCH for signalling purposes\n"
+ "Always allow TCH for signalling purposes (default)\n"
+ "Only allow TCH for signalling purposes when establishing a voice call\n",
CMD_ATTR_IMMEDIATE)
{
struct gsm_bts *bts = vty->index;

if (!strcmp(argv[0], "0"))
- bts->chan_alloc_allow_tch_for_signalling = false;
+ bts->chan_alloc_allow_tch_for_signalling = -1;
+ else if (!strcmp(argv[0], "call-only"))
+ bts->chan_alloc_allow_tch_for_signalling = 0;
else
- bts->chan_alloc_allow_tch_for_signalling = true;
+ bts->chan_alloc_allow_tch_for_signalling = 1;

return CMD_SUCCESS;
}
@@ -4185,8 +4188,10 @@
VTY_NEWLINE);
if (bts->chan_alloc_avoid_interf)
vty_out(vty, " channel allocator avoid-interference 1%s", VTY_NEWLINE);
- if (!bts->chan_alloc_allow_tch_for_signalling)
+ if (bts->chan_alloc_allow_tch_for_signalling == -1)
vty_out(vty, " channel allocator allow-tch-for-signalling 0%s", VTY_NEWLINE);
+ else if (bts->chan_alloc_allow_tch_for_signalling == 0)
+ vty_out(vty, " channel allocator allow-tch-for-signalling call-only%s", VTY_NEWLINE);
vty_out(vty, " rach tx integer %u%s",
bts->si_common.rach_control.tx_integer, VTY_NEWLINE);
vty_out(vty, " rach max transmission %u%s",

To view, visit change 28276. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: osmo-bsc
Gerrit-Branch: master
Gerrit-Change-Id: I4459941ddad4e4a3bec8409b180d9a23a735e640
Gerrit-Change-Number: 28276
Gerrit-PatchSet: 1
Gerrit-Owner: iedemam <michael@kapsulate.com>
Gerrit-MessageType: newchange