blob: d2d4158c233b4b894d8d7d378ea544acc3a3b90a [file] [log] [blame]
Amir Levy664bda32017-02-15 18:21:25 +02001/* Copyright (c) 2013-2017, The Linux Foundation. All rights reserved.
Amir Levy9659e592016-10-27 18:08:27 +03002 *
3 * This program is free software; you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License version 2 and
5 * only version 2 as published by the Free Software Foundation.
6 *
7 * This program is distributed in the hope that it will be useful,
8 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 * GNU General Public License for more details.
11 *
12 */
13
14#include <linux/qmi_encdec.h>
15#include <linux/ipa_qmi_service_v01.h>
16
17#include <soc/qcom/msm_qmi_interface.h>
18
19/* Type Definitions */
20static struct elem_info ipa3_hdr_tbl_info_type_data_v01_ei[] = {
21 {
22 .data_type = QMI_UNSIGNED_4_BYTE,
23 .elem_len = 1,
24 .elem_size = sizeof(uint32_t),
25 .is_array = NO_ARRAY,
26 .tlv_type = QMI_COMMON_TLV_TYPE,
27 .offset = offsetof(struct ipa_hdr_tbl_info_type_v01,
28 modem_offset_start),
29 },
30 {
31 .data_type = QMI_UNSIGNED_4_BYTE,
32 .elem_len = 1,
33 .elem_size = sizeof(uint32_t),
34 .is_array = NO_ARRAY,
35 .tlv_type = QMI_COMMON_TLV_TYPE,
36 .offset = offsetof(struct ipa_hdr_tbl_info_type_v01,
37 modem_offset_end),
38 },
39 {
40 .data_type = QMI_EOTI,
41 .is_array = NO_ARRAY,
42 .tlv_type = QMI_COMMON_TLV_TYPE,
43 },
44};
45
46static struct elem_info ipa3_route_tbl_info_type_data_v01_ei[] = {
47 {
48 .data_type = QMI_UNSIGNED_4_BYTE,
49 .elem_len = 1,
50 .elem_size = sizeof(uint32_t),
51 .is_array = NO_ARRAY,
52 .tlv_type = QMI_COMMON_TLV_TYPE,
53 .offset = offsetof(struct ipa_route_tbl_info_type_v01,
54 route_tbl_start_addr),
55 },
56 {
57 .data_type = QMI_UNSIGNED_4_BYTE,
58 .elem_len = 1,
59 .elem_size = sizeof(uint32_t),
60 .is_array = NO_ARRAY,
61 .tlv_type = QMI_COMMON_TLV_TYPE,
62 .offset = offsetof(struct ipa_route_tbl_info_type_v01,
63 num_indices),
64 },
65 {
66 .data_type = QMI_EOTI,
67 .is_array = NO_ARRAY,
68 .tlv_type = QMI_COMMON_TLV_TYPE,
69 },
70};
71
72static struct elem_info ipa3_modem_mem_info_type_data_v01_ei[] = {
73 {
74 .data_type = QMI_UNSIGNED_4_BYTE,
75 .elem_len = 1,
76 .elem_size = sizeof(uint32_t),
77 .is_array = NO_ARRAY,
78 .tlv_type = QMI_COMMON_TLV_TYPE,
79 .offset = offsetof(struct ipa_modem_mem_info_type_v01,
80 block_start_addr),
81 },
82 {
83 .data_type = QMI_UNSIGNED_4_BYTE,
84 .elem_len = 1,
85 .elem_size = sizeof(uint32_t),
86 .is_array = NO_ARRAY,
87 .tlv_type = QMI_COMMON_TLV_TYPE,
88 .offset = offsetof(struct ipa_modem_mem_info_type_v01,
89 size),
90 },
91 {
92 .data_type = QMI_EOTI,
93 .is_array = NO_ARRAY,
94 .tlv_type = QMI_COMMON_TLV_TYPE,
95 },
96};
97
98static struct elem_info ipa3_hdr_proc_ctx_tbl_info_type_data_v01_ei[] = {
99 {
100 .data_type = QMI_UNSIGNED_4_BYTE,
101 .elem_len = 1,
102 .elem_size = sizeof(uint32_t),
103 .is_array = NO_ARRAY,
104 .tlv_type = QMI_COMMON_TLV_TYPE,
105 .offset = offsetof(
106 struct ipa_hdr_proc_ctx_tbl_info_type_v01,
107 modem_offset_start),
108 },
109 {
110 .data_type = QMI_UNSIGNED_4_BYTE,
111 .elem_len = 1,
112 .elem_size = sizeof(uint32_t),
113 .is_array = NO_ARRAY,
114 .tlv_type = QMI_COMMON_TLV_TYPE,
115 .offset = offsetof(
116 struct ipa_hdr_proc_ctx_tbl_info_type_v01,
117 modem_offset_end),
118 },
119 {
120 .data_type = QMI_EOTI,
121 .is_array = NO_ARRAY,
122 .tlv_type = QMI_COMMON_TLV_TYPE,
123 },
124};
125
126static struct elem_info ipa3_zip_tbl_info_type_data_v01_ei[] = {
127 {
128 .data_type = QMI_UNSIGNED_4_BYTE,
129 .elem_len = 1,
130 .elem_size = sizeof(uint32_t),
131 .is_array = NO_ARRAY,
132 .tlv_type = QMI_COMMON_TLV_TYPE,
133 .offset = offsetof(struct ipa_zip_tbl_info_type_v01,
134 modem_offset_start),
135 },
136 {
137 .data_type = QMI_UNSIGNED_4_BYTE,
138 .elem_len = 1,
139 .elem_size = sizeof(uint32_t),
140 .is_array = NO_ARRAY,
141 .tlv_type = QMI_COMMON_TLV_TYPE,
142 .offset = offsetof(struct ipa_zip_tbl_info_type_v01,
143 modem_offset_end),
144 },
145 {
146 .data_type = QMI_EOTI,
147 .is_array = NO_ARRAY,
148 .tlv_type = QMI_COMMON_TLV_TYPE,
149 },
150};
151
152static struct elem_info ipa3_ipfltr_range_eq_16_type_data_v01_ei[] = {
153 {
154 .data_type = QMI_UNSIGNED_1_BYTE,
155 .elem_len = 1,
156 .elem_size = sizeof(uint8_t),
157 .is_array = NO_ARRAY,
158 .tlv_type = QMI_COMMON_TLV_TYPE,
159 .offset = offsetof(
160 struct ipa_ipfltr_range_eq_16_type_v01,
161 offset),
162 },
163 {
164 .data_type = QMI_UNSIGNED_2_BYTE,
165 .elem_len = 1,
166 .elem_size = sizeof(uint16_t),
167 .is_array = NO_ARRAY,
168 .tlv_type = QMI_COMMON_TLV_TYPE,
169 .offset = offsetof(
170 struct ipa_ipfltr_range_eq_16_type_v01,
171 range_low),
172 },
173 {
174 .data_type = QMI_UNSIGNED_2_BYTE,
175 .elem_len = 1,
176 .elem_size = sizeof(uint16_t),
177 .is_array = NO_ARRAY,
178 .tlv_type = QMI_COMMON_TLV_TYPE,
179 .offset = offsetof(
180 struct ipa_ipfltr_range_eq_16_type_v01,
181 range_high),
182 },
183 {
184 .data_type = QMI_EOTI,
185 .is_array = NO_ARRAY,
186 .tlv_type = QMI_COMMON_TLV_TYPE,
187 },
188};
189
190static struct elem_info ipa3_ipfltr_mask_eq_32_type_data_v01_ei[] = {
191 {
192 .data_type = QMI_UNSIGNED_1_BYTE,
193 .elem_len = 1,
194 .elem_size = sizeof(uint8_t),
195 .is_array = NO_ARRAY,
196 .tlv_type = QMI_COMMON_TLV_TYPE,
197 .offset = offsetof(
198 struct ipa_ipfltr_mask_eq_32_type_v01,
199 offset),
200 },
201 {
202 .data_type = QMI_UNSIGNED_4_BYTE,
203 .elem_len = 1,
204 .elem_size = sizeof(uint32_t),
205 .is_array = NO_ARRAY,
206 .tlv_type = QMI_COMMON_TLV_TYPE,
207 .offset = offsetof(
208 struct ipa_ipfltr_mask_eq_32_type_v01,
209 mask),
210 },
211 {
212 .data_type = QMI_UNSIGNED_4_BYTE,
213 .elem_len = 1,
214 .elem_size = sizeof(uint32_t),
215 .is_array = NO_ARRAY,
216 .tlv_type = QMI_COMMON_TLV_TYPE,
217 .offset = offsetof(
218 struct ipa_ipfltr_mask_eq_32_type_v01,
219 value),
220 },
221 {
222 .data_type = QMI_EOTI,
223 .is_array = NO_ARRAY,
224 .tlv_type = QMI_COMMON_TLV_TYPE,
225 },
226};
227
228static struct elem_info ipa3_ipfltr_eq_16_type_data_v01_ei[] = {
229 {
230 .data_type = QMI_UNSIGNED_1_BYTE,
231 .elem_len = 1,
232 .elem_size = sizeof(uint8_t),
233 .is_array = NO_ARRAY,
234 .tlv_type = QMI_COMMON_TLV_TYPE,
235 .offset = offsetof(
236 struct ipa_ipfltr_eq_16_type_v01,
237 offset),
238 },
239 {
240 .data_type = QMI_UNSIGNED_2_BYTE,
241 .elem_len = 1,
242 .elem_size = sizeof(uint16_t),
243 .is_array = NO_ARRAY,
244 .tlv_type = QMI_COMMON_TLV_TYPE,
245 .offset = offsetof(struct ipa_ipfltr_eq_16_type_v01,
246 value),
247 },
248 {
249 .data_type = QMI_EOTI,
250 .is_array = NO_ARRAY,
251 .tlv_type = QMI_COMMON_TLV_TYPE,
252 },
253};
254
255static struct elem_info ipa3_ipfltr_eq_32_type_data_v01_ei[] = {
256 {
257 .data_type = QMI_UNSIGNED_1_BYTE,
258 .elem_len = 1,
259 .elem_size = sizeof(uint8_t),
260 .is_array = NO_ARRAY,
261 .tlv_type = QMI_COMMON_TLV_TYPE,
262 .offset = offsetof(struct ipa_ipfltr_eq_32_type_v01,
263 offset),
264 },
265 {
266 .data_type = QMI_UNSIGNED_4_BYTE,
267 .elem_len = 1,
268 .elem_size = sizeof(uint32_t),
269 .is_array = NO_ARRAY,
270 .tlv_type = QMI_COMMON_TLV_TYPE,
271 .offset = offsetof(struct ipa_ipfltr_eq_32_type_v01,
272 value),
273 },
274 {
275 .data_type = QMI_EOTI,
276 .is_array = NO_ARRAY,
277 .tlv_type = QMI_COMMON_TLV_TYPE,
278 },
279};
280
281static struct elem_info ipa3_ipfltr_mask_eq_128_type_data_v01_ei[] = {
282 {
283 .data_type = QMI_UNSIGNED_1_BYTE,
284 .elem_len = 1,
285 .elem_size = sizeof(uint8_t),
286 .is_array = NO_ARRAY,
287 .tlv_type = QMI_COMMON_TLV_TYPE,
288 .offset = offsetof(
289 struct ipa_ipfltr_mask_eq_128_type_v01,
290 offset),
291 },
292 {
293 .data_type = QMI_UNSIGNED_1_BYTE,
294 .elem_len = 16,
295 .elem_size = sizeof(uint8_t),
296 .is_array = STATIC_ARRAY,
297 .tlv_type = QMI_COMMON_TLV_TYPE,
298 .offset = offsetof(
299 struct ipa_ipfltr_mask_eq_128_type_v01,
300 mask),
301 },
302 {
303 .data_type = QMI_UNSIGNED_1_BYTE,
304 .elem_len = 16,
305 .elem_size = sizeof(uint8_t),
306 .is_array = STATIC_ARRAY,
307 .tlv_type = QMI_COMMON_TLV_TYPE,
308 .offset = offsetof(
309 struct ipa_ipfltr_mask_eq_128_type_v01,
310 value),
311 },
312 {
313 .data_type = QMI_EOTI,
314 .is_array = NO_ARRAY,
315 .tlv_type = QMI_COMMON_TLV_TYPE,
316 },
317};
318
319static struct elem_info ipa3_filter_rule_type_data_v01_ei[] = {
320 {
321 .data_type = QMI_UNSIGNED_2_BYTE,
322 .elem_len = 1,
323 .elem_size = sizeof(uint16_t),
324 .is_array = NO_ARRAY,
325 .tlv_type = QMI_COMMON_TLV_TYPE,
326 .offset = offsetof(
327 struct ipa_filter_rule_type_v01,
328 rule_eq_bitmap),
329 },
330 {
331 .data_type = QMI_UNSIGNED_1_BYTE,
332 .elem_len = 1,
333 .elem_size = sizeof(uint8_t),
334 .is_array = NO_ARRAY,
335 .tlv_type = QMI_COMMON_TLV_TYPE,
336 .offset = offsetof(
337 struct ipa_filter_rule_type_v01,
338 tos_eq_present),
339 },
340 {
341 .data_type = QMI_UNSIGNED_1_BYTE,
342 .elem_len = 1,
343 .elem_size = sizeof(uint8_t),
344 .is_array = NO_ARRAY,
345 .tlv_type = QMI_COMMON_TLV_TYPE,
346 .offset = offsetof(struct ipa_filter_rule_type_v01,
347 tos_eq),
348 },
349 {
350 .data_type = QMI_UNSIGNED_1_BYTE,
351 .elem_len = 1,
352 .elem_size = sizeof(uint8_t),
353 .is_array = NO_ARRAY,
354 .tlv_type = QMI_COMMON_TLV_TYPE,
355 .offset = offsetof(struct ipa_filter_rule_type_v01,
356 protocol_eq_present),
357 },
358 {
359 .data_type = QMI_UNSIGNED_1_BYTE,
360 .elem_len = 1,
361 .elem_size = sizeof(uint8_t),
362 .is_array = NO_ARRAY,
363 .tlv_type = QMI_COMMON_TLV_TYPE,
364 .offset = offsetof(struct ipa_filter_rule_type_v01,
365 protocol_eq),
366 },
367 {
368 .data_type = QMI_UNSIGNED_1_BYTE,
369 .elem_len = 1,
370 .elem_size = sizeof(uint8_t),
371 .is_array = NO_ARRAY,
372 .tlv_type = QMI_COMMON_TLV_TYPE,
373 .offset = offsetof(struct ipa_filter_rule_type_v01,
374 num_ihl_offset_range_16),
375 },
376 {
377 .data_type = QMI_STRUCT,
378 .elem_len = QMI_IPA_IPFLTR_NUM_IHL_RANGE_16_EQNS_V01,
379 .elem_size = sizeof(
380 struct ipa_ipfltr_range_eq_16_type_v01),
381 .is_array = STATIC_ARRAY,
382 .tlv_type = QMI_COMMON_TLV_TYPE,
383 .offset = offsetof(struct ipa_filter_rule_type_v01,
384 ihl_offset_range_16),
385 .ei_array = ipa3_ipfltr_range_eq_16_type_data_v01_ei,
386 },
387 {
388 .data_type = QMI_UNSIGNED_1_BYTE,
389 .elem_len = 1,
390 .elem_size = sizeof(uint8_t),
391 .is_array = NO_ARRAY,
392 .tlv_type = QMI_COMMON_TLV_TYPE,
393 .offset = offsetof(struct ipa_filter_rule_type_v01,
394 num_offset_meq_32),
395 },
396 {
397 .data_type = QMI_STRUCT,
398 .elem_len = QMI_IPA_IPFLTR_NUM_MEQ_32_EQNS_V01,
399 .elem_size = sizeof(struct ipa_ipfltr_mask_eq_32_type_v01),
400 .is_array = STATIC_ARRAY,
401 .tlv_type = QMI_COMMON_TLV_TYPE,
402 .offset = offsetof(struct ipa_filter_rule_type_v01,
403 offset_meq_32),
404 .ei_array = ipa3_ipfltr_mask_eq_32_type_data_v01_ei,
405 },
406 {
407 .data_type = QMI_UNSIGNED_1_BYTE,
408 .elem_len = 1,
409 .elem_size = sizeof(uint8_t),
410 .is_array = NO_ARRAY,
411 .tlv_type = QMI_COMMON_TLV_TYPE,
412 .offset = offsetof(struct ipa_filter_rule_type_v01,
413 tc_eq_present),
414 },
415 {
416 .data_type = QMI_UNSIGNED_1_BYTE,
417 .elem_len = 1,
418 .elem_size = sizeof(uint8_t),
419 .is_array = NO_ARRAY,
420 .tlv_type = QMI_COMMON_TLV_TYPE,
421 .offset = offsetof(struct ipa_filter_rule_type_v01,
422 tc_eq),
423 },
424 {
425 .data_type = QMI_UNSIGNED_1_BYTE,
426 .elem_len = 1,
427 .elem_size = sizeof(uint8_t),
428 .is_array = NO_ARRAY,
429 .tlv_type = QMI_COMMON_TLV_TYPE,
430 .offset = offsetof(struct ipa_filter_rule_type_v01,
431 flow_eq_present),
432 },
433 {
434 .data_type = QMI_UNSIGNED_4_BYTE,
435 .elem_len = 1,
436 .elem_size = sizeof(uint32_t),
437 .is_array = NO_ARRAY,
438 .tlv_type = QMI_COMMON_TLV_TYPE,
439 .offset = offsetof(struct ipa_filter_rule_type_v01,
440 flow_eq),
441 },
442 {
443 .data_type = QMI_UNSIGNED_1_BYTE,
444 .elem_len = 1,
445 .elem_size = sizeof(uint8_t),
446 .is_array = NO_ARRAY,
447 .tlv_type = QMI_COMMON_TLV_TYPE,
448 .offset = offsetof(struct ipa_filter_rule_type_v01,
449 ihl_offset_eq_16_present),
450 },
451 {
452 .data_type = QMI_STRUCT,
453 .elem_len = 1,
454 .elem_size = sizeof(struct ipa_ipfltr_eq_16_type_v01),
455 .is_array = NO_ARRAY,
456 .tlv_type = QMI_COMMON_TLV_TYPE,
457 .offset = offsetof(struct ipa_filter_rule_type_v01,
458 ihl_offset_eq_16),
459 .ei_array = ipa3_ipfltr_eq_16_type_data_v01_ei,
460 },
461 {
462 .data_type = QMI_UNSIGNED_1_BYTE,
463 .elem_len = 1,
464 .elem_size = sizeof(uint8_t),
465 .is_array = NO_ARRAY,
466 .tlv_type = QMI_COMMON_TLV_TYPE,
467 .offset = offsetof(struct ipa_filter_rule_type_v01,
468 ihl_offset_eq_32_present),
469 },
470 {
471 .data_type = QMI_STRUCT,
472 .elem_len = 1,
473 .elem_size = sizeof(struct ipa_ipfltr_eq_32_type_v01),
474 .is_array = NO_ARRAY,
475 .tlv_type = QMI_COMMON_TLV_TYPE,
476 .offset = offsetof(struct ipa_filter_rule_type_v01,
477 ihl_offset_eq_32),
478 .ei_array = ipa3_ipfltr_eq_32_type_data_v01_ei,
479 },
480 {
481 .data_type = QMI_UNSIGNED_1_BYTE,
482 .elem_len = 1,
483 .elem_size = sizeof(uint8_t),
484 .is_array = NO_ARRAY,
485 .tlv_type = QMI_COMMON_TLV_TYPE,
486 .offset = offsetof(struct ipa_filter_rule_type_v01,
487 num_ihl_offset_meq_32),
488 },
489 {
490 .data_type = QMI_STRUCT,
491 .elem_len = QMI_IPA_IPFLTR_NUM_IHL_MEQ_32_EQNS_V01,
492 .elem_size = sizeof(struct ipa_ipfltr_mask_eq_32_type_v01),
493 .is_array = STATIC_ARRAY,
494 .tlv_type = QMI_COMMON_TLV_TYPE,
495 .offset = offsetof(struct ipa_filter_rule_type_v01,
496 ihl_offset_meq_32),
497 .ei_array = ipa3_ipfltr_mask_eq_32_type_data_v01_ei,
498 },
499 {
500 .data_type = QMI_UNSIGNED_1_BYTE,
501 .elem_len = 1,
502 .elem_size = sizeof(uint8_t),
503 .is_array = NO_ARRAY,
504 .tlv_type = QMI_COMMON_TLV_TYPE,
505 .offset = offsetof(struct ipa_filter_rule_type_v01,
506 num_offset_meq_128),
507 },
508 {
509 .data_type = QMI_STRUCT,
510 .elem_len =
511 QMI_IPA_IPFLTR_NUM_MEQ_128_EQNS_V01,
512 .elem_size = sizeof(
513 struct ipa_ipfltr_mask_eq_128_type_v01),
514 .is_array = STATIC_ARRAY,
515 .tlv_type = QMI_COMMON_TLV_TYPE,
516 .offset = offsetof(
517 struct ipa_filter_rule_type_v01,
518 offset_meq_128),
519 .ei_array = ipa3_ipfltr_mask_eq_128_type_data_v01_ei,
520 },
521 {
522 .data_type = QMI_UNSIGNED_1_BYTE,
523 .elem_len = 1,
524 .elem_size = sizeof(uint8_t),
525 .is_array = NO_ARRAY,
526 .tlv_type = QMI_COMMON_TLV_TYPE,
527 .offset = offsetof(struct ipa_filter_rule_type_v01,
528 metadata_meq32_present),
529 },
530 {
531 .data_type = QMI_STRUCT,
532 .elem_len = 1,
533 .elem_size = sizeof(struct ipa_ipfltr_mask_eq_32_type_v01),
534 .is_array = NO_ARRAY,
535 .tlv_type = QMI_COMMON_TLV_TYPE,
536 .offset = offsetof(struct ipa_filter_rule_type_v01,
537 metadata_meq32),
538 .ei_array = ipa3_ipfltr_mask_eq_32_type_data_v01_ei,
539 },
540 {
541 .data_type = QMI_UNSIGNED_1_BYTE,
542 .elem_len = 1,
543 .elem_size = sizeof(uint8_t),
544 .is_array = NO_ARRAY,
545 .tlv_type = QMI_COMMON_TLV_TYPE,
546 .offset = offsetof(struct ipa_filter_rule_type_v01,
547 ipv4_frag_eq_present),
548 },
549 {
550 .data_type = QMI_EOTI,
551 .is_array = NO_ARRAY,
552 .tlv_type = QMI_COMMON_TLV_TYPE,
553 },
554};
555
556static struct elem_info ipa_filter_spec_type_data_v01_ei[] = {
557 {
558 .data_type = QMI_UNSIGNED_4_BYTE,
559 .elem_len = 1,
560 .elem_size = sizeof(uint32_t),
561 .is_array = NO_ARRAY,
562 .tlv_type = QMI_COMMON_TLV_TYPE,
563 .offset = offsetof(struct ipa_filter_spec_type_v01,
564 filter_spec_identifier),
565 },
566 {
567 .data_type = QMI_SIGNED_4_BYTE_ENUM,
568 .elem_len = 1,
569 .elem_size = sizeof(uint32_t),
570 .is_array = NO_ARRAY,
571 .tlv_type = QMI_COMMON_TLV_TYPE,
572 .offset = offsetof(struct ipa_filter_spec_type_v01,
573 ip_type),
574 },
575 {
576 .data_type = QMI_STRUCT,
577 .elem_len = 1,
578 .elem_size = sizeof(struct ipa_filter_rule_type_v01),
579 .is_array = NO_ARRAY,
580 .tlv_type = QMI_COMMON_TLV_TYPE,
581 .offset = offsetof(struct ipa_filter_spec_type_v01,
582 filter_rule),
583 .ei_array = ipa3_filter_rule_type_data_v01_ei,
584 },
585 {
586 .data_type = QMI_SIGNED_4_BYTE_ENUM,
587 .elem_len = 1,
588 .elem_size = sizeof(uint32_t),
589 .is_array = NO_ARRAY,
590 .tlv_type = QMI_COMMON_TLV_TYPE,
591 .offset = offsetof(struct ipa_filter_spec_type_v01,
592 filter_action),
593 },
594 {
595 .data_type = QMI_UNSIGNED_1_BYTE,
596 .elem_len = 1,
597 .elem_size = sizeof(uint8_t),
598 .is_array = NO_ARRAY,
599 .tlv_type = QMI_COMMON_TLV_TYPE,
600 .offset = offsetof(struct ipa_filter_spec_type_v01,
601 is_routing_table_index_valid),
602 },
603 {
604 .data_type = QMI_UNSIGNED_4_BYTE,
605 .elem_len = 1,
606 .elem_size = sizeof(uint32_t),
607 .is_array = NO_ARRAY,
608 .tlv_type = QMI_COMMON_TLV_TYPE,
609 .offset = offsetof(struct ipa_filter_spec_type_v01,
610 route_table_index),
611 },
612 {
613 .data_type = QMI_UNSIGNED_1_BYTE,
614 .elem_len = 1,
615 .elem_size = sizeof(uint8_t),
616 .is_array = NO_ARRAY,
617 .tlv_type = QMI_COMMON_TLV_TYPE,
618 .offset = offsetof(struct ipa_filter_spec_type_v01,
619 is_mux_id_valid),
620 },
621 {
622 .data_type = QMI_UNSIGNED_4_BYTE,
623 .elem_len = 1,
624 .elem_size = sizeof(uint32_t),
625 .is_array = NO_ARRAY,
626 .tlv_type = QMI_COMMON_TLV_TYPE,
627 .offset = offsetof(struct ipa_filter_spec_type_v01,
628 mux_id),
629 },
630 {
631 .data_type = QMI_EOTI,
632 .is_array = NO_ARRAY,
633 .tlv_type = QMI_COMMON_TLV_TYPE,
634 },
635};
636
637static struct elem_info ipa_filter_spec_ex_type_data_v01_ei[] = {
638 {
639 .data_type = QMI_SIGNED_4_BYTE_ENUM,
640 .elem_len = 1,
641 .elem_size = sizeof(uint32_t),
642 .is_array = NO_ARRAY,
643 .tlv_type = QMI_COMMON_TLV_TYPE,
644 .offset = offsetof(struct ipa_filter_spec_ex_type_v01,
645 ip_type),
646 },
647 {
648 .data_type = QMI_STRUCT,
649 .elem_len = 1,
650 .elem_size = sizeof(struct ipa_filter_rule_type_v01),
651 .is_array = NO_ARRAY,
652 .tlv_type = QMI_COMMON_TLV_TYPE,
653 .offset = offsetof(struct ipa_filter_spec_ex_type_v01,
654 filter_rule),
655 .ei_array = ipa3_filter_rule_type_data_v01_ei,
656 },
657 {
658 .data_type = QMI_SIGNED_4_BYTE_ENUM,
659 .elem_len = 1,
660 .elem_size = sizeof(uint32_t),
661 .is_array = NO_ARRAY,
662 .tlv_type = QMI_COMMON_TLV_TYPE,
663 .offset = offsetof(struct ipa_filter_spec_ex_type_v01,
664 filter_action),
665 },
666 {
667 .data_type = QMI_UNSIGNED_1_BYTE,
668 .elem_len = 1,
669 .elem_size = sizeof(uint8_t),
670 .is_array = NO_ARRAY,
671 .tlv_type = QMI_COMMON_TLV_TYPE,
672 .offset = offsetof(struct ipa_filter_spec_ex_type_v01,
673 is_routing_table_index_valid),
674 },
675 {
676 .data_type = QMI_UNSIGNED_4_BYTE,
677 .elem_len = 1,
678 .elem_size = sizeof(uint32_t),
679 .is_array = NO_ARRAY,
680 .tlv_type = QMI_COMMON_TLV_TYPE,
681 .offset = offsetof(struct ipa_filter_spec_ex_type_v01,
682 route_table_index),
683 },
684 {
685 .data_type = QMI_UNSIGNED_1_BYTE,
686 .elem_len = 1,
687 .elem_size = sizeof(uint8_t),
688 .is_array = NO_ARRAY,
689 .tlv_type = QMI_COMMON_TLV_TYPE,
690 .offset = offsetof(struct ipa_filter_spec_ex_type_v01,
691 is_mux_id_valid),
692 },
693 {
694 .data_type = QMI_UNSIGNED_4_BYTE,
695 .elem_len = 1,
696 .elem_size = sizeof(uint32_t),
697 .is_array = NO_ARRAY,
698 .tlv_type = QMI_COMMON_TLV_TYPE,
699 .offset = offsetof(struct ipa_filter_spec_ex_type_v01,
700 mux_id),
701 },
702 {
703 .data_type = QMI_UNSIGNED_4_BYTE,
704 .elem_len = 1,
705 .elem_size = sizeof(uint32_t),
706 .is_array = NO_ARRAY,
707 .tlv_type = QMI_COMMON_TLV_TYPE,
708 .offset = offsetof(struct ipa_filter_spec_ex_type_v01,
709 rule_id),
710 },
711 {
712 .data_type = QMI_UNSIGNED_1_BYTE,
713 .elem_len = 1,
714 .elem_size = sizeof(uint8_t),
715 .is_array = NO_ARRAY,
716 .tlv_type = QMI_COMMON_TLV_TYPE,
717 .offset = offsetof(struct ipa_filter_spec_ex_type_v01,
718 is_rule_hashable),
719 },
720 {
721 .data_type = QMI_EOTI,
722 .is_array = NO_ARRAY,
723 .tlv_type = QMI_COMMON_TLV_TYPE,
724 },
725};
726
727static struct
728elem_info ipa3_filter_rule_identifier_to_handle_map_data_v01_ei[] = {
729 {
730 .data_type = QMI_UNSIGNED_4_BYTE,
731 .elem_len = 1,
732 .elem_size = sizeof(uint32_t),
733 .is_array = NO_ARRAY,
734 .tlv_type = QMI_COMMON_TLV_TYPE,
735 .offset = offsetof(
736 struct ipa_filter_rule_identifier_to_handle_map_v01,
737 filter_spec_identifier),
738 },
739 {
740 .data_type = QMI_UNSIGNED_4_BYTE,
741 .elem_len = 1,
742 .elem_size = sizeof(uint32_t),
743 .is_array = NO_ARRAY,
744 .tlv_type = QMI_COMMON_TLV_TYPE,
745 .offset = offsetof(
746 struct ipa_filter_rule_identifier_to_handle_map_v01,
747 filter_handle),
748 },
749 {
750 .data_type = QMI_EOTI,
751 .is_array = NO_ARRAY,
752 .tlv_type = QMI_COMMON_TLV_TYPE,
753 },
754};
755
756static struct elem_info ipa3_filter_handle_to_index_map_data_v01_ei[] = {
757 {
758 .data_type = QMI_UNSIGNED_4_BYTE,
759 .elem_len = 1,
760 .elem_size = sizeof(uint32_t),
761 .is_array = NO_ARRAY,
762 .tlv_type = QMI_COMMON_TLV_TYPE,
763 .offset = offsetof(
764 struct ipa_filter_handle_to_index_map_v01,
765 filter_handle),
766 },
767 {
768 .data_type = QMI_UNSIGNED_4_BYTE,
769 .elem_len = 1,
770 .elem_size = sizeof(uint32_t),
771 .is_array = NO_ARRAY,
772 .tlv_type = QMI_COMMON_TLV_TYPE,
773 .offset = offsetof(
774 struct ipa_filter_handle_to_index_map_v01,
775 filter_index),
776 },
777 {
778 .data_type = QMI_EOTI,
779 .is_array = NO_ARRAY,
780 .tlv_type = QMI_COMMON_TLV_TYPE,
781 },
782};
783
784struct elem_info ipa3_init_modem_driver_req_msg_data_v01_ei[] = {
785 {
786 .data_type = QMI_OPT_FLAG,
787 .elem_len = 1,
788 .elem_size = sizeof(uint8_t),
789 .is_array = NO_ARRAY,
790 .tlv_type = 0x10,
791 .offset = offsetof(
792 struct ipa_init_modem_driver_req_msg_v01,
793 platform_type_valid),
794 },
795 {
796 .data_type = QMI_SIGNED_4_BYTE_ENUM,
797 .elem_len = 1,
798 .elem_size = sizeof(uint32_t),
799 .is_array = NO_ARRAY,
800 .tlv_type = 0x10,
801 .offset = offsetof(
802 struct ipa_init_modem_driver_req_msg_v01,
803 platform_type),
804 },
805 {
806 .data_type = QMI_OPT_FLAG,
807 .elem_len = 1,
808 .elem_size = sizeof(uint8_t),
809 .is_array = NO_ARRAY,
810 .tlv_type = 0x11,
811 .offset = offsetof(
812 struct ipa_init_modem_driver_req_msg_v01,
813 hdr_tbl_info_valid),
814 },
815 {
816 .data_type = QMI_STRUCT,
817 .elem_len = 1,
818 .elem_size = sizeof(struct ipa_hdr_tbl_info_type_v01),
819 .is_array = NO_ARRAY,
820 .tlv_type = 0x11,
821 .offset = offsetof(
822 struct ipa_init_modem_driver_req_msg_v01,
823 hdr_tbl_info),
824 .ei_array = ipa3_hdr_tbl_info_type_data_v01_ei,
825 },
826 {
827 .data_type = QMI_OPT_FLAG,
828 .elem_len = 1,
829 .elem_size = sizeof(uint8_t),
830 .is_array = NO_ARRAY,
831 .tlv_type = 0x12,
832 .offset = offsetof(
833 struct ipa_init_modem_driver_req_msg_v01,
834 v4_route_tbl_info_valid),
835 },
836 {
837 .data_type = QMI_STRUCT,
838 .elem_len = 1,
839 .elem_size = sizeof(struct ipa_route_tbl_info_type_v01),
840 .is_array = NO_ARRAY,
841 .tlv_type = 0x12,
842 .offset = offsetof(
843 struct ipa_init_modem_driver_req_msg_v01,
844 v4_route_tbl_info),
845 .ei_array = ipa3_route_tbl_info_type_data_v01_ei,
846 },
847 {
848 .data_type = QMI_OPT_FLAG,
849 .elem_len = 1,
850 .elem_size = sizeof(uint8_t),
851 .is_array = NO_ARRAY,
852 .tlv_type = 0x13,
853 .offset = offsetof(
854 struct ipa_init_modem_driver_req_msg_v01,
855 v6_route_tbl_info_valid),
856 },
857 {
858 .data_type = QMI_STRUCT,
859 .elem_len = 1,
860 .elem_size = sizeof(struct ipa_route_tbl_info_type_v01),
861 .is_array = NO_ARRAY,
862 .tlv_type = 0x13,
863 .offset = offsetof(
864 struct ipa_init_modem_driver_req_msg_v01,
865 v6_route_tbl_info),
866 .ei_array = ipa3_route_tbl_info_type_data_v01_ei,
867 },
868 {
869 .data_type = QMI_OPT_FLAG,
870 .elem_len = 1,
871 .elem_size = sizeof(uint8_t),
872 .is_array = NO_ARRAY,
873 .tlv_type = 0x14,
874 .offset = offsetof(
875 struct ipa_init_modem_driver_req_msg_v01,
876 v4_filter_tbl_start_addr_valid),
877 },
878 {
879 .data_type = QMI_UNSIGNED_4_BYTE,
880 .elem_len = 1,
881 .elem_size = sizeof(uint32_t),
882 .is_array = NO_ARRAY,
883 .tlv_type = 0x14,
884 .offset = offsetof(
885 struct ipa_init_modem_driver_req_msg_v01,
886 v4_filter_tbl_start_addr),
887 },
888 {
889 .data_type = QMI_OPT_FLAG,
890 .elem_len = 1,
891 .elem_size = sizeof(uint8_t),
892 .is_array = NO_ARRAY,
893 .tlv_type = 0x15,
894 .offset = offsetof(
895 struct ipa_init_modem_driver_req_msg_v01,
896 v6_filter_tbl_start_addr_valid),
897 },
898 {
899 .data_type = QMI_UNSIGNED_4_BYTE,
900 .elem_len = 1,
901 .elem_size = sizeof(uint32_t),
902 .is_array = NO_ARRAY,
903 .tlv_type = 0x15,
904 .offset = offsetof(
905 struct ipa_init_modem_driver_req_msg_v01,
906 v6_filter_tbl_start_addr),
907 },
908 {
909 .data_type = QMI_OPT_FLAG,
910 .elem_len = 1,
911 .elem_size = sizeof(uint8_t),
912 .is_array = NO_ARRAY,
913 .tlv_type = 0x16,
914 .offset = offsetof(
915 struct ipa_init_modem_driver_req_msg_v01,
916 modem_mem_info_valid),
917 },
918 {
919 .data_type = QMI_STRUCT,
920 .elem_len = 1,
921 .elem_size = sizeof(struct ipa_modem_mem_info_type_v01),
922 .is_array = NO_ARRAY,
923 .tlv_type = 0x16,
924 .offset = offsetof(
925 struct ipa_init_modem_driver_req_msg_v01,
926 modem_mem_info),
927 .ei_array = ipa3_modem_mem_info_type_data_v01_ei,
928 },
929 {
930 .data_type = QMI_OPT_FLAG,
931 .elem_len = 1,
932 .elem_size = sizeof(uint8_t),
933 .is_array = NO_ARRAY,
934 .tlv_type = 0x17,
935 .offset = offsetof(
936 struct ipa_init_modem_driver_req_msg_v01,
937 ctrl_comm_dest_end_pt_valid),
938 },
939 {
940 .data_type = QMI_UNSIGNED_4_BYTE,
941 .elem_len = 1,
942 .elem_size = sizeof(uint32_t),
943 .is_array = NO_ARRAY,
944 .tlv_type = 0x17,
945 .offset = offsetof(
946 struct ipa_init_modem_driver_req_msg_v01,
947 ctrl_comm_dest_end_pt),
948 },
949 {
950 .data_type = QMI_OPT_FLAG,
951 .elem_len = 1,
952 .elem_size = sizeof(uint8_t),
953 .is_array = NO_ARRAY,
954 .tlv_type = 0x18,
955 .offset = offsetof(
956 struct ipa_init_modem_driver_req_msg_v01,
957 is_ssr_bootup_valid),
958 },
959 {
960 .data_type = QMI_UNSIGNED_1_BYTE,
961 .elem_len = 1,
962 .elem_size = sizeof(uint8_t),
963 .is_array = NO_ARRAY,
964 .tlv_type = 0x18,
965 .offset = offsetof(
966 struct ipa_init_modem_driver_req_msg_v01,
967 is_ssr_bootup),
968 },
969 {
970 .data_type = QMI_OPT_FLAG,
971 .elem_len = 1,
972 .elem_size = sizeof(uint8_t),
973 .is_array = NO_ARRAY,
974 .tlv_type = 0x19,
975 .offset = offsetof(
976 struct ipa_init_modem_driver_req_msg_v01,
977 hdr_proc_ctx_tbl_info_valid),
978 },
979 {
980 .data_type = QMI_STRUCT,
981 .elem_len = 1,
982 .elem_size = sizeof(
983 struct ipa_hdr_proc_ctx_tbl_info_type_v01),
984 .is_array = NO_ARRAY,
985 .tlv_type = 0x19,
986 .offset = offsetof(
987 struct ipa_init_modem_driver_req_msg_v01,
988 hdr_proc_ctx_tbl_info),
989 .ei_array = ipa3_hdr_proc_ctx_tbl_info_type_data_v01_ei,
990 },
991 {
992 .data_type = QMI_OPT_FLAG,
993 .elem_len = 1,
994 .elem_size = sizeof(uint8_t),
995 .is_array = NO_ARRAY,
996 .tlv_type = 0x1A,
997 .offset = offsetof(
998 struct ipa_init_modem_driver_req_msg_v01,
999 zip_tbl_info_valid),
1000 },
1001 {
1002 .data_type = QMI_STRUCT,
1003 .elem_len = 1,
1004 .elem_size = sizeof(struct ipa_zip_tbl_info_type_v01),
1005 .is_array = NO_ARRAY,
1006 .tlv_type = 0x1A,
1007 .offset = offsetof(
1008 struct ipa_init_modem_driver_req_msg_v01,
1009 zip_tbl_info),
1010 .ei_array = ipa3_zip_tbl_info_type_data_v01_ei,
1011 },
1012 {
1013 .data_type = QMI_OPT_FLAG,
1014 .elem_len = 1,
1015 .elem_size = sizeof(uint8_t),
1016 .is_array = NO_ARRAY,
1017 .tlv_type = 0x1B,
1018 .offset = offsetof(
1019 struct ipa_init_modem_driver_req_msg_v01,
1020 v4_hash_route_tbl_info_valid),
1021 },
1022 {
1023 .data_type = QMI_STRUCT,
1024 .elem_len = 1,
1025 .elem_size = sizeof(struct ipa_route_tbl_info_type_v01),
1026 .is_array = NO_ARRAY,
1027 .tlv_type = 0x1B,
1028 .offset = offsetof(
1029 struct ipa_init_modem_driver_req_msg_v01,
1030 v4_hash_route_tbl_info),
1031 .ei_array = ipa3_route_tbl_info_type_data_v01_ei,
1032 },
1033 {
1034 .data_type = QMI_OPT_FLAG,
1035 .elem_len = 1,
1036 .elem_size = sizeof(uint8_t),
1037 .is_array = NO_ARRAY,
1038 .tlv_type = 0x1C,
1039 .offset = offsetof(
1040 struct ipa_init_modem_driver_req_msg_v01,
1041 v6_hash_route_tbl_info_valid),
1042 },
1043 {
1044 .data_type = QMI_STRUCT,
1045 .elem_len = 1,
1046 .elem_size = sizeof(struct ipa_route_tbl_info_type_v01),
1047 .is_array = NO_ARRAY,
1048 .tlv_type = 0x1C,
1049 .offset = offsetof(
1050 struct ipa_init_modem_driver_req_msg_v01,
1051 v6_hash_route_tbl_info),
1052 .ei_array = ipa3_route_tbl_info_type_data_v01_ei,
1053 },
1054 {
1055 .data_type = QMI_OPT_FLAG,
1056 .elem_len = 1,
1057 .elem_size = sizeof(uint8_t),
1058 .is_array = NO_ARRAY,
1059 .tlv_type = 0x1D,
1060 .offset = offsetof(
1061 struct ipa_init_modem_driver_req_msg_v01,
1062 v4_hash_filter_tbl_start_addr_valid),
1063 },
1064 {
1065 .data_type = QMI_UNSIGNED_4_BYTE,
1066 .elem_len = 1,
1067 .elem_size = sizeof(uint32_t),
1068 .is_array = NO_ARRAY,
1069 .tlv_type = 0x1D,
1070 .offset = offsetof(
1071 struct ipa_init_modem_driver_req_msg_v01,
1072 v4_hash_filter_tbl_start_addr),
1073 },
1074 {
1075 .data_type = QMI_OPT_FLAG,
1076 .elem_len = 1,
1077 .elem_size = sizeof(uint8_t),
1078 .is_array = NO_ARRAY,
1079 .tlv_type = 0x1E,
1080 .offset = offsetof(
1081 struct ipa_init_modem_driver_req_msg_v01,
1082 v6_hash_filter_tbl_start_addr_valid),
1083 },
1084 {
1085 .data_type = QMI_UNSIGNED_4_BYTE,
1086 .elem_len = 1,
1087 .elem_size = sizeof(uint32_t),
1088 .is_array = NO_ARRAY,
1089 .tlv_type = 0x1E,
1090 .offset = offsetof(
1091 struct ipa_init_modem_driver_req_msg_v01,
1092 v6_hash_filter_tbl_start_addr),
1093 },
1094 {
1095 .data_type = QMI_EOTI,
1096 .is_array = NO_ARRAY,
1097 .tlv_type = QMI_COMMON_TLV_TYPE,
1098 },
1099};
1100
1101struct elem_info ipa3_init_modem_driver_resp_msg_data_v01_ei[] = {
1102 {
1103 .data_type = QMI_STRUCT,
1104 .elem_len = 1,
1105 .elem_size = sizeof(struct qmi_response_type_v01),
1106 .is_array = NO_ARRAY,
1107 .tlv_type = 0x02,
1108 .offset = offsetof(
1109 struct ipa_init_modem_driver_resp_msg_v01,
1110 resp),
1111 .ei_array = get_qmi_response_type_v01_ei(),
1112 },
1113 {
1114 .data_type = QMI_OPT_FLAG,
1115 .elem_len = 1,
1116 .elem_size = sizeof(uint8_t),
1117 .is_array = NO_ARRAY,
1118 .tlv_type = 0x10,
1119 .offset = offsetof(
1120 struct ipa_init_modem_driver_resp_msg_v01,
1121 ctrl_comm_dest_end_pt_valid),
1122 },
1123 {
1124 .data_type = QMI_UNSIGNED_4_BYTE,
1125 .elem_len = 1,
1126 .elem_size = sizeof(uint32_t),
1127 .is_array = NO_ARRAY,
1128 .tlv_type = 0x10,
1129 .offset = offsetof(
1130 struct ipa_init_modem_driver_resp_msg_v01,
1131 ctrl_comm_dest_end_pt),
1132 },
1133 {
1134 .data_type = QMI_OPT_FLAG,
1135 .elem_len = 1,
1136 .elem_size = sizeof(uint8_t),
1137 .is_array = NO_ARRAY,
1138 .tlv_type = 0x11,
1139 .offset = offsetof(
1140 struct ipa_init_modem_driver_resp_msg_v01,
1141 default_end_pt_valid),
1142 },
1143 {
1144 .data_type = QMI_UNSIGNED_4_BYTE,
1145 .elem_len = 1,
1146 .elem_size = sizeof(uint32_t),
1147 .is_array = NO_ARRAY,
1148 .tlv_type = 0x11,
1149 .offset = offsetof(
1150 struct ipa_init_modem_driver_resp_msg_v01,
1151 default_end_pt),
1152 },
1153 {
1154 .data_type = QMI_OPT_FLAG,
1155 .elem_len = 1,
1156 .elem_size = sizeof(uint8_t),
1157 .is_array = NO_ARRAY,
1158 .tlv_type = 0x12,
1159 .offset = offsetof(
1160 struct ipa_init_modem_driver_resp_msg_v01,
1161 modem_driver_init_pending_valid),
1162 },
1163 {
1164 .data_type = QMI_UNSIGNED_1_BYTE,
1165 .elem_len = 1,
1166 .elem_size = sizeof(uint8_t),
1167 .is_array = NO_ARRAY,
1168 .tlv_type = 0x12,
1169 .offset = offsetof(
1170 struct ipa_init_modem_driver_resp_msg_v01,
1171 modem_driver_init_pending),
1172 },
1173 {
1174 .data_type = QMI_EOTI,
1175 .is_array = NO_ARRAY,
1176 .tlv_type = QMI_COMMON_TLV_TYPE,
1177 },
1178};
1179
1180struct elem_info ipa3_init_modem_driver_cmplt_req_msg_data_v01_ei[] = {
1181 {
1182 .data_type = QMI_UNSIGNED_1_BYTE,
1183 .elem_len = 1,
1184 .elem_size = sizeof(uint8_t),
1185 .is_array = NO_ARRAY,
1186 .tlv_type = 0x01,
1187 .offset = offsetof(
1188 struct ipa_init_modem_driver_cmplt_req_msg_v01,
1189 status),
1190 },
1191 {
1192 .data_type = QMI_EOTI,
1193 .is_array = NO_ARRAY,
1194 .tlv_type = QMI_COMMON_TLV_TYPE,
1195 },
1196};
1197
1198struct elem_info ipa3_init_modem_driver_cmplt_resp_msg_data_v01_ei[] = {
1199 {
1200 .data_type = QMI_STRUCT,
1201 .elem_len = 1,
1202 .elem_size = sizeof(struct qmi_response_type_v01),
1203 .is_array = NO_ARRAY,
1204 .tlv_type = 0x02,
1205 .offset = offsetof(
1206 struct ipa_init_modem_driver_cmplt_resp_msg_v01,
1207 resp),
1208 .ei_array = get_qmi_response_type_v01_ei(),
1209 },
1210 {
1211 .data_type = QMI_EOTI,
1212 .is_array = NO_ARRAY,
1213 .tlv_type = QMI_COMMON_TLV_TYPE,
1214 },
1215};
1216
1217struct elem_info ipa3_indication_reg_req_msg_data_v01_ei[] = {
1218 {
1219 .data_type = QMI_OPT_FLAG,
1220 .elem_len = 1,
1221 .elem_size = sizeof(uint8_t),
1222 .is_array = NO_ARRAY,
1223 .tlv_type = 0x10,
1224 .offset = offsetof(
1225 struct ipa_indication_reg_req_msg_v01,
1226 master_driver_init_complete_valid),
1227 },
1228 {
1229 .data_type = QMI_UNSIGNED_1_BYTE,
1230 .elem_len = 1,
1231 .elem_size = sizeof(uint8_t),
1232 .is_array = NO_ARRAY,
1233 .tlv_type = 0x10,
1234 .offset = offsetof(
1235 struct ipa_indication_reg_req_msg_v01,
1236 master_driver_init_complete),
1237 },
1238 {
1239 .data_type = QMI_OPT_FLAG,
1240 .elem_len = 1,
1241 .elem_size = sizeof(uint8_t),
1242 .is_array = NO_ARRAY,
1243 .tlv_type = 0x11,
1244 .offset = offsetof(
1245 struct ipa_indication_reg_req_msg_v01,
1246 data_usage_quota_reached_valid),
1247 },
1248 {
1249 .data_type = QMI_UNSIGNED_1_BYTE,
1250 .elem_len = 1,
1251 .elem_size = sizeof(uint8_t),
1252 .is_array = NO_ARRAY,
1253 .tlv_type = 0x11,
1254 .offset = offsetof(
1255 struct ipa_indication_reg_req_msg_v01,
1256 data_usage_quota_reached),
1257 },
1258 {
1259 .data_type = QMI_EOTI,
1260 .is_array = NO_ARRAY,
1261 .tlv_type = QMI_COMMON_TLV_TYPE,
1262 },
1263};
1264
1265struct elem_info ipa3_indication_reg_resp_msg_data_v01_ei[] = {
1266 {
1267 .data_type = QMI_STRUCT,
1268 .elem_len = 1,
1269 .elem_size = sizeof(struct qmi_response_type_v01),
1270 .is_array = NO_ARRAY,
1271 .tlv_type = 0x02,
1272 .offset = offsetof(
1273 struct ipa_indication_reg_resp_msg_v01,
1274 resp),
1275 .ei_array = get_qmi_response_type_v01_ei(),
1276 },
1277 {
1278 .data_type = QMI_EOTI,
1279 .is_array = NO_ARRAY,
1280 .tlv_type = QMI_COMMON_TLV_TYPE,
1281 },
1282};
1283
1284struct elem_info ipa3_master_driver_init_complt_ind_msg_data_v01_ei[] = {
1285 {
1286 .data_type = QMI_STRUCT,
1287 .elem_len = 1,
1288 .elem_size = sizeof(struct qmi_response_type_v01),
1289 .is_array = NO_ARRAY,
1290 .tlv_type = 0x02,
1291 .offset = offsetof(struct
1292 ipa_master_driver_init_complt_ind_msg_v01,
1293 master_driver_init_status),
1294 .ei_array = get_qmi_response_type_v01_ei(),
1295 },
1296 {
1297 .data_type = QMI_EOTI,
1298 .is_array = NO_ARRAY,
1299 .tlv_type = QMI_COMMON_TLV_TYPE,
1300 },
1301};
1302
1303struct elem_info ipa3_install_fltr_rule_req_msg_data_v01_ei[] = {
1304 {
1305 .data_type = QMI_OPT_FLAG,
1306 .elem_len = 1,
1307 .elem_size = sizeof(uint8_t),
1308 .is_array = NO_ARRAY,
1309 .tlv_type = 0x10,
1310 .offset = offsetof(
1311 struct ipa_install_fltr_rule_req_msg_v01,
1312 filter_spec_list_valid),
1313 },
1314 {
1315 .data_type = QMI_DATA_LEN,
1316 .elem_len = 1,
1317 .elem_size = sizeof(uint8_t),
1318 .is_array = NO_ARRAY,
1319 .tlv_type = 0x10,
1320 .offset = offsetof(
1321 struct ipa_install_fltr_rule_req_msg_v01,
1322 filter_spec_list_len),
1323 },
1324 {
1325 .data_type = QMI_STRUCT,
1326 .elem_len = QMI_IPA_MAX_FILTERS_V01,
1327 .elem_size = sizeof(struct ipa_filter_spec_type_v01),
1328 .is_array = VAR_LEN_ARRAY,
1329 .tlv_type = 0x10,
1330 .offset = offsetof(
1331 struct ipa_install_fltr_rule_req_msg_v01,
1332 filter_spec_list),
1333 .ei_array = ipa_filter_spec_type_data_v01_ei,
1334 },
1335 {
1336 .data_type = QMI_OPT_FLAG,
1337 .elem_len = 1,
1338 .elem_size = sizeof(uint8_t),
1339 .is_array = NO_ARRAY,
1340 .tlv_type = 0x11,
1341 .offset = offsetof(
1342 struct ipa_install_fltr_rule_req_msg_v01,
1343 source_pipe_index_valid),
1344 },
1345 {
1346 .data_type = QMI_UNSIGNED_4_BYTE,
1347 .elem_len = 1,
1348 .elem_size = sizeof(uint32_t),
1349 .is_array = NO_ARRAY,
1350 .tlv_type = 0x11,
1351 .offset = offsetof(
1352 struct ipa_install_fltr_rule_req_msg_v01,
1353 source_pipe_index),
1354 },
1355 {
1356 .data_type = QMI_OPT_FLAG,
1357 .elem_len = 1,
1358 .elem_size = sizeof(uint8_t),
1359 .is_array = NO_ARRAY,
1360 .tlv_type = 0x12,
1361 .offset = offsetof(
1362 struct ipa_install_fltr_rule_req_msg_v01,
1363 num_ipv4_filters_valid),
1364 },
1365 {
1366 .data_type = QMI_UNSIGNED_4_BYTE,
1367 .elem_len = 1,
1368 .elem_size = sizeof(uint32_t),
1369 .is_array = NO_ARRAY,
1370 .tlv_type = 0x12,
1371 .offset = offsetof(
1372 struct ipa_install_fltr_rule_req_msg_v01,
1373 num_ipv4_filters),
1374 },
1375 {
1376 .data_type = QMI_OPT_FLAG,
1377 .elem_len = 1,
1378 .elem_size = sizeof(uint8_t),
1379 .is_array = NO_ARRAY,
1380 .tlv_type = 0x13,
1381 .offset = offsetof(
1382 struct ipa_install_fltr_rule_req_msg_v01,
1383 num_ipv6_filters_valid),
1384 },
1385 {
1386 .data_type = QMI_UNSIGNED_4_BYTE,
1387 .elem_len = 1,
1388 .elem_size = sizeof(uint32_t),
1389 .is_array = NO_ARRAY,
1390 .tlv_type = 0x13,
1391 .offset = offsetof(
1392 struct ipa_install_fltr_rule_req_msg_v01,
1393 num_ipv6_filters),
1394 },
1395 {
1396 .data_type = QMI_OPT_FLAG,
1397 .elem_len = 1,
1398 .elem_size = sizeof(uint8_t),
1399 .is_array = NO_ARRAY,
1400 .tlv_type = 0x14,
1401 .offset = offsetof(
1402 struct ipa_install_fltr_rule_req_msg_v01,
1403 xlat_filter_indices_list_valid),
1404 },
1405 {
1406 .data_type = QMI_DATA_LEN,
1407 .elem_len = 1,
1408 .elem_size = sizeof(uint8_t),
1409 .is_array = NO_ARRAY,
1410 .tlv_type = 0x14,
1411 .offset = offsetof(
1412 struct ipa_install_fltr_rule_req_msg_v01,
1413 xlat_filter_indices_list_len),
1414 },
1415 {
1416 .data_type = QMI_UNSIGNED_4_BYTE,
1417 .elem_len = QMI_IPA_MAX_FILTERS_V01,
1418 .elem_size = sizeof(uint32_t),
1419 .is_array = VAR_LEN_ARRAY,
1420 .tlv_type = 0x14,
1421 .offset = offsetof(
1422 struct ipa_install_fltr_rule_req_msg_v01,
1423 xlat_filter_indices_list),
1424 },
1425 {
1426 .data_type = QMI_OPT_FLAG,
1427 .elem_len = 1,
1428 .elem_size = sizeof(uint8_t),
1429 .is_array = NO_ARRAY,
1430 .tlv_type = 0x15,
1431 .offset = offsetof(
1432 struct ipa_install_fltr_rule_req_msg_v01,
1433 filter_spec_ex_list_valid),
1434 },
1435 {
1436 .data_type = QMI_DATA_LEN,
1437 .elem_len = 1,
1438 .elem_size = sizeof(uint8_t),
1439 .is_array = NO_ARRAY,
1440 .tlv_type = 0x15,
1441 .offset = offsetof(
1442 struct ipa_install_fltr_rule_req_msg_v01,
1443 filter_spec_ex_list_len),
1444 },
1445 {
1446 .data_type = QMI_STRUCT,
1447 .elem_len = QMI_IPA_MAX_FILTERS_V01,
1448 .elem_size = sizeof(struct ipa_filter_spec_ex_type_v01),
1449 .is_array = VAR_LEN_ARRAY,
1450 .tlv_type = 0x15,
1451 .offset = offsetof(
1452 struct ipa_install_fltr_rule_req_msg_v01,
1453 filter_spec_ex_list),
1454 .ei_array = ipa_filter_spec_ex_type_data_v01_ei,
1455 },
1456 {
1457 .data_type = QMI_EOTI,
1458 .is_array = NO_ARRAY,
1459 .tlv_type = QMI_COMMON_TLV_TYPE,
1460 },
1461};
1462
1463struct elem_info ipa3_install_fltr_rule_resp_msg_data_v01_ei[] = {
1464 {
1465 .data_type = QMI_STRUCT,
1466 .elem_len = 1,
1467 .elem_size = sizeof(struct qmi_response_type_v01),
1468 .is_array = NO_ARRAY,
1469 .tlv_type = 0x02,
1470 .offset = offsetof(
1471 struct ipa_install_fltr_rule_resp_msg_v01,
1472 resp),
1473 .ei_array = get_qmi_response_type_v01_ei(),
1474 },
1475 {
1476 .data_type = QMI_OPT_FLAG,
1477 .elem_len = 1,
1478 .elem_size = sizeof(uint8_t),
1479 .is_array = NO_ARRAY,
1480 .tlv_type = 0x10,
1481 .offset = offsetof(
1482 struct ipa_install_fltr_rule_resp_msg_v01,
1483 filter_handle_list_valid),
1484 },
1485 {
1486 .data_type = QMI_DATA_LEN,
1487 .elem_len = 1,
1488 .elem_size = sizeof(uint8_t),
1489 .is_array = NO_ARRAY,
1490 .tlv_type = 0x10,
1491 .offset = offsetof(
1492 struct ipa_install_fltr_rule_resp_msg_v01,
1493 filter_handle_list_len),
1494 },
1495 {
1496 .data_type = QMI_STRUCT,
1497 .elem_len = QMI_IPA_MAX_FILTERS_V01,
1498 .elem_size = sizeof(
1499 struct ipa_filter_rule_identifier_to_handle_map_v01),
1500 .is_array = VAR_LEN_ARRAY,
1501 .tlv_type = 0x10,
1502 .offset = offsetof(
1503 struct ipa_install_fltr_rule_resp_msg_v01,
1504 filter_handle_list),
1505 .ei_array =
1506 ipa3_filter_rule_identifier_to_handle_map_data_v01_ei,
1507 },
1508 {
1509 .data_type = QMI_OPT_FLAG,
1510 .elem_len = 1,
1511 .elem_size = sizeof(uint8_t),
1512 .is_array = NO_ARRAY,
1513 .tlv_type = 0x11,
1514 .offset = offsetof(
1515 struct ipa_install_fltr_rule_resp_msg_v01,
1516 rule_id_valid),
1517 },
1518 {
1519 .data_type = QMI_DATA_LEN,
1520 .elem_len = 1,
1521 .elem_size = sizeof(uint8_t),
1522 .is_array = NO_ARRAY,
1523 .tlv_type = 0x11,
1524 .offset = offsetof(
1525 struct ipa_install_fltr_rule_resp_msg_v01,
1526 rule_id_len),
1527 },
1528 {
1529 .data_type = QMI_UNSIGNED_4_BYTE,
1530 .elem_len = QMI_IPA_MAX_FILTERS_V01,
1531 .elem_size = sizeof(uint32_t),
1532 .is_array = VAR_LEN_ARRAY,
1533 .tlv_type = 0x11,
1534 .offset = offsetof(
1535 struct ipa_install_fltr_rule_resp_msg_v01,
1536 rule_id),
1537 },
1538 {
1539 .data_type = QMI_EOTI,
1540 .is_array = NO_ARRAY,
1541 .tlv_type = QMI_COMMON_TLV_TYPE,
1542 },
1543};
1544
1545struct elem_info ipa3_fltr_installed_notif_req_msg_data_v01_ei[] = {
1546 {
1547 .data_type = QMI_UNSIGNED_4_BYTE,
1548 .elem_len = 1,
1549 .elem_size = sizeof(uint32_t),
1550 .is_array = NO_ARRAY,
1551 .tlv_type = 0x01,
1552 .offset = offsetof(
1553 struct ipa_fltr_installed_notif_req_msg_v01,
1554 source_pipe_index),
1555 },
1556 {
1557 .data_type = QMI_UNSIGNED_2_BYTE,
1558 .elem_len = 1,
1559 .elem_size = sizeof(uint16_t),
1560 .is_array = NO_ARRAY,
1561 .tlv_type = 0x02,
1562 .offset = offsetof(
1563 struct ipa_fltr_installed_notif_req_msg_v01,
1564 install_status),
1565 },
1566 {
1567 .data_type = QMI_DATA_LEN,
1568 .elem_len = 1,
1569 .elem_size = sizeof(uint8_t),
1570 .is_array = NO_ARRAY,
1571 .tlv_type = 0x03,
1572 .offset = offsetof(
1573 struct ipa_fltr_installed_notif_req_msg_v01,
1574 filter_index_list_len),
1575 },
1576 {
1577 .data_type = QMI_STRUCT,
1578 .elem_len = QMI_IPA_MAX_FILTERS_V01,
1579 .elem_size = sizeof(
1580 struct ipa_filter_handle_to_index_map_v01),
1581 .is_array = VAR_LEN_ARRAY,
1582 .tlv_type = 0x03,
1583 .offset = offsetof(
1584 struct ipa_fltr_installed_notif_req_msg_v01,
1585 filter_index_list),
1586 .ei_array = ipa3_filter_handle_to_index_map_data_v01_ei,
1587 },
1588 {
1589 .data_type = QMI_OPT_FLAG,
1590 .elem_len = 1,
1591 .elem_size = sizeof(uint8_t),
1592 .is_array = NO_ARRAY,
1593 .tlv_type = 0x10,
1594 .offset = offsetof(
1595 struct ipa_fltr_installed_notif_req_msg_v01,
1596 embedded_pipe_index_valid),
1597 },
1598 {
1599 .data_type = QMI_UNSIGNED_4_BYTE,
1600 .elem_len = 1,
1601 .elem_size = sizeof(uint32_t),
1602 .is_array = NO_ARRAY,
1603 .tlv_type = 0x10,
1604 .offset = offsetof(
1605 struct ipa_fltr_installed_notif_req_msg_v01,
1606 embedded_pipe_index),
1607 },
1608 {
1609 .data_type = QMI_OPT_FLAG,
1610 .elem_len = 1,
1611 .elem_size = sizeof(uint8_t),
1612 .is_array = NO_ARRAY,
1613 .tlv_type = 0x11,
1614 .offset = offsetof(
1615 struct ipa_fltr_installed_notif_req_msg_v01,
1616 retain_header_valid),
1617 },
1618 {
1619 .data_type = QMI_UNSIGNED_1_BYTE,
1620 .elem_len = 1,
1621 .elem_size = sizeof(uint8_t),
1622 .is_array = NO_ARRAY,
1623 .tlv_type = 0x11,
1624 .offset = offsetof(
1625 struct ipa_fltr_installed_notif_req_msg_v01,
1626 retain_header),
1627 },
1628 {
1629 .data_type = QMI_OPT_FLAG,
1630 .elem_len = 1,
1631 .elem_size = sizeof(uint8_t),
1632 .is_array = NO_ARRAY,
1633 .tlv_type = 0x12,
1634 .offset = offsetof(
1635 struct ipa_fltr_installed_notif_req_msg_v01,
1636 embedded_call_mux_id_valid),
1637 },
1638 {
1639 .data_type = QMI_UNSIGNED_4_BYTE,
1640 .elem_len = 1,
1641 .elem_size = sizeof(uint32_t),
1642 .is_array = NO_ARRAY,
1643 .tlv_type = 0x12,
1644 .offset = offsetof(
1645 struct ipa_fltr_installed_notif_req_msg_v01,
1646 embedded_call_mux_id),
1647 },
1648 {
1649 .data_type = QMI_OPT_FLAG,
1650 .elem_len = 1,
1651 .elem_size = sizeof(uint8_t),
1652 .is_array = NO_ARRAY,
1653 .tlv_type = 0x13,
1654 .offset = offsetof(
1655 struct ipa_fltr_installed_notif_req_msg_v01,
1656 num_ipv4_filters_valid),
1657 },
1658 {
1659 .data_type = QMI_UNSIGNED_4_BYTE,
1660 .elem_len = 1,
1661 .elem_size = sizeof(uint32_t),
1662 .is_array = NO_ARRAY,
1663 .tlv_type = 0x13,
1664 .offset = offsetof(
1665 struct ipa_fltr_installed_notif_req_msg_v01,
1666 num_ipv4_filters),
1667 },
1668 {
1669 .data_type = QMI_OPT_FLAG,
1670 .elem_len = 1,
1671 .elem_size = sizeof(uint8_t),
1672 .is_array = NO_ARRAY,
1673 .tlv_type = 0x14,
1674 .offset = offsetof(
1675 struct ipa_fltr_installed_notif_req_msg_v01,
1676 num_ipv6_filters_valid),
1677 },
1678 {
1679 .data_type = QMI_UNSIGNED_4_BYTE,
1680 .elem_len = 1,
1681 .elem_size = sizeof(uint32_t),
1682 .is_array = NO_ARRAY,
1683 .tlv_type = 0x14,
1684 .offset = offsetof(
1685 struct ipa_fltr_installed_notif_req_msg_v01,
1686 num_ipv6_filters),
1687 },
1688 {
1689 .data_type = QMI_OPT_FLAG,
1690 .elem_len = 1,
1691 .elem_size = sizeof(uint8_t),
1692 .is_array = NO_ARRAY,
1693 .tlv_type = 0x15,
1694 .offset = offsetof(
1695 struct ipa_fltr_installed_notif_req_msg_v01,
1696 start_ipv4_filter_idx_valid),
1697 },
1698 {
1699 .data_type = QMI_UNSIGNED_4_BYTE,
1700 .elem_len = 1,
1701 .elem_size = sizeof(uint32_t),
1702 .is_array = NO_ARRAY,
1703 .tlv_type = 0x15,
1704 .offset = offsetof(
1705 struct ipa_fltr_installed_notif_req_msg_v01,
1706 start_ipv4_filter_idx),
1707 },
1708 {
1709 .data_type = QMI_OPT_FLAG,
1710 .elem_len = 1,
1711 .elem_size = sizeof(uint8_t),
1712 .is_array = NO_ARRAY,
1713 .tlv_type = 0x16,
1714 .offset = offsetof(
1715 struct ipa_fltr_installed_notif_req_msg_v01,
1716 start_ipv6_filter_idx_valid),
1717 },
1718 {
1719 .data_type = QMI_UNSIGNED_4_BYTE,
1720 .elem_len = 1,
1721 .elem_size = sizeof(uint32_t),
1722 .is_array = NO_ARRAY,
1723 .tlv_type = 0x16,
1724 .offset = offsetof(
1725 struct ipa_fltr_installed_notif_req_msg_v01,
1726 start_ipv6_filter_idx),
1727 },
1728 {
1729 .data_type = QMI_OPT_FLAG,
1730 .elem_len = 1,
1731 .elem_size = sizeof(uint8_t),
1732 .is_array = NO_ARRAY,
1733 .tlv_type = 0x17,
1734 .offset = offsetof(
1735 struct ipa_fltr_installed_notif_req_msg_v01,
1736 rule_id_valid),
1737 },
1738 {
1739 .data_type = QMI_DATA_LEN,
1740 .elem_len = 1,
1741 .elem_size = sizeof(uint8_t),
1742 .is_array = NO_ARRAY,
1743 .tlv_type = 0x17,
1744 .offset = offsetof(
1745 struct ipa_fltr_installed_notif_req_msg_v01,
1746 rule_id_len),
1747 },
1748 {
1749 .data_type = QMI_UNSIGNED_4_BYTE,
1750 .elem_len = QMI_IPA_MAX_FILTERS_V01,
1751 .elem_size = sizeof(uint32_t),
1752 .is_array = VAR_LEN_ARRAY,
1753 .tlv_type = 0x17,
1754 .offset = offsetof(
1755 struct ipa_fltr_installed_notif_req_msg_v01,
1756 rule_id),
1757 },
1758 {
1759 .data_type = QMI_EOTI,
1760 .is_array = NO_ARRAY,
1761 .tlv_type = QMI_COMMON_TLV_TYPE,
1762 },
1763};
1764
1765struct elem_info ipa3_fltr_installed_notif_resp_msg_data_v01_ei[] = {
1766 {
1767 .data_type = QMI_STRUCT,
1768 .elem_len = 1,
1769 .elem_size = sizeof(struct qmi_response_type_v01),
1770 .is_array = NO_ARRAY,
1771 .tlv_type = 0x02,
1772 .offset = offsetof(
1773 struct ipa_fltr_installed_notif_resp_msg_v01,
1774 resp),
1775 .ei_array = get_qmi_response_type_v01_ei(),
1776 },
1777 {
1778 .data_type = QMI_EOTI,
1779 .is_array = NO_ARRAY,
1780 .tlv_type = QMI_COMMON_TLV_TYPE,
1781 },
1782};
1783
1784struct elem_info ipa3_enable_force_clear_datapath_req_msg_data_v01_ei[] = {
1785 {
1786 .data_type = QMI_UNSIGNED_4_BYTE,
1787 .elem_len = 1,
1788 .elem_size = sizeof(uint32_t),
1789 .is_array = NO_ARRAY,
1790 .tlv_type = 0x01,
1791 .offset = offsetof(
1792 struct ipa_enable_force_clear_datapath_req_msg_v01,
1793 source_pipe_bitmask),
1794 },
1795 {
1796 .data_type = QMI_UNSIGNED_4_BYTE,
1797 .elem_len = 1,
1798 .elem_size = sizeof(uint32_t),
1799 .is_array = NO_ARRAY,
1800 .tlv_type = 0x02,
1801 .offset = offsetof(
1802 struct ipa_enable_force_clear_datapath_req_msg_v01,
1803 request_id),
1804 },
1805 {
1806 .data_type = QMI_OPT_FLAG,
1807 .elem_len = 1,
1808 .elem_size = sizeof(uint8_t),
1809 .is_array = NO_ARRAY,
1810 .tlv_type = 0x10,
1811 .offset = offsetof(
1812 struct ipa_enable_force_clear_datapath_req_msg_v01,
1813 throttle_source_valid),
1814 },
1815 {
1816 .data_type = QMI_UNSIGNED_1_BYTE,
1817 .elem_len = 1,
1818 .elem_size = sizeof(uint8_t),
1819 .is_array = NO_ARRAY,
1820 .tlv_type = 0x10,
1821 .offset = offsetof(
1822 struct ipa_enable_force_clear_datapath_req_msg_v01,
1823 throttle_source),
1824 },
1825 {
1826 .data_type = QMI_EOTI,
1827 .is_array = NO_ARRAY,
1828 .tlv_type = QMI_COMMON_TLV_TYPE,
1829 },
1830};
1831
1832struct elem_info ipa3_enable_force_clear_datapath_resp_msg_data_v01_ei[] = {
1833 {
1834 .data_type = QMI_STRUCT,
1835 .elem_len = 1,
1836 .elem_size = sizeof(struct qmi_response_type_v01),
1837 .is_array = NO_ARRAY,
1838 .tlv_type = 0x02,
1839 .offset = offsetof(
1840 struct ipa_enable_force_clear_datapath_resp_msg_v01,
1841 resp),
1842 .ei_array = get_qmi_response_type_v01_ei(),
1843 },
1844 {
1845 .data_type = QMI_EOTI,
1846 .is_array = NO_ARRAY,
1847 .tlv_type = QMI_COMMON_TLV_TYPE,
1848 },
1849};
1850
1851struct elem_info ipa3_disable_force_clear_datapath_req_msg_data_v01_ei[] = {
1852 {
1853 .data_type = QMI_UNSIGNED_4_BYTE,
1854 .elem_len = 1,
1855 .elem_size = sizeof(uint32_t),
1856 .is_array = NO_ARRAY,
1857 .tlv_type = 0x01,
1858 .offset = offsetof(
1859 struct ipa_disable_force_clear_datapath_req_msg_v01,
1860 request_id),
1861 },
1862 {
1863 .data_type = QMI_EOTI,
1864 .is_array = NO_ARRAY,
1865 .tlv_type = QMI_COMMON_TLV_TYPE,
1866 },
1867};
1868
1869struct elem_info ipa3_disable_force_clear_datapath_resp_msg_data_v01_ei[] = {
1870 {
1871 .data_type = QMI_STRUCT,
1872 .elem_len = 1,
1873 .elem_size = sizeof(struct qmi_response_type_v01),
1874 .is_array = NO_ARRAY,
1875 .tlv_type = 0x02,
1876 .offset = offsetof(
1877 struct ipa_disable_force_clear_datapath_resp_msg_v01,
1878 resp),
1879 .ei_array = get_qmi_response_type_v01_ei(),
1880 },
1881 {
1882 .data_type = QMI_EOTI,
1883 .is_array = NO_ARRAY,
1884 .tlv_type = QMI_COMMON_TLV_TYPE,
1885 },
1886};
1887
1888struct elem_info ipa3_config_req_msg_data_v01_ei[] = {
1889 {
1890 .data_type = QMI_OPT_FLAG,
1891 .elem_len = 1,
1892 .elem_size = sizeof(uint8_t),
1893 .is_array = NO_ARRAY,
1894 .tlv_type = 0x10,
1895 .offset = offsetof(
1896 struct ipa_config_req_msg_v01,
1897 peripheral_type_valid),
1898 },
1899 {
1900 .data_type = QMI_SIGNED_4_BYTE_ENUM,
1901 .elem_len = 1,
1902 .elem_size = sizeof(uint32_t),
1903 .is_array = NO_ARRAY,
1904 .tlv_type = 0x10,
1905 .offset = offsetof(
1906 struct ipa_config_req_msg_v01,
1907 peripheral_type),
1908 },
1909 {
1910 .data_type = QMI_OPT_FLAG,
1911 .elem_len = 1,
1912 .elem_size = sizeof(uint8_t),
1913 .is_array = NO_ARRAY,
1914 .tlv_type = 0x11,
1915 .offset = offsetof(
1916 struct ipa_config_req_msg_v01,
1917 hw_deaggr_supported_valid),
1918 },
1919 {
1920 .data_type = QMI_UNSIGNED_1_BYTE,
1921 .elem_len = 1,
1922 .elem_size = sizeof(uint8_t),
1923 .is_array = NO_ARRAY,
1924 .tlv_type = 0x11,
1925 .offset = offsetof(
1926 struct ipa_config_req_msg_v01,
1927 hw_deaggr_supported),
1928 },
1929 {
1930 .data_type = QMI_OPT_FLAG,
1931 .elem_len = 1,
1932 .elem_size = sizeof(uint8_t),
1933 .is_array = NO_ARRAY,
1934 .tlv_type = 0x12,
1935 .offset = offsetof(
1936 struct ipa_config_req_msg_v01,
1937 max_aggr_frame_size_valid),
1938 },
1939 {
1940 .data_type = QMI_UNSIGNED_4_BYTE,
1941 .elem_len = 1,
1942 .elem_size = sizeof(uint32_t),
1943 .is_array = NO_ARRAY,
1944 .tlv_type = 0x12,
1945 .offset = offsetof(
1946 struct ipa_config_req_msg_v01,
1947 max_aggr_frame_size),
1948 },
1949 {
1950 .data_type = QMI_OPT_FLAG,
1951 .elem_len = 1,
1952 .elem_size = sizeof(uint8_t),
1953 .is_array = NO_ARRAY,
1954 .tlv_type = 0x13,
1955 .offset = offsetof(
1956 struct ipa_config_req_msg_v01,
1957 ipa_ingress_pipe_mode_valid),
1958 },
1959 {
1960 .data_type = QMI_SIGNED_4_BYTE_ENUM,
1961 .elem_len = 1,
1962 .elem_size = sizeof(uint32_t),
1963 .is_array = NO_ARRAY,
1964 .tlv_type = 0x13,
1965 .offset = offsetof(
1966 struct ipa_config_req_msg_v01,
1967 ipa_ingress_pipe_mode),
1968 },
1969 {
1970 .data_type = QMI_OPT_FLAG,
1971 .elem_len = 1,
1972 .elem_size = sizeof(uint8_t),
1973 .is_array = NO_ARRAY,
1974 .tlv_type = 0x14,
1975 .offset = offsetof(
1976 struct ipa_config_req_msg_v01,
1977 peripheral_speed_info_valid),
1978 },
1979 {
1980 .data_type = QMI_SIGNED_4_BYTE_ENUM,
1981 .elem_len = 1,
1982 .elem_size = sizeof(uint32_t),
1983 .is_array = NO_ARRAY,
1984 .tlv_type = 0x14,
1985 .offset = offsetof(
1986 struct ipa_config_req_msg_v01,
1987 peripheral_speed_info),
1988 },
1989 {
1990 .data_type = QMI_OPT_FLAG,
1991 .elem_len = 1,
1992 .elem_size = sizeof(uint8_t),
1993 .is_array = NO_ARRAY,
1994 .tlv_type = 0x15,
1995 .offset = offsetof(
1996 struct ipa_config_req_msg_v01,
1997 dl_accumulation_time_limit_valid),
1998 },
1999 {
2000 .data_type = QMI_SIGNED_4_BYTE_ENUM,
2001 .elem_len = 1,
2002 .elem_size = sizeof(uint32_t),
2003 .is_array = NO_ARRAY,
2004 .tlv_type = 0x15,
2005 .offset = offsetof(
2006 struct ipa_config_req_msg_v01,
2007 dl_accumulation_time_limit),
2008 },
2009 {
2010 .data_type = QMI_OPT_FLAG,
2011 .elem_len = 1,
2012 .elem_size = sizeof(uint8_t),
2013 .is_array = NO_ARRAY,
2014 .tlv_type = 0x16,
2015 .offset = offsetof(
2016 struct ipa_config_req_msg_v01,
2017 dl_accumulation_pkt_limit_valid),
2018 },
2019 {
2020 .data_type = QMI_SIGNED_4_BYTE_ENUM,
2021 .elem_len = 1,
2022 .elem_size = sizeof(uint32_t),
2023 .is_array = NO_ARRAY,
2024 .tlv_type = 0x16,
2025 .offset = offsetof(
2026 struct ipa_config_req_msg_v01,
2027 dl_accumulation_pkt_limit),
2028 },
2029 {
2030 .data_type = QMI_OPT_FLAG,
2031 .elem_len = 1,
2032 .elem_size = sizeof(uint8_t),
2033 .is_array = NO_ARRAY,
2034 .tlv_type = 0x17,
2035 .offset = offsetof(
2036 struct ipa_config_req_msg_v01,
2037 dl_accumulation_byte_limit_valid),
2038 },
2039 {
2040 .data_type = QMI_SIGNED_4_BYTE_ENUM,
2041 .elem_len = 1,
2042 .elem_size = sizeof(uint32_t),
2043 .is_array = NO_ARRAY,
2044 .tlv_type = 0x17,
2045 .offset = offsetof(
2046 struct ipa_config_req_msg_v01,
2047 dl_accumulation_byte_limit),
2048 },
2049 {
2050 .data_type = QMI_OPT_FLAG,
2051 .elem_len = 1,
2052 .elem_size = sizeof(uint8_t),
2053 .is_array = NO_ARRAY,
2054 .tlv_type = 0x18,
2055 .offset = offsetof(
2056 struct ipa_config_req_msg_v01,
2057 ul_accumulation_time_limit_valid),
2058 },
2059 {
2060 .data_type = QMI_SIGNED_4_BYTE_ENUM,
2061 .elem_len = 1,
2062 .elem_size = sizeof(uint32_t),
2063 .is_array = NO_ARRAY,
2064 .tlv_type = 0x18,
2065 .offset = offsetof(
2066 struct ipa_config_req_msg_v01,
2067 ul_accumulation_time_limit),
2068 },
2069 {
2070 .data_type = QMI_OPT_FLAG,
2071 .elem_len = 1,
2072 .elem_size = sizeof(uint8_t),
2073 .is_array = NO_ARRAY,
2074 .tlv_type = 0x19,
2075 .offset = offsetof(
2076 struct ipa_config_req_msg_v01,
2077 hw_control_flags_valid),
2078 },
2079 {
2080 .data_type = QMI_SIGNED_4_BYTE_ENUM,
2081 .elem_len = 1,
2082 .elem_size = sizeof(uint32_t),
2083 .is_array = NO_ARRAY,
2084 .tlv_type = 0x19,
2085 .offset = offsetof(
2086 struct ipa_config_req_msg_v01,
2087 hw_control_flags),
2088 },
2089 {
2090 .data_type = QMI_OPT_FLAG,
2091 .elem_len = 1,
2092 .elem_size = sizeof(uint8_t),
2093 .is_array = NO_ARRAY,
2094 .tlv_type = 0x1A,
2095 .offset = offsetof(
2096 struct ipa_config_req_msg_v01,
2097 ul_msi_event_threshold_valid),
2098 },
2099 {
2100 .data_type = QMI_SIGNED_4_BYTE_ENUM,
2101 .elem_len = 1,
2102 .elem_size = sizeof(uint32_t),
2103 .is_array = NO_ARRAY,
2104 .tlv_type = 0x1A,
2105 .offset = offsetof(
2106 struct ipa_config_req_msg_v01,
2107 ul_msi_event_threshold),
2108 },
2109 {
2110 .data_type = QMI_OPT_FLAG,
2111 .elem_len = 1,
2112 .elem_size = sizeof(uint8_t),
2113 .is_array = NO_ARRAY,
2114 .tlv_type = 0x1B,
2115 .offset = offsetof(
2116 struct ipa_config_req_msg_v01,
2117 dl_msi_event_threshold_valid),
2118 },
2119 {
2120 .data_type = QMI_SIGNED_4_BYTE_ENUM,
2121 .elem_len = 1,
2122 .elem_size = sizeof(uint32_t),
2123 .is_array = NO_ARRAY,
2124 .tlv_type = 0x1B,
2125 .offset = offsetof(
2126 struct ipa_config_req_msg_v01,
2127 dl_msi_event_threshold),
2128 },
2129 {
2130 .data_type = QMI_OPT_FLAG,
2131 .elem_len = 1,
2132 .elem_size = sizeof(uint8_t),
2133 .is_array = NO_ARRAY,
2134 .tlv_type = 0x1C,
2135 .offset = offsetof(
2136 struct ipa_config_req_msg_v01,
2137 ul_fifo_size_valid),
2138 },
2139 {
2140 .data_type = QMI_UNSIGNED_4_BYTE,
2141 .elem_len = 1,
2142 .elem_size = sizeof(uint32_t),
2143 .is_array = NO_ARRAY,
2144 .tlv_type = 0x1C,
2145 .offset = offsetof(
2146 struct ipa_config_req_msg_v01,
2147 ul_fifo_size),
2148 },
2149 {
2150 .data_type = QMI_OPT_FLAG,
2151 .elem_len = 1,
2152 .elem_size = sizeof(uint8_t),
2153 .is_array = NO_ARRAY,
2154 .tlv_type = 0x1D,
2155 .offset = offsetof(
2156 struct ipa_config_req_msg_v01,
2157 dl_fifo_size_valid),
2158 },
2159 {
2160 .data_type = QMI_UNSIGNED_4_BYTE,
2161 .elem_len = 1,
2162 .elem_size = sizeof(uint32_t),
2163 .is_array = NO_ARRAY,
2164 .tlv_type = 0x1D,
2165 .offset = offsetof(
2166 struct ipa_config_req_msg_v01,
2167 dl_fifo_size),
2168 },
2169 {
2170 .data_type = QMI_OPT_FLAG,
2171 .elem_len = 1,
2172 .elem_size = sizeof(uint8_t),
2173 .is_array = NO_ARRAY,
2174 .tlv_type = 0x1E,
2175 .offset = offsetof(
2176 struct ipa_config_req_msg_v01,
2177 dl_buf_size_valid),
2178 },
2179 {
2180 .data_type = QMI_UNSIGNED_4_BYTE,
2181 .elem_len = 1,
2182 .elem_size = sizeof(uint32_t),
2183 .is_array = NO_ARRAY,
2184 .tlv_type = 0x1E,
2185 .offset = offsetof(
2186 struct ipa_config_req_msg_v01,
2187 dl_buf_size),
2188 },
2189 {
2190 .data_type = QMI_EOTI,
2191 .is_array = NO_ARRAY,
2192 .tlv_type = QMI_COMMON_TLV_TYPE,
2193 },
2194};
2195
2196struct elem_info ipa3_config_resp_msg_data_v01_ei[] = {
2197 {
2198 .data_type = QMI_STRUCT,
2199 .elem_len = 1,
2200 .elem_size = sizeof(struct qmi_response_type_v01),
2201 .is_array = NO_ARRAY,
2202 .tlv_type = 0x02,
2203 .offset = offsetof(
2204 struct ipa_config_resp_msg_v01,
2205 resp),
2206 .ei_array = get_qmi_response_type_v01_ei(),
2207 },
2208 {
2209 .data_type = QMI_EOTI,
2210 .is_array = NO_ARRAY,
2211 .tlv_type = QMI_COMMON_TLV_TYPE,
2212 },
2213};
2214
2215struct elem_info ipa3_get_data_stats_req_msg_data_v01_ei[] = {
2216 {
2217 .data_type = QMI_SIGNED_4_BYTE_ENUM,
2218 .elem_len = 1,
2219 .elem_size = sizeof(uint32_t),
2220 .is_array = NO_ARRAY,
2221 .tlv_type = 0x01,
2222 .offset = offsetof(
2223 struct ipa_get_data_stats_req_msg_v01,
2224 ipa_stats_type),
2225 },
2226 {
2227 .data_type = QMI_OPT_FLAG,
2228 .elem_len = 1,
2229 .elem_size = sizeof(uint8_t),
2230 .is_array = NO_ARRAY,
2231 .tlv_type = 0x10,
2232 .offset = offsetof(
2233 struct ipa_get_data_stats_req_msg_v01,
2234 reset_stats_valid),
2235 },
2236 {
2237 .data_type = QMI_UNSIGNED_1_BYTE,
2238 .elem_len = 1,
2239 .elem_size = sizeof(uint8_t),
2240 .is_array = NO_ARRAY,
2241 .tlv_type = 0x10,
2242 .offset = offsetof(
2243 struct ipa_get_data_stats_req_msg_v01,
2244 reset_stats),
2245 },
2246 {
2247 .data_type = QMI_EOTI,
2248 .is_array = NO_ARRAY,
2249 .tlv_type = QMI_COMMON_TLV_TYPE,
2250 },
2251};
2252
2253static struct elem_info ipa3_pipe_stats_info_type_data_v01_ei[] = {
2254 {
2255 .data_type = QMI_UNSIGNED_4_BYTE,
2256 .elem_len = 1,
2257 .elem_size = sizeof(uint32_t),
2258 .is_array = NO_ARRAY,
2259 .tlv_type = QMI_COMMON_TLV_TYPE,
2260 .offset = offsetof(struct ipa_pipe_stats_info_type_v01,
2261 pipe_index),
2262 },
2263 {
2264 .data_type = QMI_UNSIGNED_8_BYTE,
2265 .elem_len = 1,
2266 .elem_size = sizeof(uint64_t),
2267 .is_array = NO_ARRAY,
2268 .tlv_type = QMI_COMMON_TLV_TYPE,
2269 .offset = offsetof(struct ipa_pipe_stats_info_type_v01,
2270 num_ipv4_packets),
2271 },
2272 {
2273 .data_type = QMI_UNSIGNED_8_BYTE,
2274 .elem_len = 1,
2275 .elem_size = sizeof(uint64_t),
2276 .is_array = NO_ARRAY,
2277 .tlv_type = QMI_COMMON_TLV_TYPE,
2278 .offset = offsetof(struct ipa_pipe_stats_info_type_v01,
2279 num_ipv4_bytes),
2280 },
2281 {
2282 .data_type = QMI_UNSIGNED_8_BYTE,
2283 .elem_len = 1,
2284 .elem_size = sizeof(uint64_t),
2285 .is_array = NO_ARRAY,
2286 .tlv_type = QMI_COMMON_TLV_TYPE,
2287 .offset = offsetof(struct ipa_pipe_stats_info_type_v01,
2288 num_ipv6_packets),
2289 },
2290 {
2291 .data_type = QMI_UNSIGNED_8_BYTE,
2292 .elem_len = 1,
2293 .elem_size = sizeof(uint64_t),
2294 .is_array = NO_ARRAY,
2295 .tlv_type = QMI_COMMON_TLV_TYPE,
2296 .offset = offsetof(struct ipa_pipe_stats_info_type_v01,
2297 num_ipv6_bytes),
2298 },
2299 {
2300 .data_type = QMI_EOTI,
2301 .is_array = NO_ARRAY,
2302 .tlv_type = QMI_COMMON_TLV_TYPE,
2303 },
2304};
2305
2306static struct elem_info ipa3_stats_type_filter_rule_data_v01_ei[] = {
2307 {
2308 .data_type = QMI_UNSIGNED_4_BYTE,
2309 .elem_len = 1,
2310 .elem_size = sizeof(uint32_t),
2311 .is_array = NO_ARRAY,
2312 .tlv_type = QMI_COMMON_TLV_TYPE,
2313 .offset = offsetof(struct
2314 ipa_stats_type_filter_rule_v01,
2315 filter_rule_index),
2316 },
2317 {
2318 .data_type = QMI_UNSIGNED_8_BYTE,
2319 .elem_len = 1,
2320 .elem_size = sizeof(uint64_t),
2321 .is_array = NO_ARRAY,
2322 .tlv_type = QMI_COMMON_TLV_TYPE,
2323 .offset = offsetof(struct
2324 ipa_stats_type_filter_rule_v01,
2325 num_packets),
2326 },
2327 {
2328 .data_type = QMI_EOTI,
2329 .is_array = NO_ARRAY,
2330 .tlv_type = QMI_COMMON_TLV_TYPE,
2331 },
2332};
2333
2334struct elem_info ipa3_get_data_stats_resp_msg_data_v01_ei[] = {
2335 {
2336 .data_type = QMI_STRUCT,
2337 .elem_len = 1,
2338 .elem_size = sizeof(struct qmi_response_type_v01),
2339 .is_array = NO_ARRAY,
2340 .tlv_type = 0x02,
2341 .offset = offsetof(
2342 struct ipa_get_data_stats_resp_msg_v01,
2343 resp),
2344 .ei_array = get_qmi_response_type_v01_ei(),
2345 },
2346 {
2347 .data_type = QMI_OPT_FLAG,
2348 .elem_len = 1,
2349 .elem_size = sizeof(uint8_t),
2350 .is_array = NO_ARRAY,
2351 .tlv_type = 0x10,
2352 .offset = offsetof(
2353 struct ipa_get_data_stats_resp_msg_v01,
2354 ipa_stats_type_valid),
2355 },
2356 {
2357 .data_type = QMI_SIGNED_4_BYTE_ENUM,
2358 .elem_len = 1,
2359 .elem_size = sizeof(uint32_t),
2360 .is_array = NO_ARRAY,
2361 .tlv_type = 0x10,
2362 .offset = offsetof(
2363 struct ipa_get_data_stats_resp_msg_v01,
2364 ipa_stats_type),
2365 },
2366 {
2367 .data_type = QMI_OPT_FLAG,
2368 .elem_len = 1,
2369 .elem_size = sizeof(uint8_t),
2370 .is_array = NO_ARRAY,
2371 .tlv_type = 0x11,
2372 .offset = offsetof(
2373 struct ipa_get_data_stats_resp_msg_v01,
2374 ul_src_pipe_stats_list_valid),
2375 },
2376 {
2377 .data_type = QMI_DATA_LEN,
2378 .elem_len = 1,
2379 .elem_size = sizeof(uint8_t),
2380 .is_array = NO_ARRAY,
2381 .tlv_type = 0x11,
2382 .offset = offsetof(
2383 struct ipa_get_data_stats_resp_msg_v01,
2384 ul_src_pipe_stats_list_len),
2385 },
2386 {
2387 .data_type = QMI_STRUCT,
2388 .elem_len = QMI_IPA_MAX_PIPES_V01,
2389 .elem_size = sizeof(struct ipa_pipe_stats_info_type_v01),
2390 .is_array = VAR_LEN_ARRAY,
2391 .tlv_type = 0x11,
2392 .offset = offsetof(
2393 struct ipa_get_data_stats_resp_msg_v01,
2394 ul_src_pipe_stats_list),
2395 .ei_array = ipa3_pipe_stats_info_type_data_v01_ei,
2396 },
2397 {
2398 .data_type = QMI_OPT_FLAG,
2399 .elem_len = 1,
2400 .elem_size = sizeof(uint8_t),
2401 .is_array = NO_ARRAY,
2402 .tlv_type = 0x12,
2403 .offset = offsetof(
2404 struct ipa_get_data_stats_resp_msg_v01,
2405 dl_dst_pipe_stats_list_valid),
2406 },
2407 {
2408 .data_type = QMI_DATA_LEN,
2409 .elem_len = 1,
2410 .elem_size = sizeof(uint8_t),
2411 .is_array = NO_ARRAY,
2412 .tlv_type = 0x12,
2413 .offset = offsetof(
2414 struct ipa_get_data_stats_resp_msg_v01,
2415 dl_dst_pipe_stats_list_len),
2416 },
2417 {
2418 .data_type = QMI_STRUCT,
2419 .elem_len = QMI_IPA_MAX_PIPES_V01,
2420 .elem_size = sizeof(struct ipa_pipe_stats_info_type_v01),
2421 .is_array = VAR_LEN_ARRAY,
2422 .tlv_type = 0x12,
2423 .offset = offsetof(
2424 struct ipa_get_data_stats_resp_msg_v01,
2425 dl_dst_pipe_stats_list),
2426 .ei_array = ipa3_pipe_stats_info_type_data_v01_ei,
2427 },
2428 {
2429 .data_type = QMI_OPT_FLAG,
2430 .elem_len = 1,
2431 .elem_size = sizeof(uint8_t),
2432 .is_array = NO_ARRAY,
2433 .tlv_type = 0x13,
2434 .offset = offsetof(
2435 struct ipa_get_data_stats_resp_msg_v01,
2436 dl_filter_rule_stats_list_valid),
2437 },
2438 {
2439 .data_type = QMI_DATA_LEN,
2440 .elem_len = 1,
2441 .elem_size = sizeof(uint8_t),
2442 .is_array = NO_ARRAY,
2443 .tlv_type = 0x13,
2444 .offset = offsetof(
2445 struct ipa_get_data_stats_resp_msg_v01,
2446 dl_filter_rule_stats_list_len),
2447 },
2448 {
2449 .data_type = QMI_STRUCT,
2450 .elem_len = QMI_IPA_MAX_FILTERS_V01,
2451 .elem_size = sizeof(struct ipa_pipe_stats_info_type_v01),
2452 .is_array = VAR_LEN_ARRAY,
2453 .tlv_type = 0x13,
2454 .offset = offsetof(
2455 struct ipa_get_data_stats_resp_msg_v01,
2456 dl_filter_rule_stats_list),
2457 .ei_array = ipa3_stats_type_filter_rule_data_v01_ei,
2458 },
2459 {
2460 .data_type = QMI_EOTI,
2461 .is_array = NO_ARRAY,
2462 .tlv_type = QMI_COMMON_TLV_TYPE,
2463 },
2464};
2465
2466static struct elem_info ipa3_apn_data_stats_info_type_data_v01_ei[] = {
2467 {
2468 .data_type = QMI_UNSIGNED_4_BYTE,
2469 .elem_len = 1,
2470 .elem_size = sizeof(uint32_t),
2471 .is_array = NO_ARRAY,
2472 .tlv_type = QMI_COMMON_TLV_TYPE,
2473 .offset = offsetof(struct
2474 ipa_apn_data_stats_info_type_v01,
2475 mux_id),
2476 },
2477 {
2478 .data_type = QMI_UNSIGNED_8_BYTE,
2479 .elem_len = 1,
2480 .elem_size = sizeof(uint64_t),
2481 .is_array = NO_ARRAY,
2482 .tlv_type = QMI_COMMON_TLV_TYPE,
2483 .offset = offsetof(struct
2484 ipa_apn_data_stats_info_type_v01,
2485 num_ul_packets),
2486 },
2487 {
2488 .data_type = QMI_UNSIGNED_8_BYTE,
2489 .elem_len = 1,
2490 .elem_size = sizeof(uint64_t),
2491 .is_array = NO_ARRAY,
2492 .tlv_type = QMI_COMMON_TLV_TYPE,
2493 .offset = offsetof(struct
2494 ipa_apn_data_stats_info_type_v01,
2495 num_ul_bytes),
2496 },
2497 {
2498 .data_type = QMI_UNSIGNED_8_BYTE,
2499 .elem_len = 1,
2500 .elem_size = sizeof(uint64_t),
2501 .is_array = NO_ARRAY,
2502 .tlv_type = QMI_COMMON_TLV_TYPE,
2503 .offset = offsetof(struct
2504 ipa_apn_data_stats_info_type_v01,
2505 num_dl_packets),
2506 },
2507 {
2508 .data_type = QMI_UNSIGNED_8_BYTE,
2509 .elem_len = 1,
2510 .elem_size = sizeof(uint64_t),
2511 .is_array = NO_ARRAY,
2512 .tlv_type = QMI_COMMON_TLV_TYPE,
2513 .offset = offsetof(struct
2514 ipa_apn_data_stats_info_type_v01,
2515 num_dl_bytes),
2516 },
2517 {
2518 .data_type = QMI_EOTI,
2519 .is_array = NO_ARRAY,
2520 .tlv_type = QMI_COMMON_TLV_TYPE,
2521 },
2522};
2523
2524struct elem_info ipa3_get_apn_data_stats_req_msg_data_v01_ei[] = {
2525 {
2526 .data_type = QMI_OPT_FLAG,
2527 .elem_len = 1,
2528 .elem_size = sizeof(uint8_t),
2529 .is_array = NO_ARRAY,
2530 .tlv_type = 0x10,
2531 .offset = offsetof(
2532 struct ipa_get_apn_data_stats_req_msg_v01,
2533 mux_id_list_valid),
2534 },
2535 {
2536 .data_type = QMI_DATA_LEN,
2537 .elem_len = 1,
2538 .elem_size = sizeof(uint8_t),
2539 .is_array = NO_ARRAY,
2540 .tlv_type = 0x10,
2541 .offset = offsetof(
2542 struct ipa_get_apn_data_stats_req_msg_v01,
2543 mux_id_list_len),
2544 },
2545 {
2546 .data_type = QMI_UNSIGNED_4_BYTE,
2547 .elem_len = QMI_IPA_MAX_APN_V01,
2548 .elem_size = sizeof(uint32_t),
2549 .is_array = VAR_LEN_ARRAY,
2550 .tlv_type = 0x10,
2551 .offset = offsetof(
2552 struct ipa_get_apn_data_stats_req_msg_v01,
2553 mux_id_list),
2554 },
2555 {
2556 .data_type = QMI_EOTI,
2557 .is_array = NO_ARRAY,
2558 .tlv_type = QMI_COMMON_TLV_TYPE,
2559 },
2560};
2561
2562struct elem_info ipa3_get_apn_data_stats_resp_msg_data_v01_ei[] = {
2563 {
2564 .data_type = QMI_STRUCT,
2565 .elem_len = 1,
2566 .elem_size = sizeof(struct qmi_response_type_v01),
2567 .is_array = NO_ARRAY,
2568 .tlv_type = 0x02,
2569 .offset = offsetof(
2570 struct ipa_get_apn_data_stats_resp_msg_v01,
2571 resp),
2572 .ei_array = get_qmi_response_type_v01_ei(),
2573 },
2574 {
2575 .data_type = QMI_OPT_FLAG,
2576 .elem_len = 1,
2577 .elem_size = sizeof(uint8_t),
2578 .is_array = NO_ARRAY,
2579 .tlv_type = 0x10,
2580 .offset = offsetof(
2581 struct ipa_get_apn_data_stats_resp_msg_v01,
2582 apn_data_stats_list_valid),
2583 },
2584 {
2585 .data_type = QMI_DATA_LEN,
2586 .elem_len = 1,
2587 .elem_size = sizeof(uint8_t),
2588 .is_array = NO_ARRAY,
2589 .tlv_type = 0x10,
2590 .offset = offsetof(
2591 struct ipa_get_apn_data_stats_resp_msg_v01,
2592 apn_data_stats_list_len),
2593 },
2594 {
2595 .data_type = QMI_STRUCT,
2596 .elem_len = QMI_IPA_MAX_APN_V01,
2597 .elem_size = sizeof(struct
2598 ipa_apn_data_stats_info_type_v01),
2599 .is_array = VAR_LEN_ARRAY,
2600 .tlv_type = 0x10,
2601 .offset = offsetof(
2602 struct ipa_get_apn_data_stats_resp_msg_v01,
2603 apn_data_stats_list),
2604 .ei_array = ipa3_apn_data_stats_info_type_data_v01_ei,
2605 },
2606 {
2607 .data_type = QMI_EOTI,
2608 .is_array = NO_ARRAY,
2609 .tlv_type = QMI_COMMON_TLV_TYPE,
2610 },
2611};
2612
2613static struct elem_info ipa3_data_usage_quota_info_type_data_v01_ei[] = {
2614 {
2615 .data_type = QMI_UNSIGNED_4_BYTE,
2616 .elem_len = 1,
2617 .elem_size = sizeof(uint32_t),
2618 .is_array = NO_ARRAY,
2619 .tlv_type = QMI_COMMON_TLV_TYPE,
2620 .offset = offsetof(struct
2621 ipa_data_usage_quota_info_type_v01,
2622 mux_id),
2623 },
2624 {
2625 .data_type = QMI_UNSIGNED_8_BYTE,
2626 .elem_len = 1,
2627 .elem_size = sizeof(uint64_t),
2628 .is_array = NO_ARRAY,
2629 .tlv_type = QMI_COMMON_TLV_TYPE,
2630 .offset = offsetof(struct
2631 ipa_data_usage_quota_info_type_v01,
2632 num_Mbytes),
2633 },
2634 {
2635 .data_type = QMI_EOTI,
2636 .is_array = NO_ARRAY,
2637 .tlv_type = QMI_COMMON_TLV_TYPE,
2638 },
2639};
2640
2641struct elem_info ipa3_set_data_usage_quota_req_msg_data_v01_ei[] = {
2642 {
2643 .data_type = QMI_OPT_FLAG,
2644 .elem_len = 1,
2645 .elem_size = sizeof(uint8_t),
2646 .is_array = NO_ARRAY,
2647 .tlv_type = 0x10,
2648 .offset = offsetof(
2649 struct ipa_set_data_usage_quota_req_msg_v01,
2650 apn_quota_list_valid),
2651 },
2652 {
2653 .data_type = QMI_DATA_LEN,
2654 .elem_len = 1,
2655 .elem_size = sizeof(uint8_t),
2656 .is_array = NO_ARRAY,
2657 .tlv_type = 0x10,
2658 .offset = offsetof(
2659 struct ipa_set_data_usage_quota_req_msg_v01,
2660 apn_quota_list_len),
2661 },
2662 {
2663 .data_type = QMI_STRUCT,
2664 .elem_len = QMI_IPA_MAX_APN_V01,
2665 .elem_size = sizeof(struct
2666 ipa_data_usage_quota_info_type_v01),
2667 .is_array = VAR_LEN_ARRAY,
2668 .tlv_type = 0x10,
2669 .offset = offsetof(
2670 struct ipa_set_data_usage_quota_req_msg_v01,
2671 apn_quota_list),
2672 .ei_array = ipa3_data_usage_quota_info_type_data_v01_ei,
2673 },
2674 {
2675 .data_type = QMI_EOTI,
2676 .is_array = NO_ARRAY,
2677 .tlv_type = QMI_COMMON_TLV_TYPE,
2678 },
2679};
2680
2681struct elem_info ipa3_set_data_usage_quota_resp_msg_data_v01_ei[] = {
2682 {
2683 .data_type = QMI_STRUCT,
2684 .elem_len = 1,
2685 .elem_size = sizeof(struct qmi_response_type_v01),
2686 .is_array = NO_ARRAY,
2687 .tlv_type = 0x02,
2688 .offset = offsetof(
2689 struct ipa_set_data_usage_quota_resp_msg_v01,
2690 resp),
2691 .ei_array = get_qmi_response_type_v01_ei(),
2692 },
2693 {
2694 .data_type = QMI_EOTI,
2695 .is_array = NO_ARRAY,
2696 .tlv_type = QMI_COMMON_TLV_TYPE,
2697 },
2698};
2699
2700struct elem_info ipa3_data_usage_quota_reached_ind_msg_data_v01_ei[] = {
2701 {
2702 .data_type = QMI_STRUCT,
2703 .elem_len = 1,
2704 .elem_size = sizeof(struct
2705 ipa_data_usage_quota_info_type_v01),
2706 .is_array = NO_ARRAY,
2707 .tlv_type = 0x01,
2708 .offset = offsetof(
2709 struct ipa_data_usage_quota_reached_ind_msg_v01,
2710 apn),
2711 .ei_array = ipa3_data_usage_quota_info_type_data_v01_ei,
2712 },
2713 {
2714 .data_type = QMI_EOTI,
2715 .is_array = NO_ARRAY,
2716 .tlv_type = QMI_COMMON_TLV_TYPE,
2717 },
2718};
2719
2720struct elem_info ipa3_stop_data_usage_quota_req_msg_data_v01_ei[] = {
2721 /* ipa_stop_data_usage_quota_req_msg is empty */
2722 {
2723 .data_type = QMI_EOTI,
2724 .is_array = NO_ARRAY,
2725 .tlv_type = QMI_COMMON_TLV_TYPE,
2726 },
2727};
2728
2729struct elem_info ipa3_stop_data_usage_quota_resp_msg_data_v01_ei[] = {
2730 {
2731 .data_type = QMI_STRUCT,
2732 .elem_len = 1,
2733 .elem_size = sizeof(struct qmi_response_type_v01),
2734 .is_array = NO_ARRAY,
2735 .tlv_type = 0x02,
2736 .offset = offsetof(
2737 struct ipa_stop_data_usage_quota_resp_msg_v01,
2738 resp),
2739 .ei_array = get_qmi_response_type_v01_ei(),
2740 },
2741 {
2742 .data_type = QMI_EOTI,
2743 .is_array = NO_ARRAY,
2744 .tlv_type = QMI_COMMON_TLV_TYPE,
2745 },
2746};
Amir Levy664bda32017-02-15 18:21:25 +02002747
2748struct elem_info ipa3_install_fltr_rule_req_ex_msg_data_v01_ei[] = {
2749 {
2750 .data_type = QMI_OPT_FLAG,
2751 .elem_len = 1,
2752 .elem_size = sizeof(uint8_t),
2753 .is_array = NO_ARRAY,
2754 .tlv_type = 0x10,
2755 .offset = offsetof(
2756 struct ipa_install_fltr_rule_req_ex_msg_v01,
2757 filter_spec_ex_list_valid),
2758 },
2759 {
2760 .data_type = QMI_DATA_LEN,
2761 .elem_len = 1,
2762 .elem_size = sizeof(uint8_t),
2763 .is_array = NO_ARRAY,
2764 .tlv_type = 0x10,
2765 .offset = offsetof(
2766 struct ipa_install_fltr_rule_req_ex_msg_v01,
2767 filter_spec_ex_list_len),
2768 },
2769 {
2770 .data_type = QMI_STRUCT,
2771 .elem_len = QMI_IPA_MAX_FILTERS_EX_V01,
2772 .elem_size = sizeof(struct
2773 ipa_filter_spec_ex_type_v01),
2774 .is_array = VAR_LEN_ARRAY,
2775 .tlv_type = 0x10,
2776 .offset = offsetof(
2777 struct ipa_install_fltr_rule_req_ex_msg_v01,
2778 filter_spec_ex_list),
2779 .ei_array = ipa_filter_spec_ex_type_data_v01_ei,
2780 },
2781 {
2782 .data_type = QMI_OPT_FLAG,
2783 .elem_len = 1,
2784 .elem_size = sizeof(uint8_t),
2785 .is_array = NO_ARRAY,
2786 .tlv_type = 0x11,
2787 .offset = offsetof(
2788 struct ipa_install_fltr_rule_req_ex_msg_v01,
2789 source_pipe_index_valid),
2790 },
2791 {
2792 .data_type = QMI_UNSIGNED_4_BYTE,
2793 .elem_len = 1,
2794 .elem_size = sizeof(uint32_t),
2795 .is_array = NO_ARRAY,
2796 .tlv_type = 0x11,
2797 .offset = offsetof(
2798 struct ipa_install_fltr_rule_req_ex_msg_v01,
2799 source_pipe_index),
2800 },
2801 {
2802 .data_type = QMI_OPT_FLAG,
2803 .elem_len = 1,
2804 .elem_size = sizeof(uint8_t),
2805 .is_array = NO_ARRAY,
2806 .tlv_type = 0x12,
2807 .offset = offsetof(
2808 struct ipa_install_fltr_rule_req_ex_msg_v01,
2809 num_ipv4_filters_valid),
2810 },
2811 {
2812 .data_type = QMI_UNSIGNED_4_BYTE,
2813 .elem_len = 1,
2814 .elem_size = sizeof(uint32_t),
2815 .is_array = NO_ARRAY,
2816 .tlv_type = 0x12,
2817 .offset = offsetof(
2818 struct ipa_install_fltr_rule_req_ex_msg_v01,
2819 num_ipv4_filters),
2820 },
2821 {
2822 .data_type = QMI_OPT_FLAG,
2823 .elem_len = 1,
2824 .elem_size = sizeof(uint8_t),
2825 .is_array = NO_ARRAY,
2826 .tlv_type = 0x13,
2827 .offset = offsetof(
2828 struct ipa_install_fltr_rule_req_ex_msg_v01,
2829 num_ipv6_filters_valid),
2830 },
2831 {
2832 .data_type = QMI_UNSIGNED_4_BYTE,
2833 .elem_len = 1,
2834 .elem_size = sizeof(uint32_t),
2835 .is_array = NO_ARRAY,
2836 .tlv_type = 0x13,
2837 .offset = offsetof(
2838 struct ipa_install_fltr_rule_req_ex_msg_v01,
2839 num_ipv6_filters),
2840 },
2841 {
2842 .data_type = QMI_OPT_FLAG,
2843 .elem_len = 1,
2844 .elem_size = sizeof(uint8_t),
2845 .is_array = NO_ARRAY,
2846 .tlv_type = 0x14,
2847 .offset = offsetof(
2848 struct ipa_install_fltr_rule_req_ex_msg_v01,
2849 xlat_filter_indices_list_valid),
2850 },
2851 {
2852 .data_type = QMI_DATA_LEN,
2853 .elem_len = 1,
2854 .elem_size = sizeof(uint8_t),
2855 .is_array = NO_ARRAY,
2856 .tlv_type = 0x14,
2857 .offset = offsetof(
2858 struct ipa_install_fltr_rule_req_ex_msg_v01,
2859 xlat_filter_indices_list_len),
2860 },
2861 {
2862 .data_type = QMI_UNSIGNED_4_BYTE,
2863 .elem_len = QMI_IPA_MAX_FILTERS_EX_V01,
2864 .elem_size = sizeof(uint32_t),
2865 .is_array = VAR_LEN_ARRAY,
2866 .tlv_type = 0x14,
2867 .offset = offsetof(
2868 struct ipa_install_fltr_rule_req_ex_msg_v01,
2869 xlat_filter_indices_list),
2870 },
2871 {
2872 .data_type = QMI_EOTI,
2873 .is_array = NO_ARRAY,
2874 .tlv_type = QMI_COMMON_TLV_TYPE,
2875 },
2876};
2877
2878struct elem_info ipa3_install_fltr_rule_resp_ex_msg_data_v01_ei[] = {
2879 {
2880 .data_type = QMI_STRUCT,
2881 .elem_len = 1,
2882 .elem_size = sizeof(struct qmi_response_type_v01),
2883 .is_array = NO_ARRAY,
2884 .tlv_type = 0x02,
2885 .offset = offsetof(
2886 struct ipa_install_fltr_rule_resp_ex_msg_v01,
2887 resp),
2888 .ei_array = get_qmi_response_type_v01_ei(),
2889 },
2890 {
2891 .data_type = QMI_OPT_FLAG,
2892 .elem_len = 1,
2893 .elem_size = sizeof(uint8_t),
2894 .is_array = NO_ARRAY,
2895 .tlv_type = 0x10,
2896 .offset = offsetof(
2897 struct ipa_install_fltr_rule_resp_ex_msg_v01,
2898 rule_id_valid),
2899 },
2900 {
2901 .data_type = QMI_DATA_LEN,
2902 .elem_len = 1,
2903 .elem_size = sizeof(uint8_t),
2904 .is_array = NO_ARRAY,
2905 .tlv_type = 0x10,
2906 .offset = offsetof(
2907 struct ipa_install_fltr_rule_resp_ex_msg_v01,
2908 rule_id_len),
2909 },
2910 {
2911 .data_type = QMI_UNSIGNED_4_BYTE,
2912 .elem_len = QMI_IPA_MAX_FILTERS_EX_V01,
2913 .elem_size = sizeof(uint32_t),
2914 .is_array = VAR_LEN_ARRAY,
2915 .tlv_type = 0x10,
2916 .offset = offsetof(
2917 struct ipa_install_fltr_rule_resp_ex_msg_v01,
2918 rule_id),
2919 },
2920 {
2921 .data_type = QMI_EOTI,
2922 .is_array = NO_ARRAY,
2923 .tlv_type = QMI_COMMON_TLV_TYPE,
2924 },
2925};