aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPau Espin Pedrol <pespin@sysmocom.de>2021-06-07 18:13:23 +0200
committerPau Espin Pedrol <pespin@sysmocom.de>2021-06-07 18:16:55 +0200
commitc6e911cf22f1d8bd587377b2e5ef2768367619e9 (patch)
tree6d018f26d57249f79c34ff1d23d009baf600b5fb /src
parent9c1db1738fca625e3bcc75a11c5742b90176e706 (diff)
pdch: Log pdch_ulc reason upon rx of pkt ctrl ack
Diffstat (limited to 'src')
-rw-r--r--src/pdch.cpp8
-rw-r--r--src/pdch_ul_controller.c9
-rw-r--r--src/pdch_ul_controller.h1
3 files changed, 15 insertions, 3 deletions
diff --git a/src/pdch.cpp b/src/pdch.cpp
index cab81dfd..8e0a24af 100644
--- a/src/pdch.cpp
+++ b/src/pdch.cpp
@@ -333,7 +333,8 @@ void gprs_rlcmac_pdch::rcv_control_ack(Packet_Control_Acknowledgement_t *packet,
tbf->update_ms(tlli, GPRS_RLCMAC_UL_TBF);
- LOGPTBF(tbf, LOGL_DEBUG, "RX: [PCU <- BTS] Packet Control Ack\n");
+ LOGPTBF(tbf, LOGL_DEBUG, "FN=%" PRIu32 " Rx Packet Control Ack (reason=%s)\n",
+ fn, get_value_string(pdch_ulc_tbf_poll_reason_names, reason));
pdch_ulc_release_fn(ulc, fn);
/* check if this control ack belongs to packet uplink ack */
@@ -420,8 +421,9 @@ void gprs_rlcmac_pdch::rcv_control_ack(Packet_Control_Acknowledgement_t *packet,
*/
return;
}
- LOGPDCH(this, DRLCMAC, LOGL_ERROR,
- "Error: received PACET CONTROL ACK at no request\n");
+ LOGPDCH(this, DRLCMAC, LOGL_ERROR, "FN=%" PRIu32 " "
+ "Error: received PACKET CONTROL ACK at no request (reason=%s)\n", fn,
+ get_value_string(pdch_ulc_tbf_poll_reason_names, reason));
}
void gprs_rlcmac_pdch::rcv_control_dl_ack_nack(Packet_Downlink_Ack_Nack_t *ack_nack, uint32_t fn, struct pcu_l1_meas *meas)
diff --git a/src/pdch_ul_controller.c b/src/pdch_ul_controller.c
index f8089ffb..e7a721c0 100644
--- a/src/pdch_ul_controller.c
+++ b/src/pdch_ul_controller.c
@@ -38,6 +38,15 @@ const struct value_string pdch_ul_node_names[] = {
{ 0, NULL }
};
+const struct value_string pdch_ulc_tbf_poll_reason_names[] = {
+ { PDCH_ULC_POLL_UL_ASS, "UL_ASS" },
+ { PDCH_ULC_POLL_DL_ASS, "DL_ASS" },
+ { PDCH_ULC_POLL_UL_ACK, "UL_ACK" },
+ { PDCH_ULC_POLL_DL_ACK, "DL_ACK" },
+ { PDCH_ULC_POLL_CELL_CHG_CONTINUE, "CELL_CHG_CONTINUE" },
+ { 0, NULL }
+};
+
#define GSM_MAX_FN_THRESH (GSM_MAX_FN >> 1)
/* 0: equal, -1: fn1 BEFORE fn2, 1: fn1 AFTER fn2 */
static inline int fn_cmp(uint32_t fn1, uint32_t fn2)
diff --git a/src/pdch_ul_controller.h b/src/pdch_ul_controller.h
index 776f5ba4..c56945f1 100644
--- a/src/pdch_ul_controller.h
+++ b/src/pdch_ul_controller.h
@@ -59,6 +59,7 @@ enum pdch_ulc_tbf_poll_reason {
PDCH_ULC_POLL_DL_ACK, /* Expect DL ACK/NACK requested by RRBP */
PDCH_ULC_POLL_CELL_CHG_CONTINUE, /* Expect CTRL ACK for Pkt cell Change Continue we transmit */
};
+extern const struct value_string pdch_ulc_tbf_poll_reason_names[];
struct pdch_ulc_node {
struct rb_node node; /*! entry in pdch_ulc->tree_root */