blob: 0ff8d3887af379b96770f040be4f4dfa0be8c6de [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) 2012
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 * nccmni.h
40 *
41 * Project:
42 * --------
43 * VMOLY
44 *
45 * Description:
46 * ------------
47 * NCCMNI interface header file
48 *
49 * Author:
50 * -------
51 * -------
52 *
53 * ==========================================================================
54 * $Log$
55 *
56 * 03 23 2020 actory.ou
57 * [MOLY00502858] [Gen97][Gen98] merge ccci channel id/runtime data id
58 * [19NOV][OA][NCCCIDEV] sync TTY/NCCMNI port table
59 *
60 * 02 24 2020 actory.ou
61 * [MOLY00474576] [Gen97] NCCMNI development
62 * [19NOV.DEV][OA] add sending API for proxy to send packet to sAP
63 *
64 *
65 ****************************************************************************/
66#ifndef _NCCMNI_IF_H
67#define _NCCMNI_IF_H
68
69#include "tcpip_struct.h"
70#include "iwlan_public_defs.h"
71
72typedef enum{
73 NCCMNI_NET_IF_MIN = 0,
74 NCCMNI_NET_IF_0 = NCCMNI_NET_IF_MIN,
75 NCCMNI_NET_IF_1,
76 NCCMNI_NET_IF_2,
77 NCCMNI_NET_IF_3,
78 NCCMNI_NET_IF_4,
79 NCCMNI_NET_IF_5,
80 NCCMNI_NET_IF_6,
81 NCCMNI_NET_IF_7,
82 NCCMNI_NET_IF_8,
83 NCCMNI_NET_IF_9,
84 NCCMNI_NET_IF_10,
85 NCCMNI_NET_IF_11,
86 NCCMNI_NET_IF_12,
87 NCCMNI_NET_IF_13,
88 NCCMNI_NET_IF_14,
89 NCCMNI_NET_IF_15,
90 NCCMNI_NET_IF_16,
91 NCCMNI_NET_IF_17,
92 NCCMNI_NET_IF_18,
93 NCCMNI_NET_IF_19,
94 NCCMNI_NET_IF_20,
95 NCCMNI_NET_IF_MAX,
96 NCCMNI_NET_IF_MAXBIT = 0xFF,
97} NCCMNI_NET_IF_E;
98
99typedef enum{
100 NCCMNI_PACKET_TYPE_BUFFER = 0, //support buffer mode only
101 NCCMNI_PACKET_TYPE_MAX,
102} NCCMNI_PACKET_TYPE_E;
103
104typedef struct{
105 NCCMNI_PACKET_TYPE_E pkt_type;
106
107 //if pkt type==NCCMNI_PACKET_TYPE_BUFFER
108 kal_uint8 *p_data;
109 kal_uint32 data_len;
110} NCCMNI_SEND_PACKET_T;
111
112kal_bool nccmni_send_dl_pkt(NCCMNI_SEND_PACKET_T *p_pkt, NCCMNI_NET_IF_E netif_id);
113
114//L5 -> NCCMNI
115
116#pragma pack(push)
117#pragma pack(4)
118// MSG_ID_L5_NCCMNI_REGFILTER_REQ
119typedef struct{
120 NCCMNI_NET_IF_E nccmni_net_if; //kal_uint8
121 kal_uint16 nccmni_seq;
122 kal_uint8 reserve1;
123 kal_uint32 valid_field; //mandatory, a bitmap, refer to IPC_FILTER_BY_XXX
124 kal_uint8 ip_type; //IPC_IP_TYPE_IPV4 or IPC_IP_TYPE_IPV6
125 kal_uint8 ctrl_protocol; //IPC_HDR_PROT_XXX
126 kal_uint16 src_port;
127 kal_uint16 dst_port;
128 kal_uint16 tcp_flags; //IPC_HDR_TCP_FLAG_XXX
129 kal_uint32 spi; //
130 union{
131 kal_uint8 addr8[4];
132 kal_uint32 addr32;
133 } src_ipv4; // Source IPv4 address to filter.
134 union{
135 kal_uint8 addr8[4];
136 kal_uint32 addr32;
137 } dst_ipv4; // Destination IPv4 address to filter.
138
139 union{
140 kal_uint8 addr8[16];
141 kal_uint32 addr32[4];
142 } src_ipv6; // Source IPv6 address to filter.
143 union{
144 kal_uint8 addr8[16];
145 kal_uint32 addr32[4];
146 } dst_ipv6; // Destination IPv6 address to filter.
147
148 kal_uint8 icmpv4_type; // Type field of ICMPv4 header to filter.
149 kal_uint8 icmpv6_type; // Type field of ICMPv6 header to filter.
150 kal_uint16 reserve2;
151} l5_nccmni_regfilter_req_struct;
152#pragma pack(pop)
153
154
155#pragma pack(push)
156#pragma pack(4)
157// MSG_ID_L5_NCCMNI_REGFILTER_CNF
158typedef struct{
159 NCCMNI_NET_IF_E nccmni_net_if; //kal_uint8
160 kal_uint16 nccmni_seq;
161 kal_uint8 reserve;
162 kal_int32 filter_id; //>=0: filter id, <0: set failed
163} l5_nccmni_regfilter_cnf_struct;
164#pragma pack(pop)
165
166
167#pragma pack(push)
168#pragma pack(4)
169// MSG_ID_L5_NCCMNI_DEREGFILTER_REQ
170typedef struct{
171 NCCMNI_NET_IF_E nccmni_net_if; //kal_uint8
172 kal_uint16 nccmni_seq;
173 kal_uint8 reserve;
174 kal_int32 is_deregister_all_filter; //0: deregister the filter id only, 1: deregister all filter
175 kal_int32 filter_id; //filter id to deregister
176} l5_nccmni_deregfilter_req_struct;
177#pragma pack(pop)
178
179
180#pragma pack(push)
181#pragma pack(4)
182// MSG_ID_L5_NCCMNI_DEREGFILTER_CNF
183typedef struct{
184 NCCMNI_NET_IF_E nccmni_net_if; //kal_uint8
185 kal_uint16 nccmni_seq;
186 kal_uint8 reserve;
187 kal_int32 is_success; //1: success
188} l5_nccmni_deregfilter_cnf_struct;
189#pragma pack(pop)
190
191
192// D2 --> NCCMNI
193
194#define D2_NCCMNI_REQ_LOCAL_PARA_HDR \
195 LOCAL_PARA_HDR \
196 kal_uint32 interface_id; /* transaction id + channel id */ \
197 iwlan_ran_e ran_type; /* iwlan_ran_e */
198
199// MSG_ID_D2_NCCMNI_ESTABLISHPDN_REQ
200typedef struct
201{
202 D2_NCCMNI_REQ_LOCAL_PARA_HDR
203
204 kal_uint32 netif_id; /* network_interface_id in net_info */
205 new_ip_info_struct ip_info;
206 kal_bool net_info_present;
207 tcpip_net_info_struct_t net_info;
208} d2_nccmni_establishpdn_req_struct;
209
210// MSG_ID_D2_NCCMNI_DISCONNECTPDN_REQ
211typedef struct
212{
213 D2_NCCMNI_REQ_LOCAL_PARA_HDR
214} d2_nccmni_disconnectpdn_req_struct;
215
216// MSG_ID_D2_NCCMNI_IFCHANGE_REQ
217typedef struct
218{
219 D2_NCCMNI_REQ_LOCAL_PARA_HDR
220
221 kal_uint32 event;
222 new_ip_info_struct ip_info;
223 kal_bool net_info_present;
224 tcpip_net_info_struct_t net_info;
225} d2_nccmni_ifchange_req_struct;
226
227
228// NCCMNI --> D2
229typedef enum
230{
231 NCCMNI_RES_SUCC = 0,
232 NCCMNI_RES_NONE = 1,
233 NCCMNI_RES_FAIL = 2,
234 NCCMNI_RES_MAX = 0x7FFFFFFF,
235} nccmni_res_enum;
236
237
238#define D2_NCCMNI_CNF_LOCAL_PARA_HDR \
239 LOCAL_PARA_HDR \
240 kal_uint32 interface_id; \
241 nccmni_res_enum res;
242
243typedef struct
244{
245 D2_NCCMNI_CNF_LOCAL_PARA_HDR
246} d2_nccmni_cnf_struct;
247
248
249// MSG_ID_D2_NCCMNI_ESTABLISHPDN_CNF
250typedef struct
251{
252 D2_NCCMNI_CNF_LOCAL_PARA_HDR
253
254 // kal_uint32 stkif_id;
255 // ipstk_ip_info_struct ipstk_ip_info;
256} d2_nccmni_establishpdn_cnf_struct;
257
258// MSG_ID_D2_NCCMNI_DISCONNECTPDN_CNF
259typedef struct
260{
261 D2_NCCMNI_CNF_LOCAL_PARA_HDR
262
263 // kal_uint32 stkif_id;
264} d2_nccmni_disconnectpdn_cnf_struct;
265
266// MSG_ID_D2_NCCMNI_IFCHANGE_CNF
267typedef struct
268{
269 D2_NCCMNI_CNF_LOCAL_PARA_HDR
270
271 // kal_uint32 stkif_id;
272 // ipstk_ip_info_struct ipstk_ip_info;
273} d2_nccmni_ifchange_cnf_struct;
274
275#endif //#ifndef _NCCMNI_IF_H