/* * tiQosTypes.h * * Copyright(c) 1998 - 2010 Texas Instruments. All rights reserved. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * Neither the name Texas Instruments nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /*--------------------------------------------------------------------------*/ /* Module: tiQosTypes.h*/ /**/ /* Purpose: */ /**/ /*--------------------------------------------------------------------------*/ #ifndef TI_QOS_TYPES_H #define TI_QOS_TYPES_H #define MAX_NUM_OF_802_1d_TAGS 8 /* * This enum defines the protocol modes of the QOS management object */ typedef enum { QOS_WME, QOS_NONE } EQosProtocol; /* * This enum includes the header converting modes configured to dataCtrl object. */ typedef enum { HDR_CONVERT_NONE, HDR_CONVERT_QOS, HDR_CONVERT_LEGACY } EHeaderConvertMode; typedef enum { QOS_AC_BE = 0, QOS_AC_BK, QOS_AC_VI, QOS_AC_VO, QOS_HIGHEST_AC_INDEX = QOS_AC_VO } EAcTrfcType; #define FIRST_AC_INDEX QOS_AC_BE #define AC_PARAMS_MAX_TSID 15 #define MAX_APSD_CONF 0xffff typedef enum { DROP_NEW_PACKET = 0, DROP_OLD_PACKET } EQOverflowPolicy; typedef enum { AC_NOT_ADMITTED, AC_WAIT_ADMISSION, AC_ADMITTED } ETrafficAdmState; /* * This enum defines the admission state configured to dataCtrl object. */ typedef enum { ADMISSION_NOT_REQUIRED, ADMISSION_REQUIRED } EAdmissionState; typedef struct { /* Power save mode */ TI_UINT8 PsMode; TI_UINT16 TxQueueSize; TI_UINT8 QueueIndex; EQOverflowPolicy QueueOvFlowPolicy; TI_UINT8 ackPolicy; TI_UINT32 MsduLifeTime; } TAcTrfcCtrl; typedef struct { /* header converting mode */ EHeaderConvertMode headerConverMode; /* flag for converting zero tags */ TI_BOOL convertTagZeroFrames; /* AC admission state */ ETrafficAdmState admissionState; /* AC admission is mandatory */ EAdmissionState admissionRequired; /* Tag to AC classification */ EAcTrfcType tag_ToAcClsfrTable[MAX_NUM_OF_802_1d_TAGS]; } TQosParams; typedef struct { TAcTrfcCtrl acTrfcCtrl; TQosParams qosParams; TI_UINT8 *tsrsArr; TI_UINT8 tsrsArrLen; TI_UINT8 acID; } TTxDataQosParams; typedef struct _OS_802_11_QOS_PARAMS { TI_UINT32 acID; TI_UINT32 MaxLifeTime; TI_UINT32 PSDeliveryProtocol; TI_UINT32 VoiceDeliveryProtocol; } OS_802_11_QOS_PARAMS; typedef struct { TI_UINT32 psPoll; TI_UINT32 UPSD; } OS_802_11_QOS_RX_TIMEOUT_PARAMS; typedef struct _OS_802_11_AC_QOS_PARAMS { TI_UINT32 uAC; TI_UINT32 uAssocAdmissionCtrlFlag; TI_UINT32 uAIFS; TI_UINT32 uCwMin; TI_UINT32 uCwMax; TI_UINT32 uTXOPLimit; } OS_802_11_AC_QOS_PARAMS; typedef struct _OS_802_11_AP_QOS_CAPABILITIES_PARAMS { TI_UINT32 uQOSFlag; TI_UINT32 uAPSDFlag; } OS_802_11_AP_QOS_CAPABILITIES_PARAMS; typedef struct _OS_802_11_QOS_TSPEC_PARAMS { TI_UINT32 uUserPriority; TI_UINT32 uNominalMSDUsize; /* in bytes */ TI_UINT32 uMeanDataRate; /* bits per second */ TI_UINT32 uMinimumPHYRate; /* 1,2,5,6,9,11,12,18,......*/ TI_UINT32 uSurplusBandwidthAllowance; TI_UINT32 uAPSDFlag; TI_UINT32 uMediumTime; TI_UINT32 uReasonCode; TI_UINT32 uMinimumServiceInterval; TI_UINT32 uMaximumServiceInterval; } OS_802_11_QOS_TSPEC_PARAMS; typedef struct _OS_802_11_QOS_DELETE_TSPEC_PARAMS { TI_UINT32 uUserPriority; TI_UINT32 uReasonCode; } OS_802_11_QOS_DELETE_TSPEC_PARAMS; typedef struct _OS_802_11_QOS_DESIRED_PS_MODE { TI_UINT32 uDesiredPsMode; TI_UINT32 uDesiredWmeAcPsMode[QOS_HIGHEST_AC_INDEX + 1]; } OS_802_11_QOS_DESIRED_PS_MODE; /* When this value is added to reason code in TSPEC events, it indicates a TSPEC response which was unexpected at the time */ /* For example, a TSPEC response arrives after a TSPEC timeout */ #define TSPEC_RESPONSE_UNEXPECTED 0x1000 typedef enum { ADDTS_RESPONSE_ACCEPT = 0, ADDTS_RESPONSE_REJECT = 3, ADDTS_RESPONSE_AP_PARAM_INVALID = 253, ADDTS_RESPONSE_TIMEOUT = 254, TSPEC_DELETED_BY_AP = 255 } ETspecStatus; typedef struct _OS_802_11_AC_UPSD_STATUS_PARAMS { TI_UINT32 uAC; TI_UINT32 uCurrentUAPSDStatus; TI_UINT32 pCurrentAdmissionStatus; } OS_802_11_AC_UPSD_STATUS_PARAMS; typedef struct _OS_802_11_THRESHOLD_CROSS_PARAMS { TI_UINT32 uAC; TI_UINT32 uHighThreshold; TI_UINT32 uLowThreshold; } OS_802_11_THRESHOLD_CROSS_PARAMS; typedef struct OS_802_11_THRESHOLD_CROSS_INDICATION_PARAMS { TI_UINT32 uAC; TI_UINT32 uHighOrLowThresholdFlag; /* According to thresholdCross_e enum */ TI_UINT32 uAboveOrBelowFlag; /* According to thresholdCrossDirection_e enum */ } OS_802_11_THRESHOLD_CROSS_INDICATION_PARAMS; typedef enum { HIGH_THRESHOLD_CROSS, LOW_THRESHOLD_CROSS } EThresholdCross; typedef enum { CROSS_ABOVE, CROSS_BELOW } EThresholdCrossDirection; typedef struct { TI_UINT32 dstIpAddress; TI_UINT32 dstPort; TI_UINT32 PktTag; TI_UINT32 userPriority; } TStreamTrafficProperties; typedef enum { UPLINK_DIRECTION = 0, DOWNLINK_DIRECTION = 1, RESERVED_DIRECTION = 2, BI_DIRECTIONAL = 3 } EStreamDirection; /* classification algorithms: 0) D-tag to D-tag 1) DSCP to D-tag 2) Destination port number to D-tag 3) Destination IP&Port to D-tag */ typedef enum { D_TAG_CLSFR = 0, DSCP_CLSFR = 1, PORT_CLSFR = 2, IPPORT_CLSFR = 3, CLSFR_MAX_TYPE = IPPORT_CLSFR } EClsfrType; /*************************/ /* classifier params */ /*************************/ /* Destination IP address and port number */ typedef struct { TI_UINT32 DstIPAddress; TI_UINT16 DstPortNum; } TIpPort; /* Classification mapping table */ typedef struct { union { TIpPort DstIPPort; /* for destination IP&Port classifier*/ TI_UINT16 DstPortNum; /* for destination Port classifier*/ TI_UINT8 CodePoint; /* for DSCP classifier*/ } Dscp; TI_UINT8 DTag; } TClsfrTableEntry; /* number of classifier entries in the classification table */ #define NUM_OF_CLSFR_TABLE_ENTRIES 16 typedef struct { EClsfrType eClsfrType; /* The type of the classifier: D-tag, DSCP, Port or IP&Port */ TI_UINT32 uNumActiveEntries; /* The number of active entries in the classification table */ TClsfrTableEntry ClsfrTable[NUM_OF_CLSFR_TABLE_ENTRIES]; /* Classification table - size changed from 15 to 16*/ } TClsfrParams; typedef struct{ TI_UINT8 voiceTspecConfigure; TI_UINT8 videoTspecConfigure; }TSpecConfigure; #endif /* TI_QOS_TYPES_H */