• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /****************************************************************************
2 **+-----------------------------------------------------------------------+**
3 **|                                                                       |**
4 **| Copyright(c) 1998 - 2008 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 /*--------------------------------------------------------------------------*/
37 /* Module:		tiQosTypes.h*/
38 /**/
39 /* Purpose:		*/
40 /**/
41 /*--------------------------------------------------------------------------*/
42 
43 #if !defined TI_QOS_TYPES_H
44 #define TI_QOS_TYPES_H
45 
46 
47 #define TI_WLAN_QOS_RETURN_CODES \
48 	NOT_CONNECTED,\
49 	TRAFIC_ADM_PENDING,\
50 	NO_QOS_AP,\
51 	ADM_CTRL_DISABLE,\
52 	AC_ALREADY_IN_USE,\
53     USER_PRIORITY_NOT_ADMITTED\
54 /*
55 	NOT_CONNECTED       - Not connected to AP
56 	TRAFIC_ADM_PENDING  - TSPEC request sent - awaiting response
57 	NO_QOS_AP           - primary AP does not support QOS (WME)
58 	ADM_CTRL_DISABLE    - Admission control disabled
59 	AC_ALREADY_IN_USE   - A TSPEC has already been sent on this specific AC
60     USER_PRIORITY_NOT_ADMITTED - User priority is not admitted (TSPEC not sent)
61 */
62 
63 
64 typedef enum{
65     QOS_AC_BE = 0,
66     QOS_AC_BK,
67     QOS_AC_VI,
68     QOS_AC_VO,
69     QOS_HIGHEST_AC_INDEX = QOS_AC_VO,
70 
71 }acTrfcType_e; /* for TI_HANDLE hAcTrfcCtrl */
72 
73 #define MAX_NUM_OF_AC					( QOS_HIGHEST_AC_INDEX+1 )
74 #define FIRST_AC_INDEX					QOS_AC_BE
75 #define MAX_NUM_OF_802_1d_TAGS          8
76 
77 #define AC_PARAMS_MAX_TSID              15
78 #define MAX_APSD_CONF                   0xffff
79 
80 
81 /*
82  * this enum defines FW PS policing modes
83  */
84 typedef struct _OS_802_11_QOS_PARAMS
85 {
86     tiUINT32 acID;
87     tiUINT32 MaxLifeTime;
88     tiUINT32 VoiceDeliveryProtocol;
89     tiUINT32 PSDeliveryProtocol;
90 } OS_802_11_QOS_PARAMS;
91 
92 typedef struct  {
93 	tiUINT32 psPoll;
94 	tiUINT32 UPSD;
95 } OS_802_11_QOS_RX_TIMEOUT_PARAMS;
96 
97 typedef struct _OS_802_11_AC_QOS_PARAMS
98 {
99     	tiUINT32 uAC;
100     	tiUINT32 uAssocAdmissionCtrlFlag;
101 		tiUINT32 uAIFS;
102 		tiUINT32 uCwMin;
103 		tiUINT32 uCwMax;
104 		tiUINT32 uTXOPLimit;
105 } OS_802_11_AC_QOS_PARAMS;
106 
107 typedef struct _OS_802_11_AP_QOS_CAPABILITIES_PARAMS
108 {
109     	tiUINT32 uQOSFlag;
110     	tiUINT32 uAPSDFlag;
111 } OS_802_11_AP_QOS_CAPABILITIES_PARAMS;
112 
113 typedef struct _OS_802_11_QOS_TSPEC_PARAMS
114 {
115     tiUINT32 uUserPriority;
116     tiUINT32 uNominalMSDUsize;	/* in bytes */
117 	tiUINT32 uMeanDataRate;		/* bits per second */
118 	tiUINT32 uMinimumPHYRate;	/* 1,2,5,6,9,11,12,18,......*/
119 	tiUINT32 uSurplusBandwidthAllowance;
120     tiUINT32 uAPSDFlag;
121 	tiUINT32 uMediumTime;
122     tiUINT32 uReasonCode;
123 } OS_802_11_QOS_TSPEC_PARAMS;
124 
125 typedef struct _OS_802_11_QOS_DELETE_TSPEC_PARAMS
126 {
127     tiUINT32 uUserPriority;
128 	tiUINT32 uReasonCode;
129 } OS_802_11_QOS_DELETE_TSPEC_PARAMS;
130 
131 typedef struct _OS_802_11_QOS_DESIRED_PS_MODE
132 {
133     tiUINT32 uDesiredPsMode;
134 	tiUINT32 uDesiredWmeAcPsMode[MAX_NUM_OF_AC];
135 } OS_802_11_QOS_DESIRED_PS_MODE;
136 
137 
138 
139 /* When this value is added to reason code in TSPEC events, it indicates a TSPEC response which was unexpected at the time */
140 /* For example, a TSPEC response arrives after a TSPEC timeout */
141 #define TSPEC_RESPONSE_UNEXPECTED      0x1000
142 
143 typedef enum{
144 	ADDTS_RESPONSE_ACCEPT = 0,
145 /*	ADDTS_RESPONSE_REJECT,  - according to the standard*/
146 	ADDTS_RESPONSE_AP_PARAM_INVALID = 253,
147 	ADDTS_RESPONSE_TIMEOUT = 254,
148 	TSPEC_DELETED_BY_AP = 255,
149 } tspec_status_e;
150 
151 typedef struct _OS_802_11_AC_UPSD_STATUS_PARAMS
152 {
153    tiUINT32 uAC;
154    tiUINT32 uCurrentUAPSDStatus;
155    tiUINT32 pCurrentAdmissionStatus;
156 } OS_802_11_AC_UPSD_STATUS_PARAMS;
157 
158 typedef struct _OS_802_11_THRESHOLD_CROSS_PARAMS
159 {
160     tiUINT32 uAC;
161     tiUINT32 uHighThreshold;
162 	tiUINT32 uLowThreshold;
163 } OS_802_11_THRESHOLD_CROSS_PARAMS;
164 
165 typedef struct OS_802_11_THRESHOLD_CROSS_INDICATION_PARAMS
166 {
167     tiUINT32 uAC;
168 	tiUINT32 uHighOrLowThresholdFlag;  /* According to thresholdCross_e enum */
169     tiUINT32 uAboveOrBelowFlag;        /* According to thresholdCrossDirection_e enum */
170 } OS_802_11_THRESHOLD_CROSS_INDICATION_PARAMS;
171 
172 typedef enum{
173 	HIGH_THRESHOLD_CROSS,
174 	LOW_THRESHOLD_CROSS,
175 } thresholdCross_e;
176 
177 typedef enum{
178 	CROSS_ABOVE,
179 	CROSS_BELOW,
180 } thresholdCrossDirection_e;
181 
182 typedef struct _STREAM_TRAFFIC_PROPERTIES{
183    UINT32 dstIpAddress;
184    UINT32 dstPort;
185    UINT32 PktTag;
186    UINT32 userPriority;
187 } STREAM_TRAFFIC_PROPERTIES;
188 
189 
190 typedef enum{
191 	AC_NOT_ADMITTED,
192 	AC_WAIT_ADMISSION,
193 	AC_ADMITTED
194 } trafficAdmState_e;
195 
196 typedef enum{
197    UPLINK_DIRECTION = 0,
198    DOWNLINK_DIRECTION = 1,
199    RESERVED_DIRECTION = 2,
200    BI_DIRECTIONAL = 3,
201 } streamDirection_e;
202 
203 
204 /* classification algorithms:
205   0) D-tag to D-tag
206   1) DSCP to D-tag
207   2) Destination port number to D-tag
208   3) Destination IP&Port to D-tag
209 */
210 typedef enum{
211 	D_TAG_CLSFR = 0,
212 	DSCP_CLSFR =1,
213 	PORT_CLSFR =2,
214 	IPPORT_CLSFR =3,
215 	CLSFR_TYPE_MAX = IPPORT_CLSFR,
216 } clsfr_type_e;
217 
218 typedef struct clsfrTypeAndSupport
219 {
220    ULONG        ClsfrType;
221    UINT8        oldVersionSupport;
222 } clsfrTypeAndSupport;
223 
224 
225 /*************************/
226 /*   classifier params   */
227 /*************************/
228 
229 /* This type represents a pair of
230 destination IP address and destination port number. */
231 typedef struct
232 {
233 	UINT32	DstIPAddress;
234 	UINT16	DstPortNum;
235 } IP_Port_t;
236 
237 /* Classification mapping
238    table.
239 */
240 typedef struct
241 {
242 	union
243 	{
244 		IP_Port_t	DstIPPort; /* for destination IP&Port classifier*/
245 		UINT16		DstPortNum; /* for destination Port classifier*/
246 		UINT8		CodePoint; /* for DSCP classifier*/
247 	}Dscp;
248 	UINT8		DTag;
249 } clsfr_tableEntry_t;
250 
251 /* Classifier parameters */
252 
253 /* number of classifier entries in the classification table */
254 #define NUM_OF_CLSFR_TABLE_ENTRIES	16
255 
256 typedef struct
257 {
258 	clsfr_type_e		clsfrType; /* The type of the classifier: D-tag, DSCP, Port or IP&Port */
259 	UINT8				NumOfActiveEntries; /* The number of active entries in the classification table */
260 	clsfr_tableEntry_t
261 	ClsfrTable[NUM_OF_CLSFR_TABLE_ENTRIES]; /* Classification table - size changed from 15 to 16*/
262 } clsfr_Params_t;
263 
264 /* This type is use by setParam to insert classifier table entries */
265 typedef struct
266 {
267 	UINT8	EntriesNum;
268 	UINT32	*BufferPtr;
269 } clsfr_insertEntry_t;
270 
271 #endif /* TI_QOS_TYPES_H */
272 
273