Root/
Source at commit 137de86 created 13 years 4 months ago. By Xiangfu Liu, add ks7010 drivers | |
---|---|
1 | /* |
2 | * Driver for KeyStream wireless LAN |
3 | * |
4 | * ks_hostif.h |
5 | * $Id: ks_hostif.h 994 2009-09-14 01:51:16Z sekine $ |
6 | * |
7 | * Copyright (c) 2005-2008 KeyStream Corp. |
8 | * Copyright (C) 2009 Renesas Technology Corp. |
9 | * |
10 | * This program is free software; you can redistribute it and/or modify |
11 | * it undr the terms of the GNU General Public License version 2 as |
12 | * published by the Free Sotware Foundation. |
13 | */ |
14 | |
15 | #ifndef _KS_HOSTIF_H_ |
16 | #define _KS_HOSTIF_H_ |
17 | /* |
18 | * HOST-MAC I/F events |
19 | */ |
20 | #define HIF_DATA_REQ 0xE001 |
21 | #define HIF_DATA_IND 0xE801 |
22 | #define HIF_MIB_GET_REQ 0xE002 |
23 | #define HIF_MIB_GET_CONF 0xE802 |
24 | #define HIF_MIB_SET_REQ 0xE003 |
25 | #define HIF_MIB_SET_CONF 0xE803 |
26 | #define HIF_POWERMGT_REQ 0xE004 |
27 | #define HIF_POWERMGT_CONF 0xE804 |
28 | #define HIF_START_REQ 0xE005 |
29 | #define HIF_START_CONF 0xE805 |
30 | #define HIF_CONNECT_IND 0xE806 |
31 | #define HIF_STOP_REQ 0xE006 |
32 | #define HIF_STOP_CONF 0xE807 |
33 | #define HIF_PS_ADH_SET_REQ 0xE007 |
34 | #define HIF_PS_ADH_SET_CONF 0xE808 |
35 | #define HIF_INFRA_SET_REQ 0xE008 |
36 | #define HIF_INFRA_SET_CONF 0xE809 |
37 | #define HIF_ADH_SET_REQ 0xE009 |
38 | #define HIF_ADH_SET_CONF 0xE80A |
39 | #define HIF_AP_SET_REQ 0xE00A |
40 | #define HIF_AP_SET_CONF 0xE80B |
41 | #define HIF_ASSOC_INFO_IND 0xE80C |
42 | #define HIF_MIC_FAILURE_REQ 0xE00B |
43 | #define HIF_MIC_FAILURE_CONF 0xE80D |
44 | #define HIF_SCAN_REQ 0xE00C |
45 | #define HIF_SCAN_CONF 0xE80E |
46 | #define HIF_PHY_INFO_REQ 0xE00D |
47 | #define HIF_PHY_INFO_CONF 0xE80F |
48 | #define HIF_SLEEP_REQ 0xE00E |
49 | #define HIF_SLEEP_CONF 0xE810 |
50 | #define HIF_PHY_INFO_IND 0xE811 |
51 | #define HIF_SCAN_IND 0xE812 |
52 | #define HIF_INFRA_SET2_REQ 0xE00F |
53 | #define HIF_INFRA_SET2_CONF 0xE813 |
54 | #define HIF_ADH_SET2_REQ 0xE010 |
55 | #define HIF_ADH_SET2_CONF 0xE814 |
56 | |
57 | #define HIF_REQ_MAX 0xE010 |
58 | |
59 | /* |
60 | * HOST-MAC I/F data structure |
61 | * Byte alignmet Little Endian |
62 | */ |
63 | |
64 | struct hostif_hdr { |
65 | uint16_t size; |
66 | uint16_t event; |
67 | } __attribute__((packed)); |
68 | |
69 | struct hostif_data_request_t { |
70 | struct hostif_hdr header; |
71 | uint16_t auth_type; |
72 | #define TYPE_DATA 0x0000 |
73 | #define TYPE_AUTH 0x0001 |
74 | uint16_t reserved; |
75 | uint8_t data[0]; |
76 | } __attribute__((packed)); |
77 | |
78 | struct hostif_data_indication_t { |
79 | struct hostif_hdr header; |
80 | uint16_t auth_type; |
81 | /* #define TYPE_DATA 0x0000 */ |
82 | #define TYPE_PMK1 0x0001 |
83 | #define TYPE_GMK1 0x0002 |
84 | #define TYPE_GMK2 0x0003 |
85 | uint16_t reserved; |
86 | uint8_t data[0]; |
87 | } __attribute__((packed)); |
88 | |
89 | #define CHANNEL_LIST_MAX_SIZE 14 |
90 | struct channel_list_t { |
91 | uint8_t size; |
92 | uint8_t body[CHANNEL_LIST_MAX_SIZE]; |
93 | uint8_t pad; |
94 | } __attribute__((packed)); |
95 | |
96 | /* MIB Attribute */ |
97 | #define DOT11_MAC_ADDRESS 0x21010100 /* MAC Address (R) */ |
98 | #define DOT11_PRODUCT_VERSION 0x31024100 /* FirmWare Version (R)*/ |
99 | #define DOT11_RTS_THRESHOLD 0x21020100 /* RTS Threshold (R/W) */ |
100 | #define DOT11_FRAGMENTATION_THRESHOLD 0x21050100 /* Fragment Threshold (R/W) */ |
101 | #define DOT11_PRIVACY_INVOKED 0x15010100 /* WEP ON/OFF (W) */ |
102 | #define DOT11_WEP_DEFAULT_KEY_ID 0x15020100 /* WEP Index (W) */ |
103 | #define DOT11_WEP_DEFAULT_KEY_VALUE1 0x13020101 /* WEP Key#1(TKIP AES: PairwiseTemporalKey) (W) */ |
104 | #define DOT11_WEP_DEFAULT_KEY_VALUE2 0x13020102 /* WEP Key#2(TKIP AES: GroupKey1) (W) */ |
105 | #define DOT11_WEP_DEFAULT_KEY_VALUE3 0x13020103 /* WEP Key#3(TKIP AES: GroupKey2) (W) */ |
106 | #define DOT11_WEP_DEFAULT_KEY_VALUE4 0x13020104 /* WEP Key#4 (W) */ |
107 | #define DOT11_WEP_LIST 0x13020100 /* WEP LIST */ |
108 | #define DOT11_DESIRED_SSID 0x11090100 /* SSID */ |
109 | #define DOT11_CURRENT_CHANNEL 0x45010100 /* channel set */ |
110 | #define DOT11_OPERATION_RATE_SET 0x11110100 /* rate set */ |
111 | |
112 | #define LOCAL_AP_SEARCH_INTEAVAL 0xF1010100 /* AP search interval (R/W) */ |
113 | #define LOCAL_CURRENTADDRESS 0xF1050100 /* MAC Adress change (W) */ |
114 | #define LOCAL_MULTICAST_ADDRESS 0xF1060100 /* Multicast Adress (W) */ |
115 | #define LOCAL_MULTICAST_FILTER 0xF1060200 /* Multicast Adress Filter enable/disable (W) */ |
116 | #define LOCAL_SEARCHED_AP_LIST 0xF1030100 /* AP list (R) */ |
117 | #define LOCAL_LINK_AP_STATUS 0xF1040100 /* Link AP status (R) */ |
118 | #define LOCAL_PACKET_STATISTICS 0xF1020100 /* tx,rx packets statistics */ |
119 | #define LOCAL_AP_SCAN_LIST_TYPE_SET 0xF1030200 /* AP_SCAN_LIST_TYPE */ |
120 | |
121 | #define DOT11_RSN_ENABLED 0x15070100 /* WPA enable/disable (W) */ |
122 | #define LOCAL_RSN_MODE 0x56010100 /* RSN mode WPA/WPA2 (W) */ |
123 | #define DOT11_RSN_CONFIG_MULTICAST_CIPHER 0x51040100 /* GroupKeyCipherSuite (W) */ |
124 | #define DOT11_RSN_CONFIG_UNICAST_CIPHER 0x52020100 /* PairwiseKeyCipherSuite (W) */ |
125 | #define DOT11_RSN_CONFIG_AUTH_SUITE 0x53020100 /* AuthenticationKeyManagementSuite (W) */ |
126 | #define DOT11_RSN_CONFIG_VERSION 0x51020100 /* RSN version (W) */ |
127 | #define LOCAL_RSN_CONFIG_ALL 0x5F010100 /* RSN CONFIG ALL (W) */ |
128 | #define DOT11_PMK_TSC 0x55010100 /* PMK_TSC (W) */ |
129 | #define DOT11_GMK1_TSC 0x55010101 /* GMK1_TSC (W) */ |
130 | #define DOT11_GMK2_TSC 0x55010102 /* GMK2_TSC (W) */ |
131 | #define DOT11_GMK3_TSC 0x55010103 /* GMK3_TSC */ |
132 | #define LOCAL_PMK 0x58010100 /* Pairwise Master Key cache (W) */ |
133 | |
134 | #define LOCAL_REGION 0xF10A0100 /* Region setting */ |
135 | |
136 | #ifdef WPS |
137 | #define LOCAL_WPS_ENABLE 0xF10B0100 /* WiFi Protected Setup */ |
138 | #define LOCAL_WPS_PROBE_REQ 0xF10C0100 /* WPS Probe Request */ |
139 | #endif /* WPS */ |
140 | |
141 | #define LOCAL_GAIN 0xF10D0100 /* Carrer sense threshold for demo ato show */ |
142 | #define LOCAL_EEPROM_SUM 0xF10E0100 /* EEPROM checksum information */ |
143 | |
144 | struct hostif_mib_get_request_t { |
145 | struct hostif_hdr header; |
146 | uint32_t mib_attribute; |
147 | } __attribute__((packed)); |
148 | |
149 | |
150 | struct hostif_mib_value_t { |
151 | uint16_t size; |
152 | uint16_t type; |
153 | #define MIB_VALUE_TYPE_NULL 0 |
154 | #define MIB_VALUE_TYPE_INT 1 |
155 | #define MIB_VALUE_TYPE_BOOL 2 |
156 | #define MIB_VALUE_TYPE_COUNT32 3 |
157 | #define MIB_VALUE_TYPE_OSTRING 4 |
158 | uint8_t body[0]; |
159 | } __attribute__((packed)); |
160 | |
161 | struct hostif_mib_get_confirm_t { |
162 | struct hostif_hdr header; |
163 | uint32_t mib_status; |
164 | #define MIB_SUCCESS 0 |
165 | #define MIB_INVALID 1 |
166 | #define MIB_READ_ONLY 2 |
167 | #define MIB_WRITE_ONLY 3 |
168 | uint32_t mib_attribute; |
169 | struct hostif_mib_value_t mib_value; |
170 | } __attribute__((packed)); |
171 | |
172 | struct hostif_mib_set_request_t { |
173 | struct hostif_hdr header; |
174 | uint32_t mib_attribute; |
175 | struct hostif_mib_value_t mib_value; |
176 | } __attribute__((packed)); |
177 | |
178 | struct hostif_mib_set_confirm_t { |
179 | struct hostif_hdr header; |
180 | uint32_t mib_status; |
181 | uint32_t mib_attribute; |
182 | } __attribute__((packed)); |
183 | |
184 | struct hostif_power_mngmt_request_t { |
185 | struct hostif_hdr header; |
186 | uint32_t mode; |
187 | #define POWER_ACTIVE 1 |
188 | #define POWER_SAVE 2 |
189 | uint32_t wake_up; |
190 | #define SLEEP_FALSE 0 |
191 | #define SLEEP_TRUE 1 /* not used */ |
192 | uint32_t receiveDTIMs; |
193 | #define DTIM_FALSE 0 |
194 | #define DTIM_TRUE 1 |
195 | } __attribute__((packed)); |
196 | |
197 | /* power management mode */ |
198 | enum { |
199 | POWMGT_ACTIVE_MODE=0, |
200 | POWMGT_SAVE1_MODE, |
201 | POWMGT_SAVE2_MODE |
202 | }; |
203 | |
204 | #define RESULT_SUCCESS 0 |
205 | #define RESULT_INVALID_PARAMETERS 1 |
206 | #define RESULT_NOT_SUPPORTED 2 |
207 | /* #define RESULT_ALREADY_RUNNING 3 */ |
208 | #define RESULT_ALREADY_RUNNING 7 |
209 | |
210 | struct hostif_power_mngmt_confirm_t { |
211 | struct hostif_hdr header; |
212 | uint16_t result_code; |
213 | } __attribute__((packed)); |
214 | |
215 | struct hostif_start_request_t { |
216 | struct hostif_hdr header; |
217 | uint16_t mode; |
218 | #define MODE_PSEUDO_ADHOC 0 |
219 | #define MODE_INFRASTRUCTURE 1 |
220 | #define MODE_AP 2 /* not used */ |
221 | #define MODE_ADHOC 3 |
222 | } __attribute__((packed)); |
223 | |
224 | struct hostif_start_confirm_t { |
225 | struct hostif_hdr header; |
226 | uint16_t result_code; |
227 | } __attribute__((packed)); |
228 | |
229 | #define SSID_MAX_SIZE 32 |
230 | struct ssid_t { |
231 | uint8_t size; |
232 | uint8_t body[SSID_MAX_SIZE]; |
233 | uint8_t ssid_pad; |
234 | } __attribute__((packed)); |
235 | |
236 | #define RATE_SET_MAX_SIZE 16 |
237 | struct rate_set8_t { |
238 | uint8_t size; |
239 | uint8_t body[8]; |
240 | uint8_t rate_pad; |
241 | } __attribute__((packed)); |
242 | |
243 | struct FhParms_t { |
244 | uint16_t dwellTime; |
245 | uint8_t hopSet; |
246 | uint8_t hopPattern; |
247 | uint8_t hopIndex; |
248 | } __attribute__((packed)); |
249 | |
250 | struct DsParms_t { |
251 | uint8_t channel; |
252 | } __attribute__((packed)); |
253 | |
254 | struct CfParms_t { |
255 | uint8_t count; |
256 | uint8_t period; |
257 | uint16_t maxDuration; |
258 | uint16_t durRemaining; |
259 | } __attribute__((packed)); |
260 | |
261 | struct IbssParms_t { |
262 | uint16_t atimWindow; |
263 | } __attribute__((packed)); |
264 | |
265 | |
266 | struct rsn_t { |
267 | uint8_t size; |
268 | #define RSN_BODY_SIZE 64 |
269 | uint8_t body[RSN_BODY_SIZE]; |
270 | } __attribute__((packed)); |
271 | |
272 | struct ErpParams_t { |
273 | uint8_t erp_info; |
274 | } __attribute__((packed)); |
275 | |
276 | struct rate_set16_t{ |
277 | uint8_t size; |
278 | uint8_t body[16]; |
279 | uint8_t rate_pad; |
280 | } __attribute__((packed)); |
281 | |
282 | struct ap_info_t{ |
283 | uint8_t bssid[6]; /* +00 */ |
284 | uint8_t rssi; /* +06 */ |
285 | uint8_t sq; /* +07 */ |
286 | uint8_t noise; /* +08 */ |
287 | uint8_t pad0; /* +09 */ |
288 | uint16_t beacon_period; /* +10 */ |
289 | uint16_t capability; /* +12 */ |
290 | #define BSS_CAP_ESS (1<<0) |
291 | #define BSS_CAP_IBSS (1<<1) |
292 | #define BSS_CAP_CF_POLABLE (1<<2) |
293 | #define BSS_CAP_CF_POLL_REQ (1<<3) |
294 | #define BSS_CAP_PRIVACY (1<<4) |
295 | #define BSS_CAP_SHORT_PREAMBLE (1<<5) |
296 | #define BSS_CAP_PBCC (1<<6) |
297 | #define BSS_CAP_CHANNEL_AGILITY (1<<7) |
298 | #define BSS_CAP_SHORT_SLOT_TIME (1<<10) |
299 | #define BSS_CAP_DSSS_OFDM (1<<13) |
300 | uint8_t frame_type; /* +14 */ |
301 | uint8_t ch_info; /* +15 */ |
302 | #define FRAME_TYPE_BEACON 0x80 |
303 | #define FRAME_TYPE_PROBE_RESP 0x50 |
304 | uint16_t body_size; /* +16 */ |
305 | uint8_t body[1024]; /* +18 */ |
306 | /* +1032 */ |
307 | } __attribute__((packed)); |
308 | |
309 | struct link_ap_info_t{ |
310 | uint8_t bssid[6]; /* +00 */ |
311 | uint8_t rssi; /* +06 */ |
312 | uint8_t sq; /* +07 */ |
313 | uint8_t noise; /* +08 */ |
314 | uint8_t pad0; /* +09 */ |
315 | uint16_t beacon_period; /* +10 */ |
316 | uint16_t capability; /* +12 */ |
317 | struct rate_set8_t rate_set; /* +14 */ |
318 | struct FhParms_t fh_parameter; /* +24 */ |
319 | struct DsParms_t ds_parameter; /* +29 */ |
320 | struct CfParms_t cf_parameter; /* +30 */ |
321 | struct IbssParms_t ibss_parameter; /* +36 */ |
322 | struct ErpParams_t erp_parameter; /* +38 */ |
323 | uint8_t pad1; /* +39 */ |
324 | struct rate_set8_t ext_rate_set; /* +40 */ |
325 | uint8_t DTIM_period; /* +50 */ |
326 | uint8_t rsn_mode; /* +51 */ |
327 | #define RSN_MODE_NONE 0 |
328 | #define RSN_MODE_WPA 1 |
329 | #define RSN_MODE_WPA2 2 |
330 | struct { |
331 | uint8_t size; /* +52 */ |
332 | uint8_t body[128]; /* +53 */ |
333 | } __attribute__((packed)) rsn; |
334 | } __attribute__((packed)); |
335 | |
336 | struct hostif_connect_indication_t { |
337 | struct hostif_hdr header; |
338 | uint16_t connect_code; |
339 | #define RESULT_CONNECT 0 |
340 | #define RESULT_DISCONNECT 1 |
341 | struct link_ap_info_t link_ap_info; |
342 | } __attribute__((packed)); |
343 | |
344 | struct hostif_stop_request_t { |
345 | struct hostif_hdr header; |
346 | } __attribute__((packed)); |
347 | |
348 | struct hostif_stop_confirm_t { |
349 | struct hostif_hdr header; |
350 | uint16_t result_code; |
351 | } __attribute__((packed)); |
352 | |
353 | struct hostif_ps_adhoc_set_request_t { |
354 | struct hostif_hdr header; |
355 | uint16_t phy_type; |
356 | #define D_11B_ONLY_MODE 0 |
357 | #define D_11G_ONLY_MODE 1 |
358 | #define D_11BG_COMPATIBLE_MODE 2 |
359 | #define D_11A_ONLY_MODE 3 |
360 | uint16_t cts_mode; |
361 | #define CTS_MODE_FALSE 0 |
362 | #define CTS_MODE_TRUE 1 |
363 | uint16_t channel; |
364 | struct rate_set16_t rate_set; |
365 | uint16_t capability; /* bit5:preamble bit6:pbcc pbcc not supported always 0 |
366 | * bit10:ShortSlotTime bit13:DSSS-OFDM DSSS-OFDM not supported always 0 */ |
367 | uint16_t scan_type; |
368 | } __attribute__((packed)); |
369 | |
370 | struct hostif_ps_adhoc_set_confirm_t { |
371 | struct hostif_hdr header; |
372 | uint16_t result_code; |
373 | } __attribute__((packed)); |
374 | |
375 | struct hostif_infrastructure_set_request_t { |
376 | struct hostif_hdr header; |
377 | uint16_t phy_type; |
378 | uint16_t cts_mode; |
379 | struct rate_set16_t rate_set; |
380 | struct ssid_t ssid; |
381 | uint16_t capability; /* bit5:preamble bit6:pbcc pbcc not supported always 0 |
382 | * bit10:ShortSlotTime bit13:DSSS-OFDM DSSS-OFDM not supported always 0 */ |
383 | uint16_t beacon_lost_count; |
384 | uint16_t auth_type; |
385 | #define AUTH_TYPE_OPEN_SYSTEM 0 |
386 | #define AUTH_TYPE_SHARED_KEY 1 |
387 | struct channel_list_t channel_list; |
388 | uint16_t scan_type; |
389 | } __attribute__((packed)); |
390 | |
391 | struct hostif_infrastructure_set2_request_t { |
392 | struct hostif_hdr header; |
393 | uint16_t phy_type; |
394 | uint16_t cts_mode; |
395 | struct rate_set16_t rate_set; |
396 | struct ssid_t ssid; |
397 | uint16_t capability; /* bit5:preamble bit6:pbcc pbcc not supported always 0 |
398 | * bit10:ShortSlotTime bit13:DSSS-OFDM DSSS-OFDM not supported always 0 */ |
399 | uint16_t beacon_lost_count; |
400 | uint16_t auth_type; |
401 | #define AUTH_TYPE_OPEN_SYSTEM 0 |
402 | #define AUTH_TYPE_SHARED_KEY 1 |
403 | struct channel_list_t channel_list; |
404 | uint16_t scan_type; |
405 | uint8_t bssid[ETH_ALEN]; |
406 | } __attribute__((packed)); |
407 | |
408 | |
409 | struct hostif_infrastructure_set_confirm_t { |
410 | struct hostif_hdr header; |
411 | uint16_t result_code; |
412 | } __attribute__((packed)); |
413 | |
414 | struct hostif_adhoc_set_request_t { |
415 | struct hostif_hdr header; |
416 | uint16_t phy_type; |
417 | uint16_t cts_mode; |
418 | uint16_t channel; |
419 | struct rate_set16_t rate_set; |
420 | struct ssid_t ssid; |
421 | uint16_t capability; /* bit5:preamble bit6:pbcc pbcc not supported always 0 |
422 | * bit10:ShortSlotTime bit13:DSSS-OFDM DSSS-OFDM not supported always 0 */ |
423 | uint16_t scan_type; |
424 | } __attribute__((packed)); |
425 | |
426 | struct hostif_adhoc_set2_request_t { |
427 | struct hostif_hdr header; |
428 | uint16_t phy_type; |
429 | uint16_t cts_mode; |
430 | uint16_t reserved; |
431 | struct rate_set16_t rate_set; |
432 | struct ssid_t ssid; |
433 | uint16_t capability; /* bit5:preamble bit6:pbcc pbcc not supported always 0 |
434 | * bit10:ShortSlotTime bit13:DSSS-OFDM DSSS-OFDM not supported always 0 */ |
435 | uint16_t scan_type; |
436 | struct channel_list_t channel_list; |
437 | uint8_t bssid[ETH_ALEN]; |
438 | } __attribute__((packed)); |
439 | |
440 | struct hostif_adhoc_set_confirm_t { |
441 | struct hostif_hdr header; |
442 | uint16_t result_code; |
443 | } __attribute__((packed)); |
444 | |
445 | |
446 | struct last_associate_t { |
447 | uint8_t type; |
448 | uint8_t status; |
449 | } __attribute__((packed)); |
450 | |
451 | struct association_request_t { |
452 | uint8_t type; |
453 | #define FRAME_TYPE_ASSOC_REQ 0x00 |
454 | #define FRAME_TYPE_REASSOC_REQ 0x20 |
455 | uint8_t pad; |
456 | uint16_t capability; |
457 | uint16_t listen_interval; |
458 | uint8_t ap_address[6]; |
459 | uint16_t reqIEs_size; |
460 | } __attribute__((packed)); |
461 | |
462 | struct association_response_t { |
463 | uint8_t type; |
464 | #define FRAME_TYPE_ASSOC_RESP 0x10 |
465 | #define FRAME_TYPE_REASSOC_RESP 0x30 |
466 | uint8_t pad; |
467 | uint16_t capability; |
468 | uint16_t status; |
469 | uint16_t association_id; |
470 | uint16_t respIEs_size; |
471 | } __attribute__((packed)); |
472 | |
473 | struct hostif_associate_indication_t { |
474 | struct hostif_hdr header; |
475 | struct association_request_t assoc_req; |
476 | struct association_response_t assoc_resp; |
477 | /* followed by (reqIEs_size + respIEs_size) octets of data */ |
478 | /* reqIEs data *//* respIEs data */ |
479 | } __attribute__((packed)); |
480 | |
481 | struct hostif_bss_scan_request_t { |
482 | struct hostif_hdr header; |
483 | uint8_t scan_type; |
484 | #define ACTIVE_SCAN 0 |
485 | #define PASSIVE_SCAN 1 |
486 | uint8_t pad[3]; |
487 | uint32_t ch_time_min; |
488 | uint32_t ch_time_max; |
489 | struct channel_list_t channel_list; |
490 | struct ssid_t ssid; |
491 | } __attribute__((packed)); |
492 | |
493 | struct hostif_bss_scan_confirm_t { |
494 | struct hostif_hdr header; |
495 | uint16_t result_code; |
496 | uint16_t reserved; |
497 | } __attribute__((packed)); |
498 | |
499 | struct hostif_phy_information_request_t { |
500 | struct hostif_hdr header; |
501 | uint16_t type; |
502 | #define NORMAL_TYPE 0 |
503 | #define TIME_TYPE 1 |
504 | uint16_t time; /* unit 100ms */ |
505 | } __attribute__((packed)); |
506 | |
507 | struct hostif_phy_information_confirm_t { |
508 | struct hostif_hdr header; |
509 | uint8_t rssi; |
510 | uint8_t sq; |
511 | uint8_t noise; |
512 | uint8_t link_speed; |
513 | uint32_t tx_frame; |
514 | uint32_t rx_frame; |
515 | uint32_t tx_error; |
516 | uint32_t rx_error; |
517 | } __attribute__((packed)); |
518 | |
519 | /* sleep mode */ |
520 | #define SLP_ACTIVE 0 |
521 | #define SLP_SLEEP 1 |
522 | struct hostif_sleep_request_t { |
523 | struct hostif_hdr header; |
524 | } __attribute__((packed)); |
525 | |
526 | struct hostif_sleep_confirm_t { |
527 | struct hostif_hdr header; |
528 | uint16_t result_code; |
529 | } __attribute__((packed)); |
530 | |
531 | struct hostif_mic_failure_request_t { |
532 | struct hostif_hdr header; |
533 | uint16_t failure_count; |
534 | uint16_t timer; |
535 | } __attribute__((packed)); |
536 | |
537 | struct hostif_mic_failure_confirm_t { |
538 | struct hostif_hdr header; |
539 | uint16_t result_code; |
540 | } __attribute__((packed)); |
541 | |
542 | #define BASIC_RATE 0x80 |
543 | #define RATE_MASK 0x7F |
544 | |
545 | #define TX_RATE_AUTO 0xff |
546 | #define TX_RATE_1M_FIXED 0 |
547 | #define TX_RATE_2M_FIXED 1 |
548 | #define TX_RATE_1_2M_AUTO 2 |
549 | #define TX_RATE_5M_FIXED 3 |
550 | #define TX_RATE_11M_FIXED 4 |
551 | |
552 | #define TX_RATE_FULL_AUTO 0 |
553 | #define TX_RATE_11_AUTO 1 |
554 | #define TX_RATE_11B_AUTO 2 |
555 | #define TX_RATE_11BG_AUTO 3 |
556 | #define TX_RATE_MANUAL_AUTO 4 |
557 | #define TX_RATE_FIXED 5 |
558 | |
559 | /* 11b rate */ |
560 | #define TX_RATE_1M (uint8_t)(10/5) /* 11b 11g basic rate */ |
561 | #define TX_RATE_2M (uint8_t)(20/5) /* 11b 11g basic rate */ |
562 | #define TX_RATE_5M (uint8_t)(55/5) /* 11g basic rate */ |
563 | #define TX_RATE_11M (uint8_t)(110/5) /* 11g basic rate */ |
564 | |
565 | /* 11g rate */ |
566 | #define TX_RATE_6M (uint8_t)(60/5) /* 11g basic rate */ |
567 | #define TX_RATE_12M (uint8_t)(120/5) /* 11g basic rate */ |
568 | #define TX_RATE_24M (uint8_t)(240/5) /* 11g basic rate */ |
569 | #define TX_RATE_9M (uint8_t)(90/5) |
570 | #define TX_RATE_18M (uint8_t)(180/5) |
571 | #define TX_RATE_36M (uint8_t)(360/5) |
572 | #define TX_RATE_48M (uint8_t)(480/5) |
573 | #define TX_RATE_54M (uint8_t)(540/5) |
574 | |
575 | #define IS_11B_RATE(A) (((A&RATE_MASK)==TX_RATE_1M)||((A&RATE_MASK)==TX_RATE_2M)||\ |
576 | ((A&RATE_MASK)==TX_RATE_5M)||((A&RATE_MASK)==TX_RATE_11M)) |
577 | |
578 | #define IS_OFDM_RATE(A) (((A&RATE_MASK)==TX_RATE_6M)||((A&RATE_MASK)==TX_RATE_12M)||\ |
579 | ((A&RATE_MASK)==TX_RATE_24M)||((A&RATE_MASK)==TX_RATE_9M)||\ |
580 | ((A&RATE_MASK)==TX_RATE_18M)||((A&RATE_MASK)==TX_RATE_36M)||\ |
581 | ((A&RATE_MASK)==TX_RATE_48M)||((A&RATE_MASK)==TX_RATE_54M)) |
582 | |
583 | #define IS_11BG_RATE(A) (IS_11B_RATE(A)||IS_OFDM_RATE(A)) |
584 | |
585 | #define IS_OFDM_EXT_RATE(A) (((A&RATE_MASK)==TX_RATE_9M)||((A&RATE_MASK)==TX_RATE_18M)||\ |
586 | ((A&RATE_MASK)==TX_RATE_36M)||((A&RATE_MASK)==TX_RATE_48M)||\ |
587 | ((A&RATE_MASK)==TX_RATE_54M)) |
588 | |
589 | enum { |
590 | CONNECT_STATUS=0, |
591 | DISCONNECT_STATUS |
592 | }; |
593 | |
594 | /* preamble type */ |
595 | enum { |
596 | LONG_PREAMBLE=0, |
597 | SHORT_PREAMBLE |
598 | }; |
599 | |
600 | /* multicast filter */ |
601 | #define MCAST_FILTER_MCAST 0 |
602 | #define MCAST_FILTER_MCASTALL 1 |
603 | #define MCAST_FILTER_PROMISC 2 |
604 | |
605 | #define NIC_MAX_MCAST_LIST 32 |
606 | |
607 | /* macro function */ |
608 | #define HIF_EVENT_MASK 0xE800 |
609 | #define IS_HIF_IND(_EVENT) ((_EVENT&HIF_EVENT_MASK)==0xE800 && \ |
610 | ((_EVENT&~HIF_EVENT_MASK)==0x0001 || \ |
611 | (_EVENT&~HIF_EVENT_MASK)==0x0006 || \ |
612 | (_EVENT&~HIF_EVENT_MASK)==0x000C || \ |
613 | (_EVENT&~HIF_EVENT_MASK)==0x0011 || \ |
614 | (_EVENT&~HIF_EVENT_MASK)==0x0012)) |
615 | |
616 | #define IS_HIF_CONF(_EVENT) ((_EVENT&HIF_EVENT_MASK)==0xE800 && \ |
617 | (_EVENT&~HIF_EVENT_MASK)>0x0000 && \ |
618 | (_EVENT&~HIF_EVENT_MASK)<0x0012 && \ |
619 | !IS_HIF_IND(_EVENT) ) |
620 | |
621 | #ifdef __KERNEL__ |
622 | |
623 | #include "ks_wlan.h" |
624 | |
625 | /* function prototype */ |
626 | extern int hostif_data_request( ks_wlan_private *priv, struct sk_buff *packet ); |
627 | extern void hostif_receive( ks_wlan_private *priv, unsigned char *p, unsigned int size ); |
628 | extern void hostif_sme_enqueue(ks_wlan_private *priv, uint16_t event); |
629 | extern int hostif_init( ks_wlan_private *priv ); |
630 | extern void hostif_exit( ks_wlan_private *priv ); |
631 | |
632 | static |
633 | inline int hif_align_size(int size) |
634 | { |
635 | #ifdef KS_ATOM |
636 | if( size < 1024 ) |
637 | size = 1024; |
638 | #endif |
639 | #ifdef DEVICE_ALIGNMENT |
640 | return (size%DEVICE_ALIGNMENT) ? size + DEVICE_ALIGNMENT - (size % DEVICE_ALIGNMENT) : size; |
641 | #else |
642 | return size; |
643 | #endif |
644 | } |
645 | |
646 | #endif /* __KERNEL__ */ |
647 | |
648 | #endif /* _KS_HOSTIF_H_ */ |
649 |