aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKeith <keith@rhizomatica.org>2020-03-05 19:48:24 -0600
committerKeith <keith@rhizomatica.org>2020-03-05 19:51:06 -0600
commit6fd8ffb6fe62586a6880780678cbee3d9f97e763 (patch)
treee919ed6fbb4c8f893333051efef0700126cf07da
parent0daf913e0c0a193c03525e09874bb002beb9777c (diff)
Send UL-CTRL Packet to GSMTAP even if we fail to decode.
Move the call to send_gsmtap() before the call to decode_gsm_rlcmac_uplink() as if the latter returns error we return and never get to see the packet on the GSMTAP. Change-Id: Ia6af9f40590f28fcae3fef50d9c601d8435412cd
-rw-r--r--src/pdch.cpp11
1 files changed, 6 insertions, 5 deletions
diff --git a/src/pdch.cpp b/src/pdch.cpp
index 7cf75c52..5b87d516 100644
--- a/src/pdch.cpp
+++ b/src/pdch.cpp
@@ -705,6 +705,12 @@ int gprs_rlcmac_pdch::rcv_control_block(const uint8_t *data, uint8_t data_len,
ul_control_block = (RlcMacUplink_t *)talloc_zero(tall_pcu_ctx, RlcMacUplink_t);
LOGP(DRLCMAC, LOGL_DEBUG, "+++++++++++++++++++++++++ RX : Uplink Control Block +++++++++++++++++++++++++\n");
+
+ if (ul_control_block->u.MESSAGE_TYPE == MT_PACKET_UPLINK_DUMMY_CONTROL_BLOCK)
+ bts()->send_gsmtap(PCU_GSMTAP_C_UL_DUMMY, true, trx_no(), ts_no, GSMTAP_CHANNEL_PACCH, fn, data, data_len);
+ else
+ bts()->send_gsmtap(PCU_GSMTAP_C_UL_CTRL, true, trx_no(), ts_no, GSMTAP_CHANNEL_PACCH, fn, data, data_len);
+
rc = decode_gsm_rlcmac_uplink(rlc_block, ul_control_block);
if(rc < 0) {
LOGP(DRLCMACUL, LOGL_ERROR, "Dropping Uplink Control Block with invalid "
@@ -713,11 +719,6 @@ int gprs_rlcmac_pdch::rcv_control_block(const uint8_t *data, uint8_t data_len,
}
LOGP(DRLCMAC, LOGL_DEBUG, "------------------------- RX : Uplink Control Block -------------------------\n");
- if (ul_control_block->u.MESSAGE_TYPE == MT_PACKET_UPLINK_DUMMY_CONTROL_BLOCK)
- bts()->send_gsmtap(PCU_GSMTAP_C_UL_DUMMY, true, trx_no(), ts_no, GSMTAP_CHANNEL_PACCH, fn, data, data_len);
- else
- bts()->send_gsmtap(PCU_GSMTAP_C_UL_CTRL, true, trx_no(), ts_no, GSMTAP_CHANNEL_PACCH, fn, data, data_len);
-
bts()->rlc_rcvd_control();
switch (ul_control_block->u.MESSAGE_TYPE) {
case MT_PACKET_CONTROL_ACK: