aboutsummaryrefslogtreecommitdiffstats
path: root/src/pcu_vty.c
diff options
context:
space:
mode:
authorJacob Erlbeck <jerlbeck@sysmocom.de>2015-07-14 13:31:48 +0200
committerJacob Erlbeck <jerlbeck@sysmocom.de>2015-07-16 19:24:15 +0200
commit400ec02e8a0415a59eae9dcdae43de38247897a3 (patch)
tree554d9aff5b7f5a96ab54418192b4aeb2e7037646 /src/pcu_vty.c
parent40da3e17e5b3d4cf199cb868d561f98c35b93147 (diff)
alloc: Add 'dynamic' allocation algorithm
The idea behind this meta algorithm is to automatically select one of the other algorithms based on the system state. Basically algorithm B will be selected if the PDCH usage is low to improve throughput and latency. Algorithm A will be selected to support more concurrent MS. This commit adds a first simple state-less version of this algorithm that always tries B first and only if that fails A is tried afterwards. The following VTY command is added to the 'pcu' node: - alloc-algorithm dynamic Ticket: #1934 Sponsored-by: On-Waves ehf
Diffstat (limited to 'src/pcu_vty.c')
-rw-r--r--src/pcu_vty.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/pcu_vty.c b/src/pcu_vty.c
index 4c0730c2..ed708f8d 100644
--- a/src/pcu_vty.c
+++ b/src/pcu_vty.c
@@ -120,6 +120,8 @@ static int config_write_pcu(struct vty *vty)
vty_out(vty, " alloc-algorithm a%s", VTY_NEWLINE);
if (bts->alloc_algorithm == alloc_algorithm_b)
vty_out(vty, " alloc-algorithm b%s", VTY_NEWLINE);
+ if (bts->alloc_algorithm == alloc_algorithm_dynamic)
+ vty_out(vty, " alloc-algorithm dynamic%s", VTY_NEWLINE);
if (bts->force_two_phase)
vty_out(vty, " two-phase-access%s", VTY_NEWLINE);
vty_out(vty, " alpha %d%s", bts->alpha, VTY_NEWLINE);
@@ -447,10 +449,12 @@ DEFUN(cfg_pcu_no_queue_idle_ack_delay,
DEFUN(cfg_pcu_alloc,
cfg_pcu_alloc_cmd,
- "alloc-algorithm (a|b)",
+ "alloc-algorithm (a|b|dynamic)",
"Select slot allocation algorithm to use when assigning timeslots on "
- "PACCH\nSingle slot is assigned only\nMultiple slots are assigned for "
- "semi-duplex operation")
+ "PACCH\n"
+ "Single slot is assigned only\n"
+ "Multiple slots are assigned for semi-duplex operation\n"
+ "Dynamically select the algorithm based on the system state\n")
{
struct gprs_rlcmac_bts *bts = bts_main_data();
@@ -461,6 +465,9 @@ DEFUN(cfg_pcu_alloc,
case 'b':
bts->alloc_algorithm = alloc_algorithm_b;
break;
+ default:
+ bts->alloc_algorithm = alloc_algorithm_dynamic;
+ break;
}
return CMD_SUCCESS;