Home | History | Annotate | Download | only in utils
      1 /*
      2  * tiQosTypes.h
      3  *
      4  * Copyright(c) 1998 - 2010 Texas Instruments. All rights reserved.
      5  * All rights reserved.
      6  *
      7  * Redistribution and use in source and binary forms, with or without
      8  * modification, are permitted provided that the following conditions
      9  * are met:
     10  *
     11  *  * Redistributions of source code must retain the above copyright
     12  *    notice, this list of conditions and the following disclaimer.
     13  *  * Redistributions in binary form must reproduce the above copyright
     14  *    notice, this list of conditions and the following disclaimer in
     15  *    the documentation and/or other materials provided with the
     16  *    distribution.
     17  *  * Neither the name Texas Instruments nor the names of its
     18  *    contributors may be used to endorse or promote products derived
     19  *    from this software without specific prior written permission.
     20  *
     21  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
     22  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
     23  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
     24  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
     25  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
     26  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
     27  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
     28  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
     29  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     30  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     31  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     32  */
     33 
     34 
     35 /*--------------------------------------------------------------------------*/
     36 /* Module:      tiQosTypes.h*/
     37 /**/
     38 /* Purpose:     */
     39 /**/
     40 /*--------------------------------------------------------------------------*/
     41 
     42 #ifndef TI_QOS_TYPES_H
     43 #define TI_QOS_TYPES_H
     44 
     45 
     46 #define MAX_NUM_OF_802_1d_TAGS          8
     47 
     48 /*
     49  * This enum defines the protocol modes of the QOS management object
     50  */
     51 typedef enum
     52 {
     53     QOS_WME,
     54     QOS_NONE
     55 
     56 } EQosProtocol;
     57 
     58 
     59 /*
     60  * This enum includes the header converting modes configured to dataCtrl object.
     61  */
     62 typedef enum
     63 {
     64     HDR_CONVERT_NONE,
     65     HDR_CONVERT_QOS,
     66     HDR_CONVERT_LEGACY
     67 
     68 } EHeaderConvertMode;
     69 
     70 
     71 typedef enum
     72 {
     73     QOS_AC_BE = 0,
     74     QOS_AC_BK,
     75     QOS_AC_VI,
     76     QOS_AC_VO,
     77     QOS_HIGHEST_AC_INDEX = QOS_AC_VO
     78 
     79 } EAcTrfcType;
     80 
     81 
     82 #define FIRST_AC_INDEX                  QOS_AC_BE
     83 #define AC_PARAMS_MAX_TSID              15
     84 #define MAX_APSD_CONF                   0xffff
     85 
     86 
     87 typedef enum
     88 {
     89     DROP_NEW_PACKET = 0,
     90     DROP_OLD_PACKET
     91 
     92 } EQOverflowPolicy;
     93 
     94 
     95 typedef enum
     96 {
     97     AC_NOT_ADMITTED,
     98     AC_WAIT_ADMISSION,
     99     AC_ADMITTED
    100 
    101 } ETrafficAdmState;
    102 
    103 
    104 /*
    105  * This enum defines the admission state configured to dataCtrl object.
    106  */
    107 typedef enum
    108 {
    109     ADMISSION_NOT_REQUIRED,
    110     ADMISSION_REQUIRED
    111 
    112 } EAdmissionState;
    113 
    114 
    115 typedef struct
    116 {
    117     /* Power save mode */
    118     TI_UINT8                PsMode;
    119     TI_UINT16               TxQueueSize;
    120     TI_UINT8                QueueIndex;
    121     EQOverflowPolicy        QueueOvFlowPolicy;
    122     TI_UINT8                ackPolicy;
    123     TI_UINT32               MsduLifeTime;
    124 
    125 } TAcTrfcCtrl;
    126 
    127 typedef struct
    128 {
    129     /* header converting mode */
    130     EHeaderConvertMode      headerConverMode;
    131     /* flag for converting zero tags */
    132     TI_BOOL                 convertTagZeroFrames;
    133     /* AC admission state */
    134     ETrafficAdmState        admissionState;
    135     /* AC admission is mandatory */
    136     EAdmissionState         admissionRequired;
    137     /* Tag to AC classification */
    138     EAcTrfcType             tag_ToAcClsfrTable[MAX_NUM_OF_802_1d_TAGS];
    139 
    140 } TQosParams;
    141 
    142 
    143 typedef struct
    144 {
    145     TAcTrfcCtrl             acTrfcCtrl;
    146     TQosParams              qosParams;
    147     TI_UINT8                *tsrsArr;
    148     TI_UINT8                tsrsArrLen;
    149     TI_UINT8                acID;
    150 
    151 } TTxDataQosParams;
    152 
    153 
    154 typedef struct _OS_802_11_QOS_PARAMS
    155 {
    156     TI_UINT32               acID;
    157     TI_UINT32               MaxLifeTime;
    158     TI_UINT32               PSDeliveryProtocol;
    159 	TI_UINT32				VoiceDeliveryProtocol;
    160 
    161 } OS_802_11_QOS_PARAMS;
    162 
    163 
    164 typedef struct
    165 {
    166     TI_UINT32               psPoll;
    167     TI_UINT32               UPSD;
    168 
    169 } OS_802_11_QOS_RX_TIMEOUT_PARAMS;
    170 
    171 
    172 typedef struct _OS_802_11_AC_QOS_PARAMS
    173 {
    174     TI_UINT32               uAC;
    175     TI_UINT32               uAssocAdmissionCtrlFlag;
    176     TI_UINT32               uAIFS;
    177     TI_UINT32               uCwMin;
    178     TI_UINT32               uCwMax;
    179     TI_UINT32               uTXOPLimit;
    180 
    181 } OS_802_11_AC_QOS_PARAMS;
    182 
    183 
    184 typedef struct _OS_802_11_AP_QOS_CAPABILITIES_PARAMS
    185 {
    186     TI_UINT32               uQOSFlag;
    187     TI_UINT32               uAPSDFlag;
    188 
    189 } OS_802_11_AP_QOS_CAPABILITIES_PARAMS;
    190 
    191 
    192 typedef struct _OS_802_11_QOS_TSPEC_PARAMS
    193 {
    194     TI_UINT32               uUserPriority;
    195     TI_UINT32               uNominalMSDUsize; /* in bytes */
    196     TI_UINT32               uMeanDataRate;        /* bits per second */
    197     TI_UINT32               uMinimumPHYRate;  /* 1,2,5,6,9,11,12,18,......*/
    198     TI_UINT32               uSurplusBandwidthAllowance;
    199     TI_UINT32               uAPSDFlag;
    200     TI_UINT32               uMediumTime;
    201     TI_UINT32               uReasonCode;
    202     TI_UINT32               uMinimumServiceInterval;
    203     TI_UINT32               uMaximumServiceInterval;
    204 
    205 } OS_802_11_QOS_TSPEC_PARAMS;
    206 
    207 
    208 typedef struct _OS_802_11_QOS_DELETE_TSPEC_PARAMS
    209 {
    210     TI_UINT32               uUserPriority;
    211     TI_UINT32               uReasonCode;
    212 } OS_802_11_QOS_DELETE_TSPEC_PARAMS;
    213 
    214 
    215 typedef struct _OS_802_11_QOS_DESIRED_PS_MODE
    216 {
    217     TI_UINT32               uDesiredPsMode;
    218     TI_UINT32               uDesiredWmeAcPsMode[QOS_HIGHEST_AC_INDEX + 1];
    219 
    220 } OS_802_11_QOS_DESIRED_PS_MODE;
    221 
    222 
    223 /* When this value is added to reason code in TSPEC events, it indicates a TSPEC response which was unexpected at the time */
    224 /* For example, a TSPEC response arrives after a TSPEC timeout */
    225 #define TSPEC_RESPONSE_UNEXPECTED      0x1000
    226 
    227 
    228 typedef enum
    229 {
    230     ADDTS_RESPONSE_ACCEPT = 0,
    231     ADDTS_RESPONSE_REJECT = 3,
    232     ADDTS_RESPONSE_AP_PARAM_INVALID = 253,
    233     ADDTS_RESPONSE_TIMEOUT = 254,
    234     TSPEC_DELETED_BY_AP = 255
    235 
    236 } ETspecStatus;
    237 
    238 
    239 typedef struct _OS_802_11_AC_UPSD_STATUS_PARAMS
    240 {
    241    TI_UINT32                uAC;
    242    TI_UINT32                uCurrentUAPSDStatus;
    243    TI_UINT32                pCurrentAdmissionStatus;
    244 
    245 } OS_802_11_AC_UPSD_STATUS_PARAMS;
    246 
    247 
    248 typedef struct _OS_802_11_THRESHOLD_CROSS_PARAMS
    249 {
    250     TI_UINT32               uAC;
    251     TI_UINT32               uHighThreshold;
    252     TI_UINT32               uLowThreshold;
    253 
    254 } OS_802_11_THRESHOLD_CROSS_PARAMS;
    255 
    256 
    257 typedef struct OS_802_11_THRESHOLD_CROSS_INDICATION_PARAMS
    258 {
    259     TI_UINT32               uAC;
    260     TI_UINT32               uHighOrLowThresholdFlag;  /* According to thresholdCross_e enum */
    261     TI_UINT32               uAboveOrBelowFlag;        /* According to thresholdCrossDirection_e enum */
    262 
    263 } OS_802_11_THRESHOLD_CROSS_INDICATION_PARAMS;
    264 
    265 
    266 typedef enum
    267 {
    268     HIGH_THRESHOLD_CROSS,
    269     LOW_THRESHOLD_CROSS
    270 
    271 } EThresholdCross;
    272 
    273 
    274 typedef enum
    275 {
    276     CROSS_ABOVE,
    277     CROSS_BELOW
    278 
    279 } EThresholdCrossDirection;
    280 
    281 
    282 typedef struct
    283 {
    284    TI_UINT32                dstIpAddress;
    285    TI_UINT32                dstPort;
    286    TI_UINT32                PktTag;
    287    TI_UINT32                userPriority;
    288 
    289 } TStreamTrafficProperties;
    290 
    291 
    292 typedef enum
    293 {
    294    UPLINK_DIRECTION = 0,
    295    DOWNLINK_DIRECTION = 1,
    296    RESERVED_DIRECTION = 2,
    297    BI_DIRECTIONAL = 3
    298 
    299 } EStreamDirection;
    300 
    301 
    302 /* classification algorithms:
    303   0) D-tag to D-tag
    304   1) DSCP to D-tag
    305   2) Destination port number to D-tag
    306   3) Destination IP&Port to D-tag
    307 */
    308 typedef enum
    309 {
    310     D_TAG_CLSFR    = 0,
    311     DSCP_CLSFR     = 1,
    312     PORT_CLSFR     = 2,
    313     IPPORT_CLSFR   = 3,
    314     CLSFR_MAX_TYPE = IPPORT_CLSFR
    315 
    316 } EClsfrType;
    317 
    318 
    319 
    320 /*************************/
    321 /*   classifier params   */
    322 /*************************/
    323 
    324 /* Destination IP address and port number */
    325 typedef struct
    326 {
    327     TI_UINT32               DstIPAddress;
    328     TI_UINT16               DstPortNum;
    329 
    330 } TIpPort;
    331 
    332 /* Classification mapping table */
    333 typedef struct
    334 {
    335     union
    336     {
    337         TIpPort             DstIPPort;  /* for destination IP&Port classifier*/
    338         TI_UINT16           DstPortNum; /* for destination Port classifier*/
    339         TI_UINT8            CodePoint;  /* for DSCP classifier*/
    340     } Dscp;
    341 
    342     TI_UINT8                DTag;
    343 
    344 } TClsfrTableEntry;
    345 
    346 /* number of classifier entries in the classification table */
    347 #define NUM_OF_CLSFR_TABLE_ENTRIES  16
    348 
    349 typedef struct
    350 {
    351     EClsfrType              eClsfrType; /* The type of the classifier: D-tag, DSCP, Port or IP&Port */
    352     TI_UINT32               uNumActiveEntries; /* The number of active entries in the classification table */
    353     TClsfrTableEntry        ClsfrTable[NUM_OF_CLSFR_TABLE_ENTRIES]; /* Classification table - size changed from 15 to 16*/
    354 
    355 } TClsfrParams;
    356 
    357 typedef struct{
    358 	TI_UINT8                       voiceTspecConfigure;
    359 	TI_UINT8                       videoTspecConfigure;
    360 }TSpecConfigure;
    361 
    362 #endif /* TI_QOS_TYPES_H */
    363 
    364