blob: 7263d60d28f87b172eee31869aab813256f942a8 [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) 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/*----------------------------------------------------------------------------
63Defines And Macros
64----------------------------------------------------------------------------*/
65typedef 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
87typedef enum
88{
89 TftNull,
90 TftToBeSent,
91 TftSent,
92 TftConfirmed
93}ResvTftStatusT;
94
95typedef 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
107typedef enum
108{
109 QOS_NOT_CHECKED,
110 QOS_CONFIRMED,
111 QOS_CHECKING
112}QoMCheckStateT;
113
114typedef struct
115{
116 QosSubBlobT QosSetInfo;
117/* kal_uint8 MacFlowId;
118 kal_uint8 RlpState;
119 kal_uint8 RlpFlowNum; */
120 kal_bool bReserved;
121}QosTabelT;
122
123typedef struct
124{
125 kal_uint8 Num;
126 kal_uint8 PdnId;
127 kal_uint8 Label[16];
128}QosPdnInfoT;
129
130typedef struct
131{
132 kal_uint8 RlpFlowNum;
133 kal_uint8 cid;
134 ResvTftStatusT Status;
135} ResvInfoT;
136
137typedef 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
144typedef 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
155typedef enum
156{
157 TFTIPv4,
158 TFTIPv4Err,
159 TFTIPv6,
160 TFTIPv6Err,
161 HeaderRemoval,
162 HeaderRemovalErr,
163 ChannelTreatment,
164 ChannelTreatmentErr
165}RsvpIETypeT;
166
167
168
169typedef 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
187typedef 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
208typedef enum
209{
210 QoSCheckSuccessfull,
211 QoSIsNotAuthorized,
212}QoSCheckResultCodeT;
213
214typedef 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
224typedef 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
235typedef struct
236{
237 //ExeTimerT TimerCb;
238 kal_timerid TimerId;
239 kal_bool bActive;
240}RsvpResvTimerT;
241
242typedef 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
251typedef 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
261typedef struct
262{
263 kal_uint8 FlowId;
264 kal_uint8 PrecedenceIndex;/*evaluation precedence index*/
265 QoMPktContentT PktContent;
266}QoMRsvpPktFilterT;
267
268typedef 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
277typedef 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
286typedef struct
287{
288 kal_uint8 num;
289 RlpFlowDirection Direction[2];
290 TftOperationCodeT OpCode[2];
291 EhrpdResvMsgIEDataT IEData[2];
292}ResvMsgIEListT;
293
294typedef 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/****************************************************************************/
302kal_bool QOMSetFwdQoSSubscribProfile(QosSubScriberProfileT* pSubProfile);
303kal_bool QOMSetRevQoSSubscribProfile(QosSubScriberProfileT* pSubProfile);
304void QOMInit(void);
305void QOMSetRlpFlowProfile(void);
306kal_bool QOMActivateQoSFlow(kal_uint8 Label, kal_uint8 Direction);
307kal_bool QOMSendTFT(ResvTftReqT* pReq, kal_uint32 TransId);
308kal_bool QOMGetRevSubscribQoSBlob(kal_uint8 Label,QosSubBlobT* pSubProfile);
309kal_bool QOMGetFwdSubscribQoSBlob(kal_uint8 Label,QosSubBlobT* pSubProfile);
310kal_uint8 QOMEncKKQoSRequest(RlpFlowDirection direction,kal_uint8 Label,kal_uint8* pData,QosSubBlobT* pSubBlob);
311kal_uint8 QOMEncNullKKQoSRequest(RlpFlowDirection direction,kal_uint8 Label,kal_uint8* pData);
312void HlpQoMSetSubscribQoSProfile(kal_bool eHRPD,kal_uint8 FlowNum, kal_uint8 PdnId, HlpQoSFlowInfoT* pFlow, kal_uint8 *pFlowId);
313
314kal_bool HlpQoMIsActive(void);
315void QOMSetUpUDPConnection(void);
316void QOMSetUpUDP6Connection(kal_uint8 PdnId);
317void QOMSetMainConnAddr(kal_bool bIPv4, kal_uint32 *pSrcAddr, kal_uint32 *pDstAddr);
318kal_bool HlpQOMReleaseTft(kal_uint8* pLabel, kal_uint8* pDirection, kal_uint8 Num);
319kal_bool HlpQOMFlowRelease(kal_uint8* pLabel, kal_uint8* pDirection, kal_uint8 Num);
320kal_bool HlpQoMFlowRenego(kal_uint8 Num, kal_uint8 *pLabel, kal_uint8* pDirec);
321
322/*****************************************************************************
323* End of File
324*****************************************************************************/
325#endif
326
327
328