]> CyberLeo.Net >> Repos - FreeBSD/releng/7.2.git/blob - sys/dev/ray/if_raymib.h
Create releng/7.2 from stable/7 in preparation for 7.2-RELEASE.
[FreeBSD/releng/7.2.git] / sys / dev / ray / if_raymib.h
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$
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 };