laforge has uploaded this change for review. ( 
https://gerrit.osmocom.org/c/osmo-bts/+/35133?usp=email )


Change subject: gsmtap-rlp: Add support for skipping generating NULL frames
......................................................................

gsmtap-rlp: Add support for skipping generating NULL frames

If there's nothing to transmit over a CSD NT channel, both ends generate
NULL frames.  Let's add an option to suppress GSMTAP output for those,
creating pcap files with less noise.

Change-Id: I85a2159cfaa01bfb4205c1462e3a9dbda68e4bad
---
M TODO-RELEASE
M include/osmo-bts/bts.h
M src/common/l1sap.c
M src/common/vty.c
4 files changed, 36 insertions(+), 4 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/osmo-bts refs/changes/33/35133/1

diff --git a/TODO-RELEASE b/TODO-RELEASE
index 1ed7b53..2bbfab5 100644
--- a/TODO-RELEASE
+++ b/TODO-RELEASE
@@ -8,3 +8,4 @@
 # If any interfaces have been removed or changed since the last public 
release: c:r:0.
 #library       what            description / commit summary line
 libosmogsm     >1.9.0          added new PRIM_INFO to 
include/osmocom/gsm/l1sap.h
+libosmogsm     >1.9.0          use of RLP code in libosmogsm
diff --git a/include/osmo-bts/bts.h b/include/osmo-bts/bts.h
index f9ddb1e..8f1f1ab 100644
--- a/include/osmo-bts/bts.h
+++ b/include/osmo-bts/bts.h
@@ -378,6 +378,7 @@
                uint32_t sapi_mask;
                uint8_t sapi_acch;
                bool rlp;
+               bool rlp_skip_null;
        } gsmtap;

        struct osmux_state osmux;
diff --git a/src/common/l1sap.c b/src/common/l1sap.c
index 2395319..14ae5c7 100644
--- a/src/common/l1sap.c
+++ b/src/common/l1sap.c
@@ -33,6 +33,7 @@
 #include <osmocom/gsm/l1sap.h>
 #include <osmocom/gsm/gsm_utils.h>
 #include <osmocom/gsm/rsl.h>
+#include <osmocom/gsm/rlp.h>
 #include <osmocom/core/gsmtap.h>
 #include <osmocom/core/gsmtap_util.h>
 #include <osmocom/core/utils.h>
@@ -1848,6 +1849,7 @@
 {
        struct gsm_bts_trx *trx = lchan->ts->trx;
        struct gsmtap_inst *inst = trx->bts->gsmtap.inst;
+       struct osmo_rlp_frame_decoded rlpf;
        pbit_t *rlp_buf;
        int byte_len;

@@ -1897,6 +1899,12 @@
                byte_len = osmo_ubit2pbit_ext(rlp_buf, 0, data, 0, data_len, 1);
        }

+       if (trx->bts->gsmtap.rlp_skip_null) {
+               int rc = osmo_rlp_decode(&rlpf, 0, rlp_buf, byte_len);
+               if (rc == 0 && rlpf.ftype == OSMO_RLP_FT_U && rlpf.u_ftype == 
OSMO_RLP_U_FT_NULL)
+                       return;
+       }
+
        gsmtap_send_ex(inst, GSMTAP_TYPE_GSM_RLP, trx->arfcn | is_uplink ? 
GSMTAP_ARFCN_F_UPLINK : 0,
                       lchan->ts->nr,
                       lchan->type == GSM_LCHAN_TCH_H ? GSMTAP_CHANNEL_VOICE_H 
: GSMTAP_CHANNEL_VOICE_F,
diff --git a/src/common/vty.c b/src/common/vty.c
index b5ab132..2bc5bf8 100644
--- a/src/common/vty.c
+++ b/src/common/vty.c
@@ -447,8 +447,12 @@
                sapi_buf = osmo_str_tolower(get_value_string(gsmtap_sapi_names, 
GSMTAP_CHANNEL_ACCH));
                vty_out(vty, " gsmtap-sapi %s%s", sapi_buf, VTY_NEWLINE);
        }
-       if (bts->gsmtap.rlp)
-               vty_out(vty, " gsmtap-rlp%s", VTY_NEWLINE);
+       if (bts->gsmtap.rlp) {
+               if (bts->gsmtap.rlp_skip_null)
+                       vty_out(vty, " gsmtap-rlp skip-null%s", VTY_NEWLINE);
+               else
+                       vty_out(vty, " gsmtap-rlp%s", VTY_NEWLINE);
+       }
        vty_out(vty, " min-qual-rach %d%s", bts->min_qual_rach,
                VTY_NEWLINE);
        vty_out(vty, " min-qual-norm %d%s", bts->min_qual_norm,
@@ -2389,11 +2393,16 @@
 }

 DEFUN(cfg_bts_gsmtap_rlp, cfg_bts_gsmtap_rlp_cmd,
-       "gsmtap-rlp",
-       "Enable generation of GSMTAP frames for RLP (non-transparent CSD)\n")
+       "gsmtap-rlp [skip-null]",
+       "Enable generation of GSMTAP frames for RLP (non-transparent CSD)\n"
+       "Skip the generation of GSMTAP for RLP NULL frames\n")
 {
        struct gsm_bts *bts = vty->index;
        bts->gsmtap.rlp = true;
+       if (argc >= 1 && !strcmp(argv[0], "skip-null"))
+               bts->gsmtap.rlp_skip_null = true;
+       else
+               bts->gsmtap.rlp_skip_null = false;
        return CMD_SUCCESS;
 }


--
To view, visit https://gerrit.osmocom.org/c/osmo-bts/+/35133?usp=email
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-bts
Gerrit-Branch: master
Gerrit-Change-Id: I85a2159cfaa01bfb4205c1462e3a9dbda68e4bad
Gerrit-Change-Number: 35133
Gerrit-PatchSet: 1
Gerrit-Owner: laforge <lafo...@osmocom.org>
Gerrit-MessageType: newchange

Reply via email to