~ubuntu-branches/ubuntu/trusty/linux-ti-omap/trusty

« back to all changes in this revision

Viewing changes to ubuntu/rtl8192se/rtllib/rtl819x_Qos.h

  • Committer: Bazaar Package Importer
  • Author(s): Stefan Bader, Amit Kucheria
  • Date: 2010-03-23 18:05:12 UTC
  • Revision ID: james.westby@ubuntu.com-20100323180512-iavj906ocnphdubp
Tags: 2.6.33-500.3
[ Amit Kucheria ]

* [Config] Fix the debug package name to end in -dbgsym
* SAUCE: Add the ubuntu/ drivers to omap
* SAUCE: Re-export the symbols for aufs
* [Config] Enable AUFS and COMPCACHE

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/******************************************************************************
 
2
 * Copyright(c) 2008 - 2010 Realtek Corporation. All rights reserved.
 
3
 *
 
4
 * This program is distributed in the hope that it will be useful, but WITHOUT
 
5
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 
6
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
 
7
 * more details.
 
8
 *
 
9
 * You should have received a copy of the GNU General Public License along with
 
10
 * this program; if not, write to the Free Software Foundation, Inc.,
 
11
 * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
 
12
 *
 
13
 * The full GNU General Public License is included in this distribution in the
 
14
 * file called LICENSE.
 
15
 *
 
16
 * Contact Information:
 
17
 * wlanfae <wlanfae@realtek.com>
 
18
******************************************************************************/
 
19
#ifndef __INC_QOS_TYPE_H
 
20
#define __INC_QOS_TYPE_H
 
21
 
 
22
#define BIT0                    0x00000001
 
23
#define BIT1                    0x00000002
 
24
#define BIT2                    0x00000004
 
25
#define BIT3                    0x00000008
 
26
#define BIT4                    0x00000010
 
27
#define BIT5                    0x00000020
 
28
#define BIT6                    0x00000040
 
29
#define BIT7                    0x00000080
 
30
#define BIT8                    0x00000100
 
31
#define BIT9                    0x00000200
 
32
#define BIT10                   0x00000400
 
33
#define BIT11                   0x00000800
 
34
#define BIT12                   0x00001000
 
35
#define BIT13                   0x00002000
 
36
#define BIT14                   0x00004000
 
37
#define BIT15                   0x00008000
 
38
#define BIT16                   0x00010000
 
39
#define BIT17                   0x00020000
 
40
#define BIT18                   0x00040000
 
41
#define BIT19                   0x00080000
 
42
#define BIT20                   0x00100000
 
43
#define BIT21                   0x00200000
 
44
#define BIT22                   0x00400000
 
45
#define BIT23                   0x00800000
 
46
#define BIT24                   0x01000000
 
47
#define BIT25                   0x02000000
 
48
#define BIT26                   0x04000000
 
49
#define BIT27                   0x08000000
 
50
#define BIT28                   0x10000000
 
51
#define BIT29                   0x20000000
 
52
#define BIT30                   0x40000000
 
53
#define BIT31                   0x80000000
 
54
 
 
55
#define MAX_WMMELE_LENGTH       64
 
56
 
 
57
typedef u32 QOS_MODE, *PQOS_MODE;
 
58
#define QOS_DISABLE             0
 
59
#define QOS_WMM                 1
 
60
#define QOS_WMMSA               2
 
61
#define QOS_EDCA                4
 
62
#define QOS_HCCA                8
 
63
#define QOS_WMM_UAPSD           16   
 
64
 
 
65
#define AC_PARAM_SIZE   4
 
66
#define WMM_PARAM_ELE_BODY_LEN  18
 
67
 
 
68
typedef enum _ACK_POLICY{
 
69
        eAckPlc0_ACK            = 0x00,
 
70
        eAckPlc1_NoACK          = 0x01,
 
71
}ACK_POLICY,*PACK_POLICY;
 
72
 
 
73
#define WMM_PARAM_ELEMENT_SIZE  (8+(4*AC_PARAM_SIZE))
 
74
#if 0
 
75
#define GET_QOS_CTRL(_pStart)   ReadEF2Byte((u8 *)(_pStart) + 24)
 
76
#define SET_QOS_CTRL(_pStart, _value)   WriteEF2Byte((u8 *)(_pStart) + 24, _value)
 
77
 
 
78
#define GET_QOS_CTRL_WMM_UP(_pStart)    ((u8)LE_BITS_TO_2BYTE((u8 *)(_pStart)+24, 0, 3))
 
79
#define SET_QOS_CTRL_WMM_UP(_pStart, _value)    SET_BITS_TO_LE_2BYTE((u8 *)(_pStart)+24, 0, 3, (u8)(_value))
 
80
 
 
81
#define GET_QOS_CTRL_WMM_EOSP(_pStart)  ((u8)LE_BITS_TO_2BYTE((u8 *)(_pStart)+24, 4, 1))
 
82
#define SET_QOS_CTRL_WMM_EOSP(_pStart, _value)  SET_BITS_TO_LE_2BYTE((u8 *)(_pStart)+24, 4, 1, (u8)(_value))
 
83
 
 
84
#define GET_QOS_CTRL_WMM_ACK_POLICY(_pStart)    ((u8)LE_BITS_TO_2BYTE((u8 *)(_pStart)+24, 5, 2))
 
85
#define SET_QOS_CTRL_WMM_ACK_POLICY(_pStart, _value)    SET_BITS_TO_LE_2BYTE((u8 *)(_pStart)+24, 5, 2, (u8)(_value))
 
86
 
 
87
#define GET_QOS_CTRL_STA_DATA_TID(_pStart)      ((u8)LE_BITS_TO_2BYTE((u8 *)(_pStart)+24, 0, 4))
 
88
#define SET_QOS_CTRL_STA_DATA_TID(_pStart, _value)      SET_BITS_TO_LE_2BYTE((u8 *)(_pStart)+24, 0, 4, (u8)(_value))
 
89
 
 
90
#define GET_QOS_CTRL_STA_DATA_QSIZE_FLAG(_pStart)       ((u8)LE_BITS_TO_2BYTE((u8 *)(_pStart)+24, 4, 1))
 
91
#define SET_QOS_CTRL_STA_DATA_QSIZE_FLAG(_pStart, _value)       SET_BITS_TO_LE_2BYTE((u8 *)(_pStart)+24, 4, 1, (u8)(_value))
 
92
 
 
93
#define GET_QOS_CTRL_STA_DATA_ACK_POLICY(_pStart)       ((u8)LE_BITS_TO_2BYTE((u8 *)(_pStart)+24, 5, 2))
 
94
#define SET_QOS_CTRL_STA_DATA_ACK_POLICY(_pStart, _value)       SET_BITS_TO_LE_2BYTE((u8 *)(_pStart)+24, 5, 2, (u8)(_value))
 
95
 
 
96
#define GET_QOS_CTRL_STA_DATA_TXOP(_pStart)     ((u8)LE_BITS_TO_2BYTE((u8 *)(_pStart)+24, 8, 8))
 
97
#define SET_QOS_CTRL_STA_DATA_TXOP(_pStart, _value)     SET_BITS_TO_LE_2BYTE((u8 *)(_pStart)+24, 8, 8, (u8)(_value))
 
98
 
 
99
#define GET_QOS_CTRL_STA_DATA_QSIZE(_pStart)    GET_QOS_CTRL_STA_DATA_TXOP(_pStart)
 
100
#define SET_QOS_CTRL_STA_DATA_QSIZE(_pStart, _value)    SET_QOS_CTRL_STA_DATA_TXOP(_pStart)
 
101
 
 
102
#define GET_QOS_CTRL_HC_DATA_TID(_pStart)       ((u8)LE_BITS_TO_2BYTE((u8 *)(_pStart)+24, 0, 4))
 
103
#define SET_QOS_CTRL_HC_DATA_TID(_pStart, _value)       SET_BITS_TO_LE_2BYTE((u8 *)(_pStart)+24, 0, 4, (u8)(_value))
 
104
 
 
105
#define GET_QOS_CTRL_HC_DATA_EOSP(_pStart)      ((u8)LE_BITS_TO_2BYTE((u8 *)(_pStart)+24, 4, 1))
 
106
#define SET_QOS_CTRL_HC_DATA_EOSP(_pStart, _value)      SET_BITS_TO_LE_2BYTE((u8 *)(_pStart)+24, 4, 1, (u8)(_value))
 
107
 
 
108
#define GET_QOS_CTRL_HC_DATA_ACK_POLICY(_pStart)        ((u8)LE_BITS_TO_2BYTE((u8 *)(_pStart)+24, 5, 2))
 
109
#define SET_QOS_CTRL_HC_DATA_ACK_POLICY(_pStart, _value)        SET_BITS_TO_LE_2BYTE((u8 *)(_pStart)+24, 5, 2, (u8)(_value))
 
110
 
 
111
#define GET_QOS_CTRL_HC_DATA_PS_BUFSTATE(_pStart)       ((u8)LE_BITS_TO_2BYTE((u8 *)(_pStart)+24, 8, 8))
 
112
#define SET_QOS_CTRL_HC_DATA_PS_BUFSTATE(_pStart, _value)       SET_BITS_TO_LE_2BYTE((u8 *)(_pStart)+24, 8, 8, (u8)(_value))
 
113
 
 
114
#define GET_QOS_CTRL_HC_CFP_TID(_pStart)        ((u8)LE_BITS_TO_2BYTE((u8 *)(_pStart)+24, 0, 4))
 
115
#define SET_QOS_CTRL_HC_CFP_TID(_pStart, _value)        SET_BITS_TO_LE_2BYTE((u8 *)(_pStart)+24, 0, 4, (u8)(_value))
 
116
 
 
117
#define GET_QOS_CTRL_HC_CFP_EOSP(_pStart)       ((u8)LE_BITS_TO_2BYTE((u8 *)(_pStart)+24, 4, 1))
 
118
#define SET_QOS_CTRL_HC_CFP_EOSP(_pStart, _value)       SET_BITS_TO_LE_2BYTE((u8 *)(_pStart)+24, 4, 1, (u8)(_value))
 
119
 
 
120
#define GET_QOS_CTRL_HC_CFP_ACK_POLICY(_pStart) ((u8)LE_BITS_TO_2BYTE((u8 *)(_pStart)+24, 5, 2))
 
121
#define SET_QOS_CTRL_HC_CFP_ACK_POLICY(_pStart, _value) SET_BITS_TO_LE_2BYTE((u8 *)(_pStart)+24, 5, 2, (u8)(_value))
 
122
 
 
123
#define GET_QOS_CTRL_HC_CFP_TXOP_LIMIT(_pStart) ((u8)LE_BITS_TO_2BYTE((u8 *)(_pStart)+24, 8, 8))
 
124
#define SET_QOS_CTRL_HC_CFP_TXOP_LIMIT(_pStart, _value) SET_BITS_TO_LE_2BYTE((u8 *)(_pStart)+24, 8, 8, (u8)(_value))
 
125
 
 
126
#define SET_WMM_QOS_INFO_FIELD(_pStart, _val)   WriteEF1Byte(_pStart, _val)
 
127
 
 
128
#define GET_WMM_QOS_INFO_FIELD_PARAMETERSET_COUNT(_pStart)      LE_BITS_TO_1BYTE(_pStart, 0, 4)
 
129
#define SET_WMM_QOS_INFO_FIELD_PARAMETERSET_COUNT(_pStart, _val)        SET_BITS_TO_LE_1BYTE(_pStart, 0, 4, _val)
 
130
 
 
131
#define GET_WMM_QOS_INFO_FIELD_AP_UAPSD(_pStart)        LE_BITS_TO_1BYTE(_pStart, 7, 1)
 
132
#define SET_WMM_QOS_INFO_FIELD_AP_UAPSD(_pStart, _val)  SET_BITS_TO_LE_1BYTE(_pStart, 7, 1, _val)
 
133
 
 
134
#define GET_WMM_QOS_INFO_FIELD_STA_AC_VO_UAPSD(_pStart) LE_BITS_TO_1BYTE(_pStart, 0, 1)
 
135
#define SET_WMM_QOS_INFO_FIELD_STA_AC_VO_UAPSD(_pStart, _val)   SET_BITS_TO_LE_1BYTE(_pStart, 0, 1, _val)
 
136
 
 
137
#define GET_WMM_QOS_INFO_FIELD_STA_AC_VI_UAPSD(_pStart) LE_BITS_TO_1BYTE(_pStart, 1, 1)
 
138
#define SET_WMM_QOS_INFO_FIELD_STA_AC_VI_UAPSD(_pStart, _val)   SET_BITS_TO_LE_1BYTE(_pStart, 1, 1, _val)
 
139
 
 
140
#define GET_WMM_QOS_INFO_FIELD_STA_AC_BE_UAPSD(_pStart) LE_BITS_TO_1BYTE(_pStart, 2, 1)
 
141
#define SET_WMM_QOS_INFO_FIELD_STA_AC_BE_UAPSD(_pStart, _val)   SET_BITS_TO_LE_1BYTE(_pStart, 2, 1, _val)
 
142
        
 
143
#define GET_WMM_QOS_INFO_FIELD_STA_AC_BK_UAPSD(_pStart) LE_BITS_TO_1BYTE(_pStart, 3, 1)
 
144
#define SET_WMM_QOS_INFO_FIELD_STA_AC_BK_UAPSD(_pStart, _val)   SET_BITS_TO_LE_1BYTE(_pStart, 3, 1, _val)
 
145
 
 
146
#define GET_WMM_QOS_INFO_FIELD_STA_MAX_SP_LEN(_pStart)  LE_BITS_TO_1BYTE(_pStart, 5, 2)
 
147
#define SET_WMM_QOS_INFO_FIELD_STA_MAX_SP_LEN(_pStart, _val)    SET_BITS_TO_LE_1BYTE(_pStart, 5, 2, _val)
 
148
                
 
149
 
 
150
#define WMM_INFO_ELEMENT_SIZE   7
 
151
 
 
152
#define GET_WMM_INFO_ELE_OUI(_pStart)   ((u8 *)(_pStart))
 
153
#define SET_WMM_INFO_ELE_OUI(_pStart, _pVal)    PlatformMoveMemory(_pStart, _pVal, 3);
 
154
 
 
155
#define GET_WMM_INFO_ELE_OUI_TYPE(_pStart)      ( EF1Byte( *((u8 *)(_pStart)+3) ) )
 
156
#define SET_WMM_INFO_ELE_OUI_TYPE(_pStart, _val)        ( *((u8 *)(_pStart)+3) = EF1Byte(_val) )
 
157
 
 
158
#define GET_WMM_INFO_ELE_OUI_SUBTYPE(_pStart)   ( EF1Byte( *((u8 *)(_pStart)+4) ) )
 
159
#define SET_WMM_INFO_ELE_OUI_SUBTYPE(_pStart, _val)     ( *((u8 *)(_pStart)+4) = EF1Byte(_val) )
 
160
 
 
161
#define GET_WMM_INFO_ELE_VERSION(_pStart)       ( EF1Byte( *((u8 *)(_pStart)+5) ) )
 
162
#define SET_WMM_INFO_ELE_VERSION(_pStart, _val) ( *((u8 *)(_pStart)+5) = EF1Byte(_val) )
 
163
 
 
164
#define GET_WMM_INFO_ELE_QOS_INFO_FIELD(_pStart)        ( EF1Byte( *((u8 *)(_pStart)+6) ) )
 
165
#define SET_WMM_INFO_ELE_QOS_INFO_FIELD(_pStart, _val)  ( *((u8 *)(_pStart)+6) = EF1Byte(_val) )
 
166
 
 
167
        
 
168
 
 
169
#define GET_WMM_AC_PARAM_AIFSN(_pStart) ( (u8)LE_BITS_TO_4BYTE(_pStart, 0, 4) )
 
170
#define SET_WMM_AC_PARAM_AIFSN(_pStart, _val)   SET_BITS_TO_LE_4BYTE(_pStart, 0, 4, _val)
 
171
 
 
172
#define GET_WMM_AC_PARAM_ACM(_pStart)   ( (u8)LE_BITS_TO_4BYTE(_pStart, 4, 1) )
 
173
#define SET_WMM_AC_PARAM_ACM(_pStart, _val)     SET_BITS_TO_LE_4BYTE(_pStart, 4, 1, _val)
 
174
 
 
175
#define GET_WMM_AC_PARAM_ACI(_pStart)           ( (u8)LE_BITS_TO_4BYTE(_pStart, 5, 2) )
 
176
#define SET_WMM_AC_PARAM_ACI(_pStart, _val)     SET_BITS_TO_LE_4BYTE(_pStart, 5, 2, _val)
 
177
 
 
178
#define GET_WMM_AC_PARAM_ACI_AIFSN(_pStart)     ( (u8)LE_BITS_TO_4BYTE(_pStart, 0, 8) )
 
179
#define SET_WMM_AC_PARAM_ACI_AIFSN(_pStart, _val)       SET_BTIS_TO_LE_4BYTE(_pStart, 0, 8, _val)
 
180
 
 
181
#define GET_WMM_AC_PARAM_ECWMIN(_pStart)        ( (u8)LE_BITS_TO_4BYTE(_pStart, 8, 4) )
 
182
#define SET_WMM_AC_PARAM_ECWMIN(_pStart, _val)  SET_BITS_TO_LE_4BYTE(_pStart, 8, 4, _val)
 
183
 
 
184
#define GET_WMM_AC_PARAM_ECWMAX(_pStart)        ( (u8)LE_BITS_TO_4BYTE(_pStart, 12, 4) )
 
185
#define SET_WMM_AC_PARAM_ECWMAX(_pStart, _val)  SET_BITS_TO_LE_4BYTE(_pStart, 12, 4, _val)
 
186
 
 
187
#define GET_WMM_AC_PARAM_TXOP_LIMIT(_pStart)            ( (u16)LE_BITS_TO_4BYTE(_pStart, 16, 16) )
 
188
#define SET_WMM_AC_PARAM_TXOP_LIMIT(_pStart, _val)      SET_BITS_TO_LE_4BYTE(_pStart, 16, 16, _val)
 
189
 
 
190
 
 
191
 
 
192
 
 
193
#define GET_WMM_PARAM_ELE_OUI(_pStart)  ((u8 *)(_pStart))
 
194
#define SET_WMM_PARAM_ELE_OUI(_pStart, _pVal)   PlatformMoveMemory(_pStart, _pVal, 3)
 
195
 
 
196
#define GET_WMM_PARAM_ELE_OUI_TYPE(_pStart)     ( EF1Byte( *((u8 *)(_pStart)+3) ) )
 
197
#define SET_WMM_PARAM_ELE_OUI_TYPE(_pStart, _val)       ( *((u8 *)(_pStart)+3) = EF1Byte(_val) )
 
198
 
 
199
#define GET_WMM_PARAM_ELE_OUI_SUBTYPE(_pStart)  ( EF1Byte( *((u8 *)(_pStart)+4) ) )
 
200
#define SET_WMM_PARAM_ELE_OUI_SUBTYPE(_pStart, _val)    ( *((u8 *)(_pStart)+4) = EF1Byte(_val) )
 
201
 
 
202
#define GET_WMM_PARAM_ELE_VERSION(_pStart)      ( EF1Byte( *((u8 *)(_pStart)+5) ) )
 
203
#define SET_WMM_PARAM_ELE_VERSION(_pStart, _val)        ( *((u8 *)(_pStart)+5) = EF1Byte(_val) )
 
204
 
 
205
#define GET_WMM_PARAM_ELE_QOS_INFO_FIELD(_pStart)       ( EF1Byte( *((u8 *)(_pStart)+6) ) )
 
206
#define SET_WMM_PARAM_ELE_QOS_INFO_FIELD(_pStart, _val) ( *((u8 *)(_pStart)+6) = EF1Byte(_val) )
 
207
 
 
208
#define GET_WMM_PARAM_ELE_AC_PARAM(_pStart)     ( (u8 *)(_pStart)+8 )
 
209
#define SET_WMM_PARAM_ELE_AC_PARAM(_pStart, _pVal) PlatformMoveMemory((_pStart)+8, _pVal, 16)
 
210
#endif
 
211
 
 
212
typedef union _QOS_CTRL_FIELD{
 
213
        u8      charData[2];
 
214
        u16     shortData;
 
215
 
 
216
        struct
 
217
        {
 
218
                u8              UP:3;
 
219
                u8              usRsvd1:1;
 
220
                u8              EOSP:1;
 
221
                u8              AckPolicy:2;
 
222
                u8              usRsvd2:1;
 
223
                u8              ucRsvdByte;
 
224
        }WMM;
 
225
 
 
226
        struct
 
227
        {
 
228
                u8              TID:4;
 
229
                u8              bIsQsize:1;
 
230
                u8              AckPolicy:2;
 
231
                u8              usRsvd:1;
 
232
                u8              TxopOrQsize;    
 
233
        }BySta;
 
234
 
 
235
        struct
 
236
        {
 
237
                u8              TID:4;
 
238
                u8              EOSP:1;
 
239
                u8              AckPolicy:2;
 
240
                u8              usRsvd:1;
 
241
                u8              PSBufState;             
 
242
        }ByHc_Data;
 
243
 
 
244
        struct
 
245
        {
 
246
                u8              TID:4;
 
247
                u8              EOSP:1;
 
248
                u8              AckPolicy:2;
 
249
                u8              usRsvd:1;
 
250
                u8              TxopLimit;              
 
251
        }ByHc_CFP;
 
252
 
 
253
}QOS_CTRL_FIELD, *PQOS_CTRL_FIELD;
 
254
 
 
255
 
 
256
typedef union _QOS_INFO_FIELD{
 
257
        u8      charData;
 
258
        
 
259
        struct
 
260
        {
 
261
                u8              ucParameterSetCount:4;
 
262
                u8              ucReserved:4;   
 
263
        }WMM;
 
264
 
 
265
        struct 
 
266
        {
 
267
                u8              ucAC_VO_UAPSD:1;
 
268
                u8              ucAC_VI_UAPSD:1;
 
269
                u8              ucAC_BE_UAPSD:1;
 
270
                u8              ucAC_BK_UAPSD:1;
 
271
                u8              ucReserved1:1;
 
272
                u8              ucMaxSPLen:2;
 
273
                u8              ucReserved2:1;
 
274
                
 
275
        }ByWmmPsSta;
 
276
 
 
277
        struct
 
278
        {
 
279
                u8              ucParameterSetCount:4;
 
280
                u8              ucReserved:3; 
 
281
                u8              ucApUapsd:1;
 
282
        }ByWmmPsAp;
 
283
 
 
284
        struct
 
285
        {
 
286
                u8              ucAC3_UAPSD:1;
 
287
                u8              ucAC2_UAPSD:1;
 
288
                u8              ucAC1_UAPSD:1;
 
289
                u8              ucAC0_UAPSD:1;
 
290
                u8              ucQAck:1;
 
291
                u8              ucMaxSPLen:2;
 
292
                u8              ucMoreDataAck:1;
 
293
        } By11eSta;
 
294
 
 
295
        struct
 
296
        {
 
297
                u8              ucParameterSetCount:4;
 
298
                u8              ucQAck:1;
 
299
                u8              ucQueueReq:1;
 
300
                u8              ucTXOPReq:1;
 
301
                u8              ucReserved:1;
 
302
        } By11eAp;
 
303
 
 
304
        struct
 
305
        {
 
306
                u8              ucReserved1:4;
 
307
                u8              ucQAck:1;
 
308
                u8              ucReserved2:2;
 
309
                u8              ucMoreDataAck:1;
 
310
        } ByWmmsaSta;
 
311
 
 
312
        struct
 
313
        {
 
314
                u8              ucReserved1:4;
 
315
                u8              ucQAck:1;
 
316
                u8              ucQueueReq:1;
 
317
                u8              ucTXOPReq:1;
 
318
                u8              ucReserved2:1;  
 
319
        } ByWmmsaAp;
 
320
 
 
321
        struct
 
322
        {
 
323
                u8              ucAC3_UAPSD:1;
 
324
                u8              ucAC2_UAPSD:1;
 
325
                u8              ucAC1_UAPSD:1;
 
326
                u8              ucAC0_UAPSD:1;
 
327
                u8              ucQAck:1;
 
328
                u8              ucMaxSPLen:2;
 
329
                u8              ucMoreDataAck:1;        
 
330
        } ByAllSta;
 
331
 
 
332
        struct
 
333
        {
 
334
                u8              ucParameterSetCount:4;
 
335
                u8              ucQAck:1;
 
336
                u8              ucQueueReq:1;
 
337
                u8              ucTXOPReq:1;
 
338
                u8              ucApUapsd:1;    
 
339
        } ByAllAp;
 
340
 
 
341
}QOS_INFO_FIELD, *PQOS_INFO_FIELD;
 
342
 
 
343
#if 0
 
344
typedef struct _WMM_INFO_ELEMENT{
 
345
        u8                      OUI[3];
 
346
        u8                      OUI_Type;
 
347
        u8                      OUI_SubType;
 
348
        u8                      Version;
 
349
        QOS_INFO_FIELD  QosInfo;
 
350
}WMM_INFO_ELEMENT, *PWMM_INFO_ELEMENT;
 
351
#endif
 
352
 
 
353
typedef u32 AC_CODING;
 
354
#define AC0_BE  0               
 
355
#define AC1_BK  1               
 
356
#define AC2_VI  2               
 
357
#define AC3_VO  3               
 
358
#define AC_MAX  4               
 
359
 
 
360
typedef union _ACI_AIFSN{
 
361
        u8      charData;
 
362
        
 
363
        struct
 
364
        {
 
365
                u8      AIFSN:4;
 
366
                u8      ACM:1;
 
367
                u8      ACI:2;
 
368
                u8      Reserved:1;
 
369
        }f;     
 
370
}ACI_AIFSN, *PACI_AIFSN;
 
371
 
 
372
typedef union _ECW{
 
373
        u8      charData;
 
374
        struct
 
375
        {
 
376
                u8      ECWmin:4;
 
377
                u8      ECWmax:4;
 
378
        }f;     
 
379
}ECW, *PECW;
 
380
 
 
381
typedef union _AC_PARAM{
 
382
        u32     longData;
 
383
        u8      charData[4];
 
384
 
 
385
        struct
 
386
        {
 
387
                ACI_AIFSN       AciAifsn;
 
388
                ECW             Ecw;
 
389
                u16             TXOPLimit;
 
390
        }f;     
 
391
}AC_PARAM, *PAC_PARAM;
 
392
 
 
393
 
 
394
 
 
395
typedef enum _QOS_ELE_SUBTYPE{
 
396
        QOSELE_TYPE_INFO        = 0x00,         
 
397
        QOSELE_TYPE_PARAM       = 0x01,         
 
398
}QOS_ELE_SUBTYPE,*PQOS_ELE_SUBTYPE;
 
399
 
 
400
 
 
401
typedef enum _DIRECTION_VALUE{
 
402
        DIR_UP                  = 0,            
 
403
        DIR_DOWN                = 1,            
 
404
        DIR_DIRECT              = 2,            
 
405
        DIR_BI_DIR              = 3,            
 
406
}DIRECTION_VALUE,*PDIRECTION_VALUE;
 
407
 
 
408
 
 
409
typedef union _QOS_TSINFO{
 
410
        u8              charData[3];
 
411
        struct {
 
412
                u8              ucTrafficType:1;                        
 
413
                u8              ucTSID:4;
 
414
                u8              ucDirection:2;
 
415
                u8              ucAccessPolicy:2;       
 
416
                u8              ucAggregation:1;                
 
417
                u8              ucPSB:1;                                
 
418
                u8              ucUP:3;
 
419
                u8              ucTSInfoAckPolicy:2;            
 
420
                u8              ucSchedule:1;                   
 
421
                u8              ucReserved:7;
 
422
        }field;
 
423
}QOS_TSINFO, *PQOS_TSINFO;
 
424
 
 
425
typedef union _TSPEC_BODY{
 
426
        u8              charData[55];
 
427
        
 
428
        struct
 
429
        {
 
430
                QOS_TSINFO      TSInfo; 
 
431
                u16     NominalMSDUsize;
 
432
                u16     MaxMSDUsize;
 
433
                u32     MinServiceItv;
 
434
                u32     MaxServiceItv;
 
435
                u32     InactivityItv;
 
436
                u32     SuspenItv;
 
437
                u32     ServiceStartTime;
 
438
                u32     MinDataRate;
 
439
                u32     MeanDataRate;
 
440
                u32     PeakDataRate;
 
441
                u32     MaxBurstSize;
 
442
                u32     DelayBound;
 
443
                u32     MinPhyRate;
 
444
                u16     SurplusBandwidthAllowance;
 
445
                u16     MediumTime;
 
446
        } f;    
 
447
}TSPEC_BODY, *PTSPEC_BODY;
 
448
 
 
449
 
 
450
typedef struct _WMM_TSPEC{
 
451
        u8              ID;
 
452
        u8              Length;
 
453
        u8              OUI[3];
 
454
        u8              OUI_Type;
 
455
        u8              OUI_SubType;
 
456
        u8              Version;
 
457
        TSPEC_BODY      Body;
 
458
} WMM_TSPEC, *PWMM_TSPEC;
 
459
 
 
460
typedef enum _ACM_METHOD{
 
461
        eAcmWay0_SwAndHw                = 0,            
 
462
        eAcmWay1_HW                     = 1,            
 
463
        eAcmWay2_SW                     = 2,            
 
464
}ACM_METHOD,*PACM_METHOD;
 
465
 
 
466
 
 
467
typedef struct _ACM{
 
468
        u64             UsedTime;
 
469
        u64             MediumTime;
 
470
        u8              HwAcmCtl;       
 
471
}ACM, *PACM;
 
472
 
 
473
typedef u8              AC_UAPSD, *PAC_UAPSD;
 
474
 
 
475
#define GET_VO_UAPSD(_apsd) ((_apsd) & BIT0)
 
476
#define SET_VO_UAPSD(_apsd) ((_apsd) |= BIT0)
 
477
        
 
478
#define GET_VI_UAPSD(_apsd) ((_apsd) & BIT1)
 
479
#define SET_VI_UAPSD(_apsd) ((_apsd) |= BIT1)
 
480
 
 
481
#define GET_BK_UAPSD(_apsd) ((_apsd) & BIT2)
 
482
#define SET_BK_UAPSD(_apsd) ((_apsd) |= BIT2)
 
483
 
 
484
#define GET_BE_UAPSD(_apsd) ((_apsd) & BIT3)
 
485
#define SET_BE_UAPSD(_apsd) ((_apsd) |= BIT3)
 
486
        
 
487
 
 
488
typedef union _QOS_TCLAS{
 
489
 
 
490
        struct _TYPE_GENERAL{
 
491
                u8              Priority;
 
492
                u8              ClassifierType;
 
493
                u8              Mask;
 
494
        } TYPE_GENERAL;
 
495
 
 
496
        struct _TYPE0_ETH{
 
497
                u8              Priority;
 
498
                u8              ClassifierType;
 
499
                u8              Mask;
 
500
                u8              SrcAddr[6];
 
501
                u8              DstAddr[6];
 
502
                u16             Type;
 
503
        } TYPE0_ETH;
 
504
 
 
505
        struct _TYPE1_IPV4{
 
506
                u8              Priority;
 
507
                u8              ClassifierType;
 
508
                u8              Mask;
 
509
                u8              Version;
 
510
                u8              SrcIP[4];
 
511
                u8              DstIP[4];
 
512
                u16             SrcPort;
 
513
                u16             DstPort;
 
514
                u8              DSCP;
 
515
                u8              Protocol;
 
516
                u8              Reserved;
 
517
        } TYPE1_IPV4;
 
518
 
 
519
        struct _TYPE1_IPV6{
 
520
                u8              Priority;
 
521
                u8              ClassifierType;
 
522
                u8              Mask;
 
523
                u8              Version;
 
524
                u8              SrcIP[16];
 
525
                u8              DstIP[16];
 
526
                u16             SrcPort;
 
527
                u16             DstPort;
 
528
                u8              FlowLabel[3];
 
529
        } TYPE1_IPV6;
 
530
 
 
531
        struct _TYPE2_8021Q{
 
532
                u8              Priority;
 
533
                u8              ClassifierType;
 
534
                u8              Mask;
 
535
                u16             TagType;
 
536
        } TYPE2_8021Q;
 
537
} QOS_TCLAS, *PQOS_TCLAS;
 
538
 
 
539
typedef struct _QOS_TSTREAM{
 
540
        u8                      AC;
 
541
        WMM_TSPEC               TSpec;
 
542
        QOS_TCLAS               TClass;
 
543
} QOS_TSTREAM, *PQOS_TSTREAM;
 
544
 
 
545
 
 
546
 
 
547
typedef struct _OCTET_STRING{
 
548
        u8              *Octet;
 
549
        u16             Length;
 
550
}OCTET_STRING, *POCTET_STRING;
 
551
#if 0
 
552
#define FillOctetString(_os,_octet,_len)             \
 
553
        (_os).Octet=(u8 *)(_octet);                  \
 
554
        (_os).Length=(_len);
 
555
 
 
556
#define WMM_ELEM_HDR_LEN                             6
 
557
#define WMMElemSkipHdr(_osWMMElem)                   \
 
558
        (_osWMMElem).Octet += WMM_ELEM_HDR_LEN;      \
 
559
        (_osWMMElem).Length -= WMM_ELEM_HDR_LEN;
 
560
#endif
 
561
typedef struct _STA_QOS{
 
562
        u8                              WMMIEBuf[MAX_WMMELE_LENGTH];
 
563
        u8*                             WMMIE;
 
564
 
 
565
        QOS_MODE                        QosCapability; 
 
566
        QOS_MODE                        CurrentQosMode;
 
567
 
 
568
        AC_UAPSD                        b4ac_Uapsd;  
 
569
        AC_UAPSD                        Curr4acUapsd;
 
570
        u8                              bInServicePeriod;
 
571
        u8                              MaxSPLength;
 
572
        int                             NumBcnBeforeTrigger;
 
573
 
 
574
        u8 *                            pWMMInfoEle;
 
575
        u8                              WMMParamEle[WMM_PARAM_ELEMENT_SIZE];
 
576
        u8                              WMMPELength;
 
577
 
 
578
        QOS_INFO_FIELD                  QosInfoField_STA;       
 
579
        QOS_INFO_FIELD                  QosInfoField_AP;        
 
580
 
 
581
        AC_PARAM                        CurAcParameters[4];
 
582
 
 
583
        ACM                             acm[4];
 
584
        ACM_METHOD                      AcmMethod;
 
585
 
 
586
        QOS_TSTREAM                     TStream[16];
 
587
        WMM_TSPEC                       TSpec;
 
588
 
 
589
        u32                             QBssWirelessMode;
 
590
 
 
591
        u8                              bNoAck;
 
592
 
 
593
        u8                              bEnableRxImmBA;
 
594
 
 
595
}STA_QOS, *PSTA_QOS;
 
596
 
 
597
typedef struct _BSS_QOS{
 
598
        QOS_MODE                bdQoSMode;
 
599
 
 
600
        u8                      bdWMMIEBuf[MAX_WMMELE_LENGTH];
 
601
        u8*             bdWMMIE;
 
602
 
 
603
        QOS_ELE_SUBTYPE         EleSubType;
 
604
 
 
605
        u8 *                    pWMMInfoEle;
 
606
        u8 *                    pWMMParamEle;
 
607
        
 
608
        QOS_INFO_FIELD          QosInfoField;
 
609
        AC_PARAM                AcParameter[4];
 
610
}BSS_QOS, *PBSS_QOS;
 
611
 
 
612
 
 
613
#define sQoSCtlLng                      2
 
614
#define QOS_CTRL_LEN(_QosMode)          ((_QosMode > QOS_DISABLE)? sQoSCtlLng : 0)
 
615
 
 
616
 
 
617
#define IsACValid(ac)                   ((ac<=7 )?true:false )
 
618
 
 
619
#endif