blob: ab3625b9bc3aa92c71e3e48a2056a7444f6cbc52 [file] [log] [blame]
yu.dongc33b3072024-08-21 23:14:49 -07001/******************************************************************************
2* Copyright Statement:
3* --------------------
4* This software is protected by Copyright and the information contained
5* herein is confidential. The software may not be copied and the information
6* contained herein may not be used or disclosed except with the written
7* permission of MediaTek Inc. (C) 2005
8*
9* BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
10* THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
11* RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
12* AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
13* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
14* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
15* NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
16* SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
17* SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
18* THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
19* NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
20* SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
21*
22* BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
23* LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
24* AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
25* OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
26* MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
27*
28* THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
29* WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
30* LAWS PRINCIPLES. ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
31* RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
32* THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
33*
34*****************************************************************************/
35
36/********************************************************************************
37 * Filename:
38 * ---------
39 * ipc_struct.h
40 *
41 * Project:
42 * --------
43 * TATAKA
44 *
45 * Description:
46 * ------------
47 * IP Core ILM structure and interface definition.
48 *
49 * Author:
50 * -------
51 * -------
52 *
53 *==============================================================================
54 * HISTORY
55 * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
56 *------------------------------------------------------------------------------
57 * removed!
58 *
59 * removed!
60 * removed!
61 * removed!
62 * removed!
63 *
64 * removed!
65 * removed!
66 * removed!
67 * removed!
68 * removed!
69 * removed!
70 * removed!
71 * removed!
72 *
73 * removed!
74 * removed!
75 * removed!
76 * removed!
77 *
78 * removed!
79 * removed!
80 * removed!
81 * removed!
82 *
83 * removed!
84 * removed!
85 * removed!
86 *
87 * removed!
88 * removed!
89 * removed!
90 * removed!
91 *
92 * removed!
93 * removed!
94 * removed!
95 * removed!
96 * removed!
97 * removed!
98 * removed!
99 *
100 * removed!
101 * removed!
102 * removed!
103 * removed!
104 *
105 * removed!
106 * removed!
107 * removed!
108 *
109 * removed!
110 * removed!
111 * removed!
112 *
113 * removed!
114 * removed!
115 * removed!
116 *
117 * removed!
118 * removed!
119 * removed!
120 *
121 * removed!
122 * removed!
123 * removed!
124 *
125 * removed!
126 * removed!
127 * removed!
128 *
129 * removed!
130 * removed!
131 * removed!
132 *
133 * removed!
134 * removed!
135 * removed!
136 *
137 * removed!
138 * removed!
139 * removed!
140 *
141 * removed!
142 * removed!
143 *
144 * removed!
145 *
146 * removed!
147 * removed!
148 * removed!
149 *
150 * removed!
151 * removed!
152 * removed!
153 *
154 * removed!
155 * removed!
156 * removed!
157 * removed!
158 * removed!
159 *
160 * removed!
161 * removed!
162 * removed!
163 * removed!
164 *
165 * removed!
166 * removed!
167 * removed!
168 *
169 * removed!
170 * removed!
171 * removed!
172 * removed!
173 * removed!
174 * removed!
175 * removed!
176 *
177 *
178 * removed!
179 * removed!
180 * removed!
181 * removed!
182 * removed!
183 *
184 * removed!
185 * removed!
186 * removed!
187 * removed!
188 * removed!
189 *
190 * removed!
191 * removed!
192 * removed!
193 * removed!
194 * removed!
195 *
196 * removed!
197 * removed!
198 * removed!
199 *
200 * removed!
201 * removed!
202 * removed!
203 * removed!
204 *
205 * removed!
206 * removed!
207 * removed!
208 *
209 * removed!
210 * removed!
211 * removed!
212 *
213 * removed!
214 * removed!
215 * removed!
216 *
217 * removed!
218 * removed!
219 *
220 * removed!
221 * removed!
222 * removed!
223 * removed!
224 *
225 * removed!
226 * removed!
227 *------------------------------------------------------------------------------
228 * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
229 *==============================================================================
230 *******************************************************************************/
231#ifndef __INC_IPC_STRUCT_H
232#define __INC_IPC_STRUCT_H
233
234#include "kal_public_api.h"
235#include "ipcore_upcm_struct.h"
236#include "upcm_did.h"
237#include "ipc_defs_public.h"
238#include "ipc_enums.h"
239#include "qmu_bm_common.h"
240#include "hif_lhif.h"
241
242typedef struct _ipc_packet_info_t {
243 kal_uint32 info_valid_fields;
244 kal_uint32 src_addr[4];
245 kal_uint32 dst_addr[4];
246 kal_uint16 ipv4_checksum;
247 kal_uint16 src_port;
248 kal_uint16 dst_port;
249 kal_uint16 tcp_flags;
250 kal_uint16 l4_checksum;
251 kal_uint8 reserved[2];
252 kal_uint8 icmpv4_type;
253 kal_uint8 icmpv6_type;
254 kal_uint8 protocol;
255 /* The following are NOT included in valid_fields */
256 kal_bool fragment;
257 kal_bool need_reassemble;
258 kal_uint32 l4_offset;
259 kal_uint32 data_offset;
260 kal_uint32 netif_id;
261 kal_uint32 out_netif_id;
262 kal_uint32 ip_id; /**< IPv4/IPv6 IP ID */
263 kal_uint16 frag_payload_offset; /**< fragment offset */
264 kal_uint16 frag_payload_len; /**< Payload length: IPv4 frag payload lenght = total length - IPv4 HDR length, IPv6 frag payload lenght = payload length - all ext HDR lehgth before fragment >> HDR - fragment HDR lenght */
265 kal_uint8 frag_flag; /**< fragment flag: more fragment */
266 kal_uint16 frag_buffer_payload_offset; /**< buffer offset which is used to inidcate the start address of fragmented payload in GPD */
267 kal_uint32 spi;
268} ipc_packet_info_t;
269
270typedef struct _ipc_io_request_t {
271 struct _ipc_io_request_t *next_request;
272 qbm_gpd* first_gpd;
273 qbm_gpd* last_gpd;
274 kal_uint8 ip_type; /**< Type of IP datagrams, see IPC_IP_TYPE_XXX defined for valid values. */
275 kal_uint8 qos_priority; /**< Priority, valid from 0~7. */
276 kal_uint8 data_path_type; /**< reference ipc_io_req_data_path_e */
277 kal_uint8 reserved;
278} ipc_io_request_t;
279
280typedef struct _ipc_conf_t {
281 module_type module_id; /**< The module registering with IP CORE. */
282 kal_uint32 netif_id; /**< An index to identify instance of a specific module. For example, if module_id is MOD_ETHERCORE, netif_id is 0, it reprents for eth0. */
283 kal_uint32 features; /**< Each bit is set to enable an optional feature, see IPC_F_XXX for details. */
284
285 void *ul_reload_context; /**< Context to be passed in the callback function ipc_ul_reload_callback_t. */
286 kal_bool (*ipc_ul_reload_callback_t)(void *context); /**< Uplink reloading callback function. */
287
288 void *callback_context; /**< Context to be passed in the follow callback functions. */
289 kal_bool (*ipc_dlink_callback_t)(void *context, ipc_io_request_t *ior); /** Downlink callback function. */
290 kal_bool (*ipc_dlink_did_cb_t)(void *context, upcm_did *did); /** [Gen93] Downlink callback function. */
291} ipc_conf_t;
292
293typedef struct _ipc_frag_refilter_info_t {
294 kal_bool uplink;
295 kal_bool is_pkt_info;
296 kal_uint32 netif_id;
297 kal_uint32 pdn_id;
298 ipc_packet_info_t *packet_info;
299 kal_int32 filter_id;
300 kal_uint32 filter_magic_number;
301} ipc_frag_refilter_info_t;
302
303typedef struct _ipc_filter_info_t {
304 kal_uint32 netif_id; /**< Source Network interface ID */
305 kal_int32 ip_id; /**< ID to query corresponding NMU IP database */
306 kal_int16 ebi; /**< EBI that the packets came from (only valid for DL) */
307 kal_uint8 proto_idx; /**< Index for distinquish different SIM card (only valid when supporting Multiple PS feature */
308 kal_uint8 rsvd;
309 kal_uint32 data_offset; /**< The data offset to payload. (The length of IP TCP/UDP header) Requirement from TH.Cheng LTECSR 2014/11/11 */
310 void *src_desc_ptr; /**< Descriptor pointer */
311 kal_uint32 src_desc_type; /**< Descriptor type (please refer to ipc_fi_desc_type_e)*/
312 kal_uint32 src_desc_indx; /**< Descriptor internal index, for one descriptor containing more than one packets case. */
313} ipc_filter_info_t;
314
315/*
316 * Callback function to process the IP datagram filtered.
317 *
318 * @param context [IN] A context specified while registering the filter.
319 * @param filter_id [IN] Corresponding registered filter ID.
320 * @param head_gpd [IN] Pointer head of the GPD list for the IP datagram filtered.
321 * @param tail_gpd [IN] Pointer tail of the GPD list for the IP datagram filtered.
322 * @param length [IN] Bytes of buffers used in the GPD list.
323 */
324typedef void (*ipc_filter_callback_t)(void *context,
325 kal_int32 filter_id,
326 qbm_gpd *head_gpd,
327 qbm_gpd *tail_gpd,
328 kal_uint32 length);
329
330/*
331 * Callback function with packet information to process the IP datagram filtered.
332 *
333 * @param info_p [IN] Related information of filtered out GPDs.
334 * @param context [IN] A context specified while registering the filter.
335 * @param filter_id [IN] Corresponding registered filter ID.
336 * @param head_gpd [IN] Pointer head of the GPD list for the IP datagram filtered.
337 * @param tail_gpd [IN] Pointer tail of the GPD list for the IP datagram filtered.
338 * @param length [IN] Bytes of buffers used in the GPD list.
339 */
340typedef void (*ipc_filter_with_info_callback_t)(ipc_filter_info_t *info_p,
341 void *context,
342 kal_int32 filter_id,
343 qbm_gpd *head_gpd,
344 qbm_gpd *tail_gpd,
345 kal_uint32 length);
346
347/**
348 * Customized Callback function to process the IP datagram filtered.
349 *
350 * @param p_pkt matched filter packet content
351 * @param pkt_len packet length
352 * @param filter_id the filter id which was registered before
353 * @param p_args customized filter callback function arguments
354 *
355 * @return KAL_TRUE means packet was matched; otherwise KAL_FALSE
356 */
357
358typedef kal_bool (*ipc_filter_cust_cbk)(const kal_uint8 *p_pkt,
359 kal_int32 pkt_len,
360 kal_int32 filter_id,
361 void *p_args);
362
363typedef struct _ipc_filter_rules_t {
364 kal_uint16 features; /**< Union of to indicate which type of filter it is. */
365 kal_uint16 priority; /**< Priority will affect the order of filter rules when performing filtering. */
366 kal_uint32 valid_fields; /**< Union of IPC_FILTER_BY_XXX to indicate which fields in this structure are valid. */
367 kal_uint32 netif_id; /**< Network interface ID to filter. */
368 kal_uint32 pdn_id; /**< [downlink filter ONLY] PDN ID to filter. */
369 kal_uint32 ebi; /**< [downlink filter ONLY] EBI/NSAPI to filter. */
370 kal_uint8 proto_idx; /**< [downlink filter ONLY] Multiple PS use only. */
371 kal_uint8 protocol; /**< The protocol used in the data portion of the IP datagram to filter. */
372
373 kal_uint16 src_port; /**< Source port number to filter. */
374 kal_uint16 dst_port; /**< Destination port number to filter. */
375 kal_uint16 tcp_flags; /**< TCP flags of TCP to filter. */
376 kal_uint32 spi; /**< Security Parameter Index. */
377
378 union {
379 kal_uint8 addr8[4];
380 kal_uint32 addr32;
381 } src_ipv4; /**< Source IPv4 address to filter. */
382 union {
383 kal_uint8 addr8[4];
384 kal_uint32 addr32;
385 } dst_ipv4; /**< Destination IPv4 address to filter. */
386
387 union {
388 kal_uint8 addr8[16];
389 kal_uint32 addr32[4];
390 } src_ipv6; /**< Source IPv6 address to filter. */
391 union {
392 kal_uint8 addr8[16];
393 kal_uint32 addr32[4];
394 } dst_ipv6; /**< Destination IPv6 address to filter. */
395
396 kal_uint8 ip_type; /**< Type of IP traffic the filter to apply, see IPC_IP_TYPE_XXX defined for valid values. */
397 kal_uint8 icmpv4_type; /**< Type field of ICMPv4 header to filter. */
398 kal_uint8 icmpv6_type; /**< Type field of ICMPv6 header to filter. */
399 kal_uint8 reserved;
400 ipc_filter_cust_cbk cust_cbk_func;
401 void *p_cust_cbk_args;
402} ipc_filter_rules_t;
403
404#define IPC_NEXT_FILTER_MAP_SIZE 2
405typedef struct _ipc_filter_t ipc_filter_t;
406typedef struct _ipc_filter_t {
407 kal_int32 filter_id;
408 ipc_filter_rules_t rules;
409 kal_bool callback_with_info;
410 void *callback_func;
411 void *callback_context;
412 module_type module_id;
413 kal_uint8 is_updated_to_list;
414 kal_uint8 rsvd[1];
415 void *module_context;
416 ipc_filter_t *next_filter_map[IPC_NEXT_FILTER_MAP_SIZE];
417 ipc_filter_cust_cbk cust_cbk_func;
418 void *p_cust_cbk_args;
419 kal_bool is_bypass_sync_hw;
420} ipc_filter_t;
421
422typedef struct _ipc_hdr_t {
423 kal_uint8 ip_type; /**< Type of IP datagrams, see IPC_IP_TYPE_XXX defined for valid values. Note that only one of IPv4/IPv6 can be selected and MIX type is NOT allowed */
424 kal_uint8 *src_addr; /**< Source IP Address, length of this pointer is decided by ip_type field */
425 kal_uint8 *dst_addr; /**< Destination IP Address, length of this pointer is decided by ip_type field */
426 kal_uint16 src_port; /**< Source Port Number */
427 kal_uint16 dst_port; /**< Destination Port Number */
428 kal_uint8 dscp_tc; /**< DSCP & ECN(IPv4) or Traffic Class(IPv6) field */
429} ipc_hdr_t;
430
431typedef void * ipc_handle_t;
432
433/**
434 * UPCM will fill DL info only on head GPD's SW control Info.
435 * user use QBM_DES_GET_SW_CTRL_FIELD(_p) to get this structure
436 */
437typedef struct
438{
439 kal_uint8 ebi;
440 kal_uint8 flow:4;
441 kal_uint8 reserved:4;
442 kal_uint16 psn;
443}ipc_gpd_extra_info_t;
444
445/** Local parameter structure for MSG_ID_IPCORE_LINK_UP_IND / MSG_ID_IPCORE_IP_UP_IND / MSG_ID_IPCORE_LINK_UP_RSP / MSG_ID_IPCORE_IP_UP_RSP. */
446typedef struct _ipc_link_handshake_msg_t {
447 LOCAL_PARA_HDR
448 kal_uint32 netif_id; /**< Unique ID to identified corresponding host network interface */
449 kal_int32 ip_id; /**< ID to query corresponding NMU IP database */
450 kal_uint8 ip_type; /**< Type of IP datagrams, see IPC_IP_TYPE_XXX defined for valid values. */
451 kal_uint8 rsvd[3];
452} ipc_link_handshake_msg_t;
453
454/** Local parameter structure for MSG_ID_IPCORE_LINK_UP_REQ / MSG_ID_IPCORE_LINK_DOWN_REQ / MSG_ID_IPCORE_IP_UP_REQ / MSG_ID_IPCORE_IP_DOWN_REQ. */
455typedef struct _ipc_link_req_t {
456 LOCAL_PARA_HDR
457 void *callback_context; /**< Context registered in to ipc_attach(). */
458 kal_uint8 ip_type; /**< Type of IP datagrams, see IPC_IP_TYPE_XXX defined for valid values. */
459 kal_uint8 rsvd[3];
460 ipc_link_req_type_e req_type;
461} ipc_link_req_t;
462
463/** Local parameter structure for MSG_ID_IPCORE_LHIFCORE_QUEUE_MAPPING_REQ/RSP. */
464typedef struct _ipc_lhifcore_q_mapping_msg_t {
465 LOCAL_PARA_HDR
466 ipcore_upcm_pdn_bind_ind_struct bind_ind; /**< PDN binding information */
467 module_type bind_src_mod_id; /**< PDN binding ILM src module ID */
468 kal_uint32 netif_features; /**< Binding netif features */
469 void *callback_context; /**< Context registered in to ipc_attach(). */
470 ipc_netif_type_e netif_type; /**< Type of netif for ccmni queue mapping, see ipc_netif_type_e defined for valid values */
471 kal_bool result; /**< The result of dynamic queue mapping */
472} ipc_lhifcore_q_mapping_msg_t;
473
474/** Local parameter structure for MSG_ID_IPCORE_DL_PACKET_FILTERED_REQ and MSG_ID_IPCORE_UL_PACKET_FILTERED_REQ. */
475typedef struct _ipc_packet_filtered_req_t
476{
477 LOCAL_PARA_HDR
478 void *context;
479 kal_int32 filter_id;
480 void *head_gpd;
481 void *tail_gpd;
482 kal_uint32 length;
483} ipc_packet_filtered_req_t;
484
485/** Local parameter structure for MSG_ID_IPCORE_DL_PACKET_FILTERED_WITH_INFO_REQ and MSG_ID_IPCORE_UL_PACKET_FILTERED_WITH_INFO_REQ. */
486typedef struct _ipc_packet_filtered_with_info_req_t
487{
488 LOCAL_PARA_HDR
489 ipc_filter_info_t info;
490 void *context;
491 kal_int32 filter_id;
492 void *head_gpd;
493 void *tail_gpd;
494 kal_uint32 length;
495} ipc_packet_filtered_with_info_req_t;
496
497/** Local parameter structure for MSG_ID_IPCORE_QUERY_INFO_CNF. */
498typedef struct _ipc_netif_info_t
499{
500 kal_uint32 netif_id; /** Unique ID for corresponding host network interface */
501} ipc_netif_info_t;
502
503typedef struct _ipc_netif_list_t
504{
505 kal_uint32 netif_cnt; /**< Attached netif count */
506 ipc_netif_info_t list[IPC_MAX_NETIF_CNT]; /**< Information of each attached netif */
507} ipc_netif_list_t;
508
509typedef struct _ipc_query_info_t
510{
511 LOCAL_PARA_HDR
512 ipc_netif_list_t netif; /** Network interface information */
513} ipc_query_info_t;
514
515/** Parameter for IP CORE status change notifications */
516typedef struct _ipc_ntfy_param_t
517{
518 ipc_ntfy_type_e ntfy_type; /**< Notify type to indicate */
519 kal_int32 ntfy_id; /**< Notify ID allocated in ipc_register_ntfy(). */
520 void *context; /**< Context registered in ipc_register_ntfy(). */
521 kal_uint32 netif_id; /**< Unique ID to identified corresponding host network interface */
522 kal_int32 ip_id; /**< ID to query corresponding NMU IP database */
523} ipc_ntfy_param_t;
524
525/** Local parameter structure for MSG_ID_LMS_NETIF_ATTACH */
526typedef struct _lms_ipc_ntfy_t {
527 LOCAL_PARA_HDR
528 ipc_ntfy_param_t ipc_ntfy_para;
529} lms_ipc_ntfy_t;
530
531/*
532 * Callback function to notify IPCore notification.
533 *
534 * @param param [IN] Parameter to notify registered module.
535 */
536typedef void (*ipc_ntfy_callback_t)(ipc_ntfy_param_t *param);
537
538/** Parameter for IPCore UL throttle configuration */
539typedef struct _ipc_ul_throttle_conf_t
540{
541 kal_uint8 enabled; /**< 0 to disable IPCORE UL throttle mechanism; otherwise, others to enable. */
542 kal_uint8 active_period_100ms; /**< active period of UL throttle, minimum unit: 100ms.*/
543 kal_uint8 suspend_period_100ms; /**< suspend period of UL throttle, minimum unit: 100ms.*/
544 kal_uint8 features; /**< feature option of UL throttle, please refer IPC_THROTTLE_FEATURE_XX */
545} ipc_ul_throttle_conf_t;
546
547/** Local parameter structure for MSG_ID_IPCORE_SET_UL_THROTTLE */
548typedef struct _ipc_set_ul_throttle_param_t {
549 LOCAL_PARA_HDR
550 ipc_ul_throttle_conf_t conf;
551} ipc_set_ul_throttle_param_t;
552
553/** Local EM structure for MSG_ID_EM_IPC_UL_THROTTLE_STATUS_IND */
554typedef struct _em_ipc_ul_throttle_status_ind_struct_t
555{
556 LOCAL_PARA_HDR
557 ipc_ul_throttle_state_e throttle_state;
558 ipc_ul_throttle_conf_t throttle_conf;
559} em_ipc_ul_throttle_status_ind_struct_t;
560
561/** Local parameter structure for MSG_ID_IPCORE_VDM_IMS_EMERGENCY_CALL_IND */
562typedef struct _ipc_vdm_ims_emergency_call_ind_struct_t
563{
564 LOCAL_PARA_HDR
565 kal_bool is_calling;
566} ipc_vdm_ims_emergency_call_ind_struct_t;
567
568/** Local parameter structure for MSG_ID_IPCORE_REGISTER_FILTER_REQ */
569typedef struct _ipc_register_filter_req_struct_t
570{
571 LOCAL_PARA_HDR
572 kal_int32 filter_id;
573 kal_bool data_path_direct;
574 kal_bool callback_with_info;
575 ipc_filter_rules_t rules;
576 void *callback_func;
577 void *callback_context;
578 module_type module_id;
579} ipc_register_filter_req_struct_t;
580
581/** Local parameter structure for MSG_ID_IPCORE_DEREGISTER_FILTER_REQ */
582typedef struct _ipc_deregister_filter_req_struct_t
583{
584 LOCAL_PARA_HDR
585 kal_int32 filter_id;
586} ipc_deregister_filter_req_struct_t;
587
588/** RQ rules structure */
589typedef struct _ipc_rq_info_t {
590 kal_bool is_ipv4;
591 kal_uint16 src_port;
592 kal_uint16 dst_port;
593 kal_uint32 spi;
594
595#define IPC_RQ_INFO_3_TUPLE (0x1 << 0)
596#define IPC_RQ_INFO_5_TUPLE (0x1 << 1)
597#define IPC_RQ_INFO_SPI (0x1 << 2)
598 kal_uint8 valid_field;
599 kal_uint8 qfi;
600 kal_uint8 protocol;
601 kal_uint8 psi;
602
603 union {
604 kal_uint8 addr8[4];
605 kal_uint32 addr32;
606 } src_ipv4;
607 union {
608 kal_uint8 addr8[4];
609 kal_uint32 addr32;
610 } dst_ipv4;
611
612 union {
613 kal_uint8 addr8[16];
614 kal_uint32 addr32[4];
615 } src_ipv6;
616 union {
617 kal_uint8 addr8[16];
618 kal_uint32 addr32[4];
619 } dst_ipv6;
620} ipc_rq_info_t;
621
622typedef struct _ipc_rq_info_ind_t {
623 PEER_BUFF_HDR
624 void *p_rq_info;
625} ipc_rq_info_ind_t;
626
627/* IPCore filter notification context */
628typedef struct _ipc_filter_ntfy_mode_t {
629 module_type cbk_mod;
630 ipc_filter_callback_t cbk_func;
631 ipc_filter_with_info_callback_t with_info_cbk_func;
632} ipc_filter_ntfy_mode_t;
633
634/* IPCore filter notification context */
635typedef struct _ipc_filter_ntfy_ctxt_t {
636 ipc_filter_ntfy_type_e ntfy_type;
637 ipc_filter_ntfy_mode_t ntfy_mod;
638 void *p_ntfy_args;
639} ipc_filter_ntfy_ctxt_t;
640
641typedef struct _ipc_restore_netif_struct_t {
642 LOCAL_PARA_HDR
643
644 kal_uint32 netif_id;
645 kal_uint8 ip_type;
646 kal_bool is_link_update;
647 kal_bool is_up;
648} ipc_restore_netif_struct_t;
649
650typedef struct _d2cm_ipcore_info_ind_struct
651{
652 LOCAL_PARA_HDR
653 kal_int32 netif_id;
654 kal_bool keep_ra;
655} d2cm_ipcore_info_ind_struct;
656
657typedef struct _ipc_data_usage_info_t {
658 kal_uint32 uplink_bytes;
659 kal_uint32 downlink_bytes;
660 kal_uint32 uplink_packets;
661 kal_uint32 downlink_packets;
662} ipc_data_usage_info_t;
663
664/**------------------------------------------------------------------------------
665 * DHL logging structure
666 *----------------------------------------------------------------------------*/
667/** typedef void ipcore_code_begin_struct; */
668typedef ipc_link_req_t ipcore_link_up_req_struct;
669typedef ipc_link_req_t ipcore_link_down_req_struct;
670typedef ipc_lhifcore_q_mapping_msg_t ipcore_lhifcore_queue_mapping_req_struct;
671typedef ipc_lhifcore_q_mapping_msg_t ipcore_lhifcore_queue_mapping_rsp_struct;
672/** typedef void lms_dl_sdu_struct; */
673typedef lms_ipc_ntfy_t lms_netif_attach_struct;
674/** typedef void ipcore_process_ul_queue_req_struct; */
675/** typedef void ipcore_retry_ul_reload_req_struct; */
676typedef ipc_packet_filtered_req_t ipcore_dl_packet_filtered_req_struct;
677typedef ipc_packet_filtered_req_t ipcore_ul_packet_filtered_req_struct;
678typedef ipc_link_req_t ipcore_ip_up_req_struct;
679typedef ipc_link_req_t ipcore_ip_down_req_struct;
680typedef ipc_link_handshake_msg_t ipcore_link_up_ind_struct;
681typedef ipc_link_handshake_msg_t ipcore_ip_up_ind_struct;
682typedef ipc_link_handshake_msg_t ipcore_link_up_rsp_struct;
683typedef ipc_link_handshake_msg_t ipcore_ip_up_rsp_struct;
684/** typedef void ipcore_query_info_req_struct; */
685typedef ipc_query_info_t ipcore_query_info_cnf_struct;
686typedef ipc_packet_filtered_with_info_req_t ipcore_dl_packet_filtered_with_info_req_struct;
687typedef ipc_packet_filtered_with_info_req_t ipcore_ul_packet_filtered_with_info_req_struct;
688typedef ipc_set_ul_throttle_param_t ipcore_set_ul_throttle_struct;
689typedef em_ipc_ul_throttle_status_ind_struct_t em_ipc_ul_throttle_status_ind_struct;
690typedef ipc_vdm_ims_emergency_call_ind_struct_t ipcore_vdm_ims_emergency_call_ind_struct;
691typedef ipc_register_filter_req_struct_t ipcore_register_filter_req_struct;
692typedef ipc_deregister_filter_req_struct_t ipcore_deregister_filter_req_struct;
693
694#endif /* __INC_IPC_STRUCT_H */