ASCI: Add selection reason for VGCS/VBS channels

"enum lchan_select_reason" gets a new selection reason: "SELECT_FOR_VGCS"

The selection "direction" can also be changed via VTY.

Change-Id: I6b96d0a1df68efa5858b98297ebe0944b1473aaf
Related: OS#4852
This commit is contained in:
Andreas Eversberg 2023-05-04 16:23:32 +02:00 committed by laforge
parent 4827437a26
commit 2436f40b4c
5 changed files with 19 additions and 1 deletions

View File

@ -523,6 +523,7 @@ struct gsm_bts {
bool chan_alloc_chan_req_reverse; bool chan_alloc_chan_req_reverse;
bool chan_alloc_assignment_reverse; bool chan_alloc_assignment_reverse;
bool chan_alloc_handover_reverse; bool chan_alloc_handover_reverse;
bool chan_alloc_vgcs_reverse;
/* Whether to use dynamic allocation mode for assignment */ /* Whether to use dynamic allocation mode for assignment */
bool chan_alloc_assignment_dynamic; bool chan_alloc_assignment_dynamic;

View File

@ -5,6 +5,7 @@ enum lchan_select_reason {
SELECT_FOR_MS_CHAN_REQ, SELECT_FOR_MS_CHAN_REQ,
SELECT_FOR_ASSIGNMENT, SELECT_FOR_ASSIGNMENT,
SELECT_FOR_HANDOVER, SELECT_FOR_HANDOVER,
SELECT_FOR_VGCS,
}; };
extern const struct value_string lchan_select_reason_names[]; extern const struct value_string lchan_select_reason_names[];

View File

@ -549,6 +549,7 @@ DEFUN_ATTR(cfg_bts_challoc_mode_all,
bts->chan_alloc_chan_req_reverse = reverse; bts->chan_alloc_chan_req_reverse = reverse;
bts->chan_alloc_assignment_reverse = reverse; bts->chan_alloc_assignment_reverse = reverse;
bts->chan_alloc_handover_reverse = reverse; bts->chan_alloc_handover_reverse = reverse;
bts->chan_alloc_vgcs_reverse = reverse;
bts->chan_alloc_assignment_dynamic = false; bts->chan_alloc_assignment_dynamic = false;
return CMD_SUCCESS; return CMD_SUCCESS;
@ -557,7 +558,7 @@ DEFUN_ATTR(cfg_bts_challoc_mode_all,
DEFUN_ATTR(cfg_bts_challoc_mode, DEFUN_ATTR(cfg_bts_challoc_mode,
cfg_bts_challoc_mode_cmd, cfg_bts_challoc_mode_cmd,
CHAN_ALLOC_CMD CHAN_ALLOC_CMD
" mode (set-all|chan-req|assignment|handover) " " mode (set-all|chan-req|assignment|handover|vgcs-vbs) "
CHAN_ALLOC_ASC_DSC, CHAN_ALLOC_ASC_DSC,
CHAN_ALLOC_DESC CHAN_ALLOC_DESC
"Channel allocation mode\n" "Channel allocation mode\n"
@ -565,6 +566,7 @@ DEFUN_ATTR(cfg_bts_challoc_mode,
"Channel allocation for CHANNEL REQUEST (RACH)\n" "Channel allocation for CHANNEL REQUEST (RACH)\n"
"Channel allocation for assignment\n" "Channel allocation for assignment\n"
"Channel allocation for handover\n" "Channel allocation for handover\n"
"Channel allocation for VGCS/VBS\n"
CHAN_ALLOC_ASC_DSC_DESC, CHAN_ALLOC_ASC_DSC_DESC,
CMD_ATTR_IMMEDIATE) CMD_ATTR_IMMEDIATE)
{ {
@ -580,6 +582,8 @@ DEFUN_ATTR(cfg_bts_challoc_mode,
} }
if (set_all || !strcmp(argv[0], "handover")) if (set_all || !strcmp(argv[0], "handover"))
bts->chan_alloc_handover_reverse = reverse; bts->chan_alloc_handover_reverse = reverse;
if (set_all || !strcmp(argv[0], "vgcs-vbs"))
bts->chan_alloc_vgcs_reverse = reverse;
return CMD_SUCCESS; return CMD_SUCCESS;
} }
@ -4424,6 +4428,9 @@ static void config_write_bts_single(struct vty *vty, struct gsm_bts *bts)
vty_out(vty, " channel allocator mode handover %s%s", vty_out(vty, " channel allocator mode handover %s%s",
bts->chan_alloc_handover_reverse ? "descending" : "ascending", bts->chan_alloc_handover_reverse ? "descending" : "ascending",
VTY_NEWLINE); VTY_NEWLINE);
vty_out(vty, " channel allocator mode vgcs-vbs %s%s",
bts->chan_alloc_vgcs_reverse ? "descending" : "ascending",
VTY_NEWLINE);
if (bts->chan_alloc_avoid_interf) if (bts->chan_alloc_avoid_interf)
vty_out(vty, " channel allocator avoid-interference 1%s", VTY_NEWLINE); vty_out(vty, " channel allocator avoid-interference 1%s", VTY_NEWLINE);
if (bts->chan_alloc_tch_signalling_policy == BTS_TCH_SIGNALLING_NEVER) if (bts->chan_alloc_tch_signalling_policy == BTS_TCH_SIGNALLING_NEVER)

View File

@ -41,6 +41,7 @@ const struct value_string lchan_select_reason_names[] = {
OSMO_VALUE_STRING(SELECT_FOR_MS_CHAN_REQ), OSMO_VALUE_STRING(SELECT_FOR_MS_CHAN_REQ),
OSMO_VALUE_STRING(SELECT_FOR_ASSIGNMENT), OSMO_VALUE_STRING(SELECT_FOR_ASSIGNMENT),
OSMO_VALUE_STRING(SELECT_FOR_HANDOVER), OSMO_VALUE_STRING(SELECT_FOR_HANDOVER),
OSMO_VALUE_STRING(SELECT_FOR_VGCS),
{0, NULL} {0, NULL}
}; };
@ -349,6 +350,9 @@ struct gsm_lchan *lchan_avail_by_type(struct gsm_bts *bts,
case SELECT_FOR_HANDOVER: case SELECT_FOR_HANDOVER:
chan_alloc_reverse = bts->chan_alloc_handover_reverse; chan_alloc_reverse = bts->chan_alloc_handover_reverse;
break; break;
case SELECT_FOR_VGCS:
chan_alloc_reverse = bts->chan_alloc_vgcs_reverse;
break;
} }
/* Allocate an array with pointers to all timeslots of a BTS */ /* Allocate an array with pointers to all timeslots of a BTS */

View File

@ -177,6 +177,7 @@ OsmoBSC(config-net-bts)# channel allocator mode ?
chan-req Channel allocation for CHANNEL REQUEST (RACH) chan-req Channel allocation for CHANNEL REQUEST (RACH)
assignment Channel allocation for assignment assignment Channel allocation for assignment
handover Channel allocation for handover handover Channel allocation for handover
vgcs-vbs Channel allocation for VGCS/VBS
OsmoBSC(config-net-bts)# channel allocator mode set-all ? OsmoBSC(config-net-bts)# channel allocator mode set-all ?
ascending Allocate Timeslots and Transceivers in ascending order ascending Allocate Timeslots and Transceivers in ascending order
@ -191,6 +192,10 @@ OsmoBSC(config-net-bts)# channel allocator mode assignment ?
descending Allocate Timeslots and Transceivers in descending order descending Allocate Timeslots and Transceivers in descending order
dynamic Dynamic lchan selection based on configured parameters dynamic Dynamic lchan selection based on configured parameters
OsmoBSC(config-net-bts)# channel allocator mode vgcs-vbs ?
ascending Allocate Timeslots and Transceivers in ascending order
descending Allocate Timeslots and Transceivers in descending order
OsmoBSC(config-net-bts)# channel allocator dynamic-param ? OsmoBSC(config-net-bts)# channel allocator dynamic-param ?
sort-by-trx-power Whether to sort TRX instances by their respective power levels sort-by-trx-power Whether to sort TRX instances by their respective power levels
ul-rxlev Uplink RxLev ul-rxlev Uplink RxLev