utils/tiQosTypes.h
changeset 0 10c42ec6c05f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/utils/tiQosTypes.h	Tue Jun 29 12:34:26 2010 +0100
@@ -0,0 +1,366 @@
+/*
+ * tiQosTypes.h
+ *
+ * Copyright(c) 1998 - 2010 Texas Instruments. All rights reserved.      
+ * All rights reserved.      
+ * 
+ * This program and the accompanying materials are made available under the 
+ * terms of the Eclipse Public License v1.0 or BSD License which accompanies
+ * this distribution. The Eclipse Public License is available at
+ * http://www.eclipse.org/legal/epl-v10.html and the BSD License is as below.                                   
+ *                                                                       
+ * 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
+
+
+#include "TWDriver.h"
+
+/*
+ * 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;
+
+} 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,  - according to the standard*/
+    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 */
+