pespin submitted this change.
iuh: Allow setting tx-queue-max-length for all HNBs
Related: SYS#7693
Change-Id: I8bc9e8bae7a4815dc2f2bc9e15401e01948d1748
---
M include/osmocom/hnbgw/hnbgw.h
M src/osmo-hnbgw/hnbgw.c
M src/osmo-hnbgw/hnbgw_vty.c
M src/osmo-hnbgw/osmo_hnbgw_main.c
M tests/osmo-hnbgw.vty
5 files changed, 42 insertions(+), 0 deletions(-)
diff --git a/include/osmocom/hnbgw/hnbgw.h b/include/osmocom/hnbgw/hnbgw.h
index e26ae2d..86fded3 100644
--- a/include/osmocom/hnbgw/hnbgw.h
+++ b/include/osmocom/hnbgw/hnbgw.h
@@ -71,6 +71,8 @@
#define IUH_MSGB_SIZE 2048
+#define IUH_TX_QUEUE_MAX_LENGTH 1024
+
struct hnbgw_context_map;
static inline bool cnlink_is_cs(const struct hnbgw_cnlink *cnlink)
@@ -96,6 +98,9 @@
bool accept_all_hnb;
struct mgcp_client_conf *mgcp_client;
struct {
+ unsigned int tx_queue_max_length;
+ } iuh;
+ struct {
char *local_addr;
uint16_t local_port;
char *remote_addr;
diff --git a/src/osmo-hnbgw/hnbgw.c b/src/osmo-hnbgw/hnbgw.c
index d237928..a8f827c 100644
--- a/src/osmo-hnbgw/hnbgw.c
+++ b/src/osmo-hnbgw/hnbgw.c
@@ -216,6 +216,7 @@
g_hnbgw->config.hnbap_allow_tmsi = true;
g_hnbgw->config.log_prefix_hnb_id = true;
g_hnbgw->config.accept_all_hnb = true;
+ g_hnbgw->config.iuh.tx_queue_max_length = IUH_TX_QUEUE_MAX_LENGTH;
/* Set zero PLMN to detect a missing PLMN when transmitting RESET */
g_hnbgw->config.plmn = (struct osmo_plmn_id){ 0, 0, false };
diff --git a/src/osmo-hnbgw/hnbgw_vty.c b/src/osmo-hnbgw/hnbgw_vty.c
index f1b128c..c74c5db 100644
--- a/src/osmo-hnbgw/hnbgw_vty.c
+++ b/src/osmo-hnbgw/hnbgw_vty.c
@@ -318,6 +318,18 @@
return CMD_SUCCESS;
}
+DEFUN(cfg_hnbgw_iuh_tx_queue_max_length, cfg_hnbgw_iuh_tx_queue_max_length_cmd,
+ "tx-queue-max-length <0-65535>",
+ "Maximum transmit queue length, in msgbs\n"
+ "Amount of msgbs which can be queued at maximum in the transmit queue\n")
+{
+ g_hnbgw->config.iuh.tx_queue_max_length = atoi(argv[0]);
+ if (g_hnbgw->iuh)
+ osmo_stream_srv_link_set_tx_queue_max_length(g_hnbgw->iuh,
+ g_hnbgw->config.iuh.tx_queue_max_length);
+ return CMD_SUCCESS;
+}
+
DEFUN(cfg_hnbgw_iuh_hnbap_allow_tmsi, cfg_hnbgw_iuh_hnbap_allow_tmsi_cmd,
"hnbap-allow-tmsi (0|1)",
"Allow HNBAP UE Register messages with TMSI or PTMSI identity\n"
@@ -1039,6 +1051,9 @@
if (port && port != IUH_DEFAULT_SCTP_PORT)
vty_out(vty, " local-port %u%s", port, VTY_NEWLINE);
+ if (g_hnbgw->config.iuh.tx_queue_max_length != IUH_TX_QUEUE_MAX_LENGTH)
+ vty_out(vty, " tx-queue-max-length %u%s", g_hnbgw->config.iuh.tx_queue_max_length, VTY_NEWLINE);
+
if (!g_hnbgw->config.hnbap_allow_tmsi)
vty_out(vty, " hnbap-allow-tmsi 0%s", VTY_NEWLINE);
@@ -1125,6 +1140,7 @@
install_element(IUH_NODE, &cfg_hnbgw_iuh_local_ip_cmd);
install_element(IUH_NODE, &cfg_hnbgw_iuh_local_port_cmd);
+ install_element(IUH_NODE, &cfg_hnbgw_iuh_tx_queue_max_length_cmd);
install_element(IUH_NODE, &cfg_hnbgw_iuh_hnbap_allow_tmsi_cmd);
install_element(HNBGW_NODE, &cfg_hnbgw_iucs_cmd);
diff --git a/src/osmo-hnbgw/osmo_hnbgw_main.c b/src/osmo-hnbgw/osmo_hnbgw_main.c
index b8b1b0b..1664f02 100644
--- a/src/osmo-hnbgw/osmo_hnbgw_main.c
+++ b/src/osmo-hnbgw/osmo_hnbgw_main.c
@@ -316,6 +316,7 @@
osmo_stream_srv_link_set_port(srv, g_hnbgw->config.iuh_local_port);
osmo_stream_srv_link_set_accept_cb(srv, hnbgw_rua_accept_cb);
osmo_stream_srv_link_set_msgb_alloc_info(srv, IUH_MSGB_SIZE, 0);
+ osmo_stream_srv_link_set_tx_queue_max_length(srv, g_hnbgw->config.iuh.tx_queue_max_length);
if (osmo_stream_srv_link_open(srv) < 0) {
perror("Cannot open server");
diff --git a/tests/osmo-hnbgw.vty b/tests/osmo-hnbgw.vty
index 391605b..c3e1f11 100644
--- a/tests/osmo-hnbgw.vty
+++ b/tests/osmo-hnbgw.vty
@@ -84,6 +84,25 @@
rnc-id 42
...
+OsmoHNBGW(config-hnbgw)# iuh
+OsmoHNBGW(config-hnbgw-iuh)# list
+...
+ local-ip A.B.C.D
+ local-port <1-65535>
+ tx-queue-max-length <0-65535>
+ hnbap-allow-tmsi (0|1)
+...
+
+OsmoHNBGW(config-hnbgw-iuh)# tx-queue-max-length 2000
+OsmoHNBGW(config-hnbgw-iuh)# show running-config
+...
+hnbgw
+...
+ iuh
+ tx-queue-max-length 2000
+...
+OsmoHNBGW(config-hnbgw-iuh)# exit
+
OsmoHNBGW(config-hnbgw)# nft-kpi?
nft-kpi Retrieve traffic counters from nftables
OsmoHNBGW(config-hnbgw)# nft-kpi ?
To view, visit change 41436. To unsubscribe, or for help writing mail filters, visit settings.