rjw | 6c1fd8f | 2022-11-30 14:33:01 +0800 | [diff] [blame^] | 1 | /***************************************************************************** |
| 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 | */ |
| 100 | typedef 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 | */ |
| 111 | typedef 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 | */ |
| 131 | typedef 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 | */ |
| 149 | typedef 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 | */ |
| 161 | typedef 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 */ |
| 173 | typedef 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 | |
| 192 | typedef 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 */ |
| 199 | typedef 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 */ |