aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2017-01-11 11:22:51 +0100
committerHarald Welte <laforge@gnumonks.org>2017-01-11 11:22:51 +0100
commitfe5354444009f81b851c39cf12cf8acaecce81fb (patch)
tree84768ebebbe3a6272a7f4d9690ac1017bc7898a2
parent7b113a2d33c5a7bcd53f83f8df73b6a579bee56f (diff)
gprs: handle RLC uplink/downlink ack/nack params
-rw-r--r--src/diag_log_gprs.c21
-rw-r--r--src/protocol/diag_log_gprs_rlc.h24
2 files changed, 33 insertions, 12 deletions
diff --git a/src/diag_log_gprs.c b/src/diag_log_gprs.c
index f5cfd25..0db543e 100644
--- a/src/diag_log_gprs.c
+++ b/src/diag_log_gprs.c
@@ -212,6 +212,25 @@ static void handle_gmm_ota_msg(struct log_hdr *lh, struct msgb *msg)
printf("GMM-OTA-MESSAGE { FIXME }\n");
}
+static void handle_ul_acknack_v2(struct log_hdr *lh, struct msgb *msg)
+{
+ struct gprs_rlc_ul_acknack_params_v2 *ula;
+ ula = (struct gprs_rlc_ul_acknack_params_v2 *) msgb_data(msg);
+
+ printf("RLC-UL-ACKNACK-V2 { tfi=%u, final_ack_ind=%u, start_seq_nr=%u, cs=%u, countdown_val=%u, va=%u, vs=%u, stall_ind=%u, rrb=%08x%08x }\n",
+ ula->ul_tfi, ula->final_ack_ind, ula->start_seq_nr, ula->coding_scheme, ula->countdown_val, ula->va, ula->vs,
+ ula->stall_ind, ula->rrb_high32, ula->rrb_low32);
+}
+
+static void handle_dl_acknack_v2(struct log_hdr *lh, struct msgb *msg)
+{
+ struct gprs_rlc_dl_acknack_params_v2 *dla;
+ dla = (struct gprs_rlc_dl_acknack_params_v2 *) msgb_data(msg);
+
+ printf("RLC-DL-ACKNACK-V2 { tfi=%u, final_ack_ind=%u, start_seq_nr=%u, vq=%u, cs=%u, rrb=%08x%08x }\n",
+ dla->dl_tfi, dla->final_ack_ind, dla->start_seq_nr, dla->vq, dla->coding_scheme, dla->rrb_high32, dla->rrb_low32);
+}
+
static const struct diag_log_dispatch_tbl log_tbl[] = {
/* LLC */
{ GSM(LOG_GPRS_LLC_ME_INFO_C), handle_llc_me_info }, /* requested? */
@@ -226,6 +245,8 @@ static const struct diag_log_dispatch_tbl log_tbl[] = {
{ GSM(LOG_GPRS_RLC_DL_RELEASE_IND_C), handle_rlc_rel },
{ GSM(LOG_GPRS_RLC_UL_STATS_C), handle_rlc_ul_stats },
{ GSM(LOG_GPRS_RLC_DL_STATS_C), handle_rlc_dl_stats },
+ { GSM(LOG_GPRS_RLC_UL_ACKNACK_PARAMS_VER2_C), handle_ul_acknack_v2 },
+ { GSM(LOG_GPRS_RLC_DL_ACKNACK_PARAMS_VER2_C), handle_dl_acknack_v2 },
/* MAC */
{ GSM(LOG_GPRS_MAC_STATE_C), handle_mac_state },
{ GSM(LOG_GPRS_MAC_SIGNALLING_MESSAGE_C), handle_mac_sign_msg },
diff --git a/src/protocol/diag_log_gprs_rlc.h b/src/protocol/diag_log_gprs_rlc.h
index 2aab20b..f59c662 100644
--- a/src/protocol/diag_log_gprs_rlc.h
+++ b/src/protocol/diag_log_gprs_rlc.h
@@ -91,26 +91,26 @@ struct gprs_rlc_dl_stats {
/* LOG_GPRS_RLC_UL_ACKNACK_PARAMS_VER2_C */
struct gprs_rlc_ul_acknack_params_v2 {
uint8_t ul_tfi;
- uint8_t fai;
- uint8_t ssn;
- uint8_t cs;
- uint8_t cv;
+ uint8_t final_ack_ind;
+ uint8_t start_seq_nr;
+ uint8_t coding_scheme;
+ uint8_t countdown_val;
uint8_t va;
uint8_t vs;
- uint8_t si;
- uint32_t hu32;
- uint32_t lu32;
+ uint8_t stall_ind;
+ uint32_t rrb_high32;
+ uint32_t rrb_low32;
} __attribute__ ((packed));
/* LOG_GPRS_RLC_DL_ACKNACK_PARAMS_VER2_C */
struct gprs_rlc_dl_acknack_params_v2 {
uint8_t dl_tfi;
- uint8_t fai;
- uint8_t ssn;
+ uint8_t final_ack_ind;
+ uint8_t start_seq_nr;
uint8_t vq;
- uint32_t hu32;
- uint32_t lu32;
- uint8_t cs;
+ uint32_t rrb_high32;
+ uint32_t rrb_low32;
+ uint8_t coding_scheme;
} __attribute__ ((packed));
/* LOG_GPRS_RLC_UL_RELEASE_IND_C + LOG_GPRS_RLC_DL_RELEASE_IND_C */