This is merely a historical archive of years 2008-2021, before the migration to mailman3.
A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.
laforge gerrit-no-reply at lists.osmocom.orglaforge has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-bts/+/23923 )
Change subject: Allow user to specify IP DSCP for OML and RSL, too
......................................................................
Allow user to specify IP DSCP for OML and RSL, too
so far we only assumed that users want to assign as specific non-default
DSCP to RTP (voice) traffic. However, there are use cases where even
RSL and OML signaling should be covered by specifc, non-default DSCP
values, too.
Depends: libosmocore.git Ia4ba389a5b7e3e9d5f17a742a900d6fd68c08e40
Change-Id: Ic302a695453514459fa27400027154e7e8b74e0e
Related: SYS#5427
---
M TODO-RELEASE
M include/osmo-bts/bts.h
M src/common/bts.c
M src/common/bts_trx.c
M src/common/vty.c
5 files changed, 54 insertions(+), 1 deletion(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-bts refs/changes/23/23923/1
diff --git a/TODO-RELEASE b/TODO-RELEASE
index e69de29..0129a7f 100644
--- a/TODO-RELEASE
+++ b/TODO-RELEASE
@@ -0,0 +1 @@
+bump requirement to libosmocore for use of osmo_sock_set_dscp()
diff --git a/include/osmo-bts/bts.h b/include/osmo-bts/bts.h
index be0222d..67c2b82 100644
--- a/include/osmo-bts/bts.h
+++ b/include/osmo-bts/bts.h
@@ -297,6 +297,8 @@
uint16_t rtp_port_range_end;
uint16_t rtp_port_range_next;
int rtp_ip_dscp;
+ int oml_ip_dscp;
+ int rsl_ip_dscp;
struct {
uint8_t ciphers; /* flags A5/1==0x1, A5/2==0x2, A5/3==0x4 */
diff --git a/src/common/bts.c b/src/common/bts.c
index 06a5ccb..29033ef 100644
--- a/src/common/bts.c
+++ b/src/common/bts.c
@@ -329,6 +329,8 @@
bts->rtp_port_range_end = 17407;
bts->rtp_port_range_next = bts->rtp_port_range_start;
bts->rtp_ip_dscp = -1;
+ bts->oml_ip_dscp = -1;
+ bts->rsl_ip_dscp = -1;
/* Default (fall-back) MS/BS Power control parameters */
bts->bs_dpc_params = power_ctrl_params_def;
@@ -413,10 +415,16 @@
/* main link is established, send status report */
int bts_link_estab(struct gsm_bts *bts)
{
- int i, j;
+ int i, j, rc;
LOGP(DSUM, LOGL_INFO, "Main link established, sending NM Status.\n");
+ rc = osmo_sock_set_dscp(bts->oml_link->ts->driver.ipaccess.fd.fd, bts->oml_ip_dscp);
+ if (rc < 0) {
+ LOGP(DSUM, LOGL_ERROR, "Unable to set OML IP DSCP to %u: %d (%s)\n",
+ bts->oml_ip_dscp, rc, strerror(errno));
+ }
+
/* BTS SITE MGR becomes Offline (tx SW ACT Report), BTS is DEPENDENCY */
osmo_fsm_inst_dispatch(bts->site_mgr.mo.fi, NM_EV_SW_ACT, NULL);
osmo_fsm_inst_dispatch(bts->mo.fi, NM_EV_SW_ACT, NULL);
diff --git a/src/common/bts_trx.c b/src/common/bts_trx.c
index 9fc18e4..b297876 100644
--- a/src/common/bts_trx.c
+++ b/src/common/bts_trx.c
@@ -17,6 +17,8 @@
*
*/
+#include <errno.h>
+
#include <osmocom/core/fsm.h>
#include <osmocom/gsm/abis_nm.h>
@@ -202,6 +204,12 @@
LOGPTRX(trx, DSUM, LOGL_INFO, "RSL link %s\n",
link ? "up" : "down");
+ rc = osmo_sock_set_dscp(link->ts->driver.ipaccess.fd.fd, trx->bts->rsl_ip_dscp);
+ if (rc < 0) {
+ LOGPTRX(trx, DSUM, LOGL_ERROR, "Unable to set RSL IP DSCP to %u: %d (%s)\n",
+ trx->bts->rsl_ip_dscp, rc, strerror(errno));
+ }
+
osmo_fsm_inst_dispatch(trx->mo.fi, link ? NM_EV_RSL_UP : NM_EV_RSL_DOWN, NULL);
osmo_fsm_inst_dispatch(trx->bb_transc.mo.fi, link ? NM_EV_RSL_UP : NM_EV_RSL_DOWN, NULL);
diff --git a/src/common/vty.c b/src/common/vty.c
index 45ee32c..398b474 100644
--- a/src/common/vty.c
+++ b/src/common/vty.c
@@ -300,6 +300,10 @@
bts->rtp_port_range_end, VTY_NEWLINE);
if (bts->rtp_ip_dscp != -1)
vty_out(vty, " rtp ip-dscp %i%s", bts->rtp_ip_dscp, VTY_NEWLINE);
+ if (bts->oml_ip_dscp != -1)
+ vty_out(vty, " oml ip-dscp %i%s", bts->oml_ip_dscp, VTY_NEWLINE);
+ if (bts->rsl_ip_dscp != -1)
+ vty_out(vty, " rsl ip-dscp %i%s", bts->rsl_ip_dscp, VTY_NEWLINE);
vty_out(vty, " paging queue-size %u%s", paging_get_queue_max(bts->paging_state),
VTY_NEWLINE);
vty_out(vty, " paging lifetime %u%s", paging_get_lifetime(bts->paging_state),
@@ -595,6 +599,34 @@
return CMD_SUCCESS;
}
+DEFUN_USRATTR(cfg_bts_oml_ip_dscp,
+ cfg_bts_oml_ip_dscp_cmd,
+ X(BTS_VTY_ATTR_NEW_LCHAN),
+ "oml ip-dscp <0-63>",
+ RTP_STR "Specify DSCP for OML/IP packets\n" "The DSCP value (upper 6 bits of TOS)\n")
+{
+ struct gsm_bts *bts = vty->index;
+ int dscp = atoi(argv[0]);
+
+ bts->oml_ip_dscp = dscp;
+
+ return CMD_SUCCESS;
+}
+
+DEFUN_USRATTR(cfg_bts_rsl_ip_dscp,
+ cfg_bts_rsl_ip_dscp_cmd,
+ X(BTS_VTY_ATTR_NEW_LCHAN),
+ "rsl ip-dscp <0-63>",
+ RTP_STR "Specify DSCP for RSL/IP packets\n" "The DSCP value (upper 6 bits of TOS)\n")
+{
+ struct gsm_bts *bts = vty->index;
+ int dscp = atoi(argv[0]);
+
+ bts->rsl_ip_dscp = dscp;
+
+ return CMD_SUCCESS;
+}
+
#define PAG_STR "Paging related parameters\n"
DEFUN_ATTR(cfg_bts_paging_queue_size,
@@ -2312,6 +2344,8 @@
install_element(BTS_NODE, &cfg_bts_rtp_jitbuf_cmd);
install_element(BTS_NODE, &cfg_bts_rtp_port_range_cmd);
install_element(BTS_NODE, &cfg_bts_rtp_ip_dscp_cmd);
+ install_element(BTS_NODE, &cfg_bts_oml_ip_dscp_cmd);
+ install_element(BTS_NODE, &cfg_bts_rsl_ip_dscp_cmd);
install_element(BTS_NODE, &cfg_bts_band_cmd);
install_element(BTS_NODE, &cfg_description_cmd);
install_element(BTS_NODE, &cfg_no_description_cmd);
--
To view, visit https://gerrit.osmocom.org/c/osmo-bts/+/23923
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings
Gerrit-Project: osmo-bts
Gerrit-Branch: master
Gerrit-Change-Id: Ic302a695453514459fa27400027154e7e8b74e0e
Gerrit-Change-Number: 23923
Gerrit-PatchSet: 1
Gerrit-Owner: laforge <laforge at osmocom.org>
Gerrit-MessageType: newchange
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20210427/3988421c/attachment.htm>