blob: e7f6a74925b52f06781508aeb5551893fe8b202c [file] [log] [blame]
rjw6c1fd8f2022-11-30 14:33:01 +08001/*****************************************************************************
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 * ratdm_chlp_struct.h
40 *
41 * Project:
42 * --------
43 *
44 *
45 * Description:
46 * ------------
47 * This file is the interface between RATDM and HLP for C2K PDN data
48 *
49 * Author:
50 * -------
51 * -------
52 *
53 ******************************************************************************/
54
55#ifndef _RATDM_CHLP_STRUCT_H
56#define _RATDM_CHLP_STRUCT_H
57
58#include "kal_general_types.h"
59#include "kal_public_defs.h"
60
61/** length of next peer buffer pointer in peer buffer header */
62#define C2K_NDIS_PEER_BUFF_NEXT_POINTER_HEADER_LEN (sizeof(peer_buff_struct*))
63/** offset of next peer buffer pointer in peer buffer, started from peer buffer pointer */
64#define C2K_NDIS_PEER_BUFF_NEXT_POINTER_HEADER_OFFSET (sizeof(peer_buff_struct))
65/** in NDIS mode free header space length, now free header space stores only next peer buffer pointer */
66#define C2K_NDIS_PEER_BUFF_HEADER_LEN (C2K_NDIS_PEER_BUFF_NEXT_POINTER_HEADER_LEN)
67/** offset of PDU in peer buffer header, started from peer buffer pointer */
68#define C2K_NDIS_PEER_BUFF_PDU_OFFSET (C2K_NDIS_PEER_BUFF_NEXT_POINTER_HEADER_OFFSET + C2K_NDIS_PEER_BUFF_NEXT_POINTER_HEADER_LEN)
69/** extra bytes in NDIS mode to save memcpy in HLP PPP HA, allocated inside pdu area, before the real IP pdu data from UPCM
70 ** PPP_HEADER_OFFSET defined in pp_frame.h
71 */
72#define C2K_NDIS_UL_PPP_HEADER_RESERVE_LEN (8)
73/** offset of real PDU IP pdu data in peer buffer pdu, started from the pdu pointer allocated by flc */
74#define C2K_NDIS_UL_PDU_PPP_HEADER_OFFSET C2K_NDIS_UL_PPP_HEADER_RESERVE_LEN
75/** offset of UL real PDU IP data in peer buffer, started from peer buffer pointer */
76#define C2K_NDIS_PEER_BUFF_UL_PDU_IP_DATA_OFFSET (C2K_NDIS_PEER_BUFF_PDU_OFFSET + C2K_NDIS_UL_PDU_PPP_HEADER_OFFSET)
77/** offset of DL real PDU IP data in peer buffer, started from peer buffer pointer */
78#define C2K_NDIS_PEER_BUFF_DL_PDU_IP_DATA_OFFSET (C2K_NDIS_PEER_BUFF_PDU_OFFSET)
79/** offset of tailer in peer buffer, started from peer buffer pointer */
80#define C2K_NDIS_PEER_BUFF_TAILER_OFFSET(_peer_buff_ptr) (C2K_NDIS_PEER_BUFF_PDU_OFFSET+(_peer_buff_ptr)->pdu_len)
81/** alloc extra byte in NDIS mode for UL to store C2K air interface PDN ID */
82#define C2K_NDIS_UL_PEER_BUFF_TAILER_LEN (1)
83/** no extra byte in NDIS mode for DL is needed */
84#define C2K_NDIS_DL_PEER_BUFF_TAILER_LEN (0)
85
86/* get next pointer */
87#define C2K_NDIS_PEER_BUFF_GET_NEXT(_curr_node) (*(kal_uint32*)((kal_uint8 *)(_curr_node) + C2K_NDIS_PEER_BUFF_NEXT_POINTER_HEADER_OFFSET))
88/* link next pointer */
89#define C2K_NDIS_PEER_BUFF_SET_NEXT(_curr_node, _next_node) *(kal_uint32*)((kal_uint8 *)(_curr_node) + C2K_NDIS_PEER_BUFF_NEXT_POINTER_HEADER_OFFSET) = (kal_uint32)(_next_node)
90
91
92/* get c2k air interface PDN ID */
93#define C2K_NDIS_PEER_BUFF_UL_GET_PDN_ID(_curr_node) *((kal_uint8 *)(_curr_node) + C2K_NDIS_PEER_BUFF_TAILER_OFFSET(_curr_node))
94/* set c2k air interface PDN ID */
95#define C2K_NDIS_PEER_BUFF_UL_SET_PDN_ID(_curr_node, _pdn_id) *((kal_uint8 *)(_curr_node) + C2K_NDIS_PEER_BUFF_TAILER_OFFSET(_curr_node)) = (_pdn_id)
96
97/** C2K data status enum
98 * currently only dormant & connected are necessary
99 */
100typedef enum
101{
102 RATDM_C2K_DATA_STATUS_DORM,
103 RATDM_C2K_DATA_STATUS_CONNECTED,
104 RATDM_C2K_DATA_STATUS_MAX
105}ratdm_c2k_data_status_enum;
106
107/** C2K uplink data request
108 * This primitive is sent from RATDM carring IP packet in FLC2_C2K_REV_POOL buffer to HLP
109 * HLP need encode the IP packet into PPP frame which is delivered to C2K L2
110 */
111typedef struct
112{
113 /** ILM specific header. */
114 LOCAL_PARA_HDR
115
116 /** C2K air interface PDN ID, ranged in [0,14] */
117 kal_uint8 c2k_air_pdn_id;
118 /** indicate current data is from nml sit or pri sit. FALSE: nml; TRUE: pri */
119 kal_bool sit_flag;
120 /** pointer to peer buffer linked list head
121 * the 1st four bytes behind peer buffer_struct in free_header_space stores the pointer to the next list node
122 */
123 peer_buff_struct *peer_buffer_head_ptr;
124 /** pointer to peer buffer linked list tail */
125 peer_buff_struct *peer_buffer_tail_ptr;
126}ratdm_chlp_ul_data_req_struct;
127
128/** C2K downlink data indication
129 * This primitive is sent from HLP carring IP packet in FLC2_C2K_FWD_POOL buffer to RATDM
130 */
131typedef struct
132{
133 /** ILM specific header. */
134 LOCAL_PARA_HDR
135
136 /** C2K air interface PDN ID, ranged in [0,14] */
137 kal_uint8 c2k_air_pdn_id;
138 /** pointer to peer buffer linked list head
139 * the 1st four bytes behind peer buffer_struct in free_header_space stores the pointer to the next list node
140 */
141 peer_buff_struct *peer_buffer_head_ptr;
142 /** pointer to peer buffer linked list tail */
143 peer_buff_struct *peer_buffer_tail_ptr;
144}ratdm_chlp_dl_data_ind_struct;
145
146/** C2K data status indication
147 * This primitive is sent from HLP to RATDM to indicate current data status
148 */
149typedef struct
150{
151 /** ILM specific header. */
152 LOCAL_PARA_HDR
153
154 /** data status */
155 ratdm_c2k_data_status_enum data_status;
156}ratdm_chlp_data_status_ind_struct;
157
158/** UL buffer watermark indication
159 * This primitive is sent from FLC2 to HLP to indicate watermark reached
160 */
161typedef struct
162{
163 /** ILM specific header. */
164 LOCAL_PARA_HDR
165
166 /** true: on; false: off */
167 kal_bool flag;
168}ratdm_chlp_ul_buffer_status_ntf_struct;
169
170
171#ifdef __RATDM_UT__
172/* for MSG_ID_RATDM_UT_UPCM_UL_DATA_REQ */
173typedef struct
174{
175 /** ILM specific header. */
176 LOCAL_PARA_HDR
177
178 kal_uint8 nsapi;
179
180 /* SIT table, data is in message's peer buffer */
181 kal_uint32 sit_idx;
182
183 kal_uint32 pri_start;
184 kal_uint32 pri_num;
185 kal_uint32 pri_sz;
186
187 kal_uint32 nml_start;
188 kal_uint32 nml_num;
189 kal_uint32 nml_sz;
190}ratdm_ut_upcm_ul_data_req_struct;
191
192typedef enum
193{
194 RATDM_UT_C2K_UL_FC_SET_BEFORE_MSG_RECV,
195 RATDM_UT_C2K_UL_FC_SET_DURING_DATA_PARSE_LOOP
196}ratdm_ut_c2k_ul_fc_set_mode_enum;
197
198/* for MSG_ID_RATDM_UT_C2K_FLC2_REV_BUF_STATUS_IND */
199typedef struct
200{
201 /** ILM specific header. */
202 LOCAL_PARA_HDR
203
204 /* reuse this message for ul flow control
205 * to avoid db update in compile cgen fail
206 * TRUE, hwm reached, ul flow control on
207 * FALSE, lwm reached, ul flow control off
208 */
209 kal_bool fc_status;
210
211 ratdm_ut_c2k_ul_fc_set_mode_enum ul_fc_set_mode;
212}ratdm_ut_c2k_flc2_rev_buf_status_ind_struct;
213#endif
214
215#endif /* _RATDM_CHLP_STRUCT_H */