| /***************************************************************************** |
| * Copyright Statement: |
| * -------------------- |
| * This software is protected by Copyright and the information contained |
| * herein is confidential. The software may not be copied and the information |
| * contained herein may not be used or disclosed except with the written |
| * permission of MediaTek Inc. (C) 2016 |
| * |
| * BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES |
| * THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE") |
| * RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON |
| * AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES, |
| * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF |
| * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT. |
| * NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE |
| * SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR |
| * SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH |
| * THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO |
| * NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S |
| * SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM. |
| * |
| * BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE |
| * LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE, |
| * AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE, |
| * OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO |
| * MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. |
| * |
| * THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE |
| * WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF |
| * LAWS PRINCIPLES. ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND |
| * RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER |
| * THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC). |
| * |
| *****************************************************************************/ |
| /************************************************************* |
| * |
| * This Software is the property of VIA Telecom, Inc. and may only be used pursuant to a license from VIA Telecom, Inc. |
| * |
| * Any unauthorized use inconsistent with the terms of such license is strictly prohibited. |
| * |
| * Copyright (c) 2006-2010 VIA Telecom, Inc. All rights reserved. |
| * |
| *************************************************************/ |
| #ifndef _PAR_RLP_H_ |
| #define _PAR_RLP_H_ |
| |
| /***************************************************************************** |
| * |
| * FILE NAME : ParRlp.h |
| * |
| * DESCRIPTION : This file contains function prototypes and other definitions |
| * for the Reverse RLP protocol |
| * |
| * HISTORY : |
| * See Log at end of file |
| * |
| *****************************************************************************/ |
| |
| /*---------------------------------------------------------------------------- |
| * Include Files |
| ----------------------------------------------------------------------------*/ |
| #include "sysdefs.h" |
| #include "par.h" |
| /*---------------------------------------------------------------------------- |
| Defines And Macros |
| ----------------------------------------------------------------------------*/ |
| #define RLP_RETXQ_PRIORITY 60 |
| #define RLP_TXQ_PRIORITY 70 |
| |
| |
| #define PAR_RLP_ABORT_TIMER_INTERVAL 500 /*500 ms for abort timer. */ |
| #define PAR_RLP_FLUSH_TIMER_INTERVAL 300 |
| |
| |
| |
| /*---------------------------------------------------------------------------- |
| structure definitions |
| ----------------------------------------------------------------------------*/ |
| typedef enum |
| { |
| RESV_CLOSE_ST, |
| RESV_OPEN_ST, |
| RESV_WFR_OPEN_ST, |
| RESV_WFR_CLOSE_ST, |
| RESV_MAX_ST |
| }ParResrevationStateT; |
| |
| typedef enum |
| { |
| RESV_OP_NULL, |
| RESV_OP_ONREQ, |
| RESV_OP_OFFREQ |
| } ParReservationOperationTypeT; |
| |
| |
| typedef struct |
| { |
| #if defined (RCP_RI_HRT_DEV) |
| kal_uint32 TimerCb; |
| #else |
| kal_timerid TimerCb; |
| #endif |
| kal_bool Active; |
| } ParRlpFlushTimerT; |
| |
| #ifdef CBP7_EHRPD |
| typedef struct |
| { |
| kal_uint32 seq; |
| kal_uint8 RLPHdrLen; |
| kal_uint16 nAvailableBytes; |
| } ParRlpNakCheckRecT; |
| |
| typedef struct |
| { |
| kal_uint8 nAppType; |
| kal_uint8 nRLPFlow; |
| } ParRlpMaxVsUpdateT; |
| |
| typedef struct |
| { |
| kal_uint32 seq; |
| kal_uint32 range; |
| kal_bool bDeleteWhenSameSeq; |
| } ParRlpTxQDeleteCheckT; |
| #endif |
| typedef struct |
| { |
| kal_int32 EVDORevARevMFRLPStatsFlowId; |
| kal_uint32 EVDORevARevMFRLPStatsResetTime; |
| kal_int32 EVDORevARevMFRLPStatsRLPStatsNaksReceived; |
| kal_int32 EVDORevARevMFRLPStatsReXmitsNotFound; |
| kal_int64 EVDORevARevMFRLPStatsANNakBytesRequested; |
| kal_int64 EVDORevARevMFRLPStatsTxReXmitsBytes; |
| kal_int64 EVDORevARevMFRLPStatsTxNewDataBytes; |
| kal_int64 EVDORevARevMFRLPStatsTxTotalBytes; |
| kal_int32 EVDORevARevMFRLPStatsResetCount; |
| kal_int32 EVDORevARevMFRLPStatsATResetRequestCount; |
| kal_int32 EVDORevARevMFRLPStatsANResetAckCount; |
| kal_int32 EVDORevARevMFRLPStatsANResetRequestCount; |
| } EVDORevARevMFRLPStatsMeasT; |
| |
| typedef struct |
| { |
| EVDORevARevMFRLPStatsMeasT rlpMeas[MAX_RLP_FLOW_SUPPORTED]; |
| } EVDORevARevMFRLPStatsEventT; |
| |
| typedef struct |
| { |
| kal_uint32 SysTime; |
| EVDORevARevMFRLPStatsMeasT rlpMeas[MAX_RLP_FLOW_SUPPORTED]; |
| } ParRlpStatPeekRspMsgT; |
| |
| /*---------------------------------------------------------------------------- |
| API Functions |
| ----------------------------------------------------------------------------*/ |
| void ParRlpInit(void); |
| void ParRlpCommit(AppSubTypeT appType); |
| void ParHlpRevDataMsgHandler(ParHlpDataTxMsgT *pMsg); |
| void ParRlpAccessFlushTmExpireHandler(kal_uint32 TimerId); |
| void ParRlpServiceFlushTmExpireHandler(kal_uint32 TimerId); |
| void ParRlpResetTxIndicationAckProc (DsaFwdMsgT *pMsgData, kal_uint8 AppType); |
| void ParRlpResetRxIndicationProc (DsaFwdMsgT *pMsgData, kal_uint8 AppType); |
| void ParMfpaRlpNakProc (DsaFwdMsgT *pMsgData, kal_uint8 AppType); |
| void ParDpaRlpNakProc (DsaFwdMsgT *pMsgData, ParRlpInstanceT *pRlpInst); |
| void ParRlpResetProc (kal_uint16 ProtocolType,ParRlpInstanceT *pRlpInst); |
| void ParRlpResetAckProc (kal_uint16 ProtocolType,ParRlpInstanceT *pRlpInst); |
| void ParRlpInitialize(ParRlpInstanceT* pInst); |
| void ParRlpStateSet(ParRlpInstanceT *pRlpInst, ParRlpStateT rlpState); |
| ParRlpStateT ParRlpStateGet(ParRlpInstanceT *pRlpInst); |
| void ParReservationAcceptMsgProc(kal_uint8* pData); |
| void ParReservationRejectMsgProc(kal_uint8* pData); |
| void ParRevReservationOnMsgProc(kal_uint8* pData); |
| void ParRevReservationOffMsgProc(kal_uint8* pData); |
| void ParFwdReservationOnMsgProc(kal_uint8* pData); |
| void ParFwdReservationOffMsgProc(kal_uint8* pData); |
| void ParRlpReservTmExpireMsgProc(void); |
| void ParPafRlpResetReqMsgHandler(ParPafRlpResetReqMsgT *pMsg); |
| void ParHlpRevDataSig(void); |
| void ParHlpRevData2Sig(void); |
| kal_bool ParRlpInsertRec2RetxQ(RetxInfoT* pInfo, ParRlpInstanceT *pRlpInst); |
| kal_bool Compare2Seq(kal_uint32 Seq1, kal_uint32 Seq2, kal_uint32 SeqRange); |
| kal_bool ParRlpTxQManage(ParRlpInstanceT* pInst); |
| kal_bool ParDpaAccessGetMaxPriority(BestPktInfoT* pBestPkt,kal_uint8 subStreamNum); |
| kal_bool ParDpaServiceGetMaxPriority(BestPktInfoT* pBestPkt,kal_uint8 subStreamNum); |
| kal_uint16 ParDpaAccessGrant(DatapktlistGT* pPktList, kal_uint16 grantSize, kal_uint8 revMacId,kal_uint8 subStreamNum); |
| kal_uint16 ParDpaServiceGrant(DatapktlistGT* pPktList, kal_uint16 grantSize, kal_uint8 revMacId,kal_uint8 subStreamNum); |
| void ParDpaAccessPktSent(kal_uint8 revMacId,kal_uint8 subStreamNum); |
| void ParMfpaAccessPktSent(kal_uint8 revMacId,kal_uint8 subStreamNum); |
| void ParDpaServicePktSent(kal_uint8 revMacId,kal_uint8 subStreamNum); |
| void ParMfpaServicePktSent(kal_uint8 revMacId,kal_uint8 subStreamNum); |
| void ParDpaAccessPktNotSent(kal_uint8 revMacId,kal_uint8 subStreamNum); |
| void ParMfpaAccessPktNotSent(kal_uint8 revMacId,kal_uint8 subStreamNum); |
| void ParDpaServicePktNotSent(kal_uint8 revMacId,kal_uint8 subStreamNum); |
| void ParMfpaServicePktNotSent(kal_uint8 revMacId,kal_uint8 subStreamNum); |
| void ParDpaAccessPktPhyTrafficMissed(kal_uint8 revMacId,kal_uint8 subStreamNum); |
| void ParMfpaAccessPktPhyTrafficMissed(kal_uint8 revMacId,kal_uint8 subStreamNum); |
| void ParDpaServicePktPhyTrafficMissed(kal_uint8 revMacId,kal_uint8 subStreamNum); |
| void ParMfpaServicePktPhyTrafficMissed(kal_uint8 revMacId,kal_uint8 subStreamNum); |
| void ParDpaAccessPktPhyTrafficAcked(kal_uint8 revMacId,kal_uint8 subStreamNum); |
| void ParMfpaAccessPktPhyTrafficAcked(kal_uint8 revMacId,kal_uint8 subStreamNum); |
| void ParDpaServicePktPhyTrafficAcked(kal_uint8 revMacId,kal_uint8 subStreamNum); |
| void ParMfpaServicePktPhyTrafficAcked(kal_uint8 revMacId,kal_uint8 subStreamNum); |
| kal_uint16 ParMfpaAccessGrant(DatapktlistGT* pPktList, kal_uint16 grantSize, kal_uint8 revMacId,kal_uint8 subStreamNum); |
| kal_bool ParMfpaAccessGetMaxPriority(BestPktInfoT* pBestPkt,kal_uint8 subStreamNum); |
| kal_bool ParMfpaServiceGetMaxPriority(BestPktInfoT* pBestPkt,kal_uint8 subStreamNum); |
| kal_uint16 ParMfpaServiceGrant(DatapktlistGT* pPktList, kal_uint16 grantSize, kal_uint8 revMacId,kal_uint8 subStreamNum); |
| kal_uint32 ParDpaAccessGetPktQueSz(kal_uint8 macFlowId, kal_uint8 subStreamNum); |
| kal_uint32 ParDpaServiceGetPktQueSz(kal_uint8 macFlowId, kal_uint8 subStreamNum); |
| kal_uint32 ParMfpaAccessGetPktQueSz(kal_uint8 macFlowId, kal_uint8 subStreamNum); |
| kal_uint32 ParMfpaServiceGetPktQueSz(kal_uint8 macFlowId, kal_uint8 subStreamNum); |
| void ParRlpAccessFlushTimerCallBack(void); |
| void ParRlpServiceFlushTimerCallBack(kal_uint32 TimerId); |
| #if defined (MTK_PLT_ON_PC) |
| void ParRlpStatsResetMsgProc(void); |
| void ParRlpStatsPeekMsgProc(void *MsgDataP); |
| #endif |
| void ParRlpConnOpenMsgProc(void); |
| void ParRlpConnCloseMsgProc(void); |
| void ParGAUPSetRlpFlowInfo(ParRlpInstanceT* pInst, FlowIdentificationAttribT* pRlpInfo, kal_uint8 FlowNum ); |
| void ParRlpDsarTxStatusMsgProc(kal_uint8 nAppType); |
| void ParRlpCleanUpQueue(void); |
| #ifdef CBP7_EHRPD |
| void ParEmpaAccessPktSent(kal_uint8 revMacId, kal_uint8 subStreamNum); |
| void ParEmpaServicePktSent(kal_uint8 revMacId, kal_uint8 subStreamNum); |
| void ParEmpaAccessPktNotSent(kal_uint8 revMacId, kal_uint8 subStreamNum); |
| void ParEmpaServicePktNotSent(kal_uint8 revMacId, kal_uint8 subStreamNum); |
| void ParEmpaAccessPktPhyTrafficMissed(kal_uint8 revMacId, kal_uint8 subStreamNum); |
| void ParEmpaServicePktPhyTrafficMissed(kal_uint8 revMacId, kal_uint8 subStreamNum); |
| void ParEmpaAccessPktPhyTrafficAcked(kal_uint8 revMacId, kal_uint8 subStreamNum); |
| void ParEmpaServicePktPhyTrafficAcked(kal_uint8 revMacId, kal_uint8 subStreamNum); |
| kal_uint16 ParEmpaAccessGrant(DatapktlistGT* pPktList, kal_uint16 grantSize, kal_uint8 revMacId,kal_uint8 subStreamNum); |
| kal_uint16 ParEmpaServiceGrant(DatapktlistGT* pPktList, kal_uint16 grantSize, kal_uint8 revMacId,kal_uint8 subStreamNum); |
| kal_bool ParEmpaAccessGetMaxPriority(BestPktInfoT* pBestPkt,kal_uint8 subStreamNum); |
| kal_bool ParEmpaServiceGetMaxPriority(BestPktInfoT* pBestPkt,kal_uint8 subStreamNum); |
| kal_uint32 ParEmpaAccessGetPktQueSz(kal_uint8 macFlowId, kal_uint8 subStreamNum); |
| kal_uint32 ParEmpaServiceGetPktQueSz(kal_uint8 macFlowId, kal_uint8 subStreamNum); |
| |
| kal_uint16 ParRlpSendDataFromTxQ(ParRlpInstanceT *pInst,DatapktlistGT* pPktList, kal_uint16 nBytesAvail); |
| kal_uint16 ParRlpSendDataFromRetxQ(ParRlpInstanceT *pInst,DatapktlistGT* pPktList, kal_uint16 nBytesAvail); |
| kal_uint16 ParEmpaRlpOctetOctetSendFromTxQ(ParRlpInstanceT *pInst,DatapktlistGT* pPktList, kal_uint16 nBytesAvail); |
| kal_uint16 ParEmpaRlpOctetPacketSendFromTxQ(ParRlpInstanceT *pInst,DatapktlistGT* pPktList, kal_uint16 nBytesAvail); |
| kal_uint16 ParEmpaRlpPacketPacketSendFromTxQ(ParRlpInstanceT *pInst,DatapktlistGT* pPktList, kal_uint16 nBytesAvail); |
| kal_uint16 ParEmpaRlpOctetOctetSendFromRetxQ(ParRlpInstanceT *pInst,DatapktlistGT* pPktList, kal_uint16 nBytesAvail); |
| kal_uint16 ParEmpaRlpOctetPacketSendFromRetxQ(ParRlpInstanceT *pInst,DatapktlistGT* pPktList, kal_uint16 nBytesAvail); |
| kal_uint16 ParEmpaRlpPacketPacketSendFromRetxQ(ParRlpInstanceT *pInst,DatapktlistGT* pPktList, kal_uint16 nBytesAvail); |
| |
| void ParEmpaRlpNakProc (DsaFwdMsgT *pMsgData, kal_uint8 AppType); |
| kal_bool ParEmpaRlpPacketPacketFlushCheckHdl(void *pList,void *pRecNew, void *pRecOld); |
| #endif |
| |
| /***************************************************************************** |
| * End of File |
| *****************************************************************************/ |
| #endif |
| |
| |