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