blob: dcdc4631aa876ae9aab2b022065e759d4262250d [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) 2006-2010 VIA Telecom, Inc. All rights reserved.
42*
43*************************************************************/
44#ifndef _PAR_RLP_H_
45#define _PAR_RLP_H_
46
47/*****************************************************************************
48*
49* FILE NAME : ParRlp.h
50*
51* DESCRIPTION : This file contains function prototypes and other definitions
52* for the Reverse RLP protocol
53*
54* HISTORY :
55* See Log at end of file
56*
57*****************************************************************************/
58
59/*----------------------------------------------------------------------------
60* Include Files
61----------------------------------------------------------------------------*/
62#include "sysdefs.h"
63#include "par.h"
64/*----------------------------------------------------------------------------
65Defines And Macros
66----------------------------------------------------------------------------*/
67#define RLP_RETXQ_PRIORITY 60
68#define RLP_TXQ_PRIORITY 70
69
70
71#define PAR_RLP_ABORT_TIMER_INTERVAL 500 /*500 ms for abort timer. */
72#define PAR_RLP_FLUSH_TIMER_INTERVAL 300
73
74
75
76/*----------------------------------------------------------------------------
77structure definitions
78----------------------------------------------------------------------------*/
79typedef enum
80{
81 RESV_CLOSE_ST,
82 RESV_OPEN_ST,
83 RESV_WFR_OPEN_ST,
84 RESV_WFR_CLOSE_ST,
85 RESV_MAX_ST
86}ParResrevationStateT;
87
88typedef enum
89{
90 RESV_OP_NULL,
91 RESV_OP_ONREQ,
92 RESV_OP_OFFREQ
93} ParReservationOperationTypeT;
94
95
96typedef struct
97{
98#if defined (RCP_RI_HRT_DEV)
99 kal_uint32 TimerCb;
100#else
101 kal_timerid TimerCb;
102#endif
103 kal_bool Active;
104} ParRlpFlushTimerT;
105
106#ifdef CBP7_EHRPD
107typedef struct
108{
109 kal_uint32 seq;
110 kal_uint8 RLPHdrLen;
111 kal_uint16 nAvailableBytes;
112} ParRlpNakCheckRecT;
113
114typedef struct
115{
116 kal_uint8 nAppType;
117 kal_uint8 nRLPFlow;
118} ParRlpMaxVsUpdateT;
119
120typedef struct
121{
122 kal_uint32 seq;
123 kal_uint32 range;
124 kal_bool bDeleteWhenSameSeq;
125} ParRlpTxQDeleteCheckT;
126#endif
127typedef struct
128{
129 kal_int32 EVDORevARevMFRLPStatsFlowId;
130 kal_uint32 EVDORevARevMFRLPStatsResetTime;
131 kal_int32 EVDORevARevMFRLPStatsRLPStatsNaksReceived;
132 kal_int32 EVDORevARevMFRLPStatsReXmitsNotFound;
133 kal_int64 EVDORevARevMFRLPStatsANNakBytesRequested;
134 kal_int64 EVDORevARevMFRLPStatsTxReXmitsBytes;
135 kal_int64 EVDORevARevMFRLPStatsTxNewDataBytes;
136 kal_int64 EVDORevARevMFRLPStatsTxTotalBytes;
137 kal_int32 EVDORevARevMFRLPStatsResetCount;
138 kal_int32 EVDORevARevMFRLPStatsATResetRequestCount;
139 kal_int32 EVDORevARevMFRLPStatsANResetAckCount;
140 kal_int32 EVDORevARevMFRLPStatsANResetRequestCount;
141} EVDORevARevMFRLPStatsMeasT;
142
143typedef struct
144{
145 EVDORevARevMFRLPStatsMeasT rlpMeas[MAX_RLP_FLOW_SUPPORTED];
146} EVDORevARevMFRLPStatsEventT;
147
148typedef struct
149{
150 kal_uint32 SysTime;
151 EVDORevARevMFRLPStatsMeasT rlpMeas[MAX_RLP_FLOW_SUPPORTED];
152} ParRlpStatPeekRspMsgT;
153
154/*----------------------------------------------------------------------------
155API Functions
156----------------------------------------------------------------------------*/
157void ParRlpInit(void);
158void ParRlpCommit(AppSubTypeT appType);
159void ParHlpRevDataMsgHandler(ParHlpDataTxMsgT *pMsg);
160void ParRlpAccessFlushTmExpireHandler(kal_uint32 TimerId);
161void ParRlpServiceFlushTmExpireHandler(kal_uint32 TimerId);
162void ParRlpResetTxIndicationAckProc (DsaFwdMsgT *pMsgData, kal_uint8 AppType);
163void ParRlpResetRxIndicationProc (DsaFwdMsgT *pMsgData, kal_uint8 AppType);
164void ParMfpaRlpNakProc (DsaFwdMsgT *pMsgData, kal_uint8 AppType);
165void ParDpaRlpNakProc (DsaFwdMsgT *pMsgData, ParRlpInstanceT *pRlpInst);
166void ParRlpResetProc (kal_uint16 ProtocolType,ParRlpInstanceT *pRlpInst);
167void ParRlpResetAckProc (kal_uint16 ProtocolType,ParRlpInstanceT *pRlpInst);
168void ParRlpInitialize(ParRlpInstanceT* pInst);
169void ParRlpStateSet(ParRlpInstanceT *pRlpInst, ParRlpStateT rlpState);
170ParRlpStateT ParRlpStateGet(ParRlpInstanceT *pRlpInst);
171void ParReservationAcceptMsgProc(kal_uint8* pData);
172void ParReservationRejectMsgProc(kal_uint8* pData);
173void ParRevReservationOnMsgProc(kal_uint8* pData);
174void ParRevReservationOffMsgProc(kal_uint8* pData);
175void ParFwdReservationOnMsgProc(kal_uint8* pData);
176void ParFwdReservationOffMsgProc(kal_uint8* pData);
177void ParRlpReservTmExpireMsgProc(void);
178void ParPafRlpResetReqMsgHandler(ParPafRlpResetReqMsgT *pMsg);
179void ParHlpRevDataSig(void);
180void ParHlpRevData2Sig(void);
181kal_bool ParRlpInsertRec2RetxQ(RetxInfoT* pInfo, ParRlpInstanceT *pRlpInst);
182kal_bool Compare2Seq(kal_uint32 Seq1, kal_uint32 Seq2, kal_uint32 SeqRange);
183kal_bool ParRlpTxQManage(ParRlpInstanceT* pInst);
184kal_bool ParDpaAccessGetMaxPriority(BestPktInfoT* pBestPkt,kal_uint8 subStreamNum);
185kal_bool ParDpaServiceGetMaxPriority(BestPktInfoT* pBestPkt,kal_uint8 subStreamNum);
186kal_uint16 ParDpaAccessGrant(DatapktlistGT* pPktList, kal_uint16 grantSize, kal_uint8 revMacId,kal_uint8 subStreamNum);
187kal_uint16 ParDpaServiceGrant(DatapktlistGT* pPktList, kal_uint16 grantSize, kal_uint8 revMacId,kal_uint8 subStreamNum);
188void ParDpaAccessPktSent(kal_uint8 revMacId,kal_uint8 subStreamNum);
189void ParMfpaAccessPktSent(kal_uint8 revMacId,kal_uint8 subStreamNum);
190void ParDpaServicePktSent(kal_uint8 revMacId,kal_uint8 subStreamNum);
191void ParMfpaServicePktSent(kal_uint8 revMacId,kal_uint8 subStreamNum);
192void ParDpaAccessPktNotSent(kal_uint8 revMacId,kal_uint8 subStreamNum);
193void ParMfpaAccessPktNotSent(kal_uint8 revMacId,kal_uint8 subStreamNum);
194void ParDpaServicePktNotSent(kal_uint8 revMacId,kal_uint8 subStreamNum);
195void ParMfpaServicePktNotSent(kal_uint8 revMacId,kal_uint8 subStreamNum);
196void ParDpaAccessPktPhyTrafficMissed(kal_uint8 revMacId,kal_uint8 subStreamNum);
197void ParMfpaAccessPktPhyTrafficMissed(kal_uint8 revMacId,kal_uint8 subStreamNum);
198void ParDpaServicePktPhyTrafficMissed(kal_uint8 revMacId,kal_uint8 subStreamNum);
199void ParMfpaServicePktPhyTrafficMissed(kal_uint8 revMacId,kal_uint8 subStreamNum);
200void ParDpaAccessPktPhyTrafficAcked(kal_uint8 revMacId,kal_uint8 subStreamNum);
201void ParMfpaAccessPktPhyTrafficAcked(kal_uint8 revMacId,kal_uint8 subStreamNum);
202void ParDpaServicePktPhyTrafficAcked(kal_uint8 revMacId,kal_uint8 subStreamNum);
203void ParMfpaServicePktPhyTrafficAcked(kal_uint8 revMacId,kal_uint8 subStreamNum);
204kal_uint16 ParMfpaAccessGrant(DatapktlistGT* pPktList, kal_uint16 grantSize, kal_uint8 revMacId,kal_uint8 subStreamNum);
205kal_bool ParMfpaAccessGetMaxPriority(BestPktInfoT* pBestPkt,kal_uint8 subStreamNum);
206kal_bool ParMfpaServiceGetMaxPriority(BestPktInfoT* pBestPkt,kal_uint8 subStreamNum);
207kal_uint16 ParMfpaServiceGrant(DatapktlistGT* pPktList, kal_uint16 grantSize, kal_uint8 revMacId,kal_uint8 subStreamNum);
208kal_uint32 ParDpaAccessGetPktQueSz(kal_uint8 macFlowId, kal_uint8 subStreamNum);
209kal_uint32 ParDpaServiceGetPktQueSz(kal_uint8 macFlowId, kal_uint8 subStreamNum);
210kal_uint32 ParMfpaAccessGetPktQueSz(kal_uint8 macFlowId, kal_uint8 subStreamNum);
211kal_uint32 ParMfpaServiceGetPktQueSz(kal_uint8 macFlowId, kal_uint8 subStreamNum);
212void ParRlpAccessFlushTimerCallBack(void);
213void ParRlpServiceFlushTimerCallBack(kal_uint32 TimerId);
214#if defined (MTK_PLT_ON_PC)
215void ParRlpStatsResetMsgProc(void);
216void ParRlpStatsPeekMsgProc(void *MsgDataP);
217#endif
218void ParRlpConnOpenMsgProc(void);
219void ParRlpConnCloseMsgProc(void);
220void ParGAUPSetRlpFlowInfo(ParRlpInstanceT* pInst, FlowIdentificationAttribT* pRlpInfo, kal_uint8 FlowNum );
221void ParRlpDsarTxStatusMsgProc(kal_uint8 nAppType);
222void ParRlpCleanUpQueue(void);
223#ifdef CBP7_EHRPD
224void ParEmpaAccessPktSent(kal_uint8 revMacId, kal_uint8 subStreamNum);
225void ParEmpaServicePktSent(kal_uint8 revMacId, kal_uint8 subStreamNum);
226void ParEmpaAccessPktNotSent(kal_uint8 revMacId, kal_uint8 subStreamNum);
227void ParEmpaServicePktNotSent(kal_uint8 revMacId, kal_uint8 subStreamNum);
228void ParEmpaAccessPktPhyTrafficMissed(kal_uint8 revMacId, kal_uint8 subStreamNum);
229void ParEmpaServicePktPhyTrafficMissed(kal_uint8 revMacId, kal_uint8 subStreamNum);
230void ParEmpaAccessPktPhyTrafficAcked(kal_uint8 revMacId, kal_uint8 subStreamNum);
231void ParEmpaServicePktPhyTrafficAcked(kal_uint8 revMacId, kal_uint8 subStreamNum);
232kal_uint16 ParEmpaAccessGrant(DatapktlistGT* pPktList, kal_uint16 grantSize, kal_uint8 revMacId,kal_uint8 subStreamNum);
233kal_uint16 ParEmpaServiceGrant(DatapktlistGT* pPktList, kal_uint16 grantSize, kal_uint8 revMacId,kal_uint8 subStreamNum);
234kal_bool ParEmpaAccessGetMaxPriority(BestPktInfoT* pBestPkt,kal_uint8 subStreamNum);
235kal_bool ParEmpaServiceGetMaxPriority(BestPktInfoT* pBestPkt,kal_uint8 subStreamNum);
236kal_uint32 ParEmpaAccessGetPktQueSz(kal_uint8 macFlowId, kal_uint8 subStreamNum);
237kal_uint32 ParEmpaServiceGetPktQueSz(kal_uint8 macFlowId, kal_uint8 subStreamNum);
238
239kal_uint16 ParRlpSendDataFromTxQ(ParRlpInstanceT *pInst,DatapktlistGT* pPktList, kal_uint16 nBytesAvail);
240kal_uint16 ParRlpSendDataFromRetxQ(ParRlpInstanceT *pInst,DatapktlistGT* pPktList, kal_uint16 nBytesAvail);
241kal_uint16 ParEmpaRlpOctetOctetSendFromTxQ(ParRlpInstanceT *pInst,DatapktlistGT* pPktList, kal_uint16 nBytesAvail);
242kal_uint16 ParEmpaRlpOctetPacketSendFromTxQ(ParRlpInstanceT *pInst,DatapktlistGT* pPktList, kal_uint16 nBytesAvail);
243kal_uint16 ParEmpaRlpPacketPacketSendFromTxQ(ParRlpInstanceT *pInst,DatapktlistGT* pPktList, kal_uint16 nBytesAvail);
244kal_uint16 ParEmpaRlpOctetOctetSendFromRetxQ(ParRlpInstanceT *pInst,DatapktlistGT* pPktList, kal_uint16 nBytesAvail);
245kal_uint16 ParEmpaRlpOctetPacketSendFromRetxQ(ParRlpInstanceT *pInst,DatapktlistGT* pPktList, kal_uint16 nBytesAvail);
246kal_uint16 ParEmpaRlpPacketPacketSendFromRetxQ(ParRlpInstanceT *pInst,DatapktlistGT* pPktList, kal_uint16 nBytesAvail);
247
248void ParEmpaRlpNakProc (DsaFwdMsgT *pMsgData, kal_uint8 AppType);
249kal_bool ParEmpaRlpPacketPacketFlushCheckHdl(void *pList,void *pRecNew, void *pRecOld);
250#endif
251
252/*****************************************************************************
253* End of File
254*****************************************************************************/
255#endif
256
257