]> git.proxmox.com Git - mirror_ubuntu-zesty-kernel.git/blob - drivers/net/wireless/realtek/rtl8192cu/include/rtw_mlme_ext.h
net: Add non-mainline source for rtl8192cu wlan
[mirror_ubuntu-zesty-kernel.git] / drivers / net / wireless / realtek / rtl8192cu / include / rtw_mlme_ext.h
1 /******************************************************************************
2 *
3 * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
4 *
5 * This program is free software; you can redistribute it and/or modify it
6 * under the terms of version 2 of the GNU General Public License as
7 * published by the Free Software Foundation.
8 *
9 * This program is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12 * more details.
13 *
14 * You should have received a copy of the GNU General Public License along with
15 * this program; if not, write to the Free Software Foundation, Inc.,
16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
17 *
18 *
19 ******************************************************************************/
20 #ifndef __RTW_MLME_EXT_H_
21 #define __RTW_MLME_EXT_H_
22
23 #include <drv_conf.h>
24 #include <osdep_service.h>
25 #include <drv_types.h>
26 #include <wlan_bssdef.h>
27
28
29 // Commented by Albert 20101105
30 // Increase the SURVEY_TO value from 100 to 150 ( 100ms to 150ms )
31 // The Realtek 8188CE SoftAP will spend around 100ms to send the probe response after receiving the probe request.
32 // So, this driver tried to extend the dwell time for each scanning channel.
33 // This will increase the chance to receive the probe response from SoftAP.
34
35 #define SURVEY_TO (100)
36 #define REAUTH_TO (300) //(50)
37 #define REASSOC_TO (300) //(50)
38 //#define DISCONNECT_TO (3000)
39 #define ADDBA_TO (2000)
40
41 #define LINKED_TO (1) //unit:2 sec, 1x2=2 sec
42
43 #define REAUTH_LIMIT (4)
44 #define REASSOC_LIMIT (4)
45 #define READDBA_LIMIT (2)
46
47 //#define IOCMD_REG0 0x10250370
48 //#define IOCMD_REG1 0x10250374
49 //#define IOCMD_REG2 0x10250378
50
51 //#define FW_DYNAMIC_FUN_SWITCH 0x10250364
52
53 //#define WRITE_BB_CMD 0xF0000001
54 //#define SET_CHANNEL_CMD 0xF3000000
55 //#define UPDATE_RA_CMD 0xFD0000A2
56
57 #define DYNAMIC_FUNC_DISABLE (0x0)
58 #define DYNAMIC_FUNC_DIG BIT(0)
59 #define DYNAMIC_FUNC_HP BIT(1)
60 #define DYNAMIC_FUNC_SS BIT(2) //Tx Power Tracking
61 #define DYNAMIC_FUNC_BT BIT(3)
62 #define DYNAMIC_FUNC_ANT_DIV BIT(4)
63 #define DYNAMIC_FUNC_ADAPTIVITY BIT(5)
64
65 #define _HW_STATE_NOLINK_ 0x00
66 #define _HW_STATE_ADHOC_ 0x01
67 #define _HW_STATE_STATION_ 0x02
68 #define _HW_STATE_AP_ 0x03
69
70
71 #define _1M_RATE_ 0
72 #define _2M_RATE_ 1
73 #define _5M_RATE_ 2
74 #define _11M_RATE_ 3
75 #define _6M_RATE_ 4
76 #define _9M_RATE_ 5
77 #define _12M_RATE_ 6
78 #define _18M_RATE_ 7
79 #define _24M_RATE_ 8
80 #define _36M_RATE_ 9
81 #define _48M_RATE_ 10
82 #define _54M_RATE_ 11
83
84
85 extern unsigned char RTW_WPA_OUI[];
86 extern unsigned char WMM_OUI[];
87 extern unsigned char WPS_OUI[];
88 extern unsigned char WFD_OUI[];
89 extern unsigned char P2P_OUI[];
90
91 extern unsigned char WMM_INFO_OUI[];
92 extern unsigned char WMM_PARA_OUI[];
93
94
95 //
96 // Channel Plan Type.
97 // Note:
98 // We just add new channel plan when the new channel plan is different from any of the following
99 // channel plan.
100 // If you just wnat to customize the acitions(scan period or join actions) about one of the channel plan,
101 // customize them in RT_CHANNEL_INFO in the RT_CHANNEL_LIST.
102 //
103 typedef enum _RT_CHANNEL_DOMAIN
104 {
105 //===== old channel plan mapping =====//
106 RT_CHANNEL_DOMAIN_FCC = 0x00,
107 RT_CHANNEL_DOMAIN_IC = 0x01,
108 RT_CHANNEL_DOMAIN_ETSI = 0x02,
109 RT_CHANNEL_DOMAIN_SPAIN = 0x03,
110 RT_CHANNEL_DOMAIN_FRANCE = 0x04,
111 RT_CHANNEL_DOMAIN_MKK = 0x05,
112 RT_CHANNEL_DOMAIN_MKK1 = 0x06,
113 RT_CHANNEL_DOMAIN_ISRAEL = 0x07,
114 RT_CHANNEL_DOMAIN_TELEC = 0x08,
115 RT_CHANNEL_DOMAIN_GLOBAL_DOAMIN = 0x09,
116 RT_CHANNEL_DOMAIN_WORLD_WIDE_13 = 0x0A,
117 RT_CHANNEL_DOMAIN_TAIWAN = 0x0B,
118 RT_CHANNEL_DOMAIN_CHINA = 0x0C,
119 RT_CHANNEL_DOMAIN_SINGAPORE_INDIA_MEXICO = 0x0D,
120 RT_CHANNEL_DOMAIN_KOREA = 0x0E,
121 RT_CHANNEL_DOMAIN_TURKEY = 0x0F,
122 RT_CHANNEL_DOMAIN_JAPAN = 0x10,
123 RT_CHANNEL_DOMAIN_FCC_NO_DFS = 0x11,
124 RT_CHANNEL_DOMAIN_JAPAN_NO_DFS = 0x12,
125 RT_CHANNEL_DOMAIN_WORLD_WIDE_5G = 0x13,
126 RT_CHANNEL_DOMAIN_TAIWAN_NO_DFS = 0x14,
127
128 //===== new channel plan mapping, (2GDOMAIN_5GDOMAIN) =====//
129 RT_CHANNEL_DOMAIN_WORLD_NULL = 0x20,
130 RT_CHANNEL_DOMAIN_ETSI1_NULL = 0x21,
131 RT_CHANNEL_DOMAIN_FCC1_NULL = 0x22,
132 RT_CHANNEL_DOMAIN_MKK1_NULL = 0x23,
133 RT_CHANNEL_DOMAIN_ETSI2_NULL = 0x24,
134 RT_CHANNEL_DOMAIN_FCC1_FCC1 = 0x25,
135 RT_CHANNEL_DOMAIN_WORLD_ETSI1 = 0x26,
136 RT_CHANNEL_DOMAIN_MKK1_MKK1 = 0x27,
137 RT_CHANNEL_DOMAIN_WORLD_KCC1 = 0x28,
138 RT_CHANNEL_DOMAIN_WORLD_FCC2 = 0x29,
139 RT_CHANNEL_DOMAIN_WORLD_FCC3 = 0x30,
140 RT_CHANNEL_DOMAIN_WORLD_FCC4 = 0x31,
141 RT_CHANNEL_DOMAIN_WORLD_FCC5 = 0x32,
142 RT_CHANNEL_DOMAIN_WORLD_FCC6 = 0x33,
143 RT_CHANNEL_DOMAIN_FCC1_FCC7 = 0x34,
144 RT_CHANNEL_DOMAIN_WORLD_ETSI2 = 0x35,
145 RT_CHANNEL_DOMAIN_WORLD_ETSI3 = 0x36,
146 RT_CHANNEL_DOMAIN_MKK1_MKK2 = 0x37,
147 RT_CHANNEL_DOMAIN_MKK1_MKK3 = 0x38,
148 RT_CHANNEL_DOMAIN_FCC1_NCC1 = 0x39,
149 RT_CHANNEL_DOMAIN_FCC1_NCC2 = 0x40,
150
151 //===== Add new channel plan above this line===============//
152 RT_CHANNEL_DOMAIN_MAX,
153 RT_CHANNEL_DOMAIN_REALTEK_DEFINE = 0x7F,
154 }RT_CHANNEL_DOMAIN, *PRT_CHANNEL_DOMAIN;
155
156 typedef enum _RT_CHANNEL_DOMAIN_2G
157 {
158 RT_CHANNEL_DOMAIN_2G_WORLD = 0x00, //Worldwird 13
159 RT_CHANNEL_DOMAIN_2G_ETSI1 = 0x01, //Europe
160 RT_CHANNEL_DOMAIN_2G_FCC1 = 0x02, //US
161 RT_CHANNEL_DOMAIN_2G_MKK1 = 0x03, //Japan
162 RT_CHANNEL_DOMAIN_2G_ETSI2 = 0x04, //France
163 RT_CHANNEL_DOMAIN_2G_NULL = 0x05,
164 //===== Add new channel plan above this line===============//
165 RT_CHANNEL_DOMAIN_2G_MAX,
166 }RT_CHANNEL_DOMAIN_2G, *PRT_CHANNEL_DOMAIN_2G;
167
168 typedef enum _RT_CHANNEL_DOMAIN_5G
169 {
170 RT_CHANNEL_DOMAIN_5G_NULL = 0x00,
171 RT_CHANNEL_DOMAIN_5G_ETSI1 = 0x01, //Europe
172 RT_CHANNEL_DOMAIN_5G_ETSI2 = 0x02, //Australia, New Zealand
173 RT_CHANNEL_DOMAIN_5G_ETSI3 = 0x03, //Russia
174 RT_CHANNEL_DOMAIN_5G_FCC1 = 0x04, //US
175 RT_CHANNEL_DOMAIN_5G_FCC2 = 0x05, //FCC o/w DFS Channels
176 RT_CHANNEL_DOMAIN_5G_FCC3 = 0x06, //India, Mexico
177 RT_CHANNEL_DOMAIN_5G_FCC4 = 0x07, //Venezuela
178 RT_CHANNEL_DOMAIN_5G_FCC5 = 0x08, //China
179 RT_CHANNEL_DOMAIN_5G_FCC6 = 0x09, //Israel
180 RT_CHANNEL_DOMAIN_5G_FCC7_IC1 = 0x0A, //US, Canada
181 RT_CHANNEL_DOMAIN_5G_KCC1 = 0x0B, //Korea
182 RT_CHANNEL_DOMAIN_5G_MKK1 = 0x0C, //Japan
183 RT_CHANNEL_DOMAIN_5G_MKK2 = 0x0D, //Japan (W52, W53)
184 RT_CHANNEL_DOMAIN_5G_MKK3 = 0x0E, //Japan (W56)
185 RT_CHANNEL_DOMAIN_5G_NCC1 = 0x0F, //Taiwan
186 RT_CHANNEL_DOMAIN_5G_NCC2 = 0x10, //Taiwan o/w DFS
187 //===== Add new channel plan above this line===============//
188 //===== Driver Self Defined =====//
189 RT_CHANNEL_DOMAIN_5G_FCC = 0x11,
190 RT_CHANNEL_DOMAIN_5G_JAPAN_NO_DFS = 0x12,
191 RT_CHANNEL_DOMAIN_5G_FCC4_NO_DFS = 0x13,
192 RT_CHANNEL_DOMAIN_5G_MAX,
193 }RT_CHANNEL_DOMAIN_5G, *PRT_CHANNEL_DOMAIN_5G;
194
195 #define rtw_is_channel_plan_valid(chplan) (chplan<RT_CHANNEL_DOMAIN_MAX || chplan == RT_CHANNEL_DOMAIN_REALTEK_DEFINE)
196
197 typedef struct _RT_CHANNEL_PLAN
198 {
199 unsigned char Channel[MAX_CHANNEL_NUM];
200 unsigned char Len;
201 }RT_CHANNEL_PLAN, *PRT_CHANNEL_PLAN;
202
203 typedef struct _RT_CHANNEL_PLAN_2G
204 {
205 unsigned char Channel[MAX_CHANNEL_NUM_2G];
206 unsigned char Len;
207 }RT_CHANNEL_PLAN_2G, *PRT_CHANNEL_PLAN_2G;
208
209 typedef struct _RT_CHANNEL_PLAN_5G
210 {
211 unsigned char Channel[MAX_CHANNEL_NUM_5G];
212 unsigned char Len;
213 }RT_CHANNEL_PLAN_5G, *PRT_CHANNEL_PLAN_5G;
214
215 typedef struct _RT_CHANNEL_PLAN_MAP
216 {
217 unsigned char Index2G;
218 unsigned char Index5G;
219 }RT_CHANNEL_PLAN_MAP, *PRT_CHANNEL_PLAN_MAP;
220
221 enum Associated_AP
222 {
223 atherosAP = 0,
224 broadcomAP = 1,
225 ciscoAP = 2,
226 marvellAP = 3,
227 ralinkAP = 4,
228 realtekAP = 5,
229 airgocapAP = 6,
230 unknownAP = 7,
231 maxAP,
232 };
233
234 enum SCAN_STATE
235 {
236 SCAN_DISABLE = 0,
237 SCAN_START = 1,
238 SCAN_TXNULL = 2,
239 SCAN_PROCESS = 3,
240 SCAN_COMPLETE = 4,
241 SCAN_STATE_MAX,
242 };
243
244 struct mlme_handler {
245 unsigned int num;
246 char* str;
247 unsigned int (*func)(_adapter *padapter, union recv_frame *precv_frame);
248 };
249
250 struct action_handler {
251 unsigned int num;
252 char* str;
253 unsigned int (*func)(_adapter *padapter, union recv_frame *precv_frame);
254 };
255
256 struct ss_res
257 {
258 int state;
259 int bss_cnt;
260 int channel_idx;
261 int scan_mode;
262 u8 ssid_num;
263 u8 ch_num;
264 NDIS_802_11_SSID ssid[RTW_SSID_SCAN_AMOUNT];
265 struct rtw_ieee80211_channel ch[RTW_CHANNEL_SCAN_AMOUNT];
266 };
267
268 //#define AP_MODE 0x0C
269 //#define STATION_MODE 0x08
270 //#define AD_HOC_MODE 0x04
271 //#define NO_LINK_MODE 0x00
272
273 #define WIFI_FW_NULL_STATE _HW_STATE_NOLINK_
274 #define WIFI_FW_STATION_STATE _HW_STATE_STATION_
275 #define WIFI_FW_AP_STATE _HW_STATE_AP_
276 #define WIFI_FW_ADHOC_STATE _HW_STATE_ADHOC_
277
278 #define WIFI_FW_AUTH_NULL 0x00000100
279 #define WIFI_FW_AUTH_STATE 0x00000200
280 #define WIFI_FW_AUTH_SUCCESS 0x00000400
281
282 #define WIFI_FW_ASSOC_STATE 0x00002000
283 #define WIFI_FW_ASSOC_SUCCESS 0x00004000
284
285 #define WIFI_FW_LINKING_STATE (WIFI_FW_AUTH_NULL | WIFI_FW_AUTH_STATE | WIFI_FW_AUTH_SUCCESS |WIFI_FW_ASSOC_STATE)
286
287 #ifdef CONFIG_TDLS
288 // 1: Write RCR DATA BIT
289 // 2: Issue peer traffic indication
290 // 3: Go back to the channel linked with AP, terminating channel switch procedure
291 // 4: Init channel sensing, receive all data and mgnt frame
292 // 5: Channel sensing and report candidate channel
293 // 6: First time set channel to off channel
294 // 7: Go back tp the channel linked with AP when set base channel as target channel
295 // 8: Set channel back to base channel
296 // 9: Set channel back to off channel
297 // 10: Restore RCR DATA BIT
298 // 11: Check alive
299 // 12: Check alive
300 // 13: Free TDLS sta
301 enum TDLS_option
302 {
303 TDLS_WRCR = 1,
304 TDLS_SD_PTI = 2,
305 TDLS_CS_OFF = 3,
306 TDLS_INIT_CH_SEN = 4,
307 TDLS_DONE_CH_SEN = 5,
308 TDLS_OFF_CH = 6,
309 TDLS_BASE_CH = 7,
310 TDLS_P_OFF_CH = 8,
311 TDLS_P_BASE_CH = 9,
312 TDLS_RS_RCR = 10,
313 TDLS_CKALV_PH1 = 11,
314 TDLS_CKALV_PH2 = 12,
315 TDLS_FREE_STA = 13,
316 maxTDLS,
317 };
318
319 #endif //CONFIG_TDLS
320
321 struct FW_Sta_Info
322 {
323 struct sta_info *psta;
324 u32 status;
325 u32 rx_pkt;
326 u32 retry;
327 NDIS_802_11_RATES_EX SupportedRates;
328 };
329
330 /*
331 * Usage:
332 * When one iface acted as AP mode and the other iface is STA mode and scanning,
333 * it should switch back to AP's operating channel periodically.
334 * Parameters info:
335 * When the driver scanned RTW_SCAN_NUM_OF_CH channels, it would switch back to AP's operating channel for
336 * RTW_STAY_AP_CH_MILLISECOND * SURVEY_TO milliseconds.
337 * Example:
338 * For chip supports 2.4G + 5GHz and AP mode is operating in channel 1,
339 * RTW_SCAN_NUM_OF_CH is 8, RTW_STAY_AP_CH_MILLISECOND is 3 and SURVEY_TO is 100.
340 * When it's STA mode gets set_scan command,
341 * it would
342 * 1. Doing the scan on channel 1.2.3.4.5.6.7.8
343 * 2. Back to channel 1 for 300 milliseconds
344 * 3. Go through doing site survey on channel 9.10.11.36.40.44.48.52
345 * 4. Back to channel 1 for 300 milliseconds
346 * 5. ... and so on, till survey done.
347 */
348 #if defined CONFIG_STA_MODE_SCAN_UNDER_AP_MODE && defined CONFIG_CONCURRENT_MODE
349 #define RTW_SCAN_NUM_OF_CH 8
350 #define RTW_STAY_AP_CH_MILLISECOND 3 // this value is a multiplier,for example, when this value is 3, it would stay AP's op ch for
351 // 3 * SURVEY_TO millisecond.
352 #endif //defined CONFIG_STA_MODE_SCAN_UNDER_AP_MODE && defined CONFIG_CONCURRENT_MODE
353
354 struct mlme_ext_info
355 {
356 u32 state;
357 u32 reauth_count;
358 u32 reassoc_count;
359 u32 link_count;
360 u32 auth_seq;
361 u32 auth_algo; // 802.11 auth, could be open, shared, auto
362 u32 authModeToggle;
363 u32 enc_algo;//encrypt algorithm;
364 u32 key_index; // this is only valid for legendary wep, 0~3 for key id.
365 u32 iv;
366 u8 chg_txt[128];
367 u16 aid;
368 u16 bcn_interval;
369 u16 capability;
370 u8 assoc_AP_vendor;
371 u8 slotTime;
372 u8 preamble_mode;
373 u8 WMM_enable;
374 u8 ERP_enable;
375 u8 ERP_IE;
376 u8 HT_enable;
377 u8 HT_caps_enable;
378 u8 HT_info_enable;
379 u8 HT_protection;
380 u8 turboMode_cts2self;
381 u8 turboMode_rtsen;
382 u8 SM_PS;
383 u8 agg_enable_bitmap;
384 u8 ADDBA_retry_count;
385 u8 candidate_tid_bitmap;
386 u8 dialogToken;
387 // Accept ADDBA Request
388 BOOLEAN bAcceptAddbaReq;
389 u8 bwmode_updated;
390 u8 hidden_ssid_mode;
391
392 struct ADDBA_request ADDBA_req;
393 struct WMM_para_element WMM_param;
394 struct HT_caps_element HT_caps;
395 struct HT_info_element HT_info;
396 WLAN_BSSID_EX network;//join network or bss_network, if in ap mode, it is the same to cur_network.network
397 struct FW_Sta_Info FW_sta_info[NUM_STA];
398
399 #ifdef CONFIG_STA_MODE_SCAN_UNDER_AP_MODE
400 u8 scan_cnt;
401 #endif //CONFIG_STA_MODE_SCAN_UNDER_AP_MODE
402 };
403
404 // The channel information about this channel including joining, scanning, and power constraints.
405 typedef struct _RT_CHANNEL_INFO
406 {
407 u8 ChannelNum; // The channel number.
408 RT_SCAN_TYPE ScanType; // Scan type such as passive or active scan.
409 //u16 ScanPeriod; // Listen time in millisecond in this channel.
410 //s32 MaxTxPwrDbm; // Max allowed tx power.
411 //u32 ExInfo; // Extended Information for this channel.
412 #ifdef CONFIG_FIND_BEST_CHANNEL
413 u32 rx_count;
414 #endif
415 }RT_CHANNEL_INFO, *PRT_CHANNEL_INFO;
416
417 int rtw_ch_set_search_ch(RT_CHANNEL_INFO *ch_set, const u32 ch);
418 bool rtw_mlme_band_check(_adapter *adapter, const u32 ch);
419
420 // P2P_MAX_REG_CLASSES - Maximum number of regulatory classes
421 #define P2P_MAX_REG_CLASSES 10
422
423 // P2P_MAX_REG_CLASS_CHANNELS - Maximum number of channels per regulatory class
424 #define P2P_MAX_REG_CLASS_CHANNELS 20
425
426 // struct p2p_channels - List of supported channels
427 struct p2p_channels {
428 // struct p2p_reg_class - Supported regulatory class
429 struct p2p_reg_class {
430 // reg_class - Regulatory class (IEEE 802.11-2007, Annex J)
431 u8 reg_class;
432
433 // channel - Supported channels
434 u8 channel[P2P_MAX_REG_CLASS_CHANNELS];
435
436 // channels - Number of channel entries in use
437 size_t channels;
438 } reg_class[P2P_MAX_REG_CLASSES];
439
440 // reg_classes - Number of reg_class entries in use
441 size_t reg_classes;
442 };
443
444 struct p2p_oper_class_map {
445 enum hw_mode {IEEE80211G,IEEE80211A} mode;
446 u8 op_class;
447 u8 min_chan;
448 u8 max_chan;
449 u8 inc;
450 enum { BW20, BW40PLUS, BW40MINUS } bw;
451 };
452
453 struct mlme_ext_priv
454 {
455 _adapter *padapter;
456 u8 mlmeext_init;
457 ATOMIC_T event_seq;
458 u16 mgnt_seq;
459 #ifdef CONFIG_IEEE80211W
460 u16 sa_query_seq;
461 u64 mgnt_80211w_IPN;
462 u64 mgnt_80211w_IPN_rx;
463 #endif //CONFIG_IEEE80211W
464 //struct fw_priv fwpriv;
465
466 unsigned char cur_channel;
467 unsigned char cur_bwmode;
468 unsigned char cur_ch_offset;//PRIME_CHNL_OFFSET
469 unsigned char cur_wireless_mode;
470
471 unsigned char max_chan_nums;
472 RT_CHANNEL_INFO channel_set[MAX_CHANNEL_NUM];
473 struct p2p_channels channel_list;
474 unsigned char basicrate[NumRates];
475 unsigned char datarate[NumRates];
476
477 struct ss_res sitesurvey_res;
478 struct mlme_ext_info mlmext_info;//for sta/adhoc mode, including current scanning/connecting/connected related info.
479 //for ap mode, network includes ap's cap_info
480 _timer survey_timer;
481 _timer link_timer;
482 #ifdef CONFIG_IEEE80211W
483 _timer sa_query_timer;
484 #endif //CONFIG_IEEE80211W
485 //_timer ADDBA_timer;
486 u16 chan_scan_time;
487
488 u8 scan_abort;
489 u8 tx_rate; // TXRATE when USERATE is set.
490
491 u32 retry; //retry for issue probereq
492
493 u64 TSFValue;
494
495 #ifdef CONFIG_AP_MODE
496 unsigned char bstart_bss;
497 #endif
498
499 //recv_decache check for Action_public frame
500 u8 action_public_dialog_token;
501 u16 action_public_rxseq;
502
503 #ifdef CONFIG_80211D
504 u8 update_channel_plan_by_ap_done;
505 #endif
506
507 #ifdef CONFIG_ACTIVE_KEEP_ALIVE_CHECK
508 u8 active_keep_alive_check;
509 #endif
510
511 };
512
513 int init_mlme_ext_priv(_adapter* padapter);
514 int init_hw_mlme_ext(_adapter *padapter);
515 void free_mlme_ext_priv (struct mlme_ext_priv *pmlmeext);
516 extern void init_mlme_ext_timer(_adapter *padapter);
517 extern void init_addba_retry_timer(_adapter *padapter, struct sta_info *psta);
518 extern struct xmit_frame *alloc_mgtxmitframe(struct xmit_priv *pxmitpriv);
519 struct xmit_frame *alloc_mgtxmitframe_once(struct xmit_priv *pxmitpriv);
520
521 //void fill_fwpriv(_adapter * padapter, struct fw_priv *pfwpriv);
522
523 unsigned char networktype_to_raid(unsigned char network_type);
524 int judge_network_type(_adapter *padapter, unsigned char *rate, int ratelen);
525 void get_rate_set(_adapter *padapter, unsigned char *pbssrate, int *bssrate_len);
526 void UpdateBrateTbl(_adapter *padapter,u8 *mBratesOS);
527 void UpdateBrateTblForSoftAP(u8 *bssrateset, u32 bssratelen);
528 void change_band_update_ie(_adapter *padapter, WLAN_BSSID_EX *pnetwork);
529
530 void Save_DM_Func_Flag(_adapter *padapter);
531 void Restore_DM_Func_Flag(_adapter *padapter);
532 void Switch_DM_Func(_adapter *padapter, u8 mode, u8 enable);
533
534 //void Set_NETYPE1_MSR(_adapter *padapter, u8 type);
535 //void Set_NETYPE0_MSR(_adapter *padapter, u8 type);
536 void Set_MSR(_adapter *padapter, u8 type);
537
538 u8 rtw_get_oper_ch(_adapter *adapter);
539 void rtw_set_oper_ch(_adapter *adapter, u8 ch);
540 u8 rtw_get_oper_bw(_adapter *adapter);
541 void rtw_set_oper_bw(_adapter *adapter, u8 bw);
542 u8 rtw_get_oper_choffset(_adapter *adapter);
543 void rtw_set_oper_choffset(_adapter *adapter, u8 offset);
544 u32 rtw_get_on_oper_ch_time(_adapter *adapter);
545 u32 rtw_get_on_cur_ch_time(_adapter *adapter);
546
547 void set_channel_bwmode(_adapter *padapter, unsigned char channel, unsigned char channel_offset, unsigned short bwmode);
548 void SelectChannel(_adapter *padapter, unsigned char channel);
549 void SetBWMode(_adapter *padapter, unsigned short bwmode, unsigned char channel_offset);
550
551 unsigned int decide_wait_for_beacon_timeout(unsigned int bcn_interval);
552
553 void write_cam(_adapter *padapter, u8 entry, u16 ctrl, u8 *mac, u8 *key);
554 void clear_cam_entry(_adapter *padapter, u8 entry);
555
556 void invalidate_cam_all(_adapter *padapter);
557 void CAM_empty_entry(PADAPTER Adapter, u8 ucIndex);
558
559
560 int allocate_fw_sta_entry(_adapter *padapter);
561 void flush_all_cam_entry(_adapter *padapter);
562
563 BOOLEAN IsLegal5GChannel(PADAPTER Adapter, u8 channel);
564
565 void site_survey(_adapter *padapter);
566 u8 collect_bss_info(_adapter *padapter, union recv_frame *precv_frame, WLAN_BSSID_EX *bssid);
567
568 int get_bsstype(unsigned short capability);
569 u8* get_my_bssid(WLAN_BSSID_EX *pnetwork);
570 u16 get_beacon_interval(WLAN_BSSID_EX *bss);
571
572 int is_client_associated_to_ap(_adapter *padapter);
573 int is_client_associated_to_ibss(_adapter *padapter);
574 int is_IBSS_empty(_adapter *padapter);
575
576 unsigned char check_assoc_AP(u8 *pframe, uint len);
577
578 int WMM_param_handler(_adapter *padapter, PNDIS_802_11_VARIABLE_IEs pIE);
579 #ifdef CONFIG_WFD
580 int WFD_info_handler(_adapter *padapter, PNDIS_802_11_VARIABLE_IEs pIE);
581 #endif
582 void WMMOnAssocRsp(_adapter *padapter);
583
584 void HT_caps_handler(_adapter *padapter, PNDIS_802_11_VARIABLE_IEs pIE);
585 void HT_info_handler(_adapter *padapter, PNDIS_802_11_VARIABLE_IEs pIE);
586 void HTOnAssocRsp(_adapter *padapter);
587
588 void ERP_IE_handler(_adapter *padapter, PNDIS_802_11_VARIABLE_IEs pIE);
589 void VCS_update(_adapter *padapter, struct sta_info *psta);
590
591 void update_beacon_info(_adapter *padapter, u8 *pframe, uint len, struct sta_info *psta);
592 #ifdef CONFIG_DFS
593 void process_csa_ie(_adapter *padapter, u8 *pframe, uint len);
594 #endif //CONFIG_DFS
595 void update_IOT_info(_adapter *padapter);
596 void update_capinfo(PADAPTER Adapter, u16 updateCap);
597 void update_wireless_mode(_adapter * padapter);
598 void update_tx_basic_rate(_adapter *padapter, u8 modulation);
599 void update_bmc_sta_support_rate(_adapter *padapter, u32 mac_id);
600 int update_sta_support_rate(_adapter *padapter, u8* pvar_ie, uint var_ie_len, int cam_idx);
601
602 //for sta/adhoc mode
603 void update_sta_info(_adapter *padapter, struct sta_info *psta);
604 unsigned int update_basic_rate(unsigned char *ptn, unsigned int ptn_sz);
605 unsigned int update_supported_rate(unsigned char *ptn, unsigned int ptn_sz);
606 unsigned int update_MSC_rate(struct HT_caps_element *pHT_caps);
607 void Update_RA_Entry(_adapter *padapter, u32 mac_id);
608 void set_sta_rate(_adapter *padapter, struct sta_info *psta);
609
610 unsigned int receive_disconnect(_adapter *padapter, unsigned char *MacAddr, unsigned short reason);
611
612 unsigned char get_highest_rate_idx(u32 mask);
613 int support_short_GI(_adapter *padapter, struct HT_caps_element *pHT_caps);
614 unsigned int is_ap_in_tkip(_adapter *padapter);
615
616
617 void report_join_res(_adapter *padapter, int res);
618 void report_survey_event(_adapter *padapter, union recv_frame *precv_frame);
619 void report_surveydone_event(_adapter *padapter);
620 void report_del_sta_event(_adapter *padapter, unsigned char* MacAddr, unsigned short reason);
621 void report_add_sta_event(_adapter *padapter, unsigned char* MacAddr, int cam_idx);
622
623 void beacon_timing_control(_adapter *padapter);
624 extern u8 set_tx_beacon_cmd(_adapter*padapter);
625 unsigned int setup_beacon_frame(_adapter *padapter, unsigned char *beacon_frame);
626 void update_mgnt_tx_rate(_adapter *padapter, u8 rate);
627 void update_mgntframe_attrib(_adapter *padapter, struct pkt_attrib *pattrib);
628 void dump_mgntframe(_adapter *padapter, struct xmit_frame *pmgntframe);
629 s32 dump_mgntframe_and_wait(_adapter *padapter, struct xmit_frame *pmgntframe, int timeout_ms);
630 s32 dump_mgntframe_and_wait_ack(_adapter *padapter, struct xmit_frame *pmgntframe);
631
632 #ifdef CONFIG_P2P
633 void issue_probersp_p2p(_adapter *padapter, unsigned char *da);
634 void issue_p2p_provision_request( _adapter *padapter, u8* pssid, u8 ussidlen, u8* pdev_raddr);
635 void issue_p2p_GO_request(_adapter *padapter, u8* raddr);
636 void issue_probereq_p2p(_adapter *padapter, u8 *da);
637 int issue_probereq_p2p_ex(_adapter *adapter, u8 *da, int try_cnt, int wait_ms);
638 void issue_p2p_invitation_response(_adapter *padapter, u8* raddr, u8 dialogToken, u8 success);
639 void issue_p2p_invitation_request(_adapter *padapter, u8* raddr );
640 #endif //CONFIG_P2P
641 void issue_beacon(_adapter *padapter);
642 void issue_probersp(_adapter *padapter, unsigned char *da, u8 is_valid_p2p_probereq);
643 void issue_assocreq(_adapter *padapter);
644 void issue_asocrsp(_adapter *padapter, unsigned short status, struct sta_info *pstat, int pkt_type);
645 void issue_auth(_adapter *padapter, struct sta_info *psta, unsigned short status);
646 void issue_probereq(_adapter *padapter, NDIS_802_11_SSID *pssid, u8 *da);
647 s32 issue_probereq_ex(_adapter *padapter, NDIS_802_11_SSID *pssid, u8* da, int try_cnt, int wait_ms);
648 int issue_nulldata(_adapter *padapter, unsigned char *da, unsigned int power_mode, int try_cnt, int wait_ms);
649 int issue_qos_nulldata(_adapter *padapter, unsigned char *da, u16 tid, int try_cnt, int wait_ms);
650 int issue_deauth(_adapter *padapter, unsigned char *da, unsigned short reason);
651 int issue_deauth_ex(_adapter *padapter, u8 *da, unsigned short reason, int try_cnt, int wait_ms);
652 void issue_action_spct_ch_switch(_adapter *padapter, u8 *ra, u8 new_ch, u8 ch_offset);
653 void issue_action_BA(_adapter *padapter, unsigned char *raddr, unsigned char action, unsigned short status);
654 #ifdef CONFIG_IEEE80211W
655 void issue_action_SA_Query(_adapter *padapter, unsigned char *raddr, unsigned char action, unsigned short tid);
656 #endif //CONFIG_IEEE80211W
657 unsigned int send_delba(_adapter *padapter, u8 initiator, u8 *addr);
658 unsigned int send_beacon(_adapter *padapter);
659
660 void start_clnt_assoc(_adapter *padapter);
661 void start_clnt_auth(_adapter* padapter);
662 void start_clnt_join(_adapter* padapter);
663 void start_create_ibss(_adapter* padapter);
664
665 unsigned int OnAssocReq(_adapter *padapter, union recv_frame *precv_frame);
666 unsigned int OnAssocRsp(_adapter *padapter, union recv_frame *precv_frame);
667 unsigned int OnProbeReq(_adapter *padapter, union recv_frame *precv_frame);
668 unsigned int OnProbeRsp(_adapter *padapter, union recv_frame *precv_frame);
669 unsigned int DoReserved(_adapter *padapter, union recv_frame *precv_frame);
670 unsigned int OnBeacon(_adapter *padapter, union recv_frame *precv_frame);
671 unsigned int OnAtim(_adapter *padapter, union recv_frame *precv_frame);
672 unsigned int OnDisassoc(_adapter *padapter, union recv_frame *precv_frame);
673 unsigned int OnAuth(_adapter *padapter, union recv_frame *precv_frame);
674 unsigned int OnAuthClient(_adapter *padapter, union recv_frame *precv_frame);
675 unsigned int OnDeAuth(_adapter *padapter, union recv_frame *precv_frame);
676 unsigned int OnAction(_adapter *padapter, union recv_frame *precv_frame);
677
678 unsigned int on_action_spct(_adapter *padapter, union recv_frame *precv_frame);
679 unsigned int OnAction_qos(_adapter *padapter, union recv_frame *precv_frame);
680 unsigned int OnAction_dls(_adapter *padapter, union recv_frame *precv_frame);
681 unsigned int OnAction_back(_adapter *padapter, union recv_frame *precv_frame);
682 unsigned int on_action_public(_adapter *padapter, union recv_frame *precv_frame);
683 unsigned int OnAction_ht(_adapter *padapter, union recv_frame *precv_frame);
684 #ifdef CONFIG_IEEE80211W
685 unsigned int OnAction_sa_query(_adapter *padapter, union recv_frame *precv_frame);
686 #endif //CONFIG_IEEE80211W
687 unsigned int OnAction_wmm(_adapter *padapter, union recv_frame *precv_frame);
688 unsigned int OnAction_p2p(_adapter *padapter, union recv_frame *precv_frame);
689
690
691 void mlmeext_joinbss_event_callback(_adapter *padapter, int join_res);
692 void mlmeext_sta_del_event_callback(_adapter *padapter);
693 void mlmeext_sta_add_event_callback(_adapter *padapter, struct sta_info *psta);
694
695 void linked_status_chk(_adapter *padapter);
696
697 void survey_timer_hdl (_adapter *padapter);
698 void link_timer_hdl (_adapter *padapter);
699 void addba_timer_hdl(struct sta_info *psta);
700 #ifdef CONFIG_IEEE80211W
701 void sa_query_timer_hdl(_adapter *padapter);
702 #endif //CONFIG_IEEE80211W
703 //void reauth_timer_hdl(_adapter *padapter);
704 //void reassoc_timer_hdl(_adapter *padapter);
705
706 #define set_survey_timer(mlmeext, ms) \
707 do { \
708 /*DBG_871X("%s set_survey_timer(%p, %d)\n", __FUNCTION__, (mlmeext), (ms));*/ \
709 _set_timer(&(mlmeext)->survey_timer, (ms)); \
710 } while(0)
711
712 #define set_link_timer(mlmeext, ms) \
713 do { \
714 /*DBG_871X("%s set_link_timer(%p, %d)\n", __FUNCTION__, (mlmeext), (ms));*/ \
715 _set_timer(&(mlmeext)->link_timer, (ms)); \
716 } while(0)
717 #ifdef CONFIG_IEEE80211W
718 #define set_sa_query_timer(mlmeext, ms) \
719 do { \
720 DBG_871X("%s set_sa_query_timer(%p, %d)\n", __FUNCTION__, (mlmeext), (ms)); \
721 _set_timer(&(mlmeext)->sa_query_timer, (ms)); \
722 } while(0)
723 #endif //CONFIG_IEEE80211W
724 extern int cckrates_included(unsigned char *rate, int ratelen);
725 extern int cckratesonly_included(unsigned char *rate, int ratelen);
726
727 extern void process_addba_req(_adapter *padapter, u8 *paddba_req, u8 *addr);
728
729 extern void update_TSF(struct mlme_ext_priv *pmlmeext, u8 *pframe, uint len);
730 extern void correct_TSF(_adapter *padapter, struct mlme_ext_priv *pmlmeext);
731
732
733 #ifdef CONFIG_CONCURRENT_MODE
734 sint check_buddy_mlmeinfo_state(_adapter *padapter, u32 state);
735 void concurrent_chk_joinbss_done(_adapter *padapter, int join_res);
736 #endif //CONFIG_CONCURRENT_MODE
737
738 #ifdef CONFIG_DUALMAC_CONCURRENT
739 void dc_SelectChannel(_adapter *padapter, unsigned char channel);
740 void dc_SetBWMode(_adapter *padapter, unsigned short bwmode, unsigned char channel_offset);
741 void dc_set_channel_bwmode_disconnect(_adapter *padapter);
742 u8 dc_handle_join_request(_adapter *padapter);
743 void dc_handle_join_done(_adapter *padapter, u8 join_res);
744 sint dc_check_fwstate(_adapter *padapter, sint fw_state);
745 u8 dc_handle_site_survey(_adapter *padapter);
746 void dc_report_survey_event(_adapter *padapter, union recv_frame *precv_frame);
747 void dc_set_channel_bwmode_survey_done(_adapter *padapter);
748 void dc_set_ap_channel_bandwidth(_adapter *padapter, u8 channel, u8 channel_offset, u8 bwmode);
749 void dc_resume_xmit(_adapter *padapter);
750 u8 dc_check_xmit(_adapter *padapter);
751 #endif
752
753 int rtw_chk_start_clnt_join(_adapter *padapter);
754 int rtw_get_ch_setting_union(_adapter *adapter, u8 *ch, u8 *bw, u8 *offset);
755
756 struct cmd_hdl {
757 uint parmsize;
758 u8 (*h2cfuns)(struct _ADAPTER *padapter, u8 *pbuf);
759 };
760
761
762 u8 read_macreg_hdl(_adapter *padapter, u8 *pbuf);
763 u8 write_macreg_hdl(_adapter *padapter, u8 *pbuf);
764 u8 read_bbreg_hdl(_adapter *padapter, u8 *pbuf);
765 u8 write_bbreg_hdl(_adapter *padapter, u8 *pbuf);
766 u8 read_rfreg_hdl(_adapter *padapter, u8 *pbuf);
767 u8 write_rfreg_hdl(_adapter *padapter, u8 *pbuf);
768
769
770 u8 NULL_hdl(_adapter *padapter, u8 *pbuf);
771 u8 join_cmd_hdl(_adapter *padapter, u8 *pbuf);
772 u8 disconnect_hdl(_adapter *padapter, u8 *pbuf);
773 u8 createbss_hdl(_adapter *padapter, u8 *pbuf);
774 u8 setopmode_hdl(_adapter *padapter, u8 *pbuf);
775 u8 sitesurvey_cmd_hdl(_adapter *padapter, u8 *pbuf);
776 u8 setauth_hdl(_adapter *padapter, u8 *pbuf);
777 u8 setkey_hdl(_adapter *padapter, u8 *pbuf);
778 u8 set_stakey_hdl(_adapter *padapter, u8 *pbuf);
779 u8 set_assocsta_hdl(_adapter *padapter, u8 *pbuf);
780 u8 del_assocsta_hdl(_adapter *padapter, u8 *pbuf);
781 u8 add_ba_hdl(_adapter *padapter, unsigned char *pbuf);
782
783 u8 mlme_evt_hdl(_adapter *padapter, unsigned char *pbuf);
784 u8 h2c_msg_hdl(_adapter *padapter, unsigned char *pbuf);
785 u8 tx_beacon_hdl(_adapter *padapter, unsigned char *pbuf);
786 u8 set_ch_hdl(_adapter *padapter, u8 *pbuf);
787 u8 set_chplan_hdl(_adapter *padapter, unsigned char *pbuf);
788 u8 led_blink_hdl(_adapter *padapter, unsigned char *pbuf);
789 u8 set_csa_hdl(_adapter *padapter, unsigned char *pbuf); //Kurt: Handling DFS channel switch announcement ie.
790 u8 tdls_hdl(_adapter *padapter, unsigned char *pbuf);
791
792
793 #define GEN_DRV_CMD_HANDLER(size, cmd) {size, &cmd ## _hdl},
794 #define GEN_MLME_EXT_HANDLER(size, cmd) {size, cmd},
795
796 #ifdef _RTW_CMD_C_
797
798 struct cmd_hdl wlancmds[] =
799 {
800 GEN_DRV_CMD_HANDLER(0, NULL) /*0*/
801 GEN_DRV_CMD_HANDLER(0, NULL)
802 GEN_DRV_CMD_HANDLER(0, NULL)
803 GEN_DRV_CMD_HANDLER(0, NULL)
804 GEN_DRV_CMD_HANDLER(0, NULL)
805 GEN_DRV_CMD_HANDLER(0, NULL)
806 GEN_MLME_EXT_HANDLER(0, NULL)
807 GEN_MLME_EXT_HANDLER(0, NULL)
808 GEN_MLME_EXT_HANDLER(0, NULL)
809 GEN_MLME_EXT_HANDLER(0, NULL)
810 GEN_MLME_EXT_HANDLER(0, NULL) /*10*/
811 GEN_MLME_EXT_HANDLER(0, NULL)
812 GEN_MLME_EXT_HANDLER(0, NULL)
813 GEN_MLME_EXT_HANDLER(0, NULL)
814 GEN_MLME_EXT_HANDLER(sizeof (struct joinbss_parm), join_cmd_hdl) /*14*/
815 GEN_MLME_EXT_HANDLER(sizeof (struct disconnect_parm), disconnect_hdl)
816 GEN_MLME_EXT_HANDLER(sizeof (struct createbss_parm), createbss_hdl)
817 GEN_MLME_EXT_HANDLER(sizeof (struct setopmode_parm), setopmode_hdl)
818 GEN_MLME_EXT_HANDLER(sizeof (struct sitesurvey_parm), sitesurvey_cmd_hdl) /*18*/
819 GEN_MLME_EXT_HANDLER(sizeof (struct setauth_parm), setauth_hdl)
820 GEN_MLME_EXT_HANDLER(sizeof (struct setkey_parm), setkey_hdl) /*20*/
821 GEN_MLME_EXT_HANDLER(sizeof (struct set_stakey_parm), set_stakey_hdl)
822 GEN_MLME_EXT_HANDLER(sizeof (struct set_assocsta_parm), NULL)
823 GEN_MLME_EXT_HANDLER(sizeof (struct del_assocsta_parm), NULL)
824 GEN_MLME_EXT_HANDLER(sizeof (struct setstapwrstate_parm), NULL)
825 GEN_MLME_EXT_HANDLER(sizeof (struct setbasicrate_parm), NULL)
826 GEN_MLME_EXT_HANDLER(sizeof (struct getbasicrate_parm), NULL)
827 GEN_MLME_EXT_HANDLER(sizeof (struct setdatarate_parm), NULL)
828 GEN_MLME_EXT_HANDLER(sizeof (struct getdatarate_parm), NULL)
829 GEN_MLME_EXT_HANDLER(sizeof (struct setphyinfo_parm), NULL)
830 GEN_MLME_EXT_HANDLER(sizeof (struct getphyinfo_parm), NULL) /*30*/
831 GEN_MLME_EXT_HANDLER(sizeof (struct setphy_parm), NULL)
832 GEN_MLME_EXT_HANDLER(sizeof (struct getphy_parm), NULL)
833 GEN_MLME_EXT_HANDLER(0, NULL)
834 GEN_MLME_EXT_HANDLER(0, NULL)
835 GEN_MLME_EXT_HANDLER(0, NULL)
836 GEN_MLME_EXT_HANDLER(0, NULL)
837 GEN_MLME_EXT_HANDLER(0, NULL)
838 GEN_MLME_EXT_HANDLER(0, NULL)
839 GEN_MLME_EXT_HANDLER(0, NULL)
840 GEN_MLME_EXT_HANDLER(0, NULL) /*40*/
841 GEN_MLME_EXT_HANDLER(0, NULL)
842 GEN_MLME_EXT_HANDLER(0, NULL)
843 GEN_MLME_EXT_HANDLER(0, NULL)
844 GEN_MLME_EXT_HANDLER(0, NULL)
845 GEN_MLME_EXT_HANDLER(sizeof(struct addBaReq_parm), add_ba_hdl)
846 GEN_MLME_EXT_HANDLER(sizeof(struct set_ch_parm), set_ch_hdl) /* 46 */
847 GEN_MLME_EXT_HANDLER(0, NULL)
848 GEN_MLME_EXT_HANDLER(0, NULL)
849 GEN_MLME_EXT_HANDLER(0, NULL)
850 GEN_MLME_EXT_HANDLER(0, NULL) /*50*/
851 GEN_MLME_EXT_HANDLER(0, NULL)
852 GEN_MLME_EXT_HANDLER(0, NULL)
853 GEN_MLME_EXT_HANDLER(0, NULL)
854 GEN_MLME_EXT_HANDLER(0, NULL)
855 GEN_MLME_EXT_HANDLER(sizeof(struct Tx_Beacon_param), tx_beacon_hdl) /*55*/
856
857 GEN_MLME_EXT_HANDLER(0, mlme_evt_hdl) /*56*/
858 GEN_MLME_EXT_HANDLER(0, rtw_drvextra_cmd_hdl) /*57*/
859
860 GEN_MLME_EXT_HANDLER(0, h2c_msg_hdl) /*58*/
861 GEN_MLME_EXT_HANDLER(sizeof(struct SetChannelPlan_param), set_chplan_hdl) /*59*/
862 GEN_MLME_EXT_HANDLER(sizeof(struct LedBlink_param), led_blink_hdl) /*60*/
863 GEN_MLME_EXT_HANDLER(sizeof(struct SetChannelSwitch_param), set_csa_hdl) /*61*/
864 GEN_MLME_EXT_HANDLER(sizeof(struct TDLSoption_param), tdls_hdl) /*62*/
865 };
866
867 #endif
868
869 struct C2HEvent_Header
870 {
871
872 #ifdef CONFIG_LITTLE_ENDIAN
873
874 unsigned int len:16;
875 unsigned int ID:8;
876 unsigned int seq:8;
877
878 #elif defined(CONFIG_BIG_ENDIAN)
879
880 unsigned int seq:8;
881 unsigned int ID:8;
882 unsigned int len:16;
883
884 #else
885
886 # error "Must be LITTLE or BIG Endian"
887
888 #endif
889
890 unsigned int rsvd;
891
892 };
893
894 void rtw_dummy_event_callback(_adapter *adapter , u8 *pbuf);
895 void rtw_fwdbg_event_callback(_adapter *adapter , u8 *pbuf);
896
897 enum rtw_c2h_event
898 {
899 GEN_EVT_CODE(_Read_MACREG)=0, /*0*/
900 GEN_EVT_CODE(_Read_BBREG),
901 GEN_EVT_CODE(_Read_RFREG),
902 GEN_EVT_CODE(_Read_EEPROM),
903 GEN_EVT_CODE(_Read_EFUSE),
904 GEN_EVT_CODE(_Read_CAM), /*5*/
905 GEN_EVT_CODE(_Get_BasicRate),
906 GEN_EVT_CODE(_Get_DataRate),
907 GEN_EVT_CODE(_Survey), /*8*/
908 GEN_EVT_CODE(_SurveyDone), /*9*/
909
910 GEN_EVT_CODE(_JoinBss) , /*10*/
911 GEN_EVT_CODE(_AddSTA),
912 GEN_EVT_CODE(_DelSTA),
913 GEN_EVT_CODE(_AtimDone) ,
914 GEN_EVT_CODE(_TX_Report),
915 GEN_EVT_CODE(_CCX_Report), /*15*/
916 GEN_EVT_CODE(_DTM_Report),
917 GEN_EVT_CODE(_TX_Rate_Statistics),
918 GEN_EVT_CODE(_C2HLBK),
919 GEN_EVT_CODE(_FWDBG),
920 GEN_EVT_CODE(_C2HFEEDBACK), /*20*/
921 GEN_EVT_CODE(_ADDBA),
922 GEN_EVT_CODE(_C2HBCN),
923 GEN_EVT_CODE(_ReportPwrState), //filen: only for PCIE, USB
924 GEN_EVT_CODE(_CloseRF), //filen: only for PCIE, work around ASPM
925 MAX_C2HEVT
926 };
927
928
929 #ifdef _RTW_MLME_EXT_C_
930
931 static struct fwevent wlanevents[] =
932 {
933 {0, rtw_dummy_event_callback}, /*0*/
934 {0, NULL},
935 {0, NULL},
936 {0, NULL},
937 {0, NULL},
938 {0, NULL},
939 {0, NULL},
940 {0, NULL},
941 {0, &rtw_survey_event_callback}, /*8*/
942 {sizeof (struct surveydone_event), &rtw_surveydone_event_callback}, /*9*/
943
944 {0, &rtw_joinbss_event_callback}, /*10*/
945 {sizeof(struct stassoc_event), &rtw_stassoc_event_callback},
946 {sizeof(struct stadel_event), &rtw_stadel_event_callback},
947 {0, &rtw_atimdone_event_callback},
948 {0, rtw_dummy_event_callback},
949 {0, NULL}, /*15*/
950 {0, NULL},
951 {0, NULL},
952 {0, NULL},
953 {0, rtw_fwdbg_event_callback},
954 {0, NULL}, /*20*/
955 {0, NULL},
956 {0, NULL},
957 {0, &rtw_cpwm_event_callback},
958 };
959
960 #endif//_RTL8192C_CMD_C_
961
962 #endif