Annotation of sys/dev/ic/if_wi_ieee.h, Revision 1.1
1.1 ! nbrk 1: /* $OpenBSD: if_wi_ieee.h,v 1.29 2006/06/27 20:55:51 reyk Exp $ */
! 2:
! 3: /*
! 4: * Copyright (c) 1997, 1998, 1999
! 5: * Bill Paul <wpaul@ctr.columbia.edu>. 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. All advertising materials mentioning features or use of this software
! 16: * must display the following acknowledgement:
! 17: * This product includes software developed by Bill Paul.
! 18: * 4. Neither the name of the author nor the names of any co-contributors
! 19: * may be used to endorse or promote products derived from this software
! 20: * without specific prior written permission.
! 21: *
! 22: * THIS SOFTWARE IS PROVIDED BY Bill Paul AND CONTRIBUTORS ``AS IS'' AND
! 23: * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
! 24: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
! 25: * ARE DISCLAIMED. IN NO EVENT SHALL Bill Paul OR THE VOICES IN HIS HEAD
! 26: * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
! 27: * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
! 28: * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
! 29: * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
! 30: * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
! 31: * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
! 32: * THE POSSIBILITY OF SUCH DAMAGE.
! 33: *
! 34: * From: if_wavelan_ieee.h,v 1.5.2.1 2001/07/04 00:12:34 brooks Exp $
! 35: */
! 36:
! 37: #ifndef _IF_WI_IEEE_H
! 38: #define _IF_WI_IEEE_H
! 39:
! 40: /*
! 41: * This header defines a simple command interface to the FreeBSD
! 42: * WaveLAN/IEEE driver (wi) driver, which is used to set certain
! 43: * device-specific parameters which can't be easily managed through
! 44: * ifconfig(8). No, sysctl(2) is not the answer. I said a _simple_
! 45: * interface, didn't I.
! 46: */
! 47:
! 48: #define SIOCSWAVELAN _IOW('i', 249, struct ifreq) /* wavelan set op */
! 49: #define SIOCGWAVELAN _IOWR('i', 250, struct ifreq) /* wavelan get op */
! 50:
! 51: /*
! 52: * Technically I don't think there's a limit to a record
! 53: * length. The largest record is the one that contains the CIS
! 54: * data, which is 240 words long, so 256 should be a safe
! 55: * value.
! 56: */
! 57: #define WI_MAX_DATALEN 512
! 58:
! 59: struct wi_req {
! 60: u_int16_t wi_len;
! 61: u_int16_t wi_type;
! 62: u_int16_t wi_val[WI_MAX_DATALEN];
! 63: };
! 64:
! 65: /*
! 66: * Private LTV records (interpreted only by the driver). This is
! 67: * a minor kludge to allow reading the interface statistics from
! 68: * the driver.
! 69: */
! 70: #define WI_RID_IFACE_STATS 0x0100
! 71: #define WI_RID_MGMT_XMIT 0x0200
! 72: #define WI_RID_MONITOR_MODE 0x0500
! 73: #define WI_RID_SCAN_APS 0x0600
! 74: #define WI_RID_READ_APS 0x0700
! 75:
! 76: struct wi_80211_hdr {
! 77: u_int16_t frame_ctl;
! 78: u_int16_t dur_id;
! 79: u_int8_t addr1[6];
! 80: u_int8_t addr2[6];
! 81: u_int8_t addr3[6];
! 82: u_int16_t seq_ctl;
! 83: u_int8_t addr4[6];
! 84: };
! 85:
! 86: #define WI_FCTL_VERS 0x0002
! 87: #define WI_FCTL_FTYPE 0x000C
! 88: #define WI_FCTL_STYPE 0x00F0
! 89: #define WI_FCTL_TODS 0x0100
! 90: #define WI_FCTL_FROMDS 0x0200
! 91: #define WI_FCTL_MOREFRAGS 0x0400
! 92: #define WI_FCTL_RETRY 0x0800
! 93: #define WI_FCTL_PM 0x1000
! 94: #define WI_FCTL_MOREDATA 0x2000
! 95: #define WI_FCTL_WEP 0x4000
! 96: #define WI_FCTL_ORDER 0x8000
! 97:
! 98: #define WI_FTYPE_MGMT 0x0000
! 99: #define WI_FTYPE_CTL 0x0004
! 100: #define WI_FTYPE_DATA 0x0008
! 101:
! 102: #define WI_STYPE_MGMT_ASREQ 0x0000 /* association request */
! 103: #define WI_STYPE_MGMT_ASRESP 0x0010 /* association response */
! 104: #define WI_STYPE_MGMT_REASREQ 0x0020 /* reassociation request */
! 105: #define WI_STYPE_MGMT_REASRESP 0x0030 /* reassociation response */
! 106: #define WI_STYPE_MGMT_PROBEREQ 0x0040 /* probe request */
! 107: #define WI_STYPE_MGMT_PROBERESP 0x0050 /* probe response */
! 108: #define WI_STYPE_MGMT_BEACON 0x0080 /* beacon */
! 109: #define WI_STYPE_MGMT_ATIM 0x0090 /* announcement traffic ind msg */
! 110: #define WI_STYPE_MGMT_DISAS 0x00A0 /* disassociation */
! 111: #define WI_STYPE_MGMT_AUTH 0x00B0 /* authentication */
! 112: #define WI_STYPE_MGMT_DEAUTH 0x00C0 /* deauthentication */
! 113:
! 114: #define WI_STYPE_CTL_PSPOLL 0x00A0
! 115: #define WI_STYPE_CTL_RTS 0x00B0
! 116: #define WI_STYPE_CTL_CTS 0x00C0
! 117: #define WI_STYPE_CTL_ACK 0x00D0
! 118: #define WI_STYPE_CTL_CFEND 0x00E0
! 119: #define WI_STYPE_CTL_CFENDACK 0x00F0
! 120: #define WI_STYPE_CTL_CFENDCFACK WI_STYPE_CTL_CFENDACK
! 121:
! 122: #define WI_STYPE_DATA 0x0000
! 123: #define WI_STYPE_DATA_CFACK 0x0010
! 124: #define WI_STYPE_DATA_CFPOLL 0x0020
! 125: #define WI_STYPE_DATA_CFACKPOLL 0x0030
! 126: #define WI_STYPE_NULLFUNC 0x0040
! 127: #define WI_STYPE_CFACK 0x0050
! 128: #define WI_STYPE_CFPOLL 0x0060
! 129: #define WI_STYPE_CFACKPOLL 0x0070
! 130:
! 131: struct wi_mgmt_hdr {
! 132: u_int16_t frame_ctl;
! 133: u_int16_t duration;
! 134: u_int8_t dst_addr[6];
! 135: u_int8_t src_addr[6];
! 136: u_int8_t bssid[6];
! 137: u_int16_t seq_ctl;
! 138: };
! 139:
! 140: struct wi_counters {
! 141: u_int32_t wi_tx_unicast_frames;
! 142: u_int32_t wi_tx_multicast_frames;
! 143: u_int32_t wi_tx_fragments;
! 144: u_int32_t wi_tx_unicast_octets;
! 145: u_int32_t wi_tx_multicast_octets;
! 146: u_int32_t wi_tx_deferred_xmits;
! 147: u_int32_t wi_tx_single_retries;
! 148: u_int32_t wi_tx_multi_retries;
! 149: u_int32_t wi_tx_retry_limit;
! 150: u_int32_t wi_tx_discards;
! 151: u_int32_t wi_rx_unicast_frames;
! 152: u_int32_t wi_rx_multicast_frames;
! 153: u_int32_t wi_rx_fragments;
! 154: u_int32_t wi_rx_unicast_octets;
! 155: u_int32_t wi_rx_multicast_octets;
! 156: u_int32_t wi_rx_fcs_errors;
! 157: u_int32_t wi_rx_discards_nobuf;
! 158: u_int32_t wi_tx_discards_wrong_sa;
! 159: u_int32_t wi_rx_WEP_cant_decrypt;
! 160: u_int32_t wi_rx_msg_in_msg_frags;
! 161: u_int32_t wi_rx_msg_in_bad_msg_frags;
! 162: };
! 163:
! 164: /*
! 165: * These are all the LTV record types that we can read or write
! 166: * from the WaveLAN. Not all of them are tremendously useful, but I
! 167: * list as many as I know about here for completeness.
! 168: */
! 169:
! 170: #define WI_RID_DNLD_BUF 0xFD01
! 171: #define WI_RID_MEMSZ 0xFD02 /* memory size info (Lucent) */
! 172: #define WI_RID_PRI_IDENTITY 0xFD02 /* primary firmware ident (PRISM2) */
! 173: #define WI_RID_DOMAINS 0xFD11 /* List of intended regulatory domains */
! 174: #define WI_RID_CIS 0xFD13 /* CIS info */
! 175: #define WI_RID_COMMQUAL 0xFD43 /* Communications quality */
! 176: #define WI_RID_SCALETHRESH 0xFD46 /* Actual system scale thresholds */
! 177: #define WI_RID_PCF 0xFD87 /* PCF info */
! 178:
! 179: /*
! 180: * Network parameters, static configuration entities.
! 181: */
! 182: #define WI_RID_PORTTYPE 0xFC00 /* Connection control characteristics */
! 183: #define WI_RID_MAC_NODE 0xFC01 /* MAC address of this station */
! 184: #define WI_RID_DESIRED_SSID 0xFC02 /* Service Set ID for connection */
! 185: #define WI_RID_OWN_CHNL 0xFC03 /* Comm channel for BSS creation */
! 186: #define WI_RID_OWN_SSID 0xFC04 /* IBSS creation ID */
! 187: #define WI_RID_OWN_ATIM_WIN 0xFC05 /* ATIM window time for IBSS creation */
! 188: #define WI_RID_SYSTEM_SCALE 0xFC06 /* scale that specifies AP density */
! 189: #define WI_RID_MAX_DATALEN 0xFC07 /* Max len of MAC frame body data */
! 190: #define WI_RID_MAC_WDS 0xFC08 /* MAC addr of corresponding WDS node */
! 191: #define WI_RID_PM_ENABLED 0xFC09 /* ESS power management enable */
! 192: #define WI_RID_PM_EPS 0xFC0A /* PM EPS/PS mode */
! 193: #define WI_RID_MCAST_RX 0xFC0B /* ESS PM mcast reception */
! 194: #define WI_RID_MAX_SLEEP 0xFC0C /* max sleep time for ESS PM */
! 195: #define WI_RID_HOLDOVER 0xFC0D /* holdover time for ESS PM */
! 196: #define WI_RID_NODENAME 0xFC0E /* ID name of this node for diag */
! 197: #define WI_RID_DTIM_PERIOD 0xFC10 /* beacon interval between DTIMs */
! 198: #define WI_RID_WDS_ADDR1 0xFC11 /* port 1 MAC of WDS link node */
! 199: #define WI_RID_WDS_ADDR2 0xFC12 /* port 1 MAC of WDS link node */
! 200: #define WI_RID_WDS_ADDR3 0xFC13 /* port 1 MAC of WDS link node */
! 201: #define WI_RID_WDS_ADDR4 0xFC14 /* port 1 MAC of WDS link node */
! 202: #define WI_RID_WDS_ADDR5 0xFC15 /* port 1 MAC of WDS link node */
! 203: #define WI_RID_WDS_ADDR6 0xFC16 /* port 1 MAC of WDS link node */
! 204: #define WI_RID_MCAST_PM_BUF 0xFC17 /* PM buffering of mcast */
! 205: #define WI_RID_ENCRYPTION 0xFC20 /* enable/disable WEP */
! 206: #define WI_RID_AUTHTYPE 0xFC21 /* specify authentication type */
! 207: #define WI_RID_SYMBOL_MANDATORYBSSID 0xFC21
! 208: #define WI_RID_P2_TX_CRYPT_KEY 0xFC23
! 209: #define WI_RID_P2_CRYPT_KEY0 0xFC24
! 210: #define WI_RID_P2_CRYPT_KEY1 0xFC25
! 211: #define WI_RID_MICROWAVE_OVEN 0xFC25 /* Microwave oven robustness */
! 212: #define WI_RID_P2_CRYPT_KEY2 0xFC26
! 213: #define WI_RID_P2_CRYPT_KEY3 0xFC27
! 214: #define WI_RID_P2_ENCRYPTION 0xFC28
! 215: #define PRIVACY_INVOKED 0x01
! 216: #define EXCLUDE_UNENCRYPTED 0x02
! 217: #define HOST_ENCRYPT 0x10
! 218: #define IV_EVERY_FRAME 0x00
! 219: #define IV_EVERY10_FRAME 0x20
! 220: #define IV_EVERY50_FRAME 0x40
! 221: #define IV_EVERY100_FRAME 0x60
! 222: #define HOST_DECRYPT 0x80
! 223: #define WI_RID_WEP_MAPTABLE 0xFC29
! 224: #define WI_RID_CNFAUTHMODE 0xFC2A
! 225: #define WI_RID_SYMBOL_KEYLENGTH 0xFC2B
! 226: #define WI_RID_ROAMING_MODE 0xFC2D /* Roaming mode (1:firm,3:disable) */
! 227: #define WI_RID_CUR_BEACON_INT 0xFC33 /* beacon xmit time for BSS creation */
! 228: #define WI_RID_ENH_SECURITY 0xFC43 /* hide SSID name (prism fw >= 1.6.3) */
! 229: #define WI_HIDESSID 0x01
! 230: #define WI_IGNPROBES 0x02
! 231: #define WI_HIDESSID_IGNPROBES 0x03
! 232: #define WI_RID_DBM_ADJUST 0xFC46 /* Get DBM adjustment factor */
! 233: #define WI_RID_SYMBOL_PREAMBLE 0xFC8C /* Enable/disable short preamble */
! 234: #define WI_RID_P2_SHORT_PREAMBLE 0xFCB0 /* Short preamble support */
! 235: #define WI_RID_P2_EXCLUDE_LONG_PREAMBLE 0xFCB1 /* Don't send long preamble */
! 236: #define WI_RID_BASIC_RATE 0xFCB3
! 237: #define WI_RID_SUPPORT_RATE 0xFCB4
! 238: #define WI_RID_SYMBOL_DIVERSITY 0xFC87 /* Symbol antenna diversity */
! 239: #define WI_RID_SYMBOL_BASIC_RATE 0xFC90
! 240:
! 241: /*
! 242: * Network parameters, dynamic configuration entities
! 243: */
! 244: #define WI_RID_MCAST_LIST 0xFC80 /* list of multicast addrs (up to 16) */
! 245: #define WI_RID_CREATE_IBSS 0xFC81 /* create IBSS */
! 246: #define WI_RID_FRAG_THRESH 0xFC82 /* frag len, unicast msg xmit */
! 247: #define WI_RID_RTS_THRESH 0xFC83 /* frame len for RTS/CTS handshake */
! 248: #define WI_RID_TX_RATE 0xFC84 /* data rate for message xmit */
! 249: #define WI_RID_PROMISC 0xFC85 /* enable promisc mode */
! 250: #define WI_RID_FRAG_THRESH0 0xFC90
! 251: #define WI_RID_FRAG_THRESH1 0xFC91
! 252: #define WI_RID_FRAG_THRESH2 0xFC92
! 253: #define WI_RID_FRAG_THRESH3 0xFC93
! 254: #define WI_RID_FRAG_THRESH4 0xFC94
! 255: #define WI_RID_FRAG_THRESH5 0xFC95
! 256: #define WI_RID_FRAG_THRESH6 0xFC96
! 257: #define WI_RID_RTS_THRESH0 0xFC97
! 258: #define WI_RID_RTS_THRESH1 0xFC98
! 259: #define WI_RID_RTS_THRESH2 0xFC99
! 260: #define WI_RID_RTS_THRESH3 0xFC9A
! 261: #define WI_RID_RTS_THRESH4 0xFC9B
! 262: #define WI_RID_RTS_THRESH5 0xFC9C
! 263: #define WI_RID_RTS_THRESH6 0xFC9D
! 264: #define WI_RID_TX_RATE0 0xFC9E
! 265: #define WI_RID_TX_RATE1 0xFC9F
! 266: #define WI_RID_TX_RATE2 0xFCA0
! 267: #define WI_RID_TX_RATE3 0xFCA1
! 268: #define WI_RID_TX_RATE4 0xFCA2
! 269: #define WI_RID_TX_RATE5 0xFCA3
! 270: #define WI_RID_TX_RATE6 0xFCA4
! 271: #define WI_RID_DEFLT_CRYPT_KEYS 0xFCB0
! 272: #define WI_RID_TX_CRYPT_KEY 0xFCB1
! 273: #define WI_RID_TICK_TIME 0xFCE0 /* Auxiliary Timer tick interval */
! 274:
! 275: struct wi_key {
! 276: u_int16_t wi_keylen;
! 277: u_int8_t wi_keydat[13];
! 278: };
! 279:
! 280: #define WI_NLTV_KEYS 4
! 281: struct wi_ltv_keys {
! 282: u_int16_t wi_len;
! 283: u_int16_t wi_type;
! 284: struct wi_key wi_keys[WI_NLTV_KEYS];
! 285: };
! 286:
! 287: /*
! 288: * NIC information
! 289: */
! 290: #define WI_RID_FIRM_ID 0xFD02 /* Primary func firmware ID. */
! 291: #define WI_RID_PRI_SUP_RANGE 0xFD03 /* primary supplier compatibility */
! 292: #define WI_RID_CIF_ACT_RANGE 0xFD04 /* controller sup. compatibility */
! 293: #define WI_RID_SERIALNO 0xFD0A /* card serial number */
! 294: #define WI_RID_CARD_ID 0xFD0B /* card identification */
! 295: #define WI_RID_MFI_SUP_RANGE 0xFD0C /* modem supplier compatibility */
! 296: #define WI_RID_CFI_SUP_RANGE 0xFD0D /* controller sup. compatibility */
! 297: #define WI_RID_CHANNEL_LIST 0xFD10 /* allowed comm. frequencies. */
! 298: #define WI_RID_REG_DOMAINS 0xFD11 /* list of intended regulatory doms */
! 299: #define WI_RID_TEMP_TYPE 0xFD12 /* hw temp range code */
! 300: #define WI_RID_CIS 0xFD13 /* PC card info struct */
! 301: #define WI_RID_STA_IDENTITY 0xFD20 /* station funcs firmware ident */
! 302: #define WI_RID_STA_SUP_RANGE 0xFD21 /* station supplier compat */
! 303: #define WI_RID_MFI_ACT_RANGE 0xFD22
! 304: #define WI_RID_SYMBOL_IDENTITY 0xFD24 /* Symbol station firmware ident */
! 305: #define WI_RID_CFI_ACT_RANGE 0xFD33
! 306:
! 307: /*
! 308: * MAC information
! 309: */
! 310: #define WI_RID_PORT_STAT 0xFD40 /* actual MAC port con control stat */
! 311: #define WI_RID_CURRENT_SSID 0xFD41 /* ID of actually connected SS */
! 312: #define WI_RID_CURRENT_BSSID 0xFD42 /* ID of actually connected BSS */
! 313: #define WI_RID_COMMS_QUALITY 0xFD43 /* quality of BSS connection */
! 314: #define WI_RID_CUR_TX_RATE 0xFD44 /* current TX rate */
! 315: #define WI_RID_OWN_BEACON_INT 0xFD45 /* beacon xmit time for BSS creation */
! 316: #define WI_RID_CUR_SCALE_THRESH 0xFD46 /* actual system scale thresh setting */
! 317: #define WI_RID_PROT_RESP_TIME 0xFD47 /* time to wait for resp to req msg */
! 318: #define WI_RID_SHORT_RTR_LIM 0xFD48 /* max tx attempts for short frames */
! 319: #define WI_RID_LONG_RTS_LIM 0xFD49 /* max tx attempts for long frames */
! 320: #define WI_RID_MAX_TX_LIFE 0xFD4A /* max tx frame handling duration */
! 321: #define WI_RID_MAX_RX_LIFE 0xFD4B /* max rx frame handling duration */
! 322: #define WI_RID_CF_POLL 0xFD4C /* contention free pollable ind */
! 323: #define WI_RID_AUTH_ALGS 0xFD4D /* auth algorithms available */
! 324: #define WI_RID_AUTH_TYPE 0xFD4E /* available auth types */
! 325: #define WI_RID_WEP_AVAIL 0xFD4F /* WEP privacy option available */
! 326: #define WI_RID_CUR_TX_RATE1 0xFD80
! 327: #define WI_RID_CUR_TX_RATE2 0xFD81
! 328: #define WI_RID_CUR_TX_RATE3 0xFD82
! 329: #define WI_RID_CUR_TX_RATE4 0xFD83
! 330: #define WI_RID_CUR_TX_RATE5 0xFD84
! 331: #define WI_RID_CUR_TX_RATE6 0xFD85
! 332: #define WI_RID_OWN_MAC 0xFD86 /* unique local MAC addr */
! 333: #define WI_RID_PCI_INFO 0xFD87 /* point coordination func cap */
! 334:
! 335: /*
! 336: * Scan Information
! 337: */
! 338: #define WI_RID_BCAST_SCAN_REQ 0xFCAB /* Broadcast Scan request (Symbol) */
! 339: #define BSCAN_5SEC 0x01
! 340: #define BSCAN_ONETIME 0x02
! 341: #define BSCAN_PASSIVE 0x40
! 342: #define BSCAN_BCAST 0x80
! 343: #define WI_RID_SCAN_REQ 0xFCE1 /* Scan request (STA only) */
! 344: #define WI_RID_JOIN_REQ 0xFCE2 /* Join request (STA only) */
! 345: #define WI_RID_AUTH_STATION 0xFCE3 /* Authenticates Station (AP) */
! 346: #define WI_RID_CHANNEL_REQ 0xFCE4 /* Channel Information Request (AP) */
! 347: #define WI_RID_SCAN_RES 0xFD88 /* Scan Results Table */
! 348:
! 349: struct wi_apinfo {
! 350: int scanreason; /* ScanReason */
! 351: char bssid[6]; /* BSSID (mac address) */
! 352: int channel; /* Channel */
! 353: int signal; /* Signal level */
! 354: int noise; /* Average Noise Level*/
! 355: int quality; /* Quality */
! 356: int namelen; /* Length of SSID string */
! 357: char name[32]; /* SSID string */
! 358: int capinfo; /* Capability info. */
! 359: int interval; /* BSS Beacon Interval */
! 360: int rate; /* Data Rate */
! 361: };
! 362:
! 363: /*
! 364: * The following do not get passed down to the card, they are used
! 365: * by wicontrol to modify the behavior of the driver (use WEP in software or
! 366: * firmware, use alternate cryptographic algorithms, etc.) I'm calling them
! 367: * "fake record IDs."
! 368: */
! 369: #define WI_FRID_CRYPTO_ALG 0xFCE3
! 370: #define WI_FRID_DEBUGGING 0xFCE4
! 371:
! 372: /*
! 373: * bsd-airtools v0.2 - source-mods v0.2 [common.h]
! 374: * by h1kari - (c) Dachb0den Labs 2001
! 375: */
! 376:
! 377: /*
! 378: * Copyright (c) 2001 Dachb0den Labs.
! 379: * David Hulton <h1kari@dachb0den.com>. All rights reserved.
! 380: *
! 381: * Redistribution and use in source and binary forms, with or without
! 382: * modification, are permitted provided that the following conditions
! 383: * are met:
! 384: * 1. Redistributions of source code must retain the above copyright
! 385: * notice, this list of conditions and the following disclaimer.
! 386: * 2. Redistributions in binary form must reproduce the above copyright
! 387: * notice, this list of conditions and the following disclaimer in the
! 388: * documentation and/or other materials provided with the distribution.
! 389: * 3. All advertising materials mentioning features or use of this software
! 390: * must display the following acknowledgement:
! 391: * This product includes software developed by David Hulton.
! 392: * 4. Neither the name of the author nor the names of any co-contributors
! 393: * may be used to endorse or promote products derived from this software
! 394: * without specific prior written permission.
! 395: *
! 396: * THIS SOFTWARE IS PROVIDED BY David Hulton AND CONTRIBUTORS ``AS IS'' AND
! 397: * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
! 398: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
! 399: * ARE DISCLAIMED. IN NO EVENT SHALL David Hulton OR THE VOICES IN HIS HEAD
! 400: * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
! 401: * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
! 402: * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
! 403: * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
! 404: * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
! 405: * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
! 406: * THE POSSIBILITY OF SUCH DAMAGE.
! 407: */
! 408:
! 409: /*
! 410: * standard hermes receive frame used by wavelan/prism2 cards
! 411: */
! 412: struct wi_rx_frame {
! 413: /*
! 414: * hermes prefix header. supplies information on the current status of
! 415: * the network and various other statistics gathered from the
! 416: * management/control frames as used internally.
! 417: */
! 418: u_int16_t wi_status;
! 419: u_int16_t wi_ts0;
! 420: u_int16_t wi_ts1;
! 421: u_int8_t wi_silence;
! 422: u_int8_t wi_signal;
! 423: u_int8_t wi_rate;
! 424: u_int8_t wi_rx_flow;
! 425: u_int16_t wi_rsvd0;
! 426: u_int16_t wi_rsvd1;
! 427: /*
! 428: * standard 80211 frame header. all packets have to use this header as
! 429: * per the AN9900 from intersil, even management/control. for
! 430: * management packets, they just threw the header into the data field,
! 431: * but for control packets the headers are lost in translation and
! 432: * therefore not all control packet info can be displayed.
! 433: */
! 434: u_int16_t wi_frame_ctl;
! 435: u_int16_t wi_id;
! 436: u_int8_t wi_addr1[6];
! 437: u_int8_t wi_addr2[6];
! 438: u_int8_t wi_addr3[6];
! 439: u_int16_t wi_seq_ctl;
! 440: u_int8_t wi_addr4[6];
! 441: u_int16_t wi_dat_len;
! 442: /*
! 443: * another wierdity with the drivers. they append a 802.3 header which
! 444: * is somewhat redundant, since all the same data is provided in the
! 445: * 802.11 header.
! 446: */
! 447: u_int8_t wi_dst_addr[6];
! 448: u_int8_t wi_src_addr[6];
! 449: u_int16_t wi_len;
! 450: };
! 451: #define WI_DATA_HDRLEN WI_802_11_OFFSET
! 452: #define WI_MGMT_HDRLEN WI_802_11_OFFSET_RAW
! 453: #define WI_CTL_HDRLEN WI_802_11_OFFSET_RAW
! 454:
! 455:
! 456: /*
! 457: * all data packets have a snap (sub-network access protocol) header that
! 458: * isn't entirely defined, but added for ethernet compatibility.
! 459: */
! 460: struct wi_snap_frame {
! 461: u_int16_t wi_dat[3];
! 462: u_int16_t wi_type;
! 463: };
! 464:
! 465:
! 466: /*
! 467: * management frame headers
! 468: * note: all management frames consist of a static header and variable length
! 469: * fields.
! 470: */
! 471:
! 472: /*
! 473: * variable length field structure
! 474: */
! 475: struct wi_mgmt_var_hdr {
! 476: u_int8_t wi_code;
! 477: u_int8_t wi_len;
! 478: u_int8_t wi_data[256];
! 479: };
! 480:
! 481: /*
! 482: * management beacon frame prefix
! 483: */
! 484: struct wi_mgmt_beacon_hdr {
! 485: u_int32_t wi_ts0;
! 486: u_int32_t wi_ts1;
! 487: u_int16_t wi_interval;
! 488: u_int16_t wi_capinfo;
! 489: };
! 490:
! 491: /*
! 492: * ibss announcement traffic indication message (atim) frame
! 493: * note: no parameters
! 494: */
! 495:
! 496: /*
! 497: * management disassociation frame
! 498: */
! 499: struct wi_mgmt_disas_hdr {
! 500: u_int16_t wi_reason;
! 501: };
! 502:
! 503: /*
! 504: * management association request frame prefix
! 505: */
! 506: struct wi_mgmt_asreq_hdr {
! 507: u_int16_t wi_capinfo;
! 508: u_int16_t wi_interval;
! 509: };
! 510:
! 511: /*
! 512: * management association response frame prefix
! 513: */
! 514: struct wi_mgmt_asresp_hdr {
! 515: u_int16_t wi_capinfo;
! 516: u_int16_t wi_status;
! 517: u_int16_t wi_aid;
! 518: };
! 519:
! 520: /*
! 521: * management reassociation request frame prefix
! 522: */
! 523: struct wi_mgmt_reasreq_hdr {
! 524: u_int16_t wi_capinfo;
! 525: u_int16_t wi_interval;
! 526: u_int8_t wi_currap[6];
! 527: };
! 528:
! 529: /*
! 530: * management reassociation response frame prefix
! 531: */
! 532: struct wi_mgmt_reasresp_hdr {
! 533: u_int16_t wi_capinfo;
! 534: u_int16_t wi_status;
! 535: u_int16_t wi_aid;
! 536: };
! 537:
! 538: /*
! 539: * management probe request frame prefix
! 540: * note: no static parameters, only variable length
! 541: */
! 542:
! 543: /*
! 544: * management probe response frame prefix
! 545: */
! 546: struct wi_mgmt_proberesp_hdr {
! 547: u_int32_t wi_ts0;
! 548: u_int32_t wi_ts1;
! 549: u_int16_t wi_interval;
! 550: u_int16_t wi_capinfo;
! 551: };
! 552:
! 553: /*
! 554: * management authentication frame prefix
! 555: */
! 556: struct wi_mgmt_auth_hdr {
! 557: u_int16_t wi_algo;
! 558: u_int16_t wi_seq;
! 559: u_int16_t wi_status;
! 560: };
! 561:
! 562: /*
! 563: * management deauthentication frame
! 564: */
! 565: struct wi_mgmt_deauth_hdr {
! 566: u_int16_t wi_reason;
! 567: };
! 568:
! 569:
! 570: /*
! 571: * rid configuration register definitions
! 572: */
! 573: #define WI_RID_PROCFRAME 0x3137 /* Return full frame information */
! 574: #define WI_RID_PRISM2 0x3138 /* tell if we're a prism2 card or not */
! 575:
! 576:
! 577: /*
! 578: * 802.11 definitions
! 579: */
! 580: #define WI_STAT_BADCRC 0x0001
! 581: #define WI_STAT_UNDECRYPTABLE 0x0002
! 582: #define WI_STAT_ERRSTAT 0x0003
! 583: #define WI_STAT_MAC_PORT 0x0700
! 584: #define WI_STAT_1042 0x2000
! 585: #define WI_STAT_TUNNEL 0x4000
! 586: #define WI_STAT_WMP_MSG 0x6000
! 587: #define WI_RXSTAT_MSG_TYPE 0xE000
! 588:
! 589: #define WI_FCTL_OPT_MASK 0xFF00
! 590: #define WI_AID_SET 0xC000
! 591: #define WI_AID_MASK 0x3FFF
! 592: #define WI_SCTL_FRAGNUM_MASK 0x000F
! 593: #define WI_SCTL_SEQNUM_MASK 0xFFF0
! 594:
! 595: #define WI_STAT_UNSPEC_FAIL 1
! 596: #define WI_STAT_CAPINFO_FAIL 10
! 597: #define WI_STAT_REAS_DENY 11
! 598: #define WI_STAT_ASSOC_DENY 12
! 599: #define WI_STAT_ALGO_FAIL 13
! 600: #define WI_STAT_SEQ_FAIL 14
! 601: #define WI_STAT_CHAL_FAIL 15
! 602: #define WI_STAT_TOUT_FAIL 16
! 603: #define WI_STAT_OVERL_DENY 17
! 604: #define WI_STAT_RATE_DENY 18
! 605:
! 606: #define WI_FTYPE_MGMT 0x0000
! 607: #define WI_FTYPE_CTL 0x0004
! 608: #define WI_FTYPE_DATA 0x0008
! 609:
! 610: #define WI_FCTL_VERS 0x0002
! 611: #define WI_FCTL_FTYPE 0x000C
! 612: #define WI_FCTL_STYPE 0x00F0
! 613: #define WI_FCTL_TODS 0x0100
! 614: #define WI_FCTL_FROMDS 0x0200
! 615: #define WI_FCTL_MOREFRAGS 0x0400
! 616: #define WI_FCTL_RETRY 0x0800
! 617: #define WI_FCTL_PM 0x1000
! 618: #define WI_FCTL_MOREDATA 0x2000
! 619: #define WI_FCTL_WEP 0x4000
! 620: #define WI_FCTL_ORDER 0x8000
! 621:
! 622: #define WI_FCS_LEN 0x4 /* checksum length */
! 623:
! 624:
! 625: /*
! 626: * management definitions
! 627: */
! 628: #define WI_CAPINFO_ESS 0x01
! 629: #define WI_CAPINFO_IBSS 0x02
! 630: #define WI_CAPINFO_CFPOLL 0x04
! 631: #define WI_CAPINFO_CFPOLLREQ 0x08
! 632: #define WI_CAPINFO_PRIV 0x10
! 633:
! 634: #define WI_REASON_UNSPEC 1
! 635: #define WI_REASON_AUTH_INVALID 2
! 636: #define WI_REASON_DEAUTH_LEAVE 3
! 637: #define WI_REASON_DISAS_INACT 4
! 638: #define WI_REASON_DISAS_OVERL 5
! 639: #define WI_REASON_CLASS2 6
! 640: #define WI_REASON_CLASS3 7
! 641: #define WI_REASON_DISAS_LEAVE 8
! 642: #define WI_REASON_NOAUTH 9
! 643:
! 644: #define WI_VAR_SSID 0
! 645: #define WI_VAR_SRATES 1
! 646: #define WI_VAR_FH 2
! 647: #define WI_VAR_DS 3
! 648: #define WI_VAR_CF 4
! 649: #define WI_VAR_TIM 5
! 650: #define WI_VAR_IBSS 6
! 651: #define WI_VAR_CHAL 16
! 652:
! 653: #define WI_VAR_SRATES_MASK 0x7F
! 654:
! 655: /*
! 656: * ap scanning structures
! 657: */
! 658: struct wi_scan_res {
! 659: u_int16_t wi_chan;
! 660: u_int16_t wi_noise;
! 661: u_int16_t wi_signal;
! 662: u_int8_t wi_bssid[6];
! 663: u_int16_t wi_interval;
! 664: u_int16_t wi_capinfo;
! 665: u_int16_t wi_ssid_len;
! 666: u_int8_t wi_ssid[32];
! 667: u_int8_t wi_srates[10];
! 668: u_int8_t wi_rate;
! 669: u_int8_t wi_rsvd;
! 670: };
! 671: #define WI_WAVELAN_RES_1M 0x0a
! 672: #define WI_WAVELAN_RES_2M 0x14
! 673: #define WI_WAVELAN_RES_5M 0x37
! 674: #define WI_WAVELAN_RES_11M 0x6e
! 675:
! 676: #define WI_WAVELAN_RES_SIZE 50
! 677: #define WI_WAVELAN_RES_TIMEOUT ((hz / 10) * 2) /* 200ms */
! 678: #define WI_WAVELAN_RES_TRIES 100
! 679:
! 680: struct wi_scan_p2_hdr {
! 681: u_int16_t wi_rsvd;
! 682: u_int16_t wi_reason;
! 683: };
! 684: #define WI_PRISM2_RES_SIZE 62
! 685:
! 686: /*
! 687: * prism2 debug mode definitions
! 688: */
! 689: #define SIOCSPRISM2DEBUG _IOW('i', 137, struct ifreq)
! 690: #define SIOCGPRISM2DEBUG _IOWR('i', 138, struct ifreq)
! 691:
! 692: #define WI_CMD_DEBUG 0x0038 /* prism2 debug */
! 693:
! 694: #define WI_DEBUG_RESET 0x00
! 695: #define WI_DEBUG_INIT 0x01
! 696: #define WI_DEBUG_SLEEP 0x02
! 697: #define WI_DEBUG_WAKE 0x03
! 698: #define WI_DEBUG_CHAN 0x08
! 699: #define WI_DEBUG_DELAYSUPP 0x09
! 700: #define WI_DEBUG_TXSUPP 0x0A
! 701: #define WI_DEBUG_MONITOR 0x0B
! 702: #define WI_DEBUG_LEDTEST 0x0C
! 703: #define WI_DEBUG_CONTTX 0x0E
! 704: #define WI_DEBUG_STOPTEST 0x0F
! 705: #define WI_DEBUG_CONTRX 0x10
! 706: #define WI_DEBUG_SIGSTATE 0x11
! 707: #define WI_DEBUG_CALENABLE 0x13
! 708: #define WI_DEBUG_CONFBITS 0x15
! 709:
! 710: /*
! 711: * Modem information
! 712: */
! 713: #define WI_RID_PHY_TYPE 0xFDC0 /* phys layer type indication */
! 714: #define WI_RID_CURRENT_CHAN 0xFDC1 /* current frequency */
! 715: #define WI_RID_PWR_STATE 0xFDC2 /* pwr consumption status */
! 716: #define WI_RID_CCA_MODE 0xFDC3 /* clear chan assess mode indication */
! 717: #define WI_RID_CCA_TIME 0xFDC4 /* clear chan assess time */
! 718: #define WI_RID_MAC_PROC_DELAY 0xFDC5 /* MAC processing delay time */
! 719: #define WI_RID_DATA_RATES 0xFDC6 /* supported data rates */
! 720:
! 721: /*
! 722: * Values for supported crypto algorithms:
! 723: */
! 724: #define WI_CRYPTO_FIRMWARE_WEP 0x00 /* default */
! 725: #define WI_CRYPTO_SOFTWARE_WEP 0x01
! 726:
! 727: /* Firmware types */
! 728: #define WI_NOTYPE 0
! 729: #define WI_LUCENT 1
! 730: #define WI_INTERSIL 2
! 731: #define WI_SYMBOL 3
! 732:
! 733: /* Card identities */
! 734: #define WI_NIC_LUCENT 0x0001
! 735:
! 736: #define WI_NIC_SONY 0x0002
! 737:
! 738: #define WI_NIC_LUCENT_EMB 0x0005
! 739:
! 740: #define WI_NIC_EVB2 0x8000
! 741:
! 742: #define WI_NIC_HWB3763 0x8001
! 743:
! 744: #define WI_NIC_HWB3163 0x8002
! 745:
! 746: #define WI_NIC_HWB3163B 0x8003
! 747:
! 748: #define WI_NIC_EVB3 0x8004
! 749:
! 750: #define WI_NIC_HWB1153 0x8007
! 751:
! 752: #define WI_NIC_P2_SST 0x8008 /* Prism2 with SST flush */
! 753:
! 754: #define WI_NIC_EVB2_SST 0x8009
! 755:
! 756: #define WI_NIC_3842_EVA 0x800A /* 3842 Evaluation Board */
! 757:
! 758: #define WI_NIC_3842_PCMCIA_AMD 0x800B /* Prism2.5 PCMCIA */
! 759: #define WI_NIC_3842_PCMCIA_SST 0x800C
! 760: #define WI_NIC_3842_PCMCIA_ATL 0x800D
! 761: #define WI_NIC_3842_PCMCIA_ATS 0x800E
! 762:
! 763: #define WI_NIC_3842_USB_AMD 0x800f /* Prism2.5 USB */
! 764: #define WI_NIC_3842_USB_SST 0x8010
! 765: #define WI_NIC_3842_USB_ATL 0x8011
! 766:
! 767: #define WI_NIC_3842_MINI_AMD 0x8012 /* Prism2.5 Mini-PCI */
! 768: #define WI_NIC_3842_MINI_SST 0x8013
! 769: #define WI_NIC_3842_MINI_ATL 0x8014
! 770: #define WI_NIC_3842_MINI_ATS 0x8015
! 771:
! 772: #define WI_NIC_3842_PCI_AMD 0x8016 /* Prism2.5 PCI-bridge */
! 773: #define WI_NIC_3842_PCI_SST 0x8017
! 774: #define WI_NIC_3842_PCI_ATL 0x8018
! 775: #define WI_NIC_3842_PCI_ATS 0x8019
! 776:
! 777: #define WI_NIC_P3_PCMCIA_AMD 0x801A /* Prism3 PCMCIA */
! 778: #define WI_NIC_P3_PCMCIA_SST 0x801B
! 779: #define WI_NIC_P3_PCMCIA_ATL 0x801C
! 780: #define WI_NIC_P3_PCMCIA_ATS 0x801D
! 781:
! 782: #define WI_NIC_3842_USB_AMD_2 0x801E /* Prism2.5 USB */
! 783: #define WI_NIC_3842_USB_SST_2 0x801F
! 784: #define WI_NIC_3842_USB_ATL_2 0x8020
! 785:
! 786: #define WI_NIC_P3_MINI_AMD 0x8021 /* Prism3 Mini-PCI */
! 787: #define WI_NIC_P3_MINI_SST 0x8022
! 788: #define WI_NIC_P3_MINI_ATL 0x8023
! 789: #define WI_NIC_P3_MINI_ATS 0x8024
! 790:
! 791: #define WI_NIC_P3_USB 0x8025 /* Prism3 USB */
! 792: #define WI_NIC_P3_USB_NETGEAR 0x8026
! 793: #define WI_NIC_P3_USB_2 0x8027
! 794:
! 795: struct wi_card_ident {
! 796: const u_int16_t card_id;
! 797: const char *card_name;
! 798: const u_int8_t firm_type;
! 799: };
! 800:
! 801: #define WI_CARD_IDS \
! 802: { \
! 803: WI_NIC_LUCENT, \
! 804: "Lucent WaveLAN/IEEE", \
! 805: WI_LUCENT \
! 806: }, { \
! 807: WI_NIC_SONY, \
! 808: "Sony WaveLAN/IEEE", \
! 809: WI_LUCENT \
! 810: }, { \
! 811: WI_NIC_LUCENT_EMB, \
! 812: "Lucent Embedded WaveLAN/IEEE", \
! 813: WI_LUCENT \
! 814: }, { \
! 815: WI_NIC_EVB2, \
! 816: "PRISM2 HFA3841(EVB2)", \
! 817: WI_INTERSIL \
! 818: }, { \
! 819: WI_NIC_HWB3763, \
! 820: "PRISM2 HWB3763 rev.B", \
! 821: WI_INTERSIL \
! 822: }, { \
! 823: WI_NIC_HWB3163, \
! 824: "PRISM2 HWB3163 rev.A", \
! 825: WI_INTERSIL \
! 826: }, { \
! 827: WI_NIC_HWB3163B, \
! 828: "PRISM2 HWB3163 rev.B", \
! 829: WI_INTERSIL \
! 830: }, { \
! 831: WI_NIC_EVB3, \
! 832: "PRISM2 HFA3842(EVB3)", \
! 833: WI_INTERSIL \
! 834: }, { \
! 835: WI_NIC_HWB1153, \
! 836: "PRISM1 HWB1153", \
! 837: WI_INTERSIL \
! 838: }, { \
! 839: WI_NIC_P2_SST, \
! 840: "PRISM2 HWB3163 SST-flash", \
! 841: WI_INTERSIL \
! 842: }, { \
! 843: WI_NIC_EVB2_SST, \
! 844: "PRISM2 HWB3163(EVB2) SST-flash", \
! 845: WI_INTERSIL \
! 846: }, { \
! 847: WI_NIC_3842_EVA, \
! 848: "PRISM2 HFA3842(EVAL)", \
! 849: WI_INTERSIL \
! 850: }, { \
! 851: WI_NIC_3842_PCMCIA_AMD, \
! 852: "PRISM2.5 ISL3873", \
! 853: WI_INTERSIL \
! 854: }, { \
! 855: WI_NIC_3842_PCMCIA_SST, \
! 856: "PRISM2.5 ISL3873", \
! 857: WI_INTERSIL \
! 858: }, { \
! 859: WI_NIC_3842_PCMCIA_ATL, \
! 860: "PRISM2.5 ISL3873", \
! 861: WI_INTERSIL \
! 862: }, { \
! 863: WI_NIC_3842_PCMCIA_ATS, \
! 864: "PRISM2.5 ISL3873", \
! 865: WI_INTERSIL \
! 866: }, { \
! 867: WI_NIC_3842_USB_AMD, \
! 868: "PRISM2.5 USB", \
! 869: WI_INTERSIL \
! 870: }, { \
! 871: WI_NIC_3842_USB_SST, \
! 872: "PRISM2.5 USB", \
! 873: WI_INTERSIL \
! 874: }, { \
! 875: WI_NIC_3842_USB_ATL, \
! 876: "PRISM2.5 USB", \
! 877: WI_INTERSIL \
! 878: }, { \
! 879: WI_NIC_3842_MINI_AMD, \
! 880: "PRISM2.5 ISL3874A(Mini-PCI)", \
! 881: WI_INTERSIL \
! 882: }, { \
! 883: WI_NIC_3842_MINI_SST, \
! 884: "PRISM2.5 ISL3874A(Mini-PCI)", \
! 885: WI_INTERSIL \
! 886: }, { \
! 887: WI_NIC_3842_MINI_ATL, \
! 888: "PRISM2.5 ISL3874A(Mini-PCI)", \
! 889: WI_INTERSIL \
! 890: }, { \
! 891: WI_NIC_3842_MINI_ATS, \
! 892: "PRISM2.5 ISL3874A(Mini-PCI)", \
! 893: WI_INTERSIL \
! 894: }, { \
! 895: WI_NIC_3842_PCI_AMD, \
! 896: "PRISM2.5 ISL3874A(PCI-bridge)", \
! 897: WI_INTERSIL \
! 898: }, { \
! 899: WI_NIC_3842_PCI_SST, \
! 900: "PRISM2.5 ISL3874A(PCI-bridge)", \
! 901: WI_INTERSIL \
! 902: }, { \
! 903: WI_NIC_3842_PCI_ATS, \
! 904: "PRISM2.5 ISL3874A(PCI-bridge)", \
! 905: WI_INTERSIL \
! 906: }, { \
! 907: WI_NIC_3842_PCI_ATL, \
! 908: "PRISM2.5 ISL3874A(PCI-bridge)", \
! 909: WI_INTERSIL \
! 910: }, { \
! 911: WI_NIC_P3_PCMCIA_AMD, \
! 912: "PRISM3 ISL37300P", \
! 913: WI_INTERSIL \
! 914: }, { \
! 915: WI_NIC_P3_PCMCIA_SST, \
! 916: "PRISM3 ISL37300P", \
! 917: WI_INTERSIL \
! 918: }, { \
! 919: WI_NIC_P3_PCMCIA_ATL, \
! 920: "PRISM3 ISL37300P", \
! 921: WI_INTERSIL \
! 922: }, { \
! 923: WI_NIC_P3_PCMCIA_ATS, \
! 924: "PRISM3 ISL37300P", \
! 925: WI_INTERSIL \
! 926: }, { \
! 927: WI_NIC_3842_USB_AMD_2, \
! 928: "PRISM2.5 USB", \
! 929: WI_INTERSIL \
! 930: }, { \
! 931: WI_NIC_3842_USB_SST_2, \
! 932: "PRISM2.5 USB", \
! 933: WI_INTERSIL \
! 934: }, { \
! 935: WI_NIC_3842_USB_ATL_2, \
! 936: "PRISM2.5 USB", \
! 937: WI_INTERSIL \
! 938: }, { \
! 939: WI_NIC_P3_MINI_AMD, \
! 940: "PRISM3 ISL37300P(PCI)", \
! 941: WI_INTERSIL \
! 942: }, { \
! 943: WI_NIC_P3_MINI_SST, \
! 944: "PRISM3 ISL37300P(PCI)", \
! 945: WI_INTERSIL \
! 946: }, { \
! 947: WI_NIC_P3_MINI_ATL, \
! 948: "PRISM3 ISL37300P(PCI)", \
! 949: WI_INTERSIL \
! 950: }, { \
! 951: WI_NIC_P3_MINI_ATS, \
! 952: "PRISM3 ISL37300P(PCI)", \
! 953: WI_INTERSIL \
! 954: }, { \
! 955: WI_NIC_P3_USB, \
! 956: "PRISM3 (USB)", \
! 957: WI_INTERSIL \
! 958: }, { \
! 959: WI_NIC_P3_USB_NETGEAR, \
! 960: "PRISM3 (USB)", \
! 961: WI_INTERSIL \
! 962: }, { \
! 963: WI_NIC_P3_USB_2, \
! 964: "PRISM3 (USB)", \
! 965: WI_INTERSIL \
! 966: }, { \
! 967: 0, \
! 968: NULL, \
! 969: WI_NOTYPE \
! 970: }
! 971:
! 972: #endif /* _IF_WI_IEEE_H */
CVSweb