| /***************************************************************************** |
| * 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_H_ |
| #define _PAR_H_ |
| /***************************************************************************** |
| * |
| * FILE NAME : par.h |
| * |
| * DESCRIPTION : This file contains function prototypes and other definitions |
| * for the Reverse Packet Application |
| * |
| * HISTORY : |
| * See Log at end of file |
| * |
| *****************************************************************************/ |
| |
| /*---------------------------------------------------------------------------- |
| * Include Files |
| ----------------------------------------------------------------------------*/ |
| #include "ParRlpList.h" |
| #include "do_fcpapi.h" |
| #include "do_dsaapi.h" |
| #include "do_Qos.h" |
| #ifdef CBP7_EHRPD |
| //#include "../fcp/paflist.h" |
| #endif |
| |
| #include "slc_nvram.h" |
| |
| /*---------------------------------------------------------------------------- |
| Defines And Macros |
| ----------------------------------------------------------------------------*/ |
| #define RLP_DPA_HEADER_BITS 22 |
| |
| |
| #define MAX_LOCATION_LEN 128 |
| #define MAX_STORAGEBLOB_LEN 128 |
| #define MAX_NAK_REC_NUM 20 /* Max NakRequests # in Nak msg */ |
| /*---------------------------------------------------------------------------- |
| structure definitions |
| ----------------------------------------------------------------------------*/ |
| /* Enum definitions */ |
| typedef enum |
| { |
| RCP_PAR_SUBTYPE_ERR, |
| RCP_PAR_STRNUM_ERR, |
| RCP_PAR_TXLIST_ERR, |
| RCP_PAR_RETXLIST_ERR, |
| RCP_PAR_PHYMISSLIST_ERR, |
| RCP_PAR_MSGDEC_ERR, |
| RCP_PAR_APPNOTINIT_ERR, |
| RCP_PAR_TXLIST_FULL_ERR, |
| RCP_PAR_MSGID_ERR, |
| RCP_PAR_OTAMSGID_ERR, |
| RCP_PAR_GAUP_ATTR_ERR, |
| RCP_PAR_NAK_NOT_SUPPORT_ERR, |
| RCP_PAR_GRANT_SIZE_NOT_ENOUGH_ERR, |
| RCP_PAR_MAX_ERR_ID |
| }PARErrorT; |
| |
| |
| |
| typedef struct |
| { |
| kal_uint8 nAppType; |
| kal_uint16 nProtocolType; |
| ParFlowCtrlStateT stFlowCtrl; |
| #ifdef CBP7_EHRPD |
| ParRspStateT stRsp; |
| #endif |
| }ParAppInstanceT; |
| |
| typedef struct |
| { |
| kal_uint16 nProtocolType; |
| kal_uint8 nAppType; |
| }ParStreamConfigInfoT; |
| |
| typedef enum |
| { |
| PAR_Invalid = 0x0, |
| PAR_Default = 0x1, |
| PAR_MultiFlow |
| } PARAppTypeT; |
| |
| typedef enum |
| { |
| RESET_TX_INDICATION_MSG, |
| RESET_MSG = RESET_TX_INDICATION_MSG, |
| RESET_RX_INDICATION_MSG, |
| RESET_ACK_MSG = RESET_RX_INDICATION_MSG, |
| NAK_MSG, |
| LOCATION_REQUEST_MSG, |
| LOCATION_NOTIFICATION_MSG, |
| LOCATION_ASSIGNMENT_MSG, |
| LOCATION_COMPLETE_MSG, |
| XON_REQUEST_MSG, |
| XON_RESPONSE_MSG, |
| XOFF_REQUEST_MSG, |
| XOFF_RESPONSE_MSG, |
| DATA_READY_MSG, |
| DATA_READY_ACK_MSG, |
| RESET_TX_INDICATION_ACK_MSG = 0x0d, |
| RESET_TX_COMPLETE_MSG, |
| RESET_RX_COMPLETE_MSG, |
| |
| STORAGEBLOB_REQ_MSG, |
| STORAGEBLOB_NOTIFICATION_MSG, |
| STORAGEBLOB_ASSIGNMENT_MSG, |
| STORAGEBLOB_COMPLETE_MSG, |
| |
| DATA_OVER_SIGNALING_MSG = 0x14, |
| DATA_OVER_SIGNALING_ACK_MSG, |
| RESERVATION_ON_REQ_MSG=0x16, |
| RESERVATION_OFF_REQ_MSG, |
| RESERVATION_ACCEPT_MSG, |
| RESERVATION_REJECT_MSG, |
| REV_RESERVATION_ON_MSG, |
| REV_RESERVATION_OFF_MSG, |
| FWD_RESERVATION_OFF_MSG = 0x22, |
| FWD_RESERVATION_ON_MSG, |
| FWD_RESERVATION_ACK_MSG, |
| CONFIGURATION_REQUEST_MSG = 0x50, |
| CONFIGURATION_RESPONSE_MSG, |
| ATTRIBUTE_UPDATE_REQ_MSG = 0x52, |
| ATTRIBUTE_UPDATE_ACCEPT_MSG, |
| ATTRIBUTE_UPDATE_REJECT_MSG |
| }PAROtaMsgIdT; |
| |
| typedef enum |
| { |
| RLP_NULL_ST, |
| RLP_DATA_ST, |
| RLP_RESET_INIT_ST, |
| RLP_RESET_RSP_ST, |
| RLP_MAX_ST |
| } ParRlpStateT; |
| |
| typedef enum |
| { |
| RLP_NONE, |
| RLP_TXQ, |
| RLP_RETXQ |
| }RlpTxQTypeT; |
| |
| typedef struct |
| { |
| kal_uint32 FirstErased; |
| kal_uint16 WindowLen; |
| } ParRlpNakReqT; |
| typedef struct |
| { |
| kal_uint8 RLPFlow; |
| #ifdef CBP7_EHRPD |
| ParRspRouteT RspRoute; |
| #endif |
| kal_uint8 SequenceLength; |
| kal_uint8 NakRequests; |
| ParRlpNakReqT Request[MAX_NAK_REC_NUM]; |
| #ifdef CBP7_EHRPD |
| kal_uint8 VR; |
| #endif |
| }ParRlpNakMsgT; |
| |
| typedef struct |
| { |
| kal_uint32 TimerId; |
| }ParTExpireMsgT; |
| /************************************************************/ |
| /* structure for RLP */ |
| |
| typedef struct |
| { |
| /* kal_bool bBufFull;*/ |
| RlpTxQTypeT BufType; /*Type of buffer the last packet sent from*/ |
| kal_uint16 BytesTx; |
| kal_uint16 BytesRetx; |
| #ifdef CBP7_EHRPD |
| PAR_LIST_STR TxReseqQ; /*If the DataUnit is packet for a Packet stream, need this for retx */ |
| #endif |
| }ParRlpTxInfoT; |
| |
| |
| typedef struct ParRlpInstance_Struct |
| { |
| kal_uint8 AppType; |
| kal_uint8 RLPId; |
| kal_uint8 RLPFlowId; |
| kal_uint8 RLPIDLen; /*In Bits*/ |
| kal_uint8 SEQLen; /* In Bits*/ |
| kal_uint8 RLPHdrLen; /*In Bytes */ |
| kal_uint8 Priority; |
| ParRlpStateT RlpState; |
| kal_uint32 vs; |
| kal_uint32 range; |
| BestPktInfoT bestPktInfo; |
| ParRlpTxListT TxList; |
| ParRlpRetxListT RetxList; |
| ParRlpTxInfoT TxInfo; |
| kal_uint8 MacFlowId; |
| kal_bool FlushTimerExpired; |
| #ifdef CBP7_EHRPD |
| kal_uint32 maxVS; |
| ParRspRouteT curRoute; |
| kal_uint16 (*ParRlpSendDataFromTxQ)(struct ParRlpInstance_Struct *pInst, DatapktlistGT* pPktList, kal_uint16 nBytesAvail); |
| kal_uint16 (*ParRlpSendDataFromRetxQ)(struct ParRlpInstance_Struct *pInst, DatapktlistGT* pPktList, kal_uint16 nBytesAvail); |
| PAR_LIST_STR TxReseqQ; /*If the DataUnit is packet for a Packet stream, need this for retx */ |
| #endif |
| }ParRlpInstanceT; |
| |
| |
| /*************************************************************************************/ |
| /* structure for Location Update Protocol */ |
| typedef struct |
| { |
| kal_uint8 LocationType; |
| kal_uint8 LocationLen; |
| kal_uint8 LocationValue[MAX_LOCATION_LEN]; |
| } ParLocationDataRecT; |
| |
| typedef struct |
| { |
| kal_uint16 StorageBLOBType; |
| kal_uint8 StorageBLOBLen; |
| kal_uint8 StorageBLOBValue[MAX_STORAGEBLOB_LEN]; |
| } ParStorageBLOBDataRecT; |
| |
| typedef struct |
| { |
| kal_bool bLocValueStored; |
| kal_uint8 LocTransId; |
| kal_bool bStorageBlobStored; |
| kal_uint8 BlobTransId; |
| ParLocationDataRecT LocationData; |
| ParStorageBLOBDataRecT StorageBlob; |
| /*kal_bool bConnSetup;*/ |
| }ParLocUpdInfoT; |
| /*************************************************************************************/ |
| /* structure for Attribute */ |
| typedef struct |
| { |
| AppSubTypeT parSubType; |
| /* kal_uint16 ProtocolType;*/ |
| |
| /*Default Packet Application Attributes*/ |
| kal_uint8 RANHandoff; |
| |
| /*Multi-Flow Packet Application Attributes*/ |
| kal_uint8 MaxAbortTimer; /*in units of 100ms*/ |
| kal_bool RevFlowNakEnabled; |
| kal_bool FlowPhysicalLayerNakEnabledRev; |
| kal_uint8 RevFlowHighLayerProtocol; |
| /* kal_uint8 ReservationIdleStateRev[MAX_NUM_RESERVATIONS]; |
| kal_uint8 ReservationIdleStateFwd[MAX_NUM_RESERVATIONS];*/ |
| kal_uint16 FlowTransmitAbortTimerRev; |
| kal_bool FlowDataOverSignalingAllowedRev; |
| FlowIdentificationAttribT attribRevFlowIdentification; |
| FlowTimersAttribT attribRevFlowTimer; |
| kal_uint16 FlowAbortTimerRevInFrame; |
| /* FlowReservationAttribT attribRevFlowReservation; |
| FlowReservationAttribT attribFwdFlowReservation;*/ |
| |
| MaxRLPFlowsAttribT attribRevmaxRLPFlows; |
| /* MaxReservationsAttribT attribRevMaxResv;*/ |
| SupportHLProtocolT SupportedHLProtocol; |
| #ifdef CBP7_EHRPD |
| |
| /*Enhanced Multi-Flow Packet Application attributes */ |
| kal_bool PPPFreeAuthenticationSupport; |
| kal_bool TwoRouteSupported; |
| kal_bool ATNakDelaySupported; |
| kal_uint8 attribRevFlowProtocolPDU; |
| kal_uint8 attribRevFlowDataUnit; |
| kal_uint8 attribRevRouteProtocolPDU; |
| RevFlowProtocolParametersAttribT attribRevFlowProtocolParameters; |
| RevRouteProtocolParametersAttribT attribRevRouteProtocolParameters; |
| #endif |
| }ParAccessConfigDataT; |
| |
| |
| typedef struct |
| { |
| kal_uint8 AttrToBeNegotiated; |
| kal_uint8 CfgReqTranId; |
| } ParAttrNegotiationInfoT; |
| |
| /*---------------------------------------------------------------------------- |
| API Functions |
| ----------------------------------------------------------------------------*/ |
| void ParMsgHandler(kal_uint32 MsgId, kal_uint32 MsgSize, void* pMsg); |
| void ProcessParDsaFwdMsg(DsaFwdMsgT *MsgDataP); |
| void ParInit(void); |
| void ParInitAppInstWithStreamConfigInfo(StreamConfigAttribT *pConfigData); |
| void ParRlpPhyMissRetxQUpdate(void); |
| void ParAppFlowCtrlStateSet(ParAppInstanceT *pAppInst, ParFlowCtrlStateT state); |
| kal_bool ParSendDSARMsg(DsaRevMsgT* pMailMsg); |
| void ParSendFwdAttribute(PafRcpSessionConfigMsgT* pCfgData); |
| void ParAccessCommit(void); |
| void ParServiceCommit(void); |
| void ParInitStructures(kal_uint16 SubType, kal_bool InUse); |
| void ParHandleReservationLabelCmd(ParRlpReservationOnOffMsgT* pMsg); |
| void ParHandleSnKKQoSRequestCmd(ParSnKKQosReqMsgT* pMsg); |
| void ParSendReservationOnReq(kal_uint8 Count, ReservationInfoT* pResv); |
| void ParSendReservationOffReq(kal_uint8 Count, ReservationInfoT* pResv); |
| void ProcessParLupUnsolicitedCfgMsg(LUPUnsolicitedCfgMsgT* MsgDataP); |
| ParRlpInstanceT *GetRlpInstByAppStream(ParHlpDataTxMsgT *pMsg, PARAppStreamT AppStream); |
| |
| |
| /***************************************************************************** |
| * End of File |
| *****************************************************************************/ |
| #endif |
| |
| |