Commit | Line | Data |
---|---|---|
6fa3eb70 S |
1 | /* |
2 | ** $Id: //Department/DaVinci/BRANCHES/MT6620_WIFI_DRIVER_V2_3/include/mgmt/cnm_mem.h#1 $ | |
3 | */ | |
4 | ||
5 | /*! \file "cnm_mem.h" | |
6 | \brief In this file we define the structure of the control unit of | |
7 | packet buffer and MGT/MSG Memory Buffer. | |
8 | */ | |
9 | ||
10 | ||
11 | ||
12 | /* | |
13 | ** $Log: cnm_mem.h $ | |
14 | * | |
15 | * 03 02 2012 terry.wu | |
16 | * NULL | |
17 | * Snc CFG80211 modification for ICS migration from branch 2.2. | |
18 | * | |
19 | * 01 05 2012 tsaiyuan.hsu | |
20 | * [WCXRP00001157] [MT6620 Wi-Fi][FW][DRV] add timing measurement support for 802.11v | |
21 | * add timing measurement support for 802.11v. | |
22 | * | |
23 | * 03 17 2011 yuche.tsai | |
24 | * NULL | |
25 | * Resize the Secondary Device Type array when WiFi Direct is enabled. | |
26 | * | |
27 | * 03 16 2011 wh.su | |
28 | * [WCXRP00000530] [MT6620 Wi-Fi] [Driver] skip doing p2pRunEventAAAComplete after send assoc response Tx Done | |
29 | * enable the protected while at P2P start GO, and skip some security check . | |
30 | * | |
31 | * 01 26 2011 cm.chang | |
32 | * [WCXRP00000395] [MT6620 Wi-Fi][Driver][FW] Search STA_REC with additional net type index argument | |
33 | * . | |
34 | * | |
35 | * 01 11 2011 eddie.chen | |
36 | * [WCXRP00000322] Add WMM IE in beacon, | |
37 | ||
38 | Add per station flow control when STA is in PS | |
39 | ||
40 | ||
41 | * Add per STA flow control when STA is in PS mode | |
42 | * | |
43 | * 12 29 2010 eddie.chen | |
44 | * [WCXRP00000322] Add WMM IE in beacon, | |
45 | Add per station flow control when STA is in PS | |
46 | ||
47 | * 1) PS flow control event | |
48 | * | |
49 | * 2) WMM IE in beacon, assoc resp, probe resp | |
50 | * | |
51 | * 12 23 2010 george.huang | |
52 | * [WCXRP00000152] [MT6620 Wi-Fi] AP mode power saving function | |
53 | * 1. update WMM IE parsing, with ASSOC REQ handling | |
54 | * 2. extend U-APSD parameter passing from driver to FW | |
55 | * | |
56 | * 12 07 2010 cm.chang | |
57 | * [WCXRP00000239] MT6620 Wi-Fi][Driver][FW] Merge concurrent branch back to maintrunk | |
58 | * 1. BSSINFO include RLM parameter | |
59 | * 2. free all sta records when network is disconnected | |
60 | * | |
61 | * 11 29 2010 cm.chang | |
62 | * [WCXRP00000210] [MT6620 Wi-Fi][Driver][FW] Set RCPI value in STA_REC for initial TX rate selection of auto-rate algorithm | |
63 | * Sync RCPI of STA_REC to FW as reference of initial TX rate | |
64 | * | |
65 | * 10 18 2010 cp.wu | |
66 | * [WCXRP00000053] [MT6620 Wi-Fi][Driver] Reset incomplete and might leads to BSOD when entering RF test with AIS associated | |
67 | * 1. remove redundant variables in STA_REC structure | |
68 | * 2. add STA-REC uninitialization routine for clearing pending events | |
69 | * | |
70 | * 09 21 2010 kevin.huang | |
71 | * [WCXRP00000052] [MT6620 Wi-Fi][Driver] Eliminate Linux Compile Warning | |
72 | * Eliminate Linux Compile Warning | |
73 | * | |
74 | * 09 03 2010 kevin.huang | |
75 | * NULL | |
76 | * Refine #include sequence and solve recursive/nested #include issue | |
77 | * | |
78 | * 07 12 2010 cp.wu | |
79 | * | |
80 | * SAA will take a record for tracking request sequence number. | |
81 | * | |
82 | * 07 08 2010 cp.wu | |
83 | * | |
84 | * [WPD00003833] [MT6620 and MT5931] Driver migration - move to new repository. | |
85 | * | |
86 | * 07 07 2010 cm.chang | |
87 | * [WPD00003841][LITE Driver] Migrate RLM/CNM to host driver | |
88 | * Support state of STA record change from 1 to 1 | |
89 | * | |
90 | * 07 01 2010 cm.chang | |
91 | * [WPD00003841][LITE Driver] Migrate RLM/CNM to host driver | |
92 | * Support sync command of STA_REC | |
93 | * | |
94 | * 06 21 2010 wh.su | |
95 | * [WPD00003840][MT6620 5931] Security migration | |
96 | * modify some code for concurrent network. | |
97 | * | |
98 | * 06 21 2010 yuche.tsai | |
99 | * [WPD00003839][MT6620 5931][P2P] Feature migration | |
100 | * Fix compile error for P2P related defination. | |
101 | * | |
102 | * 06 18 2010 cm.chang | |
103 | * [WPD00003841][LITE Driver] Migrate RLM/CNM to host driver | |
104 | * Provide cnmMgtPktAlloc() and alloc/free function of msg/buf | |
105 | * | |
106 | * 06 17 2010 yuche.tsai | |
107 | * [WPD00003839][MT6620 5931][P2P] Feature migration | |
108 | * Add P2P related fields. | |
109 | * | |
110 | * 06 14 2010 cp.wu | |
111 | * [WPD00003833][MT6620 and MT5931] Driver migration | |
112 | * saa_fsm.c is migrated. | |
113 | * | |
114 | * 06 14 2010 cp.wu | |
115 | * [WPD00003833][MT6620 and MT5931] Driver migration | |
116 | * restore utility function invoking via hem_mbox to direct calls | |
117 | * | |
118 | * 06 10 2010 cp.wu | |
119 | * [WPD00003833][MT6620 and MT5931] Driver migration | |
120 | * add buildable & linkable ais_fsm.c | |
121 | * | |
122 | * related reference are still waiting to be resolved | |
123 | * | |
124 | * 06 08 2010 cp.wu | |
125 | * [WPD00003833][MT6620 and MT5931] Driver migration | |
126 | * hem_mbox is migrated. | |
127 | * | |
128 | * 06 08 2010 cp.wu | |
129 | * [WPD00003833][MT6620 and MT5931] Driver migration | |
130 | * add hem_mbox.c and cnm_mem.h (but disabled some feature) for further migration | |
131 | * | |
132 | * 06 04 2010 george.huang | |
133 | * [BORA00000678][MT6620]WiFi LP integration | |
134 | * [BORA00000678] [MT6620]WiFi LP integration | |
135 | * 1. add u8TimeStamp in MSDU_INFO | |
136 | * 2. move fgIsRxTSFUpdated/fgIsTxTSFUpdated from static to BSS_INFO | |
137 | * 3. add new member for supporting PM in STA_RECORD, which is for AP PS mode | |
138 | * | |
139 | * 05 31 2010 yarco.yang | |
140 | * [BORA00000018]Integrate WIFI part into BORA for the 1st time | |
141 | * Add RX TSF Log Feature and ADDBA Rsp with DECLINE handling | |
142 | * | |
143 | * 05 28 2010 cm.chang | |
144 | * [BORA00000018]Integrate WIFI part into BORA for the 1st time | |
145 | * Support checking of duplicated buffer free | |
146 | * | |
147 | * 05 28 2010 kevin.huang | |
148 | * [BORA00000794][WIFISYS][New Feature]Power Management Support | |
149 | * Move define of STA_REC_NUM to config.h and rename to CFG_STA_REC_NUM | |
150 | * | |
151 | * 05 21 2010 kevin.huang | |
152 | * [BORA00000794][WIFISYS][New Feature]Power Management Support | |
153 | * Refine txmInitWtblTxRateTable() - set TX initial rate according to AP's operation rate set | |
154 | * | |
155 | * 05 19 2010 yarco.yang | |
156 | * [BORA00000018]Integrate WIFI part into BORA for the 1st time | |
157 | * Fixed MAC RX Desc be overwritten issue | |
158 | * | |
159 | * 05 12 2010 kevin.huang | |
160 | * [BORA00000794][WIFISYS][New Feature]Power Management Support | |
161 | * Add Power Management - Legacy PS-POLL support. | |
162 | * | |
163 | * 05 10 2010 yarco.yang | |
164 | * [BORA00000018]Integrate WIFI part into BORA for the 1st time | |
165 | * Support Rx header translation for A-MSDU subframe | |
166 | * | |
167 | * 05 07 2010 george.huang | |
168 | * [BORA00000678][MT6620]WiFi LP integration | |
169 | * add more sanity check about setting timer | |
170 | * | |
171 | * 04 29 2010 george.huang | |
172 | * [BORA00000678][MT6620]WiFi LP integration | |
173 | * modify the compiling flag for RAM usage | |
174 | * | |
175 | * 04 28 2010 tehuang.liu | |
176 | * [BORA00000605][WIFISYS] Phase3 Integration | |
177 | * Modified some MQM-related data structures (SN counter, TX/RX BA table) | |
178 | * | |
179 | * 04 27 2010 tehuang.liu | |
180 | * [BORA00000605][WIFISYS] Phase3 Integration | |
181 | * Added new TX/RX BA tables in STA_REC | |
182 | * | |
183 | * 04 19 2010 kevin.huang | |
184 | * [BORA00000714][WIFISYS][New Feature]Beacon Timeout Support | |
185 | * Add Beacon Timeout Support and will send Null frame to diagnose connection | |
186 | * | |
187 | * 04 09 2010 tehuang.liu | |
188 | * [BORA00000605][WIFISYS] Phase3 Integration | |
189 | * [BORA00000644] WiFi phase 4 integration | |
190 | * Added per-TID SN cache in STA_REC | |
191 | * | |
192 | * 03 24 2010 cm.chang | |
193 | * [BORA00000018]Integrate WIFI part into BORA for the 1st time | |
194 | * Support power control | |
195 | * | |
196 | * 03 16 2010 kevin.huang | |
197 | * [BORA00000663][WIFISYS][New Feature] AdHoc Mode Support | |
198 | * Add AdHoc Mode | |
199 | * | |
200 | * 03 11 2010 yuche.tsai | |
201 | * [BORA00000343][MT6620] Emulation For TX | |
202 | * . | |
203 | * | |
204 | * 03 05 2010 yarco.yang | |
205 | * [BORA00000018]Integrate WIFI part into BORA for the 1st time | |
206 | * Remove Emulation definition | |
207 | * | |
208 | * 03 04 2010 cp.wu | |
209 | * [BORA00000368]Integrate HIF part into BORA | |
210 | * eliminate HIF_EMULATION in cnm_mem.h | |
211 | * | |
212 | * 03 04 2010 kevin.huang | |
213 | * [BORA00000603][WIFISYS] [New Feature] AAA Module Support | |
214 | * Add cnmStaRecChangeState() declaration. | |
215 | * | |
216 | * 03 03 2010 cm.chang | |
217 | * [BORA00000018]Integrate WIFI part into BORA for the 1st time | |
218 | * Remove compiling warning for some emulation flags | |
219 | * | |
220 | * 03 03 2010 wh.su | |
221 | * [BORA00000637][MT6620 Wi-Fi] [Bug] WPA2 pre-authentication timer not correctly initialize | |
222 | * move the AIS specific variable for security to AIS specific structure. | |
223 | * | |
224 | * 03 03 2010 wh.su | |
225 | * [BORA00000637][MT6620 Wi-Fi] [Bug] WPA2 pre-authentication timer not correctly initialize | |
226 | * Fixed the pre-authentication timer not correctly init issue, and modify the security related callback function prototype. | |
227 | * | |
228 | * 03 01 2010 tehuang.liu | |
229 | * [BORA00000569][WIFISYS] Phase 2 Integration Test | |
230 | * To store field AMPDU Parameters in STA_REC | |
231 | * | |
232 | * 02 26 2010 tehuang.liu | |
233 | * [BORA00000569][WIFISYS] Phase 2 Integration Test | |
234 | * Added fgIsWmmSupported in STA_RECORD_T. | |
235 | * | |
236 | * 02 26 2010 tehuang.liu | |
237 | * [BORA00000569][WIFISYS] Phase 2 Integration Test | |
238 | * Added fgIsUapsdSupported in STA_RECORD_T | |
239 | * | |
240 | * 02 13 2010 tehuang.liu | |
241 | * [BORA00000569][WIFISYS] Phase 2 Integration Test | |
242 | * Added arTspecTable in STA_REC for TSPEC management | |
243 | * | |
244 | * 02 12 2010 cm.chang | |
245 | * [BORA00000018]Integrate WIFI part into BORA for the 1st time | |
246 | * Enable mgmt buffer debug by default | |
247 | * | |
248 | * 02 12 2010 tehuang.liu | |
249 | * [BORA00000569][WIFISYS] Phase 2 Integration Test | |
250 | * Added BUFFER_SOURCE_BCN | |
251 | * | |
252 | * 02 10 2010 tehuang.liu | |
253 | * [BORA00000569][WIFISYS] Phase 2 Integration Test | |
254 | * Renamed MSDU_INFO.ucFixedRateIndex as MSDU_INFO.ucFixedRateCode | |
255 | * | |
256 | * 02 04 2010 kevin.huang | |
257 | * [BORA00000603][WIFISYS] [New Feature] AAA Module Support | |
258 | * Add AAA Module Support, Revise Net Type to Net Type Index for array lookup | |
259 | * | |
260 | * 02 02 2010 tehuang.liu | |
261 | * [BORA00000569][WIFISYS] Phase 2 Integration Test | |
262 | * Added SN info in MSDU_INFO_T | |
263 | * | |
264 | * 01 27 2010 wh.su | |
265 | * [BORA00000476][Wi-Fi][firmware] Add the security module initialize code | |
266 | * add and fixed some security function. | |
267 | * | |
268 | * 01 11 2010 kevin.huang | |
269 | * [BORA00000018]Integrate WIFI part into BORA for the 1st time | |
270 | * Add Deauth and Disassoc Handler | |
271 | * | |
272 | * 01 08 2010 cp.wu | |
273 | * [BORA00000368]Integrate HIF part into BORA | |
274 | * 1) separate wifi_var_emu.c/.h from wifi_var.c/.h | |
275 | * 2) eliminate HIF_EMULATION code sections appeared in wifi_var/cnm_mem | |
276 | * 3) use cnmMemAlloc() instead to allocate SRAM buffer | |
277 | * | |
278 | * 12 31 2009 cp.wu | |
279 | * [BORA00000368]Integrate HIF part into BORA | |
280 | * 1) surpress debug message emitted from hal_hif.c | |
281 | * 2) add two set of field for recording buffer process time | |
282 | * | |
283 | * 12 31 2009 cp.wu | |
284 | * [BORA00000368]Integrate HIF part into BORA | |
285 | * 1. move wifi task initialization from wifi_task.c(rom) to wifi_init.c (TCM) for integrating F/W download later | |
286 | * * * * * 2. WIFI_Event_Dispatcher() prototype changed to return to suspend mode from normal operation mode | |
287 | * * * * * 2. HIF emulation logic revised | |
288 | * | |
289 | * 12 29 2009 yuche.tsai | |
290 | * [BORA00000343][MT6620] Emulation For TX | |
291 | * .Using global buffer declaring by SD1 instead of using another one. | |
292 | * | |
293 | * 12 25 2009 tehuang.liu | |
294 | * [BORA00000018]Integrate WIFI part into BORA for the 1st time | |
295 | * Integrated modifications for 1st connection (mainly on FW modules MQM, TXM, and RXM) | |
296 | * * MQM: BA handling | |
297 | * * TXM: Macros updates | |
298 | * * RXM: Macros/Duplicate Removal updates | |
299 | * | |
300 | * 12 24 2009 yarco.yang | |
301 | * [BORA00000018]Integrate WIFI part into BORA for the 1st time | |
302 | * . | |
303 | * | |
304 | * 12 23 2009 cp.wu | |
305 | * [BORA00000368]Integrate HIF part into BORA | |
306 | * allocating SRAM for emulation purpose by ruducing MEM_BANK3_BUF_SZ | |
307 | * | |
308 | * 12 21 2009 cm.chang | |
309 | * [BORA00000018]Integrate WIFI part into BORA for the 1st time | |
310 | * Remove individual DATA_BUF_BLOCK_NUM definition for emulation compiling flagsu1rwduu`wvpghlqg|fh+fmdkb | |
311 | * | |
312 | * 12 21 2009 cm.chang | |
313 | * [BORA00000018]Integrate WIFI part into BORA for the 1st time | |
314 | * Support several data buffer banks. | |
315 | * | |
316 | * 12 18 2009 cm.chang | |
317 | * [BORA00000018]Integrate WIFI part into BORA for the 1st time | |
318 | * .For new FPGA memory size | |
319 | * | |
320 | * 12 18 2009 cm.chang | |
321 | * [BORA00000018]Integrate WIFI part into BORA for the 1st time | |
322 | * . | |
323 | * | |
324 | * 12 17 2009 george.huang | |
325 | * [BORA00000018]Integrate WIFI part into BORA for the 1st time | |
326 | * . | |
327 | * | |
328 | * Dec 17 2009 MTK02468 | |
329 | * [BORA00000337] To check in codes for FPGA emulation | |
330 | * Modified the DATA_BLOCK_SIZE from 1620 to 2048 | |
331 | * | |
332 | * Dec 16 2009 mtk01426 | |
333 | * [BORA00000018] Integrate WIFI part into BORA for the 1st time | |
334 | * Add CFG_TEST_SEC_EMULATION flag | |
335 | * | |
336 | * Dec 9 2009 mtk01104 | |
337 | * [BORA00000018] Integrate WIFI part into BORA for the 1st time | |
338 | * Add HT cap to sta record | |
339 | * | |
340 | * Dec 9 2009 mtk02752 | |
341 | * [BORA00000368] Integrate HIF part into BORA | |
342 | * add cnmDataPktFree() for emulation loopback purpose | |
343 | * | |
344 | * Dec 8 2009 mtk01088 | |
345 | * [BORA00000476] [Wi-Fi][firmware] Add the security module initialize code | |
346 | * add the buffer for key handshake 1x and cmd key order issue | |
347 | * | |
348 | * Dec 7 2009 mtk01088 | |
349 | * [BORA00000476] [Wi-Fi][firmware] Add the security module initialize code | |
350 | * move the tx call back function proto type to typedef.h | |
351 | * | |
352 | * Dec 3 2009 mtk01461 | |
353 | * [BORA00000018] Integrate WIFI part into BORA for the 1st time | |
354 | * Add cnmGetStaRecByAddress() and modify variable in STA_RECORD_T | |
355 | * | |
356 | * Dec 1 2009 mtk01088 | |
357 | * [BORA00000476] [Wi-Fi][firmware] Add the security module initialize code | |
358 | * rename the port block flag | |
359 | * | |
360 | * Nov 23 2009 mtk01461 | |
361 | * [BORA00000018] Integrate WIFI part into BORA for the 1st time | |
362 | * Add variables to STA_RECORD_T for assoc/auth | |
363 | * | |
364 | * Nov 23 2009 mtk02468 | |
365 | * [BORA00000337] To check in codes for FPGA emulation | |
366 | * Fixed the value of STA_WAIT_QUEUE_NUM (from 7 to 5) | |
367 | * | |
368 | * Nov 20 2009 mtk02468 | |
369 | * [BORA00000337] To check in codes for FPGA emulation | |
370 | * Removed u2FrameLength from SW_RFB | |
371 | * | |
372 | * Nov 20 2009 mtk02468 | |
373 | * [BORA00000337] To check in codes for FPGA emulation | |
374 | * Fixed indenting | |
375 | * | |
376 | * Nov 20 2009 mtk02468 | |
377 | * [BORA00000337] To check in codes for FPGA emulation | |
378 | * Updated MSDU_INFO and SW_RFB | |
379 | * | |
380 | * Nov 19 2009 mtk01088 | |
381 | * [BORA00000476] [Wi-Fi][firmware] Add the security module initialize code | |
382 | * update the variable for security | |
383 | * | |
384 | * Nov 18 2009 mtk01088 | |
385 | * [BORA00000476] [Wi-Fi][firmware] Add the security module initialize code | |
386 | * remove the variable to make the compiler ok | |
387 | * | |
388 | * Nov 18 2009 mtk01088 | |
389 | * [BORA00000476] [Wi-Fi][firmware] Add the security module initialize code | |
390 | * add the variable for security module | |
391 | * | |
392 | * Nov 16 2009 mtk01461 | |
393 | * [BORA00000018] Integrate WIFI part into BORA for the 1st time | |
394 | * Fix typo in define of MSG_BUF_BLOCK_SIZE | |
395 | * | |
396 | * Nov 13 2009 mtk02468 | |
397 | * [BORA00000337] To check in codes for FPGA emulation | |
398 | * Let typedef STA_REC_T precede typedef MSDU_INFO_T and SW_RFB_T | |
399 | * | |
400 | * Nov 13 2009 mtk02468 | |
401 | * [BORA00000337] To check in codes for FPGA emulation | |
402 | * Modified MSDU_INFO and STA_REC for TXM and MQM | |
403 | * | |
404 | * Nov 12 2009 mtk01104 | |
405 | * [BORA00000018] Integrate WIFI part into BORA for the 1st time | |
406 | * Rename STA_REC_T to STA_RECORD_T and add ucIndex member | |
407 | * | |
408 | * Nov 9 2009 mtk01104 | |
409 | * [BORA00000018] Integrate WIFI part into BORA for the 1st time | |
410 | * Make sure ucBufferSource the same offset in MSDU_INFO and SW_RFB | |
411 | * | |
412 | * Nov 6 2009 mtk01426 | |
413 | * [BORA00000018] Integrate WIFI part into BORA for the 1st time | |
414 | * | |
415 | * | |
416 | * Nov 5 2009 mtk01426 | |
417 | * [BORA00000018] Integrate WIFI part into BORA for the 1st time | |
418 | * | |
419 | * | |
420 | * Nov 5 2009 mtk01461 | |
421 | * [BORA00000018] Integrate WIFI part into BORA for the 1st time | |
422 | * Update comment | |
423 | * | |
424 | * Oct 30 2009 mtk01461 | |
425 | * [BORA00000018] Integrate WIFI part into BORA for the 1st time | |
426 | * Add draft content of MSDU_INFO_T and SW_RFB_T | |
427 | * | |
428 | * Oct 30 2009 mtk01084 | |
429 | * [BORA00000018] Integrate WIFI part into BORA for the 1st time | |
430 | * | |
431 | * | |
432 | * Oct 28 2009 mtk01104 | |
433 | * [BORA00000018] Integrate WIFI part into BORA for the 1st time | |
434 | * | |
435 | * | |
436 | * Oct 23 2009 mtk01461 | |
437 | * [BORA00000018] Integrate WIFI part into BORA for the 1st time | |
438 | * Fix lint warning | |
439 | * | |
440 | * Oct 21 2009 mtk01426 | |
441 | * [BORA00000018] Integrate WIFI part into BORA for the 1st time | |
442 | * Add CFG_TEST_RX_EMULATION flag | |
443 | * | |
444 | * Oct 20 2009 mtk01426 | |
445 | * [BORA00000018] Integrate WIFI part into BORA for the 1st time | |
446 | * | |
447 | * | |
448 | * Oct 9 2009 mtk02468 | |
449 | * [BORA00000337] To check in codes for FPGA emulation | |
450 | * Added field ucTC to MSDU_INFO_T and field pucHifRxPacket to SW_RFB_T | |
451 | * | |
452 | * Oct 8 2009 mtk01104 | |
453 | * [BORA00000018] Integrate WIFI part into BORA for the 1st time | |
454 | * | |
455 | ** | |
456 | */ | |
457 | ||
458 | #ifndef _CNM_MEM_H | |
459 | #define _CNM_MEM_H | |
460 | ||
461 | /******************************************************************************* | |
462 | * C O M P I L E R F L A G S | |
463 | ******************************************************************************** | |
464 | */ | |
465 | ||
466 | /******************************************************************************* | |
467 | * E X T E R N A L R E F E R E N C E S | |
468 | ******************************************************************************** | |
469 | */ | |
470 | ||
471 | /******************************************************************************* | |
472 | * C O N S T A N T S | |
473 | ******************************************************************************** | |
474 | */ | |
475 | ||
476 | #ifndef POWER_OF_2 | |
477 | #define POWER_OF_2(n) BIT(n) | |
478 | #endif | |
479 | ||
480 | /* Size of a basic management buffer block in power of 2 */ | |
481 | #define MGT_BUF_BLOCK_SIZE_IN_POWER_OF_2 7 /* 7 to the power of 2 = 128 */ | |
482 | #define MSG_BUF_BLOCK_SIZE_IN_POWER_OF_2 5 /* 5 to the power of 2 = 32 */ | |
483 | ||
484 | /* Size of a basic management buffer block */ | |
485 | #define MGT_BUF_BLOCK_SIZE POWER_OF_2(MGT_BUF_BLOCK_SIZE_IN_POWER_OF_2) | |
486 | #define MSG_BUF_BLOCK_SIZE POWER_OF_2(MSG_BUF_BLOCK_SIZE_IN_POWER_OF_2) | |
487 | ||
488 | /* Total size of (n) basic management buffer blocks */ | |
489 | #define MGT_BUF_BLOCKS_SIZE(n) ((UINT_32)(n) << MGT_BUF_BLOCK_SIZE_IN_POWER_OF_2) | |
490 | #define MSG_BUF_BLOCKS_SIZE(n) ((UINT_32)(n) << MSG_BUF_BLOCK_SIZE_IN_POWER_OF_2) | |
491 | ||
492 | /* Number of management buffer block */ | |
493 | #define MAX_NUM_OF_BUF_BLOCKS 32 /* Range: 1~32 */ | |
494 | ||
495 | /* Size of overall management frame buffer */ | |
496 | #define MGT_BUFFER_SIZE (MAX_NUM_OF_BUF_BLOCKS * MGT_BUF_BLOCK_SIZE) | |
497 | #define MSG_BUFFER_SIZE (MAX_NUM_OF_BUF_BLOCKS * MSG_BUF_BLOCK_SIZE) | |
498 | ||
499 | ||
500 | /* STA_REC related definitions */ | |
501 | #define STA_REC_INDEX_BMCAST 0xFF | |
502 | #define STA_REC_INDEX_NOT_FOUND 0xFE | |
503 | #define STA_WAIT_QUEUE_NUM 5 /* Number of SW queues in each STA_REC: AC0~AC4 */ | |
504 | #define SC_CACHE_INDEX_NUM 5 /* Number of SC caches in each STA_REC: AC0~AC4 */ | |
505 | ||
506 | ||
507 | /* P2P related definitions */ | |
508 | #ifdef CFG_ENABLE_WIFI_DIRECT | |
509 | /* Moved from p2p_fsm.h */ | |
510 | #define WPS_ATTRI_MAX_LEN_DEVICE_NAME 32 /* 0x1011 */ | |
511 | #define P2P_GC_MAX_CACHED_SEC_DEV_TYPE_COUNT 8 /* NOTE(Kevin): Shall <= 16 */ | |
512 | #endif | |
513 | ||
514 | ||
515 | /******************************************************************************* | |
516 | * D A T A T Y P E S | |
517 | ******************************************************************************** | |
518 | */ | |
519 | #if ((MAX_NUM_OF_BUF_BLOCKS > 32) || (MAX_NUM_OF_BUF_BLOCKS <= 0)) | |
520 | #error > #define MAX_NUM_OF_MGT_BUF_BLOCKS : Out of boundary ! | |
521 | #elif MAX_NUM_OF_BUF_BLOCKS > 16 | |
522 | typedef UINT_32 BUF_BITMAP; | |
523 | #elif MAX_NUM_OF_BUF_BLOCKS > 8 | |
524 | typedef UINT_16 BUF_BITMAP; | |
525 | #else | |
526 | typedef UINT_8 BUF_BITMAP; | |
527 | #endif /* MAX_NUM_OF_MGT_BUF_BLOCKS */ | |
528 | ||
529 | ||
530 | /* Control variable of TX management memory pool */ | |
531 | typedef struct _BUF_INFO_T { | |
532 | PUINT_8 pucBuf; | |
533 | ||
534 | #if CFG_DBG_MGT_BUF | |
535 | UINT_32 u4AllocCount; | |
536 | UINT_32 u4FreeCount; | |
537 | UINT_32 u4AllocNullCount; | |
538 | #endif /* CFG_DBG_MGT_BUF */ | |
539 | ||
540 | BUF_BITMAP rFreeBlocksBitmap; | |
541 | UINT_8 aucAllocatedBlockNum[MAX_NUM_OF_BUF_BLOCKS]; | |
542 | } BUF_INFO_T, *P_BUF_INFO_T; | |
543 | ||
544 | ||
545 | /* Wi-Fi divides RAM into three types | |
546 | * MSG: Mailbox message (Small size) | |
547 | * BUF: HW DMA buffers (HIF/MAC) | |
548 | */ | |
549 | typedef enum _ENUM_RAM_TYPE_T { | |
550 | RAM_TYPE_MSG = 0, | |
551 | RAM_TYPE_BUF | |
552 | } ENUM_RAM_TYPE_T, P_ENUM_RAM_TYPE_T; | |
553 | ||
554 | typedef enum _ENUM_BUFFER_SOURCE_T { | |
555 | BUFFER_SOURCE_HIF_TX0 = 0, | |
556 | BUFFER_SOURCE_HIF_TX1, | |
557 | BUFFER_SOURCE_MAC_RX, | |
558 | BUFFER_SOURCE_MNG, | |
559 | BUFFER_SOURCE_BCN, | |
560 | BUFFER_SOURCE_NUM | |
561 | } ENUM_BUFFER_SOURCE_T, *P_ENUM_BUFFER_SOURCE_T; | |
562 | ||
563 | ||
564 | typedef enum _ENUM_SEC_STATE_T { | |
565 | SEC_STATE_INIT, | |
566 | SEC_STATE_INITIATOR_PORT_BLOCKED, | |
567 | SEC_STATE_RESPONDER_PORT_BLOCKED, | |
568 | SEC_STATE_CHECK_OK, | |
569 | SEC_STATE_SEND_EAPOL, | |
570 | SEC_STATE_SEND_DEAUTH, | |
571 | SEC_STATE_COUNTERMEASURE, | |
572 | SEC_STATE_NUM | |
573 | } ENUM_SEC_STATE_T; | |
574 | ||
575 | typedef struct _TSPEC_ENTRY_T { | |
576 | UINT_8 ucStatus; | |
577 | UINT_8 ucToken; /* Dialog Token in ADDTS_REQ or ADDTS_RSP */ | |
578 | UINT_16 u2MediumTime; | |
579 | UINT_32 u4TsInfo; | |
580 | /* PARAM_QOS_TS_INFO rParamTsInfo; */ | |
581 | /* Add other retained QoS parameters below */ | |
582 | } TSPEC_ENTRY_T, *P_TSPEC_ENTRY_T, TSPEC_TABLE_ENTRY_T, *P_TSPEC_TABLE_ENTRY_T; | |
583 | ||
584 | typedef struct _SEC_INFO_T { | |
585 | ||
586 | ENUM_SEC_STATE_T ePreviousState; | |
587 | ENUM_SEC_STATE_T eCurrentState; | |
588 | ||
589 | BOOL fg2nd1xSend; | |
590 | BOOL fgKeyStored; | |
591 | ||
592 | UINT_8 aucStoredKey[64]; | |
593 | ||
594 | BOOL fgAllowOnly1x; | |
595 | } SEC_INFO_T, *P_SEC_INFO_T; | |
596 | ||
597 | #define MAX_NUM_CONCURRENT_FRAGMENTED_MSDUS 3 | |
598 | ||
599 | #define UPDATE_BSS_RSSI_INTERVAL_SEC 3 /* Seconds */ | |
600 | ||
601 | /* Fragment information structure */ | |
602 | typedef struct _FRAG_INFO_T { | |
603 | UINT_16 u2NextFragSeqCtrl; | |
604 | PUINT_8 pucNextFragStart; | |
605 | P_SW_RFB_T pr1stFrag; | |
606 | OS_SYSTIME rReceiveLifetimeLimit; /* The receive time of 1st fragment */ | |
607 | } FRAG_INFO_T, *P_FRAG_INFO_T; | |
608 | ||
609 | ||
610 | /* Define STA record structure */ | |
611 | struct _STA_RECORD_T { | |
612 | LINK_ENTRY_T rLinkEntry; | |
613 | UINT_8 ucIndex; /* Not modify it except initializing */ | |
614 | ||
615 | BOOLEAN fgIsInUse; /* Indicate if this entry is in use or not */ | |
616 | UINT_8 aucMacAddr[MAC_ADDR_LEN]; /* MAC address */ | |
617 | ||
618 | /* SAA/AAA */ | |
619 | ENUM_AA_STATE_T eAuthAssocState; /* Store STATE Value used in SAA/AAA */ | |
620 | UINT_8 ucAuthAssocReqSeqNum; | |
621 | ||
622 | ENUM_STA_TYPE_T eStaType; /* Indicate the role of this STA in | |
623 | * the network (for example, P2P GO) | |
624 | */ | |
625 | ||
626 | UINT_8 ucNetTypeIndex; /* ENUM_NETWORK_TYPE_INDEX_T */ | |
627 | ||
628 | UINT_8 ucStaState; /* STATE_1,2,3 */ | |
629 | ||
630 | UINT_8 ucPhyTypeSet; /* Available PHY Type Set of this peer | |
631 | * (may deduced from received BSS_DESC_T) | |
632 | */ | |
633 | UINT_8 ucDesiredPhyTypeSet; /* The match result by AND operation of peer's | |
634 | * PhyTypeSet and ours. | |
635 | */ | |
636 | BOOLEAN fgHasBasicPhyType; /* A flag to indicate a Basic Phy Type which | |
637 | * is used to generate some Phy Attribute IE | |
638 | * (e.g. capability, MIB) during association. | |
639 | */ | |
640 | UINT_8 ucNonHTBasicPhyType; /* The Basic Phy Type choosen among the | |
641 | * ucDesiredPhyTypeSet. | |
642 | */ | |
643 | ||
644 | UINT_16 u2CapInfo; /* For Infra Mode, to store Capability Info. from Association Resp(SAA). | |
645 | * For AP Mode, to store Capability Info. from Association Req(AAA). | |
646 | */ | |
647 | UINT_16 u2AssocId; /* For Infra Mode, to store AID from Association Resp(SAA). | |
648 | * For AP Mode, to store the Assigned AID(AAA). | |
649 | */ | |
650 | ||
651 | UINT_16 u2ListenInterval; /* Listen Interval from STA(AAA) */ | |
652 | ||
653 | UINT_16 u2DesiredNonHTRateSet; /* Our Current Desired Rate Set after | |
654 | * match with STA's Operational Rate Set | |
655 | */ | |
656 | ||
657 | UINT_16 u2OperationalRateSet; /* Operational Rate Set of peer BSS */ | |
658 | UINT_16 u2BSSBasicRateSet; /* Basic Rate Set of peer BSS */ | |
659 | ||
660 | BOOLEAN fgIsMerging; /* For IBSS Mode, to indicate that Merge is ongoing */ | |
661 | ||
662 | BOOLEAN fgDiagnoseConnection; /* For Infra/AP Mode, to diagnose the Connection with | |
663 | * this peer by sending ProbeReq/Null frame */ | |
664 | ||
665 | /*------------------------------------------------------------------------------------------*/ | |
666 | /* 802.11n HT capabilities when (prStaRec->ucPhyTypeSet & PHY_TYPE_BIT_HT) is true */ | |
667 | /* They have the same definition with fields of information element */ | |
668 | /*------------------------------------------------------------------------------------------*/ | |
669 | UINT_8 ucMcsSet; /* MCS0~7 rate set of peer BSS */ | |
670 | BOOLEAN fgSupMcs32; /* MCS32 is supported by peer BSS */ | |
671 | UINT_16 u2HtCapInfo; /* HT cap info field by HT cap IE */ | |
672 | UINT_8 ucAmpduParam; /* Field A-MPDU Parameters in HT cap IE */ | |
673 | UINT_16 u2HtExtendedCap; /* HT extended cap field by HT cap IE */ | |
674 | UINT_32 u4TxBeamformingCap; /* TX beamforming cap field by HT cap IE */ | |
675 | UINT_8 ucAselCap; /* ASEL cap field by HT cap IE */ | |
676 | ||
677 | UINT_8 ucRCPI; /* RCPI of peer */ | |
678 | ||
679 | UINT_8 ucDTIMPeriod; /* Target BSS's DTIM Period, we use this | |
680 | * value for setup Listen Interval | |
681 | * TODO(Kevin): TBD | |
682 | */ | |
683 | UINT_8 ucAuthAlgNum; /* For Infra/AP Mode, the Auth Alogrithm Num used in Authentication(SAA/AAA) */ | |
684 | BOOLEAN fgIsReAssoc; /* For Infra/AP Mode, to indicate ReAssoc Frame was in used(SAA/AAA) */ | |
685 | ||
686 | UINT_8 ucTxAuthAssocRetryCount; /* For Infra Mode, the Retry Count of TX Auth/Assod Frame(SAA) */ | |
687 | UINT_8 ucTxAuthAssocRetryLimit; /* For Infra Mode, the Retry Limit of TX Auth/Assod Frame(SAA) */ | |
688 | ||
689 | UINT_16 u2StatusCode; /* Status of Auth/Assoc Req */ | |
690 | UINT_16 u2ReasonCode; /* Reason that been Deauth/Disassoc */ | |
691 | ||
692 | ||
693 | P_IE_CHALLENGE_TEXT_T prChallengeText; /* Point to an allocated buffer for storing Challenge Text for Shared Key Authentication */ | |
694 | ||
695 | TIMER_T rTxReqDoneOrRxRespTimer; /* For Infra Mode, a timer used to send a timeout event | |
696 | * while waiting for TX request done or RX response. | |
697 | */ | |
698 | ||
699 | /*------------------------------------------------------------------------------------------*/ | |
700 | /* Power Management related fields (for STA/ AP/ P2P/ BOW power saving mode) */ | |
701 | /*------------------------------------------------------------------------------------------*/ | |
702 | BOOLEAN fgSetPwrMgtBit; /* For Infra Mode, to indicate that outgoing frame need toggle | |
703 | * the Pwr Mgt Bit in its Frame Control Field. | |
704 | */ | |
705 | ||
706 | BOOLEAN fgIsInPS; /* For AP Mode, to indicate the client PS state(PM). | |
707 | * TRUE: In PS Mode; FALSE: In Active Mode. */ | |
708 | ||
709 | BOOLEAN fgIsInPsPollSP; /* For Infra Mode, to indicate we've sent a PS POLL to AP and start | |
710 | * the PS_POLL Service Period(LP) | |
711 | */ | |
712 | ||
713 | BOOLEAN fgIsInTriggerSP; /* For Infra Mode, to indicate we've sent a Trigger Frame to AP and start | |
714 | * the Delivery Service Period(LP) | |
715 | */ | |
716 | ||
717 | UINT_8 ucBmpDeliveryAC; /* 0: AC0, 1: AC1, 2: AC2, 3: AC3 */ | |
718 | ||
719 | UINT_8 ucBmpTriggerAC; /* 0: AC0, 1: AC1, 2: AC2, 3: AC3 */ | |
720 | ||
721 | UINT_8 ucUapsdSp; /* Max SP length */ | |
722 | ||
723 | /*------------------------------------------------------------------------------------------*/ | |
724 | ||
725 | BOOLEAN fgIsRtsEnabled; | |
726 | ||
727 | OS_SYSTIME rUpdateTime; /* (4) System Timestamp of Successful TX and RX */ | |
728 | ||
729 | OS_SYSTIME rLastJoinTime; /* (4) System Timestamp of latest JOIN process */ | |
730 | ||
731 | UINT_8 ucJoinFailureCount; /* Retry Count of JOIN process */ | |
732 | ||
733 | LINK_T arStaWaitQueue[STA_WAIT_QUEUE_NUM]; /* For TXM to defer pkt forwarding to MAC TX DMA */ | |
734 | ||
735 | UINT_16 au2CachedSeqCtrl[TID_NUM + 1]; /* Duplicate removal for HT STA on a per-TID basis ("+1" is for MMPDU and non-QoS) */ | |
736 | ||
737 | #if 0 | |
738 | /* RXM */ | |
739 | P_RX_BA_ENTRY_T aprRxBaTable[TID_NUM]; | |
740 | ||
741 | /* TXM */ | |
742 | P_TX_BA_ENTRY_T aprTxBaTable[TID_NUM]; | |
743 | #endif | |
744 | ||
745 | FRAG_INFO_T rFragInfo[MAX_NUM_CONCURRENT_FRAGMENTED_MSDUS]; | |
746 | ||
747 | SEC_INFO_T rSecInfo; /* The security state machine */ | |
748 | ||
749 | BOOLEAN fgPortBlock; /* The 802.1x Port Control flag */ | |
750 | ||
751 | BOOLEAN fgTransmitKeyExist; /* Unicast key exist for this STA */ | |
752 | ||
753 | UINT_8 ucWTEntry; | |
754 | ||
755 | BOOLEAN fgTxAmpduEn; /* Enable TX AMPDU for this Peer */ | |
756 | BOOLEAN fgRxAmpduEn; /* Enable RX AMPDU for this Peer */ | |
757 | ||
758 | PUINT_8 pucAssocReqIe; | |
759 | UINT_16 u2AssocReqIeLen; | |
760 | /*------------------------------------------------------------------------------------------*/ | |
761 | /* WMM/QoS related fields */ | |
762 | /*------------------------------------------------------------------------------------------*/ | |
763 | BOOLEAN fgIsQoS; /* If the STA is associated as a QSTA or QAP (for TX/RX) */ | |
764 | BOOLEAN fgIsWmmSupported; /* If the peer supports WMM, set to TRUE (for association) */ | |
765 | BOOLEAN fgIsUapsdSupported; /* Set according to the scan result (for association) */ | |
766 | ||
767 | /*------------------------------------------------------------------------------------------*/ | |
768 | /* P2P related fields */ | |
769 | /*------------------------------------------------------------------------------------------*/ | |
770 | #if CFG_ENABLE_WIFI_DIRECT | |
771 | UINT_8 u2DevNameLen; | |
772 | UINT_8 aucDevName[WPS_ATTRI_MAX_LEN_DEVICE_NAME]; | |
773 | ||
774 | UINT_8 aucDevAddr[MAC_ADDR_LEN]; /* P2P Device Address */ | |
775 | ||
776 | UINT_16 u2ConfigMethods; | |
777 | ||
778 | UINT_8 ucDeviceCap; | |
779 | ||
780 | UINT_8 ucSecondaryDevTypeCount; | |
781 | ||
782 | DEVICE_TYPE_T rPrimaryDevTypeBE; | |
783 | ||
784 | DEVICE_TYPE_T arSecondaryDevTypeBE[P2P_GC_MAX_CACHED_SEC_DEV_TYPE_COUNT]; | |
785 | #endif /* CFG_SUPPORT_P2P */ | |
786 | ||
787 | ||
788 | /*------------------------------------------------------------------------------------------*/ | |
789 | /* QM related fields */ | |
790 | /*------------------------------------------------------------------------------------------*/ | |
791 | ||
792 | UINT_8 ucFreeQuota; /* Per Sta flow controal. Valid when fgIsInPS is TRUE. Chnage it for per Queue flow control */ | |
793 | /* UINT_8 aucFreeQuotaPerQueue[NUM_OF_PER_STA_TX_QUEUES]; /* used in future */ */ | |
794 | UINT_8 ucFreeQuotaForDelivery; | |
795 | UINT_8 ucFreeQuotaForNonDelivery; | |
796 | #if CFG_ENABLE_PKT_LIFETIME_PROFILE && CFG_ENABLE_PER_STA_STATISTICS | |
797 | UINT_32 u4TotalTxPktsNumber; | |
798 | UINT_32 u4TotalTxPktsTime; | |
799 | UINT_32 u4MaxTxPktsTime; | |
800 | UINT_32 u4ThresholdCounter; | |
801 | #endif | |
802 | ||
803 | #if 1 | |
804 | /*------------------------------------------------------------------------------------------*/ | |
805 | /* To be removed, this is to make que_mgt compilation success only */ | |
806 | /*------------------------------------------------------------------------------------------*/ | |
807 | /* When this STA_REC is in use, set to TRUE. */ | |
808 | BOOLEAN fgIsValid; | |
809 | ||
810 | /* Per-STA Queues: [0] AC0, [1] AC1, [2] AC2, [3] AC3, [4] 802.1x */ | |
811 | QUE_T arTxQueue[NUM_OF_PER_STA_TX_QUEUES]; | |
812 | ||
813 | /* When this STA is in PS Mode, set to TRUE. */ | |
814 | /* BOOLEAN fgIsPS; */ | |
815 | ||
816 | /* When this STA enters Power-Saving, FW will notify the driver with a Session ID */ | |
817 | UINT_8 ucPsSessionID; | |
818 | ||
819 | BOOLEAN fgIsAp; | |
820 | ||
821 | /* Reorder Parameter reference table */ | |
822 | P_RX_BA_ENTRY_T aprRxReorderParamRefTbl[CFG_RX_MAX_BA_TID_NUM]; | |
823 | #endif | |
824 | ||
825 | #if CFG_SUPPORT_802_11V_TIMING_MEASUREMENT | |
826 | TIMINGMSMT_PARAM_T rWNMTimingMsmt; | |
827 | #endif | |
828 | }; | |
829 | ||
830 | #if 0 | |
831 | /* use nic_tx.h instead */ | |
832 | /* MSDU_INFO and SW_RFB structure */ | |
833 | typedef struct _MSDU_INFO_T { | |
834 | ||
835 | /* 4 /* ----------------MSDU_INFO and SW_RFB Common Fields------------------ */ */ | |
836 | ||
837 | LINK_ENTRY_T rLinkEntry; | |
838 | PUINT_8 pucBuffer; /* Pointer to the associated buffer */ | |
839 | ||
840 | UINT_8 ucBufferSource; /* HIF TX0, HIF TX1, MAC RX, or MNG Pool */ | |
841 | UINT_8 ucNetworkTypeIndex; /* Network type index that this TX packet is assocaited with */ | |
842 | UINT_8 ucTC; /* 0 to 5 (used by HIF TX to increment the corresponding TC counter) */ | |
843 | UINT_8 ucTID; /* Traffic Identification */ | |
844 | ||
845 | BOOLEAN fgIs802_11Frame; /* Set to TRUE for 802.11 frame */ | |
846 | UINT_8 ucMacHeaderLength; | |
847 | UINT_16 u2PayloadLength; | |
848 | PUINT_8 pucMacHeader; /* 802.11 header */ | |
849 | PUINT_8 pucPayload; /* 802.11 payload */ | |
850 | ||
851 | OS_SYSTIME rArrivalTime; /* System Timestamp (4) */ | |
852 | P_STA_RECORD_T prStaRec; | |
853 | ||
854 | #if CFG_PROFILE_BUFFER_TRACING | |
855 | ENUM_BUFFER_ACTIVITY_TYPE_T eActivity[2]; | |
856 | UINT_32 rActivityTime[2]; | |
857 | #endif | |
858 | #if DBG && CFG_BUFFER_FREE_CHK | |
859 | BOOLEAN fgBufferInSource; | |
860 | #endif | |
861 | ||
862 | UINT_8 ucControlFlag; /* For specify some Control Flags, e.g. Basic Rate */ | |
863 | ||
864 | /* 4 /* -----------------------Non-Common ------------------------- */ */ | |
865 | /* TODO: move flags to ucControlFlag */ | |
866 | ||
867 | BOOLEAN fgIs1xFrame; /* Set to TRUE for 802.1x frame */ | |
868 | ||
869 | /* TXM: For TX Done handling, callback function & parameter (5) */ | |
870 | BOOLEAN fgIsTxFailed; /* Set to TRUE if transmission failure */ | |
871 | ||
872 | PFN_TX_DONE_HANDLER pfTxDoneHandler; | |
873 | ||
874 | UINT_64 u8TimeStamp; /* record the TX timestamp */ | |
875 | ||
876 | /* TXM: For PS forwarding control (per-STA flow control) */ | |
877 | UINT_8 ucPsForwardingType; /* Delivery-enabled, non-delivery-enabled, non-PS */ | |
878 | UINT_8 ucPsSessionID; /* The Power Save session id for PS forwarding control */ | |
879 | ||
880 | /* TXM: For MAC TX DMA operations */ | |
881 | UINT_8 ucMacTxQueIdx; /* MAC TX queue: AC0-AC6, BCM, or BCN */ | |
882 | BOOLEAN fgNoAck; /* Set to true if Ack is not requred for this packet */ | |
883 | BOOLEAN fgBIP; /* Set to true if BIP is used for this packet */ | |
884 | UINT_8 ucFragTotalCount; | |
885 | UINT_8 ucFragFinishedCount; | |
886 | UINT_16 u2FragThreshold; /* Fragmentation threshold without WLAN Header & FCS */ | |
887 | BOOLEAN fgFixedRate; /* If a fixed rate is used, set to TRUE. */ | |
888 | UINT_8 ucFixedRateCode; /* The rate code copied to MAC TX Desc */ | |
889 | UINT_8 ucFixedRateRetryLimit; /* The retry limit when a fixed rate is used */ | |
890 | BOOLEAN fgIsBmcQueueEnd; /* Set to true if this packet is the end of BMC */ | |
891 | ||
892 | /* TXM: For flushing ACL frames */ | |
893 | UINT_16 u2PalLLH; /* 802.11 PAL LLH */ | |
894 | /* UINT_16 u2LLH; */ | |
895 | UINT_16 u2ACLSeq; /* u2LLH+u2ACLSeq for AM HCI flush ACL frame */ | |
896 | ||
897 | /* TXM for retransmitting a flushed packet */ | |
898 | BOOLEAN fgIsSnAssigned; | |
899 | UINT_16 u2SequenceNumber; /* To remember the Sequence Control field of this MPDU */ | |
900 | ||
901 | } MSDU_INFO_T, *P_MSDU_INFO_T; | |
902 | #endif | |
903 | ||
904 | #if 0 | |
905 | /* nic_rx.h */ | |
906 | typedef struct _SW_RFB_T { | |
907 | ||
908 | /* 4 /* ----------------MSDU_INFO and SW_RFB Common Fields------------------ */ */ | |
909 | ||
910 | LINK_ENTRY_T rLinkEntry; | |
911 | PUINT_8 pucBuffer; /* Pointer to the associated buffer */ | |
912 | ||
913 | UINT_8 ucBufferSource; /* HIF TX0, HIF TX1, MAC RX, or MNG Pool */ | |
914 | UINT_8 ucNetworkTypeIndex; /* Network type index that this TX packet is assocaited with */ | |
915 | UINT_8 ucTC; /* 0 to 5 (used by HIF TX to increment the corresponding TC counter) */ | |
916 | UINT_8 ucTID; /* Traffic Identification */ | |
917 | ||
918 | BOOLEAN fgIs802_11Frame; /* Set to TRUE for 802.11 frame */ | |
919 | UINT_8 ucMacHeaderLength; | |
920 | UINT_16 u2PayloadLength; | |
921 | PUINT_8 pucMacHeader; /* 802.11 header */ | |
922 | PUINT_8 pucPayload; /* 802.11 payload */ | |
923 | ||
924 | OS_SYSTIME rArrivalTime; /* System Timestamp (4) */ | |
925 | P_STA_RECORD_T prStaRec; | |
926 | ||
927 | #if CFG_PROFILE_BUFFER_TRACING | |
928 | ENUM_BUFFER_ACTIVITY_TYPE_T eActivity[2]; | |
929 | UINT_32 rActivityTime[2]; | |
930 | #endif | |
931 | #if DBG && CFG_BUFFER_FREE_CHK | |
932 | BOOLEAN fgBufferInSource; | |
933 | #endif | |
934 | ||
935 | UINT_8 ucControlFlag; /* For specify some Control Flags, e.g. Basic Rate */ | |
936 | ||
937 | /* 4 /* -----------------------Non-Common ------------------------- */ */ | |
938 | ||
939 | /* For composing the HIF RX Header (TODO: move flags to ucControlFlag) */ | |
940 | PUINT_8 pucHifRxPacket; /* Pointer to the Response packet to HIF RX0 or RX1 */ | |
941 | UINT_16 u2HifRxPacketLength; | |
942 | UINT_8 ucHeaderOffset; | |
943 | UINT_8 ucHifRxPortIndex; | |
944 | ||
945 | UINT_16 u2SequenceControl; | |
946 | BOOLEAN fgIsA4Frame; /* (For MAC RX packet parsing) set to TRUE if 4 addresses are present */ | |
947 | BOOLEAN fgIsBAR; | |
948 | BOOLEAN fgIsQoSData; | |
949 | BOOLEAN fgIsAmsduSubframe; /* Set to TRUE for A-MSDU Subframe */ | |
950 | ||
951 | /* For HIF RX DMA Desc */ | |
952 | BOOLEAN fgTUChecksumCheckRequired; | |
953 | BOOLEAN fgIPChecksumCheckRequired; | |
954 | UINT_8 ucEtherTypeOffset; | |
955 | ||
956 | } SW_RFB_T, *P_SW_RFB_T; | |
957 | #endif | |
958 | ||
959 | ||
960 | /******************************************************************************* | |
961 | * P U B L I C D A T A | |
962 | ******************************************************************************** | |
963 | */ | |
964 | ||
965 | /******************************************************************************* | |
966 | * P R I V A T E D A T A | |
967 | ******************************************************************************** | |
968 | */ | |
969 | ||
970 | /******************************************************************************* | |
971 | * M A C R O S | |
972 | ******************************************************************************** | |
973 | */ | |
974 | ||
975 | /******************************************************************************* | |
976 | * F U N C T I O N D E C L A R A T I O N S | |
977 | ******************************************************************************** | |
978 | */ | |
979 | ||
980 | P_MSDU_INFO_T cnmMgtPktAlloc(IN P_ADAPTER_T prAdapter, IN UINT_32 u4Length); | |
981 | ||
982 | VOID cnmMgtPktFree(IN P_ADAPTER_T prAdapter, IN P_MSDU_INFO_T prMsduInfo); | |
983 | ||
984 | VOID cnmMemInit(IN P_ADAPTER_T prAdapter); | |
985 | ||
986 | PVOID cnmMemAlloc(IN P_ADAPTER_T prAdapter, IN ENUM_RAM_TYPE_T eRamType, IN UINT_32 u4Length); | |
987 | ||
988 | VOID cnmMemFree(IN P_ADAPTER_T prAdapter, IN PVOID pvMemory); | |
989 | ||
990 | VOID cnmStaRecInit(IN P_ADAPTER_T prAdapter); | |
991 | ||
992 | VOID cnmStaRecUninit(IN P_ADAPTER_T prAdapter); | |
993 | ||
994 | P_STA_RECORD_T cnmStaRecAlloc(IN P_ADAPTER_T prAdapter, IN UINT_8 ucNetTypeIndex); | |
995 | ||
996 | VOID cnmStaRecFree(IN P_ADAPTER_T prAdapter, IN P_STA_RECORD_T prStaRec, IN BOOLEAN fgSyncToChip); | |
997 | ||
998 | VOID | |
999 | cnmStaFreeAllStaByNetType(P_ADAPTER_T prAdapter, | |
1000 | ENUM_NETWORK_TYPE_INDEX_T eNetTypeIndex, BOOLEAN fgSyncToChip); | |
1001 | ||
1002 | P_STA_RECORD_T cnmGetStaRecByIndex(IN P_ADAPTER_T prAdapter, IN UINT_8 ucIndex); | |
1003 | ||
1004 | P_STA_RECORD_T | |
1005 | cnmGetStaRecByAddress(IN P_ADAPTER_T prAdapter, | |
1006 | IN UINT_8 ucNetTypeIndex, IN UINT_8 aucPeerMACAddress[] | |
1007 | ); | |
1008 | ||
1009 | VOID cnmStaRecResetStatus(IN P_ADAPTER_T prAdapter, IN ENUM_NETWORK_TYPE_INDEX_T eNetTypeIndex); | |
1010 | ||
1011 | VOID | |
1012 | cnmStaRecChangeState(IN P_ADAPTER_T prAdapter, | |
1013 | IN OUT P_STA_RECORD_T prStaRec, IN UINT_8 ucNewState); | |
1014 | ||
1015 | /******************************************************************************* | |
1016 | * F U N C T I O N S | |
1017 | ******************************************************************************** | |
1018 | */ | |
1019 | #ifndef _lint | |
1020 | /* Kevin: we don't have to call following function to inspect the data structure. | |
1021 | * It will check automatically while at compile time. | |
1022 | * We'll need this for porting driver to different RTOS. | |
1023 | */ | |
1024 | __KAL_INLINE__ VOID cnmMemDataTypeCheck(VOID) | |
1025 | { | |
1026 | #if 0 | |
1027 | DATA_STRUC_INSPECTING_ASSERT(OFFSET_OF(MSDU_INFO_T, rLinkEntry) == 0); | |
1028 | ||
1029 | DATA_STRUC_INSPECTING_ASSERT(OFFSET_OF(MSDU_INFO_T, rLinkEntry) == | |
1030 | OFFSET_OF(SW_RFB_T, rLinkEntry)); | |
1031 | ||
1032 | DATA_STRUC_INSPECTING_ASSERT(OFFSET_OF(MSDU_INFO_T, pucBuffer) == | |
1033 | OFFSET_OF(SW_RFB_T, pucBuffer)); | |
1034 | ||
1035 | DATA_STRUC_INSPECTING_ASSERT(OFFSET_OF(MSDU_INFO_T, ucBufferSource) == | |
1036 | OFFSET_OF(SW_RFB_T, ucBufferSource)); | |
1037 | ||
1038 | DATA_STRUC_INSPECTING_ASSERT(OFFSET_OF(MSDU_INFO_T, pucMacHeader) == | |
1039 | OFFSET_OF(SW_RFB_T, pucMacHeader)); | |
1040 | ||
1041 | DATA_STRUC_INSPECTING_ASSERT(OFFSET_OF(MSDU_INFO_T, ucMacHeaderLength) == | |
1042 | OFFSET_OF(SW_RFB_T, ucMacHeaderLength)); | |
1043 | ||
1044 | DATA_STRUC_INSPECTING_ASSERT(OFFSET_OF(MSDU_INFO_T, pucPayload) == | |
1045 | OFFSET_OF(SW_RFB_T, pucPayload)); | |
1046 | ||
1047 | DATA_STRUC_INSPECTING_ASSERT(OFFSET_OF(MSDU_INFO_T, u2PayloadLength) == | |
1048 | OFFSET_OF(SW_RFB_T, u2PayloadLength)); | |
1049 | ||
1050 | DATA_STRUC_INSPECTING_ASSERT(OFFSET_OF(MSDU_INFO_T, prStaRec) == | |
1051 | OFFSET_OF(SW_RFB_T, prStaRec)); | |
1052 | ||
1053 | DATA_STRUC_INSPECTING_ASSERT(OFFSET_OF(MSDU_INFO_T, ucNetworkTypeIndex) == | |
1054 | OFFSET_OF(SW_RFB_T, ucNetworkTypeIndex)); | |
1055 | ||
1056 | DATA_STRUC_INSPECTING_ASSERT(OFFSET_OF(MSDU_INFO_T, ucTID) == OFFSET_OF(SW_RFB_T, ucTID)); | |
1057 | ||
1058 | DATA_STRUC_INSPECTING_ASSERT(OFFSET_OF(MSDU_INFO_T, fgIs802_11Frame) == | |
1059 | OFFSET_OF(SW_RFB_T, fgIs802_11Frame)); | |
1060 | ||
1061 | DATA_STRUC_INSPECTING_ASSERT(OFFSET_OF(MSDU_INFO_T, ucControlFlag) == | |
1062 | OFFSET_OF(SW_RFB_T, ucControlFlag)); | |
1063 | ||
1064 | DATA_STRUC_INSPECTING_ASSERT(OFFSET_OF(MSDU_INFO_T, rArrivalTime) == | |
1065 | OFFSET_OF(SW_RFB_T, rArrivalTime)); | |
1066 | ||
1067 | DATA_STRUC_INSPECTING_ASSERT(OFFSET_OF(MSDU_INFO_T, ucTC) == OFFSET_OF(SW_RFB_T, ucTC)); | |
1068 | ||
1069 | #if CFG_PROFILE_BUFFER_TRACING | |
1070 | DATA_STRUC_INSPECTING_ASSERT(OFFSET_OF(MSDU_INFO_T, eActivity[0]) == | |
1071 | OFFSET_OF(SW_RFB_T, eActivity[0])); | |
1072 | ||
1073 | DATA_STRUC_INSPECTING_ASSERT(OFFSET_OF(MSDU_INFO_T, rActivityTime[0]) == | |
1074 | OFFSET_OF(SW_RFB_T, rActivityTime[0])); | |
1075 | #endif | |
1076 | ||
1077 | #if DBG && CFG_BUFFER_FREE_CHK | |
1078 | DATA_STRUC_INSPECTING_ASSERT(OFFSET_OF(MSDU_INFO_T, fgBufferInSource) == | |
1079 | OFFSET_OF(SW_RFB_T, fgBufferInSource)); | |
1080 | #endif | |
1081 | ||
1082 | ||
1083 | DATA_STRUC_INSPECTING_ASSERT(OFFSET_OF(STA_RECORD_T, rLinkEntry) == 0); | |
1084 | ||
1085 | return; | |
1086 | #endif | |
1087 | } | |
1088 | #endif /* _lint */ | |
1089 | ||
1090 | #endif /* _CNM_MEM_H */ |