1 /*-
2 * Copyright (C) 2000
3 * Dr. Duncan McLennan Barclay, dmlb@ragnet.demon.co.uk.
4 *
5 * All rights reserved.
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions
9 * are met:
10 * 1. Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer.
12 * 2. Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in the
14 * documentation and/or other materials provided with the distribution.
15 * 3. Neither the name of the author nor the names of any co-contributors
16 * may be used to endorse or promote products derived from this software
17 * without specific prior written permission.
18 *
19 * THIS SOFTWARE IS PROVIDED BY DUNCAN BARCLAY AND CONTRIBUTORS ``AS IS'' AND
20 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22 * ARE DISCLAIMED. IN NO EVENT SHALL DUNCAN BARCLAY OR CONTRIBUTORS BE LIABLE
23 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
24 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
25 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
26 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
27 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
28 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
29 * SUCH DAMAGE.
30 *
31 * $FreeBSD: src/sys/dev/ray/if_raymib.h,v 1.12.8.1 2005/01/30 00:59:59 imp Exp $
32 *
33 */
34
35 /*
36 * Bit mask definitions for firmware versioning
37 */
38 #define RAY_V4 0x1
39 #define RAY_V5 0x2
40
41 /*
42 * MIB stuctures
43 */
44 struct ray_mib_common_head { /*Offset*/ /*Size*/
45 u_int8_t mib_net_type; /*00*/
46 u_int8_t mib_ap_status; /*01*/
47 u_int8_t mib_ssid[IEEE80211_NWID_LEN]; /*02*/ /*20*/
48 u_int8_t mib_scan_mode; /*22*/
49 u_int8_t mib_apm_mode; /*23*/
50 u_int8_t mib_mac_addr[ETHER_ADDR_LEN]; /*24*/ /*06*/
51 u_int8_t mib_frag_thresh[2]; /*2a*/ /*02*/
52 u_int8_t mib_dwell_time[2]; /*2c*/ /*02*/
53 u_int8_t mib_beacon_period[2]; /*2e*/ /*02*/
54 u_int8_t mib_dtim_interval; /*30*/
55 u_int8_t mib_max_retry; /*31*/
56 u_int8_t mib_ack_timo; /*32*/
57 u_int8_t mib_sifs; /*33*/
58 u_int8_t mib_difs; /*34*/
59 u_int8_t mib_pifs; /*35*/
60 u_int8_t mib_rts_thresh[2]; /*36*/ /*02*/
61 u_int8_t mib_scan_dwell[2]; /*38*/ /*02*/
62 u_int8_t mib_scan_max_dwell[2]; /*3a*/ /*02*/
63 u_int8_t mib_assoc_timo; /*3c*/
64 u_int8_t mib_adhoc_scan_cycle; /*3d*/
65 u_int8_t mib_infra_scan_cycle; /*3e*/
66 u_int8_t mib_infra_super_scan_cycle; /*3f*/
67 u_int8_t mib_promisc; /*40*/
68 u_int8_t mib_uniq_word[2]; /*41*/ /*02*/
69 u_int8_t mib_slot_time; /*43*/
70 u_int8_t mib_roam_low_snr_thresh; /*44*/
71 u_int8_t mib_low_snr_count; /*45*/
72 u_int8_t mib_infra_missed_beacon_count; /*46*/
73 u_int8_t mib_adhoc_missed_beacon_count; /*47*/
74 u_int8_t mib_country_code; /*48*/
75 u_int8_t mib_hop_seq; /*49*/
76 u_int8_t mib_hop_seq_len; /*4a*/
77 } __packed;
78
79 struct ray_mib_common_tail {
80 u_int8_t mib_noise_filter_gain; /*00*/
81 u_int8_t mib_noise_limit_offset; /*01*/
82 u_int8_t mib_rssi_thresh_offset; /*02*/
83 u_int8_t mib_busy_thresh_offset; /*03*/
84 u_int8_t mib_sync_thresh; /*04*/
85 u_int8_t mib_test_mode; /*05*/
86 u_int8_t mib_test_min_chan; /*06*/
87 u_int8_t mib_test_max_chan; /*07*/
88 } __packed;
89
90 struct ray_mib_4 {
91 struct ray_mib_common_head mib_head; /*00*/
92 u_int8_t mib_cw_max; /*4b*/
93 u_int8_t mib_cw_min; /*4c*/
94 struct ray_mib_common_tail mib_tail; /*4d*/
95 } __packed;
96
97 struct ray_mib_5 {
98 struct ray_mib_common_head mib_head; /*00*/
99 u_int8_t mib_cw_max[2]; /*4b*/ /*02*/
100 u_int8_t mib_cw_min[2]; /*4d*/ /*02*/
101 struct ray_mib_common_tail mib_tail; /*4f*/
102 u_int8_t mib_allow_probe_resp; /*57*/
103 u_int8_t mib_privacy_must_start; /*58*/
104 u_int8_t mib_privacy_can_join; /*59*/
105 u_int8_t mib_basic_rate_set[8]; /*5a*/ /*08*/
106 } __packed;
107
108 #define mib_net_type mib_head.mib_net_type
109 #define mib_ap_status mib_head.mib_ap_status
110 #define mib_ssid mib_head.mib_ssid
111 #define mib_scan_mode mib_head.mib_scan_mode
112 #define mib_apm_mode mib_head.mib_apm_mode
113 #define mib_mac_addr mib_head.mib_mac_addr
114 #define mib_frag_thresh mib_head.mib_frag_thresh
115 #define mib_dwell_time mib_head.mib_dwell_time
116 #define mib_beacon_period mib_head.mib_beacon_period
117 #define mib_dtim_interval mib_head.mib_dtim_interval
118 #define mib_max_retry mib_head.mib_max_retry
119 #define mib_ack_timo mib_head.mib_ack_timo
120 #define mib_sifs mib_head.mib_sifs
121 #define mib_difs mib_head.mib_difs
122 #define mib_pifs mib_head.mib_pifs
123 #define mib_rts_thresh mib_head.mib_rts_thresh
124 #define mib_scan_dwell mib_head.mib_scan_dwell
125 #define mib_scan_max_dwell mib_head.mib_scan_max_dwell
126 #define mib_assoc_timo mib_head.mib_assoc_timo
127 #define mib_adhoc_scan_cycle mib_head.mib_adhoc_scan_cycle
128 #define mib_infra_scan_cycle mib_head.mib_infra_scan_cycle
129 #define mib_infra_super_scan_cycle \
130 mib_head.mib_infra_super_scan_cycle
131 #define mib_promisc mib_head.mib_promisc
132 #define mib_uniq_word mib_head.mib_uniq_word
133 #define mib_slot_time mib_head.mib_slot_time
134 #define mib_roam_low_snr_thresh mib_head.mib_roam_low_snr_thresh
135 #define mib_low_snr_count mib_head.mib_low_snr_count
136 #define mib_infra_missed_beacon_count \
137 mib_head.mib_infra_missed_beacon_count
138 #define mib_adhoc_missed_beacon_count \
139 mib_head.mib_adhoc_missed_beacon_count
140 #define mib_country_code mib_head.mib_country_code
141 #define mib_hop_seq mib_head.mib_hop_seq
142 #define mib_hop_seq_len mib_head.mib_hop_seq_len
143
144 #define mib_noise_filter_gain mib_tail.mib_noise_filter_gain
145 #define mib_noise_limit_offset mib_tail.mib_noise_limit_offset
146 #define mib_rssi_thresh_offset mib_tail.mib_rssi_thresh_offset
147 #define mib_busy_thresh_offset mib_tail.mib_busy_thresh_offset
148 #define mib_sync_thresh mib_tail.mib_sync_thresh
149 #define mib_test_mode mib_tail.mib_test_mode
150 #define mib_test_min_chan mib_tail.mib_test_min_chan
151 #define mib_test_max_chan mib_tail.mib_test_max_chan
152
153 /*
154 * MIB IDs for the update/report param commands
155 */
156 #define RAY_MIB_NET_TYPE 0
157 #define RAY_MIB_AP_STATUS 1
158 #define RAY_MIB_SSID 2
159 #define RAY_MIB_SCAN_MODE 3
160 #define RAY_MIB_APM_MODE 4
161 #define RAY_MIB_MAC_ADDR 5
162 #define RAY_MIB_FRAG_THRESH 6
163 #define RAY_MIB_DWELL_TIME 7
164 #define RAY_MIB_BEACON_PERIOD 8
165 #define RAY_MIB_DTIM_INTERVAL 9
166 #define RAY_MIB_MAX_RETRY 10
167 #define RAY_MIB_ACK_TIMO 11
168 #define RAY_MIB_SIFS 12
169 #define RAY_MIB_DIFS 13
170 #define RAY_MIB_PIFS 14
171 #define RAY_MIB_RTS_THRESH 15
172 #define RAY_MIB_SCAN_DWELL 16
173 #define RAY_MIB_SCAN_MAX_DWELL 17
174 #define RAY_MIB_ASSOC_TIMO 18
175 #define RAY_MIB_ADHOC_SCAN_CYCLE 19
176 #define RAY_MIB_INFRA_SCAN_CYCLE 20
177 #define RAY_MIB_INFRA_SUPER_SCAN_CYCLE 21
178 #define RAY_MIB_PROMISC 22
179 #define RAY_MIB_UNIQ_WORD 23
180 #define RAY_MIB_SLOT_TIME 24
181 #define RAY_MIB_ROAM_LOW_SNR_THRESH 25
182 #define RAY_MIB_LOW_SNR_COUNT 26
183 #define RAY_MIB_INFRA_MISSED_BEACON_COUNT 27
184 #define RAY_MIB_ADHOC_MISSED_BEACON_COUNT 28
185 #define RAY_MIB_COUNTRY_CODE 29
186 #define RAY_MIB_HOP_SEQ 30
187 #define RAY_MIB_HOP_SEQ_LEN 31
188 #define RAY_MIB_CW_MAX 32
189 #define RAY_MIB_CW_MIN 33
190 #define RAY_MIB_NOISE_FILTER_GAIN 34
191 #define RAY_MIB_NOISE_LIMIT_OFFSET 35
192 #define RAY_MIB_RSSI_THRESH_OFFSET 36
193 #define RAY_MIB_BUSY_THRESH_OFFSET 37
194 #define RAY_MIB_SYNC_THRESH 38
195 #define RAY_MIB_TEST_MODE 39
196 #define RAY_MIB_TEST_MIN_CHAN 40
197 #define RAY_MIB_TEST_MAX_CHAN 41
198 #define RAY_MIB_ALLOW_PROBE_RESP 42
199 #define RAY_MIB_PRIVACY_MUST_START 43
200 #define RAY_MIB_PRIVACY_CAN_JOIN 44
201 #define RAY_MIB_BASIC_RATE_SET 45
202 #define RAY_MIB_VERSION 46
203 #define RAY_MIB_CUR_BSSID 47
204 #define RAY_MIB_CUR_INITED 48
205 #define RAY_MIB_CUR_DEF_TXRATE 49
206 #define RAY_MIB_CUR_ENCRYPT 50
207 #define RAY_MIB_CUR_NET_TYPE 51
208 #define RAY_MIB_CUR_SSID 52
209 #define RAY_MIB_CUR_PRIV_START 53
210 #define RAY_MIB_CUR_PRIV_JOIN 54
211 #define RAY_MIB_DES_BSSID 55
212 #define RAY_MIB_DES_INITED 56
213 #define RAY_MIB_DES_DEF_TXRATE 57
214 #define RAY_MIB_DES_ENCRYPT 58
215 #define RAY_MIB_DES_NET_TYPE 59
216 #define RAY_MIB_DES_SSID 60
217 #define RAY_MIB_DES_PRIV_START 61
218 #define RAY_MIB_DES_PRIV_JOIN 62
219 #define RAY_MIB_CUR_AP_STATUS 63
220 #define RAY_MIB_CUR_PROMISC 64
221 #define RAY_MIB_DES_AP_STATUS 65
222 #define RAY_MIB_DES_PROMISC 66
223 #define RAY_MIB_CUR_FRAMING 67
224 #define RAY_MIB_DES_FRAMING 68
225
226 #define RAY_MIB_LASTUSER 45
227 #define RAY_MIB_MAX 68
228
229 /*
230 * Strings for the MIB
231 */
232 #define RAY_MIB_STRINGS { \
233 "Network type", \
234 "AP status", \
235 "SSID", \
236 "Scan mode", \
237 "APM mode", \
238 "MAC address", \
239 "Fragmentation threshold", \
240 "Dwell time", \
241 "Beacon period", \
242 "DTIM_INTERVAL", \
243 "MAX_RETRY", \
244 "ACK_TIMO", \
245 "SIFS", \
246 "DIFS", \
247 "PIFS", \
248 "RTS_THRESH", \
249 "SCAN_DWELL", \
250 "SCAN_MAX_DWELL", \
251 "ASSOC_TIMO", \
252 "ADHOC_SCAN_CYCLE", \
253 "INFRA_SCAN_CYCLE", \
254 "INFRA_SUPER_SCAN_CYCLE", \
255 "PROMISC", \
256 "UNIQ_WORD", \
257 "SLOT_TIME", \
258 "ROAM_LOW_SNR_THRESH", \
259 "LOW_SNR_COUNT", \
260 "INFRA_MISSED_BEACON_COUNT", \
261 "ADHOC_MISSED_BEACON_COUNT", \
262 "COUNTRY_CODE", \
263 "HOP_SEQ", \
264 "HOP_SEQ_LEN", \
265 "CW_MAX", \
266 "CW_MIN", \
267 "NOISE_FILTER_GAIN", \
268 "NOISE_LIMIT_OFFSET", \
269 "RSSI_THRESH_OFFSET", \
270 "BUSY_THRESH_OFFSET", \
271 "SYNC_THRESH", \
272 "TEST_MODE", \
273 "TEST_MIN_CHAN", \
274 "TEST_MAX_CHAN", \
275 "ALLOW_PROBE_RESP", \
276 "PRIVACY_MUST_START", \
277 "PRIVACY_CAN_JOIN", \
278 "BASIC_RATE_SET", \
279 "Firmware version", \
280 "Current BSS Id", \
281 "Current INITED", \
282 "Current DEF_TXRATE", \
283 "Current ENCRYPT", \
284 "Current NET_TYPE", \
285 "Current SSID", \
286 "Current PRIV_START", \
287 "Current PRIV_JOIN", \
288 "Desired BSSID", \
289 "Desired INITED", \
290 "Desired DEF_TXRATE", \
291 "Desired ENCRYPT", \
292 "Desired NET_TYPE", \
293 "Desired SSID", \
294 "Desired PRIV_START", \
295 "Desired PRIV_JOIN", \
296 "Current AP_STATUS", \
297 "Current PROMISC", \
298 "Desired AP_STATUS", \
299 "Desired PROMISC", \
300 "Current FRAMING", \
301 "Desired FRAMING" \
302 }
303
304 #define RAY_MIB_HELP_STRINGS { \
305 "0 Ad hoc, 1 Infrastructure", \
306 "0 Station, 1 Access Point", \
307 "", \
308 "0 Passive, 1 Active", \
309 "0 Off, 1 On", \
310 "", \
311 "Bytes", \
312 "DWELL_TIME", \
313 "BEACON_PERIOD", \
314 "DTIM_INTERVAL", \
315 "MAX_RETRY", \
316 "ACK_TIMO", \
317 "SIFS", \
318 "DIFS", \
319 "PIFS", \
320 "RTS_THRESH", \
321 "SCAN_DWELL", \
322 "SCAN_MAX_DWELL", \
323 "ASSOC_TIMO", \
324 "ADHOC_SCAN_CYCLE", \
325 "INFRA_SCAN_CYCLE", \
326 "INFRA_SUPER_SCAN_CYCLE", \
327 "PROMISC", \
328 "UNIQ_WORD", \
329 "SLOT_TIME", \
330 "ROAM_LOW_SNR_THRESH", \
331 "LOW_SNR_COUNT", \
332 "INFRA_MISSED_BEACON_COUNT", \
333 "ADHOC_MISSED_BEACON_COUNT", \
334 "COUNTRY_CODE", \
335 "HOP_SEQ", \
336 "HOP_SEQ_LEN", \
337 "CW_MAX", \
338 "CW_MIN", \
339 "NOISE_FILTER_GAIN", \
340 "NOISE_LIMIT_OFFSET", \
341 "RSSI_THRESH_OFFSET", \
342 "BUSY_THRESH_OFFSET", \
343 "SYNC_THRESH", \
344 "TEST_MODE", \
345 "TEST_MIN_CHAN", \
346 "TEST_MAX_CHAN", \
347 "ALLOW_PROBE_RESP", \
348 "PRIVACY_MUST_START", \
349 "PRIVACY_CAN_JOIN", \
350 "BASIC_RATE_SET", \
351 "", \
352 "", \
353 "0 Joined a net, 1 Created a net", \
354 "Current DEF_TXRATE", \
355 "Current ENCRYPT", \
356 "Current NET_TYPE", \
357 "", \
358 "Current PRIV_START", \
359 "Current PRIV_JOIN", \
360 "", \
361 "N/A", \
362 "Desired DEF_TXRATE", \
363 "Desired ENCRYPT", \
364 "Desired NET_TYPE", \
365 "", \
366 "Desired PRIV_START", \
367 "Desired PRIV_JOIN", \
368 "Current AP_STATUS", \
369 "Current PROMISC", \
370 "Desired AP_STATUS", \
371 "Desired PROMISC", \
372 "Current FRAMING", \
373 "Desired FRAMING" \
374 }
375
376 /*
377 * Applicable versions and work size for each MIB element
378 */
379 #define RAY_MIB_INFO_SIZ4 1
380 #define RAY_MIB_INFO_SIZ5 2
381 #define RAY_MIB_SIZE(info, mib, version) \
382 info[(mib)][(version & RAY_V4)?RAY_MIB_INFO_SIZ4:RAY_MIB_INFO_SIZ5]
383 #define RAY_MIB_INFO { \
384 {RAY_V4|RAY_V5, 1, 1}, /* RAY_MIB_NET_TYPE */ \
385 {RAY_V4|RAY_V5, 1, 1}, /* RAY_MIB_AP_STATUS */ \
386 {RAY_V4|RAY_V5, IEEE80211_NWID_LEN, \
387 IEEE80211_NWID_LEN},/* RAY_MIB_SSID */ \
388 {RAY_V4|RAY_V5, 1, 1}, /* RAY_MIB_SCAN_MODE */ \
389 {RAY_V4|RAY_V5, 1, 1}, /* RAY_MIB_APM_MODE */ \
390 {RAY_V4|RAY_V5, ETHER_ADDR_LEN, \
391 ETHER_ADDR_LEN},/* RAY_MIB_MAC_ADDR */ \
392 {RAY_V4|RAY_V5, 2, 2}, /* RAY_MIB_FRAG_THRESH */ \
393 {RAY_V4|RAY_V5, 2, 2}, /* RAY_MIB_DWELL_TIME */ \
394 {RAY_V4|RAY_V5, 2, 2}, /* RAY_MIB_BEACON_PERIOD */ \
395 {RAY_V4|RAY_V5, 1, 1}, /* RAY_MIB_DTIM_INTERVAL */ \
396 {RAY_V4|RAY_V5, 1, 1}, /* RAY_MIB_MAX_RETRY */ \
397 {RAY_V4|RAY_V5, 1, 1}, /* RAY_MIB_ACK_TIMO */ \
398 {RAY_V4|RAY_V5, 1, 1}, /* RAY_MIB_SIFS */ \
399 {RAY_V4|RAY_V5, 1, 1}, /* RAY_MIB_DIFS */ \
400 {RAY_V4|RAY_V5, 1, 1}, /* RAY_MIB_PIFS */ \
401 {RAY_V4|RAY_V5, 2, 2}, /* RAY_MIB_RTS_THRESH */ \
402 {RAY_V4|RAY_V5, 2, 2}, /* RAY_MIB_SCAN_DWELL */ \
403 {RAY_V4|RAY_V5, 2, 2}, /* RAY_MIB_SCAN_MAX_DWELL */ \
404 {RAY_V4|RAY_V5, 1, 1}, /* RAY_MIB_ASSOC_TIMO */ \
405 {RAY_V4|RAY_V5, 1, 1}, /* RAY_MIB_ADHOC_SCAN_CYCLE */ \
406 {RAY_V4|RAY_V5, 1, 1}, /* RAY_MIB_INFRA_SCAN_CYCLE */ \
407 {RAY_V4|RAY_V5, 1, 1}, /* RAY_MIB_INFRA_SUPER_SCAN_CYCLE */ \
408 {RAY_V4|RAY_V5, 1, 1}, /* RAY_MIB_PROMISC */ \
409 {RAY_V4|RAY_V5, 2, 2}, /* RAY_MIB_UNIQ_WORD */ \
410 {RAY_V4|RAY_V5, 1, 1}, /* RAY_MIB_SLOT_TIME */ \
411 {RAY_V4|RAY_V5, 1, 1}, /* RAY_MIB_ROAM_LOW_SNR_THRESH */ \
412 {RAY_V4|RAY_V5, 1, 1}, /* RAY_MIB_LOW_SNR_COUNT */ \
413 {RAY_V4|RAY_V5, 1, 1}, /* RAY_MIB_INFRA_MISSED_BEACON_COUNT */ \
414 {RAY_V4|RAY_V5, 1, 1}, /* RAY_MIB_ADHOC_MISSED_BEACON_COUNT */ \
415 {RAY_V4|RAY_V5, 1, 1}, /* RAY_MIB_COUNTRY_CODE */ \
416 {RAY_V4|RAY_V5, 1, 1}, /* RAY_MIB_HOP_SEQ */ \
417 {RAY_V4|RAY_V5, 1, 1}, /* RAY_MIB_HOP_SEQ_LEN */ \
418 {RAY_V4|RAY_V5, 1, 2}, /* RAY_MIB_CW_MAX */ \
419 {RAY_V4|RAY_V5, 1, 2}, /* RAY_MIB_CW_MIN */ \
420 {RAY_V4|RAY_V5, 1, 1}, /* RAY_MIB_NOISE_FILTER_GAIN */ \
421 {RAY_V4|RAY_V5, 1, 1}, /* RAY_MIB_NOISE_LIMIT_OFFSET */ \
422 {RAY_V4|RAY_V5, 1, 1}, /* RAY_MIB_RSSI_THRESH_OFFSET */ \
423 {RAY_V4|RAY_V5, 1, 1}, /* RAY_MIB_BUSY_THRESH_OFFSET */ \
424 {RAY_V4|RAY_V5, 1, 1}, /* RAY_MIB_SYNC_THRESH */ \
425 {RAY_V4|RAY_V5, 1, 1}, /* RAY_MIB_TEST_MODE */ \
426 {RAY_V4|RAY_V5, 1, 1}, /* RAY_MIB_TEST_MIN_CHAN */ \
427 {RAY_V4|RAY_V5, 1, 1}, /* RAY_MIB_TEST_MAX_CHAN */ \
428 { RAY_V5, 0, 1}, /* RAY_MIB_ALLOW_PROBE_RESP */ \
429 { RAY_V5, 0, 1}, /* RAY_MIB_PRIVACY_MUST_START */ \
430 { RAY_V5, 0, 1}, /* RAY_MIB_PRIVACY_CAN_JOIN */ \
431 { RAY_V5, 0, 8}, /* RAY_MIB_BASIC_RATE_SET */ \
432 {RAY_V4|RAY_V5, 1, 1}, /* RAY_MIB_VERSION */ \
433 {RAY_V4|RAY_V5, ETHER_ADDR_LEN, \
434 ETHER_ADDR_LEN},/* RAY_MIB_CUR_BSSID */ \
435 {RAY_V4|RAY_V5, 1, 1}, /* RAY_MIB_CUR_INITED */ \
436 {RAY_V4|RAY_V5, 1, 1}, /* RAY_MIB_CUR_DEF_TXRATE */ \
437 {RAY_V4|RAY_V5, 1, 1}, /* RAY_MIB_CUR_ENCRYPT */ \
438 {RAY_V4|RAY_V5, 1, 1}, /* RAY_MIB_CUR_NET_TYPE */ \
439 {RAY_V4|RAY_V5, IEEE80211_NWID_LEN, \
440 IEEE80211_NWID_LEN}, /* RAY_MIB_CUR_SSID */ \
441 {RAY_V4|RAY_V5, 1, 1}, /* RAY_MIB_CUR_PRIV_START */ \
442 {RAY_V4|RAY_V5, 1, 1}, /* RAY_MIB_CUR_PRIV_JOIN */ \
443 {RAY_V4|RAY_V5, ETHER_ADDR_LEN, \
444 ETHER_ADDR_LEN},/* RAY_MIB_DES_BSSID */ \
445 {RAY_V4|RAY_V5, 1, 1}, /* RAY_MIB_DES_INITED */ \
446 {RAY_V4|RAY_V5, 1, 1}, /* RAY_MIB_DES_DEF_TXRATE */ \
447 {RAY_V4|RAY_V5, 1, 1}, /* RAY_MIB_DES_ENCRYPT */ \
448 {RAY_V4|RAY_V5, 1, 1}, /* RAY_MIB_DES_NET_TYPE */ \
449 {RAY_V4|RAY_V5, IEEE80211_NWID_LEN, \
450 IEEE80211_NWID_LEN}, /* RAY_MIB_DES_SSID */ \
451 {RAY_V4|RAY_V5, 1, 1}, /* RAY_MIB_DES_PRIV_START */ \
452 {RAY_V4|RAY_V5, 1, 1}, /* RAY_MIB_DES_PRIV_JOIN */ \
453 {RAY_V4|RAY_V5, 1, 1}, /* RAY_MIB_CUR_AP_STATUS */ \
454 {RAY_V4|RAY_V5, 1, 1}, /* RAY_MIB_CUR_PROMISC */ \
455 {RAY_V4|RAY_V5, 1, 1}, /* RAY_MIB_DES_AP_STATUS */ \
456 {RAY_V4|RAY_V5, 1, 1}, /* RAY_MIB_DES_PROMISC */ \
457 {RAY_V4|RAY_V5, 1, 1}, /* RAY_MIB_CUR_FRAMING */ \
458 {RAY_V4|RAY_V5, 1, 1} /* RAY_MIB_DES_FRAMING */ \
459 }
460
461 /*
462 * MIB values
463 *
464 * I've included comments as to where the numbers have originated
465 * from.
466 *
467 * Linux refers to ray_cs.c and rayctl.h from version 167 of the
468 * Linux Raylink driver.
469 *
470 * NetBSD refers to if_ray.c from version 1.12 of the NetBSD Raylink
471 * driver.
472 *
473 * Symb refers to numbers cleaned from the 802.11 specification,
474 * discussion with 802.11 knowledgable people at Symbionics or
475 * stuff needed by me (i.e. me, * aps, ifo, hjl).
476 *
477 * V4 and V5 refer to settings for version 4 and version 5 of
478 * the firmware.
479 *
480 * DOC refers to the
481 * Combined Interface Requirements Specification
482 * and Interface Design Document (IRS/IDD)
483 * for the
484 * WLAN System Interfaces Between the
485 * HOST COMPUTER and the
486 * PCMCIA WLAN INTERFACE CARD
487 * Revision ECF 5.00
488 * 17 June, 1998
489 */
490
491 /* Obtained by raycontrol _before_ downloading
492 *
493 * WebGear Aviator
494 *
495 * # raycontrol -i ray0
496 * Firmware version 4
497 * Network type 0x01 0 Ad hoc, 1 Infrastructure
498 * AP status 0x00 0 Station, 1 Access Point
499 * SSID
500 * Scan mode 0x01 0 Passive, 1 Active
501 * APM mode 0x00 0 Off, 1 On
502 * MAC address 00:00:8f:48:e4:44
503 * Fragmentation threshold 0x0200 FRAG_THRESH
504 * Dwell tIME 0x01 DWELL_TIME
505 * Beacon period 0x01 BEACON_PERIOD
506 * DTIM_INTERVAL 0x05 DTIM_INTERVAL
507 * MAX_RETRY 0x03 MAX_RETRY
508 * ACK_TIMO 0x8c ACK_TIMO
509 * SIFS 0x1e SIFS
510 * DIFS 0x82 DIFS
511 * PIFS 0xce PIFS
512 * RTS_THRESH 0x0100 RTS_THRESH
513 * SCAN_DWELL 0xfc18 SCAN_DWELL
514 * SCAN_MAX_DWELL 0xc180 SCAN_MAX_DWELL
515 * ASSOC_TIMO 0x05 ASSOC_TIMO
516 * ADHOC_SCAN_CYCLE 0x04 ADHOC_SCAN_CYCLE
517 * INFRA_SCAN_CYCLE 0x02 INFRA_SCAN_CYCLE
518 * INFRA_SUPER_SCAN_CYCLE 0x04 INFRA_SUPER_SCAN_CYCLE
519 * PROMISC 0x00 PROMISC
520 * UNIQ_WORD 0x0cbd UNIQ_WORD
521 * SLOT_TIME 0x4e SLOT_TIME
522 * ROAM_LOW_SNR_THRESH 0x20 ROAM_LOW_SNR_THRESH
523 * LOW_SNR_COUNT 0x04 LOW_SNR_COUNT
524 * INFRA_MISSED_BEACON_COUNT 0x04 INFRA_MISSED_BEACON_COUNT
525 * ADHOC_MISSED_BEACON_COUNT 0x04 ADHOC_MISSED_BEACON_COUNT
526 * COUNTRY_CODE 0x01 COUNTRY_CODE
527 * HOP_SEQ 0x07 HOP_SEQ
528 * HOP_SEQ_LEN 0x4e HOP_SEQ_LEN
529 * CW_MAX 0x3f CW_MAX
530 * CW_MIN 0x0f CW_MIN
531 * NOISE_FILTER_GAIN 0x00 NOISE_FILTER_GAIN
532 * NOISE_LIMIT_OFFSET 0x00 NOISE_LIMIT_OFFSET
533 * RSSI_THRESH_OFFSET 0x70 RSSI_THRESH_OFFSET
534 * BUSY_THRESH_OFFSET 0x70 BUSY_THRESH_OFFSET
535 * SYNC_THRESH 0x07 SYNC_THRESH
536 * TEST_MODE 0x00 TEST_MODE
537 * TEST_MIN_CHAN 0x02 TEST_MIN_CHAN
538 * TEST_MAX_CHAN 0x02 TEST_MAX_CHAN
539 *
540 * Raylink
541 * Firmware version 5
542 * Network type 0x01 0 Ad hoc, 1 Infrastructure
543 * AP status 0x00 0 Station, 1 Access Point
544 * SSID ESSID1
545 * Scan mode 0x01 0 Passive, 1 Active
546 * APM mode 0x00 0 Off, 1 On
547 * MAC address 00:00:8f:a8:17:06
548 * Fragmentation threshold 0x7fff Bytes
549 * Dwell time 0x0080 DWELL_TIME
550 * Beacon period 0x0100 BEACON_PERIOD
551 * DTIM_INTERVAL 0x01 DTIM_INTERVAL
552 * MAX_RETRY 0x1f MAX_RETRY
553 * ACK_TIMO 0x86 ACK_TIMO
554 * SIFS 0x1c SIFS
555 * DIFS 0x82 DIFS
556 * PIFS 0x4e PIFS
557 * RTS_THRESH 0x7fff RTS_THRESH
558 * SCAN_DWELL 0x04e2 SCAN_DWELL
559 * SCAN_MAX_DWELL 0x38a4 SCAN_MAX_DWELL
560 * ASSOC_TIMO 0x05 ASSOC_TIMO
561 * ADHOC_SCAN_CYCLE 0x08 ADHOC_SCAN_CYCLE
562 * INFRA_SCAN_CYCLE 0x02 INFRA_SCAN_CYCLE
563 * INFRA_SUPER_SCAN_CYCLE 0x08 INFRA_SUPER_SCAN_CYCLE
564 * PROMISC 0x00 PROMISC
565 * UNIQ_WORD 0x0cbd UNIQ_WORD
566 * SLOT_TIME 0x32 SLOT_TIME
567 * ROAM_LOW_SNR_THRESH 0xff ROAM_LOW_SNR_THRESH
568 * LOW_SNR_COUNT 0xff LOW_SNR_COUNT
569 * INFRA_MISSED_BEACON_COUNT 0x02 INFRA_MISSED_BEACON_COUNT
570 * ADHOC_MISSED_BEACON_COUNT 0xff ADHOC_MISSED_BEACON_COUNT
571 * COUNTRY_CODE 0x01 COUNTRY_CODE
572 * HOP_SEQ 0x0b HOP_SEQ
573 * HOP_SEQ_LEN 0x55 HOP_SEQ_LEN
574 * CW_MAX 0x003f CW_MAX
575 * CW_MIN 0x000f CW_MIN
576 * NOISE_FILTER_GAIN 0x04 NOISE_FILTER_GAIN
577 * NOISE_LIMIT_OFFSET 0x08 NOISE_LIMIT_OFFSET
578 * RSSI_THRESH_OFFSET 0x28 RSSI_THRESH_OFFSET
579 * BUSY_THRESH_OFFSET 0x28 BUSY_THRESH_OFFSET
580 * SYNC_THRESH 0x07 SYNC_THRESH
581 * TEST_MODE 0x00 TEST_MODE
582 * TEST_MIN_CHAN 0x02 TEST_MIN_CHAN
583 * TEST_MAX_CHAN 0x02 TEST_MAX_CHAN
584 * ALLOW_PROBE_RESP 0x00 ALLOW_PROBE_RESP
585 * PRIVACY_MUST_START 0x00 PRIVACY_MUST_START
586 * PRIVACY_CAN_JOIN 0x00 PRIVACY_CAN_JOIN
587 * BASIC_RATE_SET 0x02 BASIC_RATE_SET
588 */
589
590 /*
591 * mib_net_type
592 *
593 * DOC 0x01 - Defines network type for Start and Join
594 * - Network commands.
595 *
596 * As the V4 cards don't do infra we have to use adhoc. For V5 cards
597 * we follow standard FreeBSD practise and use infrastructure mode.
598 */
599 #define RAY_MIB_NET_TYPE_ADHOC 0x00
600 #define RAY_MIB_NET_TYPE_INFRA 0x01
601 #define RAY_MIB_NET_TYPE_V4 RAY_MIB_NET_TYPE_ADHOC
602 #define RAY_MIB_NET_TYPE_V5 RAY_MIB_NET_TYPE_INFRA
603
604 /*
605 * mib_ap_status
606 *
607 * DOC 0x00 - Applicable only when Network Type is
608 * - Infrastructure.
609 */
610 #define RAY_MIB_AP_STATUS_TERMINAL 0x00
611 #define RAY_MIB_AP_STATUS_AP 0x01
612 #define RAY_MIB_AP_STATUS_V4 RAY_MIB_AP_STATUS_TERMINAL
613 #define RAY_MIB_AP_STATUS_V5 RAY_MIB_AP_STATUS_TERMINAL
614
615 /*
616 * mib_ssid
617 *
618 * DOC ESSID1 - Service Set ID. Can be any ASCII string
619 * - up to 32 bytes in length. If the string is
620 * - less than 32 bytes long, it must be
621 * - followed by a byte of 00h.
622 *
623 * Symb - windows setting comes from the Aviator software v1.1
624 */
625 #define RAY_MIB_SSID_WINDOWS "NETWORK_NAME"
626 #define RAY_MIB_SSID_RAYLINK "ESSID1"
627 #define RAY_MIB_SSID_V4 RAY_MIB_SSID_WINDOWS
628 #define RAY_MIB_SSID_V5 RAY_MIB_SSID_RAYLINK
629
630 /*
631 * mib_scan_mode
632 *
633 * DOC 0x01 - Defines acquisition approach for
634 * - terminals operating in either Ad Hoc or
635 * - Infrastructure Networks. N/A for APs.
636 */
637 #define RAY_MIB_SCAN_MODE_PASSIVE 0x00
638 #define RAY_MIB_SCAN_MODE_ACTIVE 0x01
639 #define RAY_MIB_SCAN_MODE_V4 RAY_MIB_SCAN_MODE_ACTIVE
640 #define RAY_MIB_SCAN_MODE_V5 RAY_MIB_SCAN_MODE_ACTIVE
641
642 /*
643 * mib_apm_mode
644 *
645 * DOC 0x00 - Defines power management mode for
646 * - stations operating in either Ad Hoc or
647 * - Infrastructure Networks. Must always
648 * - be 0 for APs.
649 */
650 #define RAY_MIB_APM_MODE_NONE 0x00
651 #define RAY_MIB_APM_MODE_POWERSAVE 0x01
652 #define RAY_MIB_APM_MODE_V4 RAY_MIB_APM_MODE_NONE
653 #define RAY_MIB_APM_MODE_V5 RAY_MIB_APM_MODE_NONE
654
655 /*
656 * mib_mac_addr
657 *
658 * DOC - MAC Address to be used by WIC (For
659 * - format see Figure 3.2.4.1.2-1, MAC
660 * - Address Format). Host may echo card
661 * - supplied address or use locally
662 * - administered address.
663 */
664
665 /*
666 * mib_frag_thresh
667 *
668 * DOC 0x7fff - Maximum over-the-air packet size (in
669 * - bytes)
670 *
671 * Symb 0xXXXX - you really should fragment when in low signal
672 * - conditions but getting it wrong
673 * crucifies the performance
674 */
675 #define RAY_MIB_FRAG_THRESH_MINIMUM 0
676 #define RAY_MIB_FRAG_THRESH_MAXIMUM 2346
677 #define RAY_MIB_FRAG_THRESH_DISABLE 0x7fff
678 #define RAY_MIB_FRAG_THRESH_V4 RAY_MIB_FRAG_THRESH_DISABLE
679 #define RAY_MIB_FRAG_THRESH_V5 RAY_MIB_FRAG_THRESH_DISABLE
680
681 /*
682 * mib_dwell_time
683 *
684 * DOC 0x0080 - Defines hop dwell time in Kusec.
685 * - Required only of stations which intend
686 * - to issue a Start Network command.
687 * - Forward Compatible Firmware (Build
688 * - 5) requires that the dwell time be one of
689 * - the set 16, 32, 64, 128, and 256.
690 *
691 * Linux.h - 16k * 2**n, n=0-4 in Kus
692 * Linux.c-V4 0x0200
693 * Linux.c-V5 0x0080 - 128 Kus
694 * NetBSD-V4 0x0200 - from Linux
695 * NetBSD-V4 0x0400 - "divined"
696 * NetBSD-V5 0x0080
697 * Symb-V4 0xXXXX - 802.11 dwell time is XXX Kus
698 * Symb-V5 0xXXXX - 802.11 dwell time is XXX Kus
699 *
700 * XXX confirm that 1024Kus is okay for windows driver - how? and see
701 * XXX how it is over the maximum
702 */
703 #define RAY_MIB_DWELL_TIME_MINIMUM 1
704 #define RAY_MIB_DWELL_TIME_MAXIMUM 390
705 #define RAY_MIB_DWELL_TIME_V4 0x0400
706 #define RAY_MIB_DWELL_TIME_V5 0x0080
707
708 /*
709 * mib_beacon_period
710 *
711 * DOC 0x0100 - Defines time between target beacon
712 * - transmit times (TBTT) in Kusec.
713 * - Forward Compatible Firmware (Build
714 * - 5) requires that the Beacon Period be an
715 * - integral multiple of the Dwell Time (not
716 * - exceeding 255 hops).
717 * - Required only of stations which intend
718 * - to issue a Start Network command.
719 *
720 * Linux.h - n * a_hop_time in Kus
721 * Linux.c-V4 0x0001
722 * Linux.c-V5 0x0100 - 256 Kus
723 * NetBSD-V4 0x0001 - from Linux
724 * NetBSD-V4 0x0000 - "divined"
725 * NetBSD-V5 0x0100
726 * Symb-V4 0x0001 - best performance is one beacon each dwell XXX
727 * Symb-V5 0x0080 - best performance is one beacon each dwell XXX
728 *
729 * XXX V4 should probably set this to dwell_time
730 */
731 #define RAY_MIB_BEACON_PERIOD_MINIMUM 1
732 #define RAY_MIB_BEACON_PERIOD_MAXIMUM 0xffff
733 #define RAY_MIB_BEACON_PERIOD_V4 0x0001
734 #define RAY_MIB_BEACON_PERIOD_V5 (2*RAY_MIB_DWELL_TIME_V5)
735
736 /*
737 * mib_dtim_interval
738 *
739 * DOC 0x01 - Number of beacons per DTIM period.
740 * - Only APs will use this parameter, to set
741 * - the DTIM period.
742 *
743 * Linux.h - in beacons
744 * Linux.c 0x01
745 * NetBSD 0x01
746 * Symb 0xXX - need to find out what DTIM is
747 */
748 #define RAY_MIB_DTIM_INTERVAL_MINIMUM 1
749 #define RAY_MIB_DTIM_INTERVAL_MAXIMUM 255
750 #define RAY_MIB_DTIM_INTERVAL_V4 0x01
751 #define RAY_MIB_DTIM_INTERVAL_V5 0x01
752
753 /*
754 * mib_max_retry
755 *
756 * DOC 31 - Number of times WIC will attempt to
757 * - retransmit a failed packet.
758 *
759 * Linux.c 0x07
760 * NetBSD 0x01 - "documented default for 5/6"
761 * NetBSD 0x07 - from Linux
762 * NetBSD 0x03 - "divined"
763 * Symb 0xXX - 7 retries seems okay but check with APS
764 */
765 #define RAY_MIB_MAX_RETRY_MINIMUM 0
766 #define RAY_MIB_MAX_RETRY_MAXIMUM 255
767 #define RAY_MIB_MAX_RETRY_V4 0x07
768 #define RAY_MIB_MAX_RETRY_V5 0x1f
769
770 /*
771 * mib_ack_timo
772 *
773 * DOC 0x86 - Time WIC will wait after completion of
774 * - a transmit before timing out anticipated
775 * - ACK (2 usec steps). Should equal
776 * - SIFS + constant.
777 *
778 * Linux.c 0xa3
779 * NetBSD 0x86 - documented default for 5/6
780 * NetBSD 0xa3 - from Linux
781 * NetBSD 0xa3 - "divined"
782 * Symb 0xXX - this must be a 802.11 defined setting?
783 */
784 #define RAY_MIB_ACK_TIMO_MINIMUM 0
785 #define RAY_MIB_ACK_TIMO_MAXIMUM 255
786 #define RAY_MIB_ACK_TIMO_V4 0xa3
787 #define RAY_MIB_ACK_TIMO_V5 0x86
788
789 /*
790 * mib_sifs
791 *
792 * DOC 0x1c - SIFS time in usec.
793 *
794 * Linux.c 0x1d
795 * NetBSD 0x1c - documented default for 5/6
796 * NetBSD 0x1d - from Linux
797 * NetBSD 0x1d - "divined"
798 * Symb 0xXX - default SIFS for 802.11
799 */
800 #define RAY_MIB_SIFS_MINIMUM 28
801 #define RAY_MIB_SIFS_MAXIMUM 62
802 #define RAY_MIB_SIFS_V4 0x1d
803 #define RAY_MIB_SIFS_V5 0x1c
804
805 /*
806 * mib_difs
807 *
808 * DOC 0x82 - DIFS time in usec.
809 */
810 #define RAY_MIB_DIFS_MINIMUM 130
811 #define RAY_MIB_DIFS_MAXIMUM 255
812 #define RAY_MIB_DIFS_V4 0x82
813 #define RAY_MIB_DIFS_V5 0x82
814
815 /*
816 * mib_pifs
817 *
818 * DOC 78 - PIFS time in usec. (Not currently
819 * - implemented.
820 */
821 #define RAY_MIB_PIFS_MINIMUM 78
822 #define RAY_MIB_PIFS_MAXIMUM 255
823 #define RAY_MIB_PIFS_V4 0xce
824 #define RAY_MIB_PIFS_V5 0x4e
825
826 /*
827 * mib_rts_thresh
828 *
829 * DOC 0x7ffff - Threshold size in bytes below which
830 * - messages will not require use of RTS
831 * - Protocol.
832 *
833 * Linux.c 0x7fff
834 * NetBSD 0x7fff - disabled
835 * Symb 0xXXXX - need to set this realistically to get CTS/RTS mode
836 * working right
837 */
838 #define RAY_MIB_RTS_THRESH_MINIMUM 0
839 #define RAY_MIB_RTS_THRESH_MAXIMUM 2346
840 #define RAY_MIB_RTS_THRESH_DISABLE 0x7fff
841 #define RAY_MIB_RTS_THRESH_V4 RAY_MIB_RTS_THRESH_DISABLE
842 #define RAY_MIB_RTS_THRESH_V5 RAY_MIB_RTS_THRESH_DISABLE
843
844 /*
845 * mib_scan_dwell
846 *
847 * DOC 0x04e2 - Time channel remains clear after probe
848 * - transmission prior to hopping to next
849 * - channel. (in 2 msec steps).
850 *
851 * Linux.c-V4 0xfb1e - 128572us
852 * Linix.c-V5 0x04e2 - 2500us
853 * NetBSD-V4 0xfb1e
854 * NetBSD-V5 0x04e2
855 * Symb 0xXXXX - Check that v4 h/w can do 2.5ms and default it
856 */
857 #define RAY_MIB_SCAN_DWELL_MINIMUM 1
858 #define RAY_MIB_SCAN_DWELL_MAXIMUM 65535
859 #define RAY_MIB_SCAN_DWELL_V4 0xfb1e
860 #define RAY_MIB_SCAN_DWELL_V5 0x04e2
861
862 /*
863 * mib_scan_max_dwell
864 *
865 * DOC 0x38a4 - Time to remain on a frequency channel
866 * - if CCA is detected after probe
867 * - transmission. (in 2 usec steps).
868 *
869 * Linux.c-V4 0xc75c - 102072us
870 * Linix.c-V5 0x38a4 - 29000us
871 * NetBSD-V4 0xc75c
872 * NetBSD-V5 0x38a4
873 * Symb 0xXXXX - see above - this may be total time before giving up
874 */
875 #define RAY_MIB_SCAN_MAX_DWELL_MINIMUM 1
876 #define RAY_MIB_SCAN_MAX_DWELL_MAXIMUM 65535
877 #define RAY_MIB_SCAN_MAX_DWELL_V4 0xc75c
878 #define RAY_MIB_SCAN_MAX_DWELL_V5 0x38a4
879
880 /*
881 * mib_assoc_timo
882 *
883 * DOC 0x05 - Time (in hops) a station waits after
884 * - transmitting an Association Request
885 * - Message before association attempt is
886 * - considered failed. N/A for Ad Hoc
887 * - Networks and for APs in Infrastructure
888 */
889 #define RAY_MIB_ASSOC_TIMO_MINIMUM 0
890 #define RAY_MIB_ASSOC_TIMO_MAXIMUM 255
891 #define RAY_MIB_ASSOC_TIMO_V4 0x05
892 #define RAY_MIB_ASSOC_TIMO_V5 0x05
893
894 /*
895 * mib_adhoc_scan_cycle
896 *
897 * DOC 0x08 - Maximum number of times to cycle
898 * - through frequency hopping pattern as
899 * - part of scanning during Ad Hoc
900 * - Acquisition.
901 */
902 #define RAY_MIB_ADHOC_SCAN_CYCLE_MINIMUM 1
903 #define RAY_MIB_ADHOC_SCAN_CYCLE_MAXIMUM 255
904 #define RAY_MIB_ADHOC_SCAN_CYCLE_V4 0x08
905 #define RAY_MIB_ADHOC_SCAN_CYCLE_V5 0x08
906
907 /*
908 * mib_infra_scan_cycle
909 *
910 * DOC 0x02 - Number of times to cycle through
911 * - frequency hopping pattern as part of
912 * - scanning during Infrastructure Network
913 * - Acquisition.
914 */
915 #define RAY_MIB_INFRA_SCAN_CYCLE_MINIMUM 1
916 #define RAY_MIB_INFRA_SCAN_CYCLE_MAXIMUM 255
917 #define RAY_MIB_INFRA_SCAN_CYCLE_V4 0x02
918 #define RAY_MIB_INFRA_SCAN_CYCLE_V5 0x02
919
920 /*
921 * mib_infra_super_scan_cycle
922 *
923 * DOC 0x08 - Number of times to repeat an
924 * - Infrastructure scan cycle if no APs are
925 * - found before indicating a failure.
926 */
927 #define RAY_MIB_INFRA_SUPER_SCAN_CYCLE_MINIMUM 1
928 #define RAY_MIB_INFRA_SUPER_SCAN_CYCLE_MAXIMUM 255
929 #define RAY_MIB_INFRA_SUPER_SCAN_CYCLE_V4 0x08
930 #define RAY_MIB_INFRA_SUPER_SCAN_CYCLE_V5 0x08
931
932 /*
933 * mib_promisc
934 *
935 * DOC 0x00 - Controls operation of WIC in
936 * - promiscuous mode.
937 */
938 #define RAY_MIB_PROMISC_DISABLED 0
939 #define RAY_MIB_PROMISC_ENABLED 1
940 #define RAY_MIB_PROMISC_V4 0x00
941 #define RAY_MIB_PROMISC_V5 0x00
942
943 /*
944 * mib_uniq_word
945 *
946 * DOC 0x0cdb - Unique word pattern (Transmitted as
947 * - 0CBDh per 802.11)
948 */
949 #define RAY_MIB_UNIQ_WORD_MINIMUM 0
950 #define RAY_MIB_UNIQ_WORD_MAXIMUM 0xffff
951 #define RAY_MIB_UNIQ_WORD_V4 0x0cbd
952 #define RAY_MIB_UNIQ_WORD_V5 0x0cbd
953
954 /*
955 * mib_slot_time
956 *
957 * DOC 0x32 - Slot time in usec
958 *
959 * Linux.c-V4 0x4e
960 * Linix.c-V5 0x32
961 * NetBSD-V4 0x4e - Linux
962 * NetBSD-V4 0x18 - "divined"
963 * NetBSD-V5 0x32 - mentions spec. is 50us i.e. 0x32
964 * Symb 0xXX - wtf 0x4e = 78
965 */
966 #define RAY_MIB_SLOT_TIME_MINIMUM 1
967 #define RAY_MIB_SLOT_TIME_MAXIMUM 128
968 #define RAY_MIB_SLOT_TIME_V4 0x4e
969 #define RAY_MIB_SLOT_TIME_V5 0x32
970
971 /*
972 * mib_roam_low_snr_thresh
973 *
974 * DOC 0xff - SNR Threshold for use by roaming
975 * - algorithm. [Low power count is
976 * - incremented when Beacon is received at
977 * - SNR lower than Roaming Low SNR
978 * - Threshold.] To disable, set to FFh.
979 *
980 * Linux.c 0xff
981 * NetBSD-V4 0xff - Linux
982 * NetBSD-V4 0x30 - "divined"
983 * NetBSD-V5 0xff - disabled
984 * NetBSD.h - if below this inc count
985 * Symb 0xXX - hmm is 0xff really disabled? need this to work
986 */
987 #define RAY_MIB_ROAM_LOW_SNR_THRESH_MINIMUM 0
988 #define RAY_MIB_ROAM_LOW_SNR_THRESH_MAXIMUM 255
989 #define RAY_MIB_ROAM_LOW_SNR_THRESH_DISABLED 0xff
990 #define RAY_MIB_ROAM_LOW_SNR_THRESH_V4 RAY_MIB_ROAM_LOW_SNR_THRESH_DISABLED
991 #define RAY_MIB_ROAM_LOW_SNR_THRESH_V5 RAY_MIB_ROAM_LOW_SNR_THRESH_DISABLED
992
993 /*
994 * mib_low_snr_count
995 *
996 * DOC 0xff - Threshold that number of consecutive
997 * - beacons received at SNR < Roaming
998 * - Low SNR Threshold must exceed
999 * - before roaming processing begins. To
1000 * - disable, set to FFh.
1001 *
1002 * Linux.c 0xff
1003 * NetBSD 0x07 - "divined - check" and marked as disabled
1004 * NetBSD 0xff - disabled
1005 * NetBSD.h - roam after cnt below thrsh
1006 * Symb 0xXX - hmm is 0xff really disabled? need
1007 * - this to work in infrastructure mode with mutliple APs
1008 */
1009 #define RAY_MIB_LOW_SNR_COUNT_MINIMUM 0
1010 #define RAY_MIB_LOW_SNR_COUNT_MAXIMUM 255
1011 #define RAY_MIB_LOW_SNR_COUNT_DISABLED 0xff
1012 #define RAY_MIB_LOW_SNR_COUNT_V4 RAY_MIB_LOW_SNR_COUNT_DISABLED
1013 #define RAY_MIB_LOW_SNR_COUNT_V5 RAY_MIB_LOW_SNR_COUNT_DISABLED
1014
1015 /*
1016 * mib_infra_missed_beacon_count
1017 *
1018 * DOC 0x02 - Threshold that number of consecutive
1019 * - beacons not received must exceed
1020 * - before roaming processing begins in an
1021 * - infrastructure network. To disable, set
1022 * - to FFh.
1023 * Linux.c 0x05
1024 * NetBSD 0x02 - documented default for 5/6
1025 * NetBSD 0x05 - Linux
1026 * NetBSD 0x07 - "divined - check, looks fishy"
1027 * Symb 0xXX - 5 missed beacons is probably okay
1028 */
1029 #define RAY_MIB_INFRA_MISSED_BEACON_COUNT_MINIMUM 0
1030 #define RAY_MIB_INFRA_MISSED_BEACON_COUNT_MAXIMUM 255
1031 #define RAY_MIB_INFRA_MISSED_BEACON_COUNT_V4 0x05
1032 #define RAY_MIB_INFRA_MISSED_BEACON_COUNT_V5 0x02
1033
1034 /*
1035 * mib_adhoc_missed_beacon_count
1036 *
1037 * DOC 0xff - Threshold that number of consecutive
1038 * - beacons transmitted by a terminal must
1039 * - exceed before reacquisition processing
1040 * - begins in Ad Hoc Network.
1041 */
1042 #define RAY_MIB_ADHOC_MISSED_BEACON_COUNT_MINIMUM 0
1043 #define RAY_MIB_ADHOC_MISSED_BEACON_COUNT_MAXIMUM 255
1044 #define RAY_MIB_ADHOC_MISSED_BEACON_COUNT_DISABLED 0xff
1045 #define RAY_MIB_ADHOC_MISSED_BEACON_COUNT_V4 RAY_MIB_ADHOC_MISSED_BEACON_COUNT_DISABLED
1046 #define RAY_MIB_ADHOC_MISSED_BEACON_COUNT_V5 RAY_MIB_ADHOC_MISSED_BEACON_COUNT_DISABLED
1047
1048 /*
1049 * mib_country_code
1050 *
1051 * DOC 0x01 - Country set of hopping patterns
1052 * - (element value in beacon)
1053 * - Note: Japan Test is for a special test
1054 * - mode required by the Japanese
1055 * - regulatory authorities.
1056 */
1057 #define RAY_MIB_COUNTRY_CODE_MIMIMUM 0x01
1058 #define RAY_MIB_COUNTRY_CODE_MAXIMUM 0x09
1059 #define RAY_MIB_COUNTRY_CODE_USA 0x01
1060 #define RAY_MIB_COUNTRY_CODE_EUROPE 0x02
1061 #define RAY_MIB_COUNTRY_CODE_JAPAN 0x03
1062 #define RAY_MIB_COUNTRY_CODE_KOREA 0x04
1063 #define RAY_MIB_COUNTRY_CODE_SPAIN 0x05
1064 #define RAY_MIB_COUNTRY_CODE_FRANCE 0x06
1065 #define RAY_MIB_COUNTRY_CODE_ISRAEL 0x07
1066 #define RAY_MIB_COUNTRY_CODE_AUSTRALIA 0x08
1067 #define RAY_MIB_COUNTRY_CODE_JAPAN_TEST 0x09
1068 #define RAY_MIB_COUNTRY_CODE_V4 RAY_MIB_COUNTRY_CODE_USA
1069 #define RAY_MIB_COUNTRY_CODE_V5 RAY_MIB_COUNTRY_CODE_USA
1070
1071 /*
1072 * mib_hop_seq
1073 *
1074 * DOC 0x0b - Hop Pattern to use. (Currently 66
1075 * - US/Europe plus 12 Japanese).
1076 *
1077 * NetBSD.h - no longer supported
1078 */
1079 #define RAY_MIB_HOP_SEQ_MINIMUM 6
1080 #define RAY_MIB_HOP_SEQ_MAXIMUM 72
1081 #define RAY_MIB_HOP_SEQ_V4 0x0b
1082 #define RAY_MIB_HOP_SEQ_V5 0x04
1083
1084 /*
1085 * mib_hop_seq_len
1086 *
1087 * DOC 0x4f - Number of frequency channels in
1088 * - hopping pattern is now set to the value
1089 * - defined in IEEE802.11 for the selected
1090 * - Current Country Code.
1091 */
1092 #define RAY_MIB_HOP_SEQ_LEN_MINIMUM 1
1093 #define RAY_MIB_HOP_SEQ_LEN_MAXIMUM 79
1094 #define RAY_MIB_HOP_SEQ_LEN_V4 0x4e
1095 #define RAY_MIB_HOP_SEQ_LEN_V5 0x4f
1096
1097 /*
1098 * All from here down are the same in Linux/NetBSD and seem to be sane.
1099 */
1100 #define RAY_MIB_CW_MAX_V4 0x3f
1101 #define RAY_MIB_CW_MAX_V5 0x003f
1102
1103 #define RAY_MIB_CW_MIN_V4 0x0f
1104 #define RAY_MIB_CW_MIN_V5 0x000f
1105
1106 /*
1107 * Symb 0xXX - these parameters will affect the clear channel
1108 * assesment false triggering
1109 *
1110 */
1111 #define RAY_MIB_NOISE_FILTER_GAIN_DEFAULT 0x04
1112 #define RAY_MIB_NOISE_LIMIT_OFFSET_DEFAULT 0x08
1113 #define RAY_MIB_RSSI_THRESH_OFFSET_DEFAULT 0x28
1114 #define RAY_MIB_BUSY_THRESH_OFFSET_DEFAULT 0x28
1115 #define RAY_MIB_SYNC_THRESH_DEFAULT 0x07
1116
1117 #define RAY_MIB_TEST_MODE_NORMAL 0x0
1118 #define RAY_MIB_TEST_MODE_ANT_1 0x1
1119 #define RAY_MIB_TEST_MODE_ATN_2 0x2
1120 #define RAY_MIB_TEST_MODE_ATN_BOTH 0x3
1121 #define RAY_MIB_TEST_MODE_DEFAULT RAY_MIB_TEST_MODE_NORMAL
1122
1123 #define RAY_MIB_TEST_MIN_CHAN_DEFAULT 0x02
1124 #define RAY_MIB_TEST_MAX_CHAN_DEFAULT 0x02
1125
1126 #define RAY_MIB_ALLOW_PROBE_RESP_DISALLOW 0x0
1127 #define RAY_MIB_ALLOW_PROBE_RESP_ALLOW 0x1
1128 #define RAY_MIB_ALLOW_PROBE_RESP_DEFAULT RAY_MIB_ALLOW_PROBE_RESP_DISALLOW
1129
1130 #define RAY_MIB_PRIVACY_MUST_START_NOWEP 0x0
1131 #define RAY_MIB_PRIVACY_MUST_START_WEP 0x1
1132 #define RAY_MIB_PRIVACY_MUST_START_DEFAULT RAY_MIB_PRIVACY_MUST_START_NOWEP
1133
1134 #define RAY_MIB_PRIVACY_CAN_JOIN_NOWEP 0x0
1135 #define RAY_MIB_PRIVACY_CAN_JOIN_WEP 0x1
1136 #define RAY_MIB_PRIVACY_CAN_JOIN_DONT_CARE 0x2
1137 #define RAY_MIB_PRIVACY_CAN_JOIN_DEFAULT RAY_MIB_PRIVACY_CAN_JOIN_NOWEP
1138
1139 #define RAY_MIB_BASIC_RATE_SET_MINIMUM 1
1140 #define RAY_MIB_BASIC_RATE_SET_MAXIMUM 4
1141 #define RAY_MIB_BASIC_RATE_SET_500K 1
1142 #define RAY_MIB_BASIC_RATE_SET_1000K 2
1143 #define RAY_MIB_BASIC_RATE_SET_1500K 3
1144 #define RAY_MIB_BASIC_RATE_SET_2000K 4
1145 #define RAY_MIB_BASIC_RATE_SET_DEFAULT RAY_MIB_BASIC_RATE_SET_2000K
1146
1147 /*
1148 * IOCTL support
1149 */
1150 struct ray_param_req {
1151 int r_failcause;
1152 u_int8_t r_paramid;
1153 u_int8_t r_len;
1154 u_int8_t r_data[256];
1155 };
1156 struct ray_stats_req {
1157 u_int64_t rxoverflow; /* Number of rx overflows */
1158 u_int64_t rxcksum; /* Number of checksum errors */
1159 u_int64_t rxhcksum; /* Number of header checksum errors */
1160 u_int8_t rxnoise; /* Average receiver level */
1161 };
1162 #define RAY_FAILCAUSE_EIDRANGE 1
1163 #define RAY_FAILCAUSE_ELENGTH 2
1164 /* device can possibly return up to 255 */
1165 #define RAY_FAILCAUSE_EDEVSTOP 256
1166
1167 /* Get a param the data is a ray_param_req structure */
1168 #define SIOCSRAYPARAM SIOCSIFGENERIC
1169 #define SIOCGRAYPARAM SIOCGIFGENERIC
1170 /* Get the error counters the data is a ray_stats_req structure */
1171 #define SIOCGRAYSTATS _IOWR('i', 201, struct ifreq)
1172 #define SIOCGRAYSIGLEV _IOWR('i', 202, struct ifreq)
1173
1174 #define RAY_NSIGLEVRECS 8
1175 #define RAY_NSIGLEV 8
1176 #define RAY_NANTENNA 8
1177
1178 struct ray_siglev {
1179 u_int8_t rsl_host[ETHER_ADDR_LEN]; /* MAC address */
1180 u_int8_t rsl_siglevs[RAY_NSIGLEV]; /* levels, newest in [0] */
1181 u_int8_t rsl_antennas[RAY_NANTENNA]; /* best antenna */
1182 struct timeval rsl_time; /* time of last packet */
1183 };
Cache object: 06cedab6149dd57a242dc26db7857373
|