From 717cdf540558b95f31e4c8ea58d0fc9e06429228 Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Fri, 21 Jul 2017 21:56:23 +0200 Subject: Introduce GSMTAP categories When looking at GSMTAP output so far, one is easily overwhelmed by way too much information being presented. A lot of is consists of DUMMY frames, which are probably of lowest interest, ever. A concept similar to the "gsmtap-sapi" of OsmoBTS is introduced, by which the user can configure which particular categories (uplink or downlink control or data, gprs or egprs, ...) he actually wants to see in his logs. Change-Id: I297183690e98a7234dfc1608c18847d8981306e4 --- src/pcu_l1_if.cpp | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) (limited to 'src/pcu_l1_if.cpp') diff --git a/src/pcu_l1_if.cpp b/src/pcu_l1_if.cpp index c2c6cc6f..420bca00 100644 --- a/src/pcu_l1_if.cpp +++ b/src/pcu_l1_if.cpp @@ -165,7 +165,6 @@ void pcu_l1if_tx_pdtch(msgb *msg, uint8_t trx, uint8_t ts, uint16_t arfcn, { struct gprs_rlcmac_bts *bts = bts_main_data(); - gsmtap_send(bts->gsmtap, arfcn, ts, GSMTAP_CHANNEL_PACCH, 0, fn, 0, 0, msg->data, msg->len); #ifdef ENABLE_DIRECT_PHY if (bts->trx[trx].fl1h) { l1if_pdch_req(bts->trx[trx].fl1h, ts, 0, fn, arfcn, block_nr, @@ -245,8 +244,9 @@ extern "C" int pcu_rx_data_ind_pdtch(uint8_t trx_no, uint8_t ts_no, uint8_t *dat return pdch->rcv_block(data, len, fn, meas); } -static int pcu_rx_data_ind(struct gsm_pcu_if_data *data_ind, struct gsmtap_inst *gsmtap) +static int pcu_rx_data_ind(struct gsm_pcu_if_data *data_ind) { + struct gprs_rlcmac_bts *bts = bts_main_data(); int rc; pcu_l1_meas meas; meas.set_rssi(data_ind->rssi); @@ -264,13 +264,6 @@ static int pcu_rx_data_ind(struct gsm_pcu_if_data *data_ind, struct gsmtap_inst data_ind->arfcn, data_ind->block_nr, osmo_hexdump(data_ind->data, data_ind->len)); - rc = gsmtap_send(gsmtap, data_ind->arfcn | GSMTAP_ARFCN_F_UPLINK, data_ind->ts_nr, - GSMTAP_CHANNEL_PACCH, 0, data_ind->fn, 0, 0, data_ind->data, data_ind->len); - if (rc < 0) - LOGP(DL1IF, LOGL_ERROR, "Sending RX data via GSMTAP failed: %d\n", rc); - - rc = 0; - switch (data_ind->sapi) { case PCU_IF_SAPI_PDTCH: rc = pcu_rx_data_ind_pdtch(data_ind->trx_nr, data_ind->ts_nr, @@ -283,6 +276,11 @@ static int pcu_rx_data_ind(struct gsm_pcu_if_data *data_ind, struct gsmtap_inst rc = -EINVAL; } + if (rc < 0 && (bts->gsmtap_categ_mask & PCU_GSMTAP_C_UL_UNKNOWN)) { + gsmtap_send(bts->gsmtap, data_ind->arfcn | GSMTAP_ARFCN_F_UPLINK, data_ind->ts_nr, + GSMTAP_CHANNEL_PACCH, 0, data_ind->fn, 0, 0, data_ind->data, data_ind->len); + } + return rc; } @@ -568,11 +566,10 @@ static int pcu_rx_pag_req(struct gsm_pcu_if_pag_req *pag_req) int pcu_rx(uint8_t msg_type, struct gsm_pcu_if *pcu_prim) { int rc = 0; - struct gprs_rlcmac_bts *bts = bts_main_data(); switch (msg_type) { case PCU_IF_MSG_DATA_IND: - rc = pcu_rx_data_ind(&pcu_prim->u.data_ind, bts->gsmtap); + rc = pcu_rx_data_ind(&pcu_prim->u.data_ind); break; case PCU_IF_MSG_DATA_CNF: rc = pcu_rx_data_cnf(&pcu_prim->u.data_cnf); @@ -597,6 +594,6 @@ int pcu_rx(uint8_t msg_type, struct gsm_pcu_if *pcu_prim) msg_type); rc = -EINVAL; } - +; return rc; } -- cgit v1.2.3