aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHolger Hans Peter Freyther <zecke@selfish.org>2010-12-25 14:25:12 +0100
committerHolger Hans Peter Freyther <zecke@selfish.org>2010-12-26 09:40:03 +0100
commit3c6f6c25a6f4f29a9881f8de9406df313974ce9f (patch)
tree225992bd11540b7eb2f1a55d33eb830e30aeb6a0
parent7a0e166fb0d1b2eddf6f230e8a14f8c72b79a406 (diff)
sms: Make the max_pending tunable via a vty runtime setting
Make it possible to change the max pending via the vty. This can be useful to play with the performance of the queue.
-rw-r--r--openbsc/include/openbsc/sms_queue.h1
-rw-r--r--openbsc/src/sms_queue.c8
-rw-r--r--openbsc/src/vty_interface_layer3.c12
3 files changed, 21 insertions, 0 deletions
diff --git a/openbsc/include/openbsc/sms_queue.h b/openbsc/include/openbsc/sms_queue.h
index 5bfa4b44c..02dec73a3 100644
--- a/openbsc/include/openbsc/sms_queue.h
+++ b/openbsc/include/openbsc/sms_queue.h
@@ -10,5 +10,6 @@ int sms_queue_trigger(struct gsm_sms_queue *);
/* vty helper functions */
int sms_queue_stats(struct gsm_sms_queue *, struct vty* vty);
+int sms_queue_set_max_pending(struct gsm_sms_queue *, int max);
#endif
diff --git a/openbsc/src/sms_queue.c b/openbsc/src/sms_queue.c
index 1161b6cb7..4ffde627b 100644
--- a/openbsc/src/sms_queue.c
+++ b/openbsc/src/sms_queue.c
@@ -407,3 +407,11 @@ int sms_queue_stats(struct gsm_sms_queue *smsq, struct vty *vty)
pending->subscr->id, VTY_NEWLINE);
return 0;
}
+
+int sms_queue_set_max_pending(struct gsm_sms_queue *smsq, int max_pending)
+{
+ LOGP(DSMS, LOGL_NOTICE, "SMSqueue old max: %d new: %d\n",
+ smsq->max_pending, max_pending);
+ smsq->max_pending = max_pending;
+ return 0;
+}
diff --git a/openbsc/src/vty_interface_layer3.c b/openbsc/src/vty_interface_layer3.c
index 317d74c44..51176fa5a 100644
--- a/openbsc/src/vty_interface_layer3.c
+++ b/openbsc/src/vty_interface_layer3.c
@@ -656,6 +656,17 @@ DEFUN(smsqueue_trigger,
return CMD_SUCCESS;
}
+DEFUN(smsqueue_max,
+ smsqueue_max_cmd,
+ "sms-queue max-pending <1-500>",
+ "SMS Queue\n" "SMS to attempt to deliver at the same time\n")
+{
+ struct gsm_network *net = gsmnet_from_vty(vty);
+
+ sms_queue_set_max_pending(net->sms_queue, atoi(argv[0]));
+ return CMD_SUCCESS;
+}
+
int bsc_vty_init_extra(void)
{
register_signal_handler(SS_SCALL, scall_cbfn, NULL);
@@ -680,6 +691,7 @@ int bsc_vty_init_extra(void)
install_element(ENABLE_NODE, &ena_subscr_a3a8_cmd);
install_element(ENABLE_NODE, &subscriber_purge_cmd);
install_element(ENABLE_NODE, &smsqueue_trigger_cmd);
+ install_element(ENABLE_NODE, &smsqueue_max_cmd);
return 0;
}