blob: 49f1b2cffdae42b0c12fc6db289c0922f0beeee7 [file] [log] [blame]
Harald Welte97de1702016-12-24 10:19:23 +01001#pragma once
2
Harald Welte1cd1e732016-01-08 23:24:23 +01003#include <stdint.h>
4
5/* LOG_GPRS_RLC_UL_ABNRML_RLS_COUNTS_C */
6struct gprs_rlc_ul_abnrml_rls_counts {
7 uint16_t access_reject_cnt;
8 uint16_t arc_retry_cnt;
9 uint16_t arc_wo_retry_cnt;
10 uint16_t arc_sys_info_cnt;
11} __attribute__ ((packed));
12
13/* LOG_GPRS_RLC_UL_EVENT_COUNTS_C */
14struct gprs_rlc_ul_event_counts {
15 uint16_t llc_event_cnt;
16 uint16_t mac_event_cnt;
17 uint16_t pl1_event_cnt;
18 uint16_t tmr_event_cnt;
19} __attribute__ ((packed));
20
21/* LOG_GPRS_RLC_UL_STATS_C */
22enum gprs_rlc_ul_state {
23 US_NULL,
24 US_AWAIT_ASS,
25 US_ACK_XFER,
26 US_GTTP_XFER, // optional
27 US_UNACK_XFER,
28 US_TEST_MODE,
29 US_AWAIT_RECOVERY,
30};
Vadim Yanitskiyaea8cb82021-11-19 16:58:43 +030031extern struct value_string gprs_rlc_ul_state_vals[];
Harald Welte1cd1e732016-01-08 23:24:23 +010032
33enum gprs_rlc_ul_substate {
34 RALS_NULL,
35 RALS_AWAIT_TX_COMPLETE,
36 RALS_CURRENT_PDU_TX_COMPLETED,
37 RALS_COMPLETE,
38};
Vadim Yanitskiyaea8cb82021-11-19 16:58:43 +030039extern struct value_string gprs_rlc_ul_substate_vals[];
Harald Welte1cd1e732016-01-08 23:24:23 +010040
41enum gprs_rlc_dl_state {
42 DS_NULL,
43 DS_RX_ACK,
44 DS_RX_UNACK,
45 DS_RX_ACK_PENDING_RELEASE,
46 DS_RX_UNACK_PENDING_RELEASE,
47 DS_TEST_MODE,
48};
Vadim Yanitskiyaea8cb82021-11-19 16:58:43 +030049extern struct value_string gprs_rlc_dl_state_vals[];
Harald Welte1cd1e732016-01-08 23:24:23 +010050
Harald Welte280bb052017-01-09 16:00:10 +010051/* LOG_GPRS_RLC_UL_STATS_C */
Harald Welte1cd1e732016-01-08 23:24:23 +010052struct gprs_rlc_ul_stats {
53 uint8_t rlc_ul_state;
54 uint8_t rlc_ul_substate;
55 uint32_t ack_tx_pdu_cnt;
56 uint32_t ack_tx_oct_cnt;
57 uint32_t unack_tx_pdu_cnt;
58 uint32_t unack_tx_oct_cnt;
59 uint16_t coding_sch_changes;
60 uint8_t ul_seq_va;
61 uint8_t ul_seq_vs;
62 uint8_t ul_seq_nseg;
63 uint8_t ul_seq_vsf;
64 uint8_t ul_seq_pack_vsf;
65 uint8_t ul_seq_nack_vsf;
66 int8_t ul_n3102;
67 int8_t ul_n3104;
68 uint32_t ul_gen_p_cnt_a;
69 uint32_t ul_gen_p_cnt_b;
70 uint32_t ul_gen_p_cnt_c;
71} __attribute__ ((packed));
72
73/* LOG_GPRS_RLC_DL_STATS_C */
74struct gprs_rlc_dl_stats {
75 uint8_t rlc_dl_state;
76 uint32_t ack_rx_pdu_cnt;
77 uint32_t ack_rx_oct_cnt;
78 uint32_t unack_rx_pdu_cnt;
79 uint32_t unack_pdu_filled_cnt;
80 uint32_t unack_rx_oct_cnt;
81 uint32_t unack_oct_filled_cnt;
82 uint32_t ack_nack_req_cnt;
83 uint8_t dl_seq_vq;
84 uint8_t dl_seq_vr;
85 uint8_t dl_seq_ssn;
86 uint32_t dl_gen_p_cnt_a;
87 uint32_t dl_gen_p_cnt_b;
88 uint32_t dl_gen_p_cnt_c;
89} __attribute__ ((packed));
90
91/* LOG_GPRS_RLC_UL_ACKNACK_PARAMS_VER2_C */
92struct gprs_rlc_ul_acknack_params_v2 {
93 uint8_t ul_tfi;
Harald Weltefe535442017-01-11 11:22:51 +010094 uint8_t final_ack_ind;
95 uint8_t start_seq_nr;
96 uint8_t coding_scheme;
97 uint8_t countdown_val;
Harald Welte1cd1e732016-01-08 23:24:23 +010098 uint8_t va;
99 uint8_t vs;
Harald Weltefe535442017-01-11 11:22:51 +0100100 uint8_t stall_ind;
101 uint32_t rrb_high32;
102 uint32_t rrb_low32;
Harald Welte1cd1e732016-01-08 23:24:23 +0100103} __attribute__ ((packed));
104
105/* LOG_GPRS_RLC_DL_ACKNACK_PARAMS_VER2_C */
106struct gprs_rlc_dl_acknack_params_v2 {
107 uint8_t dl_tfi;
Harald Weltefe535442017-01-11 11:22:51 +0100108 uint8_t final_ack_ind;
109 uint8_t start_seq_nr;
Harald Welte1cd1e732016-01-08 23:24:23 +0100110 uint8_t vq;
Harald Weltefe535442017-01-11 11:22:51 +0100111 uint32_t rrb_high32;
112 uint32_t rrb_low32;
113 uint8_t coding_scheme;
Harald Welte1cd1e732016-01-08 23:24:23 +0100114} __attribute__ ((packed));
115
116/* LOG_GPRS_RLC_UL_RELEASE_IND_C + LOG_GPRS_RLC_DL_RELEASE_IND_C */
117struct gprs_rlc_release_ind {
118 uint8_t tfi;
119 uint8_t cause;
120} __attribute__ ((packed));
121
122enum gprs_rlc_hdr_type {
123 GPRS_HEADER_TYPE,
124 EGPRS_HEADER_TYPE_1,
125 EGPRS_HEADER_TYPE_2,
126 EGPRS_HEADER_TYPE_3
127};
Vadim Yanitskiyaea8cb82021-11-19 16:58:43 +0300128extern struct value_string gprs_rlc_hdr_type_vals[];
Harald Weltef5d6fee2016-01-13 22:29:10 +0100129
Harald Welte1cd1e732016-01-08 23:24:23 +0100130
131/* LOG_EGPRS_RLC_DL_HEADER_C */
132struct gprs_rlc_dl_header {
133 uint8_t type;
134 uint8_t ul_hdr[5];
135 uint8_t crc_status;
136 uint8_t ts;
137 uint32_t fn;
138 uint8_t dl_payload[6];
139} __attribute__ ((packed));
140
141/* LOG_EGPRS_RLC_UL_HEADER_C */
142struct gprs_rlc_ul_header {
143 uint8_t type;
144 uint8_t ul_hdr[6];
145} __attribute__ ((packed));
Harald Welte280bb052017-01-09 16:00:10 +0100146
147/* LOG_EGPRS_RLC_EPUAN_C */
148struct diag_egprs_rlc_epuan {
149 uint8_t tfi;
150 uint8_t msc;
151 uint8_t final_ack_ind:1,
152 begin_of_window:1,
153 end_of_window:1,
154 resegment_ir_off:1,
155 preemptive_tx:1,
156 starting_color_code:1,
157 _pad:2;
158 uint16_t ssn;
159 uint8_t crrb_num_bits;
160 uint8_t crrb[16];
161 uint8_t urrb_num_bits;
162 uint8_t urrb[20];
163} __attribute__ ((packed));
164
165/* LOG_EGPRS_RLC_EPDAN_C */
166struct diag_egprs_rlc_epdan {
167 uint8_t tfi;
168 uint8_t final_ack_ind:1,
169 begin_of_window:1,
170 end_of_window:1,
171 esp:2,
172 starting_color_code:1,
173 gmsk_valid:1,
174 psk_valid:1;
175 uint16_t ssn;
176 uint8_t crrb_num_bits;
177 uint8_t crrb[16];
178 uint8_t urrb_num_bits;
179 uint8_t urrb[20];
180 uint8_t gmsk_bep;
181 uint8_t psk_bep;
182 uint8_t c_value;
183} __attribute__ ((packed));