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) 2016 |
| 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 | * This Software is the property of VIA Telecom, Inc. and may only be used pursuant to a license from VIA Telecom, Inc. |
| 38 | * |
| 39 | * Any unauthorized use inconsistent with the terms of such license is strictly prohibited. |
| 40 | * |
| 41 | * Copyright (c) 2007-2010 VIA Telecom, Inc. All rights reserved. |
| 42 | * |
| 43 | *************************************************************/ |
| 44 | #ifndef _HLP_QOS_H_ |
| 45 | #define _HLP_QOS_H_ |
| 46 | /***************************************************************************** |
| 47 | * |
| 48 | * FILE NAME : hlpqos.h |
| 49 | * |
| 50 | * DESCRIPTION : This file contains function prototypes and other definitions |
| 51 | * for the QOS |
| 52 | * |
| 53 | * HISTORY : |
| 54 | * See Log at end of file |
| 55 | * |
| 56 | *****************************************************************************/ |
| 57 | |
| 58 | /*---------------------------------------------------------------------------- |
| 59 | * Include Files |
| 60 | ----------------------------------------------------------------------------*/ |
| 61 | #include "do_Qos.h" |
| 62 | /*---------------------------------------------------------------------------- |
| 63 | Defines And Macros |
| 64 | ----------------------------------------------------------------------------*/ |
| 65 | typedef enum |
| 66 | { |
| 67 | QosFileDirCreateErr, |
| 68 | FlowRequestErr, |
| 69 | FlowReleaseErr, |
| 70 | QosNegoFail, |
| 71 | ReservationOpFail, |
| 72 | RsvpCommonHdrDecErr, |
| 73 | RsvpCheckSumCalErr, |
| 74 | RsvpErrSpecNotReceived, |
| 75 | Rsvp3GPPObjNotReceived, |
| 76 | TFTIpAddrNotMatch, |
| 77 | RsvpMsgEncodeErr, |
| 78 | RsvpMsgDecodeErr, |
| 79 | RsvpDstPortErr, |
| 80 | ResvMsgBufFull, |
| 81 | RsvpInvalidMsgId, |
| 82 | RsvpInvalidTransId, |
| 83 | RsvpMsgLengthErr, |
| 84 | QoSCheckFail, |
| 85 | }QOMErrCodeT; |
| 86 | |
| 87 | typedef enum |
| 88 | { |
| 89 | TftNull, |
| 90 | TftToBeSent, |
| 91 | TftSent, |
| 92 | TftConfirmed |
| 93 | }ResvTftStatusT; |
| 94 | |
| 95 | typedef enum |
| 96 | { |
| 97 | QOS_INACTIVE, |
| 98 | QOS_IDLE, |
| 99 | QOS_WFR_CHECK_CONFIRM, |
| 100 | QOS_WFR_GRANT, |
| 101 | QOS_WFR_TFT_CONFIRM, |
| 102 | QOS_WFR_TFT_CONFIRM_NTWK_INIT, |
| 103 | QOS_WFR_TFT_REL_CONFIRM, |
| 104 | QOS_WFR_TFT_REL_CONFIRM_NTWK_INIT, |
| 105 | }QoMStateT; |
| 106 | |
| 107 | typedef enum |
| 108 | { |
| 109 | QOS_NOT_CHECKED, |
| 110 | QOS_CONFIRMED, |
| 111 | QOS_CHECKING |
| 112 | }QoMCheckStateT; |
| 113 | |
| 114 | typedef struct |
| 115 | { |
| 116 | QosSubBlobT QosSetInfo; |
| 117 | /* kal_uint8 MacFlowId; |
| 118 | kal_uint8 RlpState; |
| 119 | kal_uint8 RlpFlowNum; */ |
| 120 | kal_bool bReserved; |
| 121 | }QosTabelT; |
| 122 | |
| 123 | typedef struct |
| 124 | { |
| 125 | kal_uint8 Num; |
| 126 | kal_uint8 PdnId; |
| 127 | kal_uint8 Label[16]; |
| 128 | }QosPdnInfoT; |
| 129 | |
| 130 | typedef struct |
| 131 | { |
| 132 | kal_uint8 RlpFlowNum; |
| 133 | kal_uint8 cid; |
| 134 | ResvTftStatusT Status; |
| 135 | } ResvInfoT; |
| 136 | |
| 137 | typedef struct |
| 138 | { |
| 139 | kal_uint16 len;/* The length of this data*/ |
| 140 | kal_uint16 offset;/* The starting location for the data */ |
| 141 | CpBufferT *buffer;/* The buffer which makes up this data. This is a ptr */ |
| 142 | } RsvpDatapktT; |
| 143 | |
| 144 | typedef enum |
| 145 | { |
| 146 | PATH_MSG=1, |
| 147 | RESV_MSG, |
| 148 | PATHERR_MSG, |
| 149 | RESVERR_MSG, |
| 150 | PATHTEAR_MSG, |
| 151 | RESVTEAR_MSG, |
| 152 | RESVCONF_MSG |
| 153 | }RsvpMsgTypeT; |
| 154 | |
| 155 | typedef enum |
| 156 | { |
| 157 | TFTIPv4, |
| 158 | TFTIPv4Err, |
| 159 | TFTIPv6, |
| 160 | TFTIPv6Err, |
| 161 | HeaderRemoval, |
| 162 | HeaderRemovalErr, |
| 163 | ChannelTreatment, |
| 164 | ChannelTreatmentErr |
| 165 | }RsvpIETypeT; |
| 166 | |
| 167 | |
| 168 | |
| 169 | typedef enum |
| 170 | { |
| 171 | IP4SrcAdr_SubnetMask = 16, |
| 172 | IP4DstAdr_SubnetMask, |
| 173 | IP6SrcAdr_SubnetMask = 32, |
| 174 | IP6DstAdr_SubnetMask, |
| 175 | Protocol_NextHdr = 48, |
| 176 | Single_DstPort = 64, |
| 177 | DstPortRange, |
| 178 | Single_SrcPort = 80, |
| 179 | SrcPortRange, |
| 180 | SecurityParmInd = 96, |
| 181 | Tos_TrafficClass = 112, |
| 182 | Flow_Label = 128, |
| 183 | Type2RoutingHdr_PreLen, |
| 184 | HomeAdrOpt_PreLen |
| 185 | }TftPktFilterComponentIdT; |
| 186 | |
| 187 | typedef enum |
| 188 | { |
| 189 | ErrReserved, |
| 190 | PktFilterAddFailure, |
| 191 | PktFilterUnavailable, |
| 192 | UnsuccessfulTFTProcessing, |
| 193 | ChannelNotAvailable, |
| 194 | EvaluationPrecedenceContention, |
| 195 | TreatmentNotSupported, |
| 196 | PacketFilterReplaceFailure, |
| 197 | PersistencyLimitReached, |
| 198 | PersistencyNotAllowed, |
| 199 | UnauthorizedTFT, |
| 200 | MaxNumPktFilters, |
| 201 | AddToNonExistTFT, |
| 202 | UEUnsuccessfulTftProcess = 0x80, |
| 203 | InvalidIPAddress, |
| 204 | NotSupportProfileID, |
| 205 | InvalidPdnID, |
| 206 | }TftErrCodeT; |
| 207 | |
| 208 | typedef enum |
| 209 | { |
| 210 | QoSCheckSuccessfull, |
| 211 | QoSIsNotAuthorized, |
| 212 | }QoSCheckResultCodeT; |
| 213 | |
| 214 | typedef struct |
| 215 | { |
| 216 | kal_uint32 RsvpSnTransId; |
| 217 | kal_uint32 RsvpRvTransId; |
| 218 | kal_bool bTftCreated; |
| 219 | kal_bool bIpV4; |
| 220 | kal_uint32 SrcIpAddr[4]; |
| 221 | kal_uint32 DstIpAddr[4]; |
| 222 | }RsvpInfoT; |
| 223 | |
| 224 | typedef struct |
| 225 | { |
| 226 | RsvpDatapktT MsgPkt; |
| 227 | kal_uint8 NumOfPktList; |
| 228 | RlpFlowDirection Direction[MAX_TFT_NUM]; /*0 Forward, 1 Reverse*/ |
| 229 | kal_uint8 ResvLabel[MAX_TFT_NUM]; |
| 230 | kal_uint8 FilterIndex[MAX_TFT_NUM]; |
| 231 | kal_uint32 TransId; |
| 232 | kal_uint8 NumOfSend; |
| 233 | }RsvpResvMsgT; |
| 234 | |
| 235 | typedef struct |
| 236 | { |
| 237 | //ExeTimerT TimerCb; |
| 238 | kal_timerid TimerId; |
| 239 | kal_bool bActive; |
| 240 | }RsvpResvTimerT; |
| 241 | |
| 242 | typedef struct |
| 243 | { |
| 244 | TftOperationCodeT OpCode; |
| 245 | kal_uint8 Num; |
| 246 | RlpFlowDirection Direction[MAX_TFT_NUM]; |
| 247 | kal_uint8 Label[MAX_TFT_NUM]; |
| 248 | kal_uint8 FilterIndex[MAX_TFT_NUM]; |
| 249 | }ResvTftReqT; |
| 250 | |
| 251 | typedef struct |
| 252 | { |
| 253 | kal_uint8 PFType; |
| 254 | kal_uint8 length; |
| 255 | kal_uint8 PktComponent[200]; |
| 256 | kal_bool bTreatmentInc; |
| 257 | kal_uint8 PFT; /*Packet Filter Treatment*/ |
| 258 | kal_uint32 Hint; /*RFC3006 hint*/ |
| 259 | }QoMPktContentT; |
| 260 | |
| 261 | typedef struct |
| 262 | { |
| 263 | kal_uint8 FlowId; |
| 264 | kal_uint8 PrecedenceIndex;/*evaluation precedence index*/ |
| 265 | QoMPktContentT PktContent; |
| 266 | }QoMRsvpPktFilterT; |
| 267 | |
| 268 | typedef struct |
| 269 | { |
| 270 | kal_uint8 ReservationLabel; |
| 271 | kal_uint8 Priority; |
| 272 | kal_uint8 QoSSetNum; |
| 273 | kal_uint8 QosAttrSetId[MAX_SUPPORTED_QOS_BLOB_NUM];/*7 bits,should not be zero*/ |
| 274 | kal_uint16 FlowProfileId[MAX_SUPPORTED_QOS_BLOB_NUM]; |
| 275 | } QosRsvpSubBlobT; |
| 276 | |
| 277 | typedef struct |
| 278 | { |
| 279 | kal_uint8 PktFlterNum; |
| 280 | kal_uint8 bIPv4; |
| 281 | QoMRsvpPktFilterT PktFilter[MAX_TFT_NUM]; |
| 282 | kal_uint8 FlowNum; |
| 283 | QosRsvpSubBlobT QosBlob[MAX_TFT_NUM]; |
| 284 | }EhrpdResvMsgIEDataT; |
| 285 | |
| 286 | typedef struct |
| 287 | { |
| 288 | kal_uint8 num; |
| 289 | RlpFlowDirection Direction[2]; |
| 290 | TftOperationCodeT OpCode[2]; |
| 291 | EhrpdResvMsgIEDataT IEData[2]; |
| 292 | }ResvMsgIEListT; |
| 293 | |
| 294 | typedef struct |
| 295 | { |
| 296 | kal_uint8 num; |
| 297 | kal_uint8 Direction[MAX_CLIENT_NUM*2]; |
| 298 | kal_uint8 Label[MAX_CLIENT_NUM*2]; |
| 299 | kal_uint8 RsvpTimerId; |
| 300 | }ResvLabelInfoT; |
| 301 | /****************************************************************************/ |
| 302 | kal_bool QOMSetFwdQoSSubscribProfile(QosSubScriberProfileT* pSubProfile); |
| 303 | kal_bool QOMSetRevQoSSubscribProfile(QosSubScriberProfileT* pSubProfile); |
| 304 | void QOMInit(void); |
| 305 | void QOMSetRlpFlowProfile(void); |
| 306 | kal_bool QOMActivateQoSFlow(kal_uint8 Label, kal_uint8 Direction); |
| 307 | kal_bool QOMSendTFT(ResvTftReqT* pReq, kal_uint32 TransId); |
| 308 | kal_bool QOMGetRevSubscribQoSBlob(kal_uint8 Label,QosSubBlobT* pSubProfile); |
| 309 | kal_bool QOMGetFwdSubscribQoSBlob(kal_uint8 Label,QosSubBlobT* pSubProfile); |
| 310 | kal_uint8 QOMEncKKQoSRequest(RlpFlowDirection direction,kal_uint8 Label,kal_uint8* pData,QosSubBlobT* pSubBlob); |
| 311 | kal_uint8 QOMEncNullKKQoSRequest(RlpFlowDirection direction,kal_uint8 Label,kal_uint8* pData); |
| 312 | void HlpQoMSetSubscribQoSProfile(kal_bool eHRPD,kal_uint8 FlowNum, kal_uint8 PdnId, HlpQoSFlowInfoT* pFlow, kal_uint8 *pFlowId); |
| 313 | |
| 314 | kal_bool HlpQoMIsActive(void); |
| 315 | void QOMSetUpUDPConnection(void); |
| 316 | void QOMSetUpUDP6Connection(kal_uint8 PdnId); |
| 317 | void QOMSetMainConnAddr(kal_bool bIPv4, kal_uint32 *pSrcAddr, kal_uint32 *pDstAddr); |
| 318 | kal_bool HlpQOMReleaseTft(kal_uint8* pLabel, kal_uint8* pDirection, kal_uint8 Num); |
| 319 | kal_bool HlpQOMFlowRelease(kal_uint8* pLabel, kal_uint8* pDirection, kal_uint8 Num); |
| 320 | kal_bool HlpQoMFlowRenego(kal_uint8 Num, kal_uint8 *pLabel, kal_uint8* pDirec); |
| 321 | |
| 322 | /***************************************************************************** |
| 323 | * End of File |
| 324 | *****************************************************************************/ |
| 325 | #endif |
| 326 | |
| 327 | |
| 328 | |