The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/dev/wi/if_wavelan_ieee.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*-
    2  * SPDX-License-Identifier: BSD-4-Clause
    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  * $FreeBSD$
   35  */
   36 
   37 #ifndef _IF_WAVELAN_IEEE_H
   38 #define _IF_WAVELAN_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 #ifndef SIOCSWAVELAN
   49 #define SIOCSWAVELAN    SIOCSIFGENERIC
   50 #endif
   51 
   52 #ifndef SIOCGWAVELAN
   53 #define SIOCGWAVELAN    SIOCGIFGENERIC
   54 #endif
   55 
   56 /*
   57  * Technically I don't think there's a limit to a record
   58  * length. The largest record is the one that contains the CIS
   59  * data, which is 240 words long, so 256 should be a safe
   60  * value.
   61  */
   62 #define WI_MAX_DATALEN  512
   63 
   64 #if 0
   65 struct wi_req {
   66         u_int16_t       wi_len;
   67         u_int16_t       wi_type;
   68         u_int16_t       wi_val[WI_MAX_DATALEN];
   69 };
   70 #endif
   71 
   72 /*
   73  * Private LTV records (interpreted only by the driver). This is
   74  * a minor kludge to allow reading the interface statistics from
   75  * the driver.
   76  */
   77 #define WI_RID_IFACE_STATS      0x0100
   78 #define WI_RID_MGMT_XMIT        0x0200
   79 #define WI_RID_ZERO_CACHE       0x0300
   80 #define WI_RID_READ_CACHE       0x0400
   81 #define WI_RID_FWDOWNLOAD       0x0500
   82 #define WI_RID_MONITOR_MODE     0x0600
   83 #define WI_RID_MIF              0x0700
   84 #define WI_RID_SCAN_APS         0x0800
   85 #define WI_RID_READ_APS         0x0900
   86 
   87 struct wi_80211_hdr {
   88         u_int16_t               frame_ctl;
   89         u_int16_t               dur_id;
   90         u_int8_t                addr1[6];
   91         u_int8_t                addr2[6];
   92         u_int8_t                addr3[6];
   93         u_int16_t               seq_ctl;
   94         u_int8_t                addr4[6];
   95 };
   96 
   97 #define WI_FCTL_VERS            0x0002
   98 #define WI_FCTL_FTYPE           0x000C
   99 #define WI_FCTL_STYPE           0x00F0
  100 #define WI_FCTL_TODS            0x0100
  101 #define WI_FCTL_FROMDS          0x0200
  102 #define WI_FCTL_MOREFRAGS       0x0400
  103 #define WI_FCTL_RETRY           0x0800
  104 #define WI_FCTL_PM              0x1000
  105 #define WI_FCTL_MOREDATA        0x2000
  106 #define WI_FCTL_WEP             0x4000
  107 #define WI_FCTL_ORDER           0x8000
  108 
  109 #define WI_FTYPE_MGMT           0x0000
  110 #define WI_FTYPE_CTL            0x0004
  111 #define WI_FTYPE_DATA           0x0008
  112 
  113 #define WI_STYPE_MGMT_ASREQ     0x0000  /* association request */
  114 #define WI_STYPE_MGMT_ASRESP    0x0010  /* association response */
  115 #define WI_STYPE_MGMT_REASREQ   0x0020  /* reassociation request */
  116 #define WI_STYPE_MGMT_REASRESP  0x0030  /* reassociation response */
  117 #define WI_STYPE_MGMT_PROBEREQ  0x0040  /* probe request */
  118 #define WI_STYPE_MGMT_PROBERESP 0x0050  /* probe response */
  119 #define WI_STYPE_MGMT_BEACON    0x0080  /* beacon */
  120 #define WI_STYPE_MGMT_ATIM      0x0090  /* announcement traffic ind msg */
  121 #define WI_STYPE_MGMT_DISAS     0x00A0  /* disassociation */
  122 #define WI_STYPE_MGMT_AUTH      0x00B0  /* authentication */
  123 #define WI_STYPE_MGMT_DEAUTH    0x00C0  /* deauthentication */
  124 
  125 #define WI_STYPE_CTL_PSPOLL     0x00A0
  126 #define WI_STYPE_CTL_RTS        0x00B0
  127 #define WI_STYPE_CTL_CTS        0x00C0
  128 #define WI_STYPE_CTL_ACK        0x00D0
  129 #define WI_STYPE_CTL_CFEND      0x00E0
  130 #define WI_STYPE_CTL_CFENDACK   0x00F0
  131 
  132 struct wi_mgmt_hdr {
  133         u_int16_t               frame_ctl;
  134         u_int16_t               duration;
  135         u_int8_t                dst_addr[6];
  136         u_int8_t                src_addr[6];
  137         u_int8_t                bssid[6];
  138         u_int16_t               seq_ctl;
  139 };
  140 
  141 /* 
  142  * Lucent/wavelan IEEE signal strength cache
  143  *
  144  * driver keeps cache of last
  145  * MAXWICACHE packets to arrive including signal strength info.
  146  * daemons may read this via ioctl
  147  *
  148  * Each entry in the wi_sigcache has a unique macsrc.
  149  */
  150 struct wi_sigcache {
  151         char    macsrc[6];      /* unique MAC address for entry */
  152         int     ipsrc;          /* ip address associated with packet */
  153         int     signal;         /* signal strength of the packet */
  154         int     noise;          /* noise value */
  155         int     quality;        /* quality of the packet */
  156 };
  157 
  158 /*
  159  * Firmware downloading API.  We support downloading into RAM and into
  160  * flash.  We copy the entire .hex file for both the primary and secondary
  161  * firmware into the kernel, which is minorly gross, but matches the
  162  * format of the compiled in firmware.
  163  */
  164 struct wi_fwdownload {
  165         int     type;           /* What type of download. */
  166 #define WI_FW_RAM       1
  167 #define WI_FW_FLASH     2
  168         size_t  pri_len;        /* Primary firmware length */
  169         size_t  sec_len;        /* Secondary firmware length */
  170         caddr_t pri_data;       /* Pointer (user) to primary data */
  171         caddr_t sec_data;       /* Pointer (user) to secondary data */
  172 };
  173 
  174 struct wi_counters {
  175         u_int32_t               wi_tx_unicast_frames;
  176         u_int32_t               wi_tx_multicast_frames;
  177         u_int32_t               wi_tx_fragments;
  178         u_int32_t               wi_tx_unicast_octets;
  179         u_int32_t               wi_tx_multicast_octets;
  180         u_int32_t               wi_tx_deferred_xmits;
  181         u_int32_t               wi_tx_single_retries;
  182         u_int32_t               wi_tx_multi_retries;
  183         u_int32_t               wi_tx_retry_limit;
  184         u_int32_t               wi_tx_discards;
  185         u_int32_t               wi_rx_unicast_frames;
  186         u_int32_t               wi_rx_multicast_frames;
  187         u_int32_t               wi_rx_fragments;
  188         u_int32_t               wi_rx_unicast_octets;
  189         u_int32_t               wi_rx_multicast_octets;
  190         u_int32_t               wi_rx_fcs_errors;
  191         u_int32_t               wi_rx_discards_nobuf;
  192         u_int32_t               wi_tx_discards_wrong_sa;
  193         u_int32_t               wi_rx_WEP_cant_decrypt;
  194         u_int32_t               wi_rx_msg_in_msg_frags;
  195         u_int32_t               wi_rx_msg_in_bad_msg_frags;
  196 };
  197 
  198 /*
  199  * Network parameters, static configuration entities.
  200  */
  201 #define WI_RID_PORTTYPE         0xFC00 /* Connection control characteristics */
  202 #define WI_RID_MAC_NODE         0xFC01 /* MAC address of this station */
  203 #define WI_RID_DESIRED_SSID     0xFC02 /* Service Set ID for connection */
  204 #define WI_RID_OWN_CHNL         0xFC03 /* Comm channel for BSS creation */
  205 #define WI_RID_OWN_SSID         0xFC04 /* IBSS creation ID */
  206 #define WI_RID_OWN_ATIM_WIN     0xFC05 /* ATIM window time for IBSS creation */
  207 #define WI_RID_SYSTEM_SCALE     0xFC06 /* scale that specifies AP density */
  208 #define WI_RID_MAX_DATALEN      0xFC07 /* Max len of MAC frame body data */
  209 #define WI_RID_MAC_WDS          0xFC08 /* MAC addr of corresponding WDS node */
  210 #define WI_RID_PM_ENABLED       0xFC09 /* ESS power management enable */
  211 #define WI_RID_PM_EPS           0xFC0A /* PM EPS/PS mode */
  212 #define WI_RID_MCAST_RX         0xFC0B /* ESS PM mcast reception */
  213 #define WI_RID_MAX_SLEEP        0xFC0C /* max sleep time for ESS PM */
  214 #define WI_RID_HOLDOVER         0xFC0D /* holdover time for ESS PM */
  215 #define WI_RID_NODENAME         0xFC0E /* ID name of this node for diag */
  216 #define WI_RID_DTIM_PERIOD      0xFC10 /* beacon interval between DTIMs */
  217 #define WI_RID_WDS_ADDR1        0xFC11 /* port 1 MAC of WDS link node */
  218 #define WI_RID_WDS_ADDR2        0xFC12 /* port 1 MAC of WDS link node */
  219 #define WI_RID_WDS_ADDR3        0xFC13 /* port 1 MAC of WDS link node */
  220 #define WI_RID_WDS_ADDR4        0xFC14 /* port 1 MAC of WDS link node */
  221 #define WI_RID_WDS_ADDR5        0xFC15 /* port 1 MAC of WDS link node */
  222 #define WI_RID_WDS_ADDR6        0xFC16 /* port 1 MAC of WDS link node */
  223 #define WI_RID_MCAST_PM_BUF     0xFC17 /* PM buffering of mcast */
  224 #define WI_RID_ENCRYPTION       0xFC20 /* enable/disable WEP */
  225 #define WI_RID_AUTHTYPE         0xFC21 /* specify authentication type */
  226 #define WI_RID_P2_TX_CRYPT_KEY  0xFC23
  227 #define WI_RID_P2_CRYPT_KEY0    0xFC24
  228 #define WI_RID_P2_CRYPT_KEY1    0xFC25
  229 #define WI_RID_MICROWAVE_OVEN   0xFC25
  230 #define WI_RID_P2_CRYPT_KEY2    0xFC26
  231 #define WI_RID_P2_CRYPT_KEY3    0xFC27
  232 #define WI_RID_P2_ENCRYPTION    0xFC28
  233 #define WI_RID_ALT_RETRY_CNT    0xFC32
  234 #define  PRIVACY_INVOKED        0x01
  235 #define  EXCLUDE_UNENCRYPTED    0x02
  236 #define  HOST_ENCRYPT           0x10
  237 #define  IV_EVERY_FRAME         0x00    /* IV = Initialization Vector */
  238 #define  IV_EVERY10_FRAME       0x20    /* every 10 frame IV reuse */
  239 #define  IV_EVERY50_FRAME       0x40    /* every 50 frame IV reuse */
  240 #define  IV_EVERY100_FRAME      0x60    /* every 100 frame IV reuse */
  241 #define  HOST_DECRYPT           0x80
  242 #define WI_RID_WEP_MAPTABLE     0xFC29
  243 #define WI_RID_CNFAUTHMODE      0xFC2A
  244 #define WI_RID_ROAMING_MODE     0xFC2D
  245 #define WI_RID_OWN_BEACON_INT   0xFC33 /* beacon xmit time for BSS creation */
  246 #define WI_RID_ENH_SECURITY     0xFC43 /* enhanced security (AP mode) */
  247 #define WI_RID_CNF_DBM_ADJUST   0xFC46
  248 #define WI_RID_DBM_ADJUST       0xFC46 /* RSSI - WI_RID_DBM_ADJUST ~ dBm */
  249 #define WI_RID_WPA_DATA         0xFC48 /* WPA IE */
  250 #define WI_RID_BASIC_RATE       0xFCB3
  251 #define WI_RID_SUPPORT_RATE     0xFCB4
  252 #define WI_RID_WPA_HANDLING     0xFCBB /* WPA handling procedures */
  253 
  254 /*
  255  * Network parameters, dynamic configuration entities
  256  */
  257 #define WI_RID_MCAST_LIST       0xFC80 /* list of multicast addrs */
  258 #define WI_RID_CREATE_IBSS      0xFC81 /* create IBSS */
  259 #define WI_RID_FRAG_THRESH      0xFC82 /* frag len, unicast msg xmit */
  260 #define WI_RID_RTS_THRESH       0xFC83 /* frame len for RTS/CTS handshake */
  261 #define WI_RID_TX_RATE          0xFC84 /* data rate for message xmit
  262                                         * 0 == Fixed 1mbps
  263                                         * 1 == Fixed 2mbps
  264                                         * 2 == auto fallback
  265                                         */
  266 #define WI_RID_PROMISC          0xFC85 /* enable promisc mode */
  267 #define WI_RID_FRAG_THRESH0     0xFC90
  268 #define WI_RID_FRAG_THRESH1     0xFC91
  269 #define WI_RID_FRAG_THRESH2     0xFC92
  270 #define WI_RID_FRAG_THRESH3     0xFC93
  271 #define WI_RID_FRAG_THRESH4     0xFC94
  272 #define WI_RID_FRAG_THRESH5     0xFC95
  273 #define WI_RID_FRAG_THRESH6     0xFC96
  274 #define WI_RID_RTS_THRESH0      0xFC97
  275 #define WI_RID_RTS_THRESH1      0xFC98
  276 #define WI_RID_RTS_THRESH2      0xFC99
  277 #define WI_RID_RTS_THRESH3      0xFC9A
  278 #define WI_RID_RTS_THRESH4      0xFC9B
  279 #define WI_RID_RTS_THRESH5      0xFC9C
  280 #define WI_RID_RTS_THRESH6      0xFC9D
  281 #define WI_RID_TX_RATE0         0xFC9E
  282 #define WI_RID_TX_RATE1         0xFC9F
  283 #define WI_RID_TX_RATE2         0xFCA0
  284 #define WI_RID_TX_RATE3         0xFCA1
  285 #define WI_RID_TX_RATE4         0xFCA2
  286 #define WI_RID_TX_RATE5         0xFCA3
  287 #define WI_RID_TX_RATE6         0xFCA4
  288 #define WI_RID_DEFLT_CRYPT_KEYS 0xFCB0
  289 #define WI_RID_TX_CRYPT_KEY     0xFCB1
  290 #define WI_RID_TICK_TIME        0xFCE0
  291 
  292 struct wi_key {
  293         u_int16_t               wi_keylen;
  294         u_int8_t                wi_keydat[14];
  295 };
  296 
  297 #define WI_NLTV_KEYS 4
  298 struct wi_ltv_keys {
  299         u_int16_t               wi_len;
  300         u_int16_t               wi_type;
  301         struct wi_key           wi_keys[WI_NLTV_KEYS];
  302 };
  303 
  304 /*
  305  * NIC information
  306  */
  307 #define WI_RID_DNLD_BUF         0xFD01
  308 #define WI_RID_MEMSZ            0xFD02 /* memory size info (XXX Lucent) */
  309                                         /* Looks like on lucnet pri firm too */
  310 #define WI_RID_PRI_IDENTITY     0xFD02 /* primary funcs firmware ident (PRISM2) */
  311 #define WI_RID_PRI_SUP_RANGE    0xFD03 /* primary supplier compatibility */
  312 #define WI_RID_CIF_ACT_RANGE    0xFD04 /* controller sup. compatibility */
  313 #define WI_RID_SERIALNO         0xFD0A /* card serial number */
  314 #define WI_RID_CARD_ID          0xFD0B /* card identification */
  315 #define WI_RID_MFI_SUP_RANGE    0xFD0C /* modem supplier compatibility */
  316 #define WI_RID_CFI_SUP_RANGE    0xFD0D /* controller sup. compatibility */
  317 #define WI_RID_CHANNEL_LIST     0xFD10 /* allowd comm. frequencies. */
  318 #define WI_RID_REG_DOMAINS      0xFD11 /* list of intendted regulatory doms */
  319 #define WI_RID_TEMP_TYPE        0xFD12 /* hw temp range code */
  320 #define WI_RID_CIS              0xFD13 /* PC card info struct */
  321 #define WI_RID_STA_IDENTITY     0xFD20 /* station funcs firmware ident */
  322 #define WI_RID_STA_SUP_RANGE    0xFD21 /* station supplier compat */
  323 #define WI_RID_MFI_ACT_RANGE    0xFD22
  324 #define WI_RID_SYMBOL_IDENTITY  0xFD24
  325 #define WI_RID_CFI_ACT_RANGE    0xFD33
  326 #define WI_RID_COMMQUAL         0xFD43
  327 #define WI_RID_SCALETHRESH      0xFD46
  328 #define WI_RID_PCF              0xFD87
  329 
  330 /*
  331  * MAC information
  332  */
  333 #define WI_RID_PORT_STAT        0xFD40 /* actual MAC port con control stat */
  334 #define WI_RID_CURRENT_SSID     0xFD41 /* ID of actually connected SS */
  335 #define WI_RID_CURRENT_BSSID    0xFD42 /* ID of actually connected BSS */
  336 #define WI_RID_COMMS_QUALITY    0xFD43 /* quality of BSS connection */
  337 #define WI_RID_CUR_TX_RATE      0xFD44 /* current TX rate */
  338 #define WI_RID_CUR_BEACON_INT   0xFD45 /* current beacon interval */
  339 #define WI_RID_CUR_SCALE_THRESH 0xFD46 /* actual system scane thresh setting */
  340 #define WI_RID_PROT_RESP_TIME   0xFD47 /* time to wait for resp to req msg */
  341 #define WI_RID_SHORT_RTR_LIM    0xFD48 /* max tx attempts for short frames */
  342 #define WI_RID_LONG_RTS_LIM     0xFD49 /* max tx attempts for long frames */
  343 #define WI_RID_MAX_TX_LIFE      0xFD4A /* max tx frame handling duration */
  344 #define WI_RID_MAX_RX_LIFE      0xFD4B /* max rx frame handling duration */
  345 #define WI_RID_CF_POLL          0xFD4C /* contention free pollable ind */
  346 #define WI_RID_AUTH_ALGS        0xFD4D /* auth algorithms available */
  347 #define WI_RID_AUTH_TYPE        0xFD4E /* availanle auth types */
  348 #define WI_RID_WEP_AVAIL        0xFD4F /* WEP privacy option available */
  349 #define WI_RID_DBM_COMMS_QUAL   0xFD51 /* CommQuality normalized to dBm */
  350 #define WI_RID_CUR_TX_RATE1     0xFD80
  351 #define WI_RID_CUR_TX_RATE2     0xFD81
  352 #define WI_RID_CUR_TX_RATE3     0xFD82
  353 #define WI_RID_CUR_TX_RATE4     0xFD83
  354 #define WI_RID_CUR_TX_RATE5     0xFD84
  355 #define WI_RID_CUR_TX_RATE6     0xFD85
  356 #define WI_RID_OWN_MAC          0xFD86 /* unique local MAC addr */
  357 #define WI_RID_PCI_INFO         0xFD87 /* point coordination func cap */
  358 
  359 /*
  360  * Scan Information
  361  */
  362 #define WI_RID_BCAST_SCAN_REQ   0xFCAB /* Broadcast Scan request (Symbol) */
  363 #define  BSCAN_5SEC             0x01
  364 #define  BSCAN_ONETIME          0x02
  365 #define  BSCAN_PASSIVE          0x40
  366 #define  BSCAN_BCAST            0x80
  367 #define WI_RID_SCAN_REQ         0xFCE1 /* Scan request (STA only) */
  368 #define WI_RID_JOIN_REQ         0xFCE2 /* Join request (STA only) */
  369 #define WI_RID_AUTH_STATION     0xFCE3 /* Authenticates Station (AP) */
  370 #define WI_RID_CHANNEL_REQ      0xFCE4 /* Channel Information Request (AP) */
  371 #define WI_RID_SCAN_RESULTS     0xFD88 /* Scan Results Table */
  372 
  373 struct wi_apinfo {
  374         int                     scanreason;     /* ScanReason */
  375         char                    bssid[6];       /* BSSID (mac address) */
  376         int                     channel;        /* Channel */
  377         int                     signal;         /* Signal level */
  378         int                     noise;          /* Average Noise Level*/
  379         int                     quality;        /* Quality */
  380         int                     namelen;        /* Length of SSID string */
  381         char                    name[32];       /* SSID string */
  382         int                     capinfo;        /* Capability info. */ 
  383         int                     interval;       /* BSS Beacon Interval */
  384         int                     rate;           /* Data Rate */
  385 };
  386 
  387 /*
  388  * Modem information
  389  */
  390 #define WI_RID_PHY_TYPE         0xFDC0 /* phys layer type indication */
  391 #define WI_RID_CURRENT_CHAN     0xFDC1 /* current frequency */
  392 #define WI_RID_PWR_STATE        0xFDC2 /* pwr consumption status */
  393 #define WI_RID_CCA_MODE         0xFDC3 /* clear chan assess mode indication */
  394 #define WI_RID_CCA_TIME         0xFDC4 /* clear chan assess time */
  395 #define WI_RID_MAC_PROC_DELAY   0xFDC5 /* MAC processing delay time */
  396 #define WI_RID_DATA_RATES       0xFDC6 /* supported data rates */
  397 
  398 /*
  399  * bsd-airtools v0.2 - source-mods v0.2 [common.h]
  400  * by h1kari - (c) Dachb0den Labs 2001
  401  */
  402 
  403 /*
  404  * Copyright (c) 2001 Dachb0den Labs.
  405  *      David Hulton <h1kari@dachb0den.com>.  All rights reserved.
  406  *
  407  * Redistribution and use in source and binary forms, with or without
  408  * modification, are permitted provided that the following conditions
  409  * are met:
  410  * 1. Redistributions of source code must retain the above copyright
  411  *    notice, this list of conditions and the following disclaimer.
  412  * 2. Redistributions in binary form must reproduce the above copyright
  413  *    notice, this list of conditions and the following disclaimer in the
  414  *    documentation and/or other materials provided with the distribution.
  415  * 3. All advertising materials mentioning features or use of this software
  416  *    must display the following acknowledgement:
  417  *      This product includes software developed by David Hulton.
  418  * 4. Neither the name of the author nor the names of any co-contributors
  419  *    may be used to endorse or promote products derived from this software
  420  *    without specific prior written permission.
  421  *
  422  * THIS SOFTWARE IS PROVIDED BY David Hulton AND CONTRIBUTORS ``AS IS'' AND
  423  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  424  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  425  * ARE DISCLAIMED.  IN NO EVENT SHALL David Hulton OR THE VOICES IN HIS HEAD
  426  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
  427  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
  428  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
  429  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
  430  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  431  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
  432  * THE POSSIBILITY OF SUCH DAMAGE.
  433  */
  434 
  435 /*
  436  * standard hermes receive frame used by wavelan/prism2 cards
  437  */
  438 struct wi_rx_frame {
  439         /*
  440          * hermes prefix header. supplies information on the current status of
  441          * the network and various other statistics gathered from the
  442          * management/control frames as used internally.
  443          */
  444         u_int16_t       wi_status;
  445         u_int16_t       wi_ts0;
  446         u_int16_t       wi_ts1;
  447         u_int8_t        wi_silence;
  448         u_int8_t        wi_signal;
  449         u_int8_t        wi_rate;
  450         u_int8_t        wi_rx_flow;
  451         u_int16_t       wi_rsvd0;
  452         u_int16_t       wi_rsvd1;
  453         /*
  454          * standard 80211 frame header. all packets have to use this header as
  455          * per the AN9900 from intersil, even management/control. for
  456          * management packets, they just threw the header into the data field,
  457          * but for control packets the headers are lost in translation and
  458          * therefore not all control packet info can be displayed.
  459          */
  460         u_int16_t       wi_frame_ctl;
  461         u_int16_t       wi_id;
  462         u_int8_t        wi_addr1[6];
  463         u_int8_t        wi_addr2[6];
  464         u_int8_t        wi_addr3[6];
  465         u_int16_t       wi_seq_ctl;
  466         u_int8_t        wi_addr4[6];
  467         u_int16_t       wi_dat_len;
  468         /*
  469          * another wierdity with the drivers. they append a 802.3 header which
  470          * is somewhat redundant, since all the same data is provided in the
  471          * 802.11 header.
  472          */
  473         u_int8_t        wi_dst_addr[6];
  474         u_int8_t        wi_src_addr[6];
  475         u_int16_t       wi_len;
  476 };
  477 #define WI_DATA_HDRLEN          0x3C
  478 #define WI_MGMT_HDRLEN          0x3C
  479 #define WI_CTL_HDRLEN           0x3C
  480 
  481 /*
  482  * all data packets have a snap (sub-network access protocol) header that
  483  * isn't entirely definied, but added for ethernet compatibility.
  484  */
  485 struct wi_snap_frame {
  486         u_int16_t       wi_dat[3];
  487         u_int16_t       wi_type;
  488 };
  489 
  490 /*
  491  * management frame headers
  492  * note: all management frames consist of a static header and variable length
  493  * fields.
  494  */
  495 
  496 /*
  497  * variable length field structure
  498  */
  499 struct wi_mgmt_var_hdr {
  500         u_int8_t        wi_code;
  501         u_int8_t        wi_len;
  502         u_int8_t        wi_data[256];
  503 };
  504 
  505 /*
  506  * management beacon frame prefix
  507  */
  508 struct wi_mgmt_beacon_hdr {
  509         u_int32_t       wi_ts0;
  510         u_int32_t       wi_ts1;
  511         u_int16_t       wi_interval;
  512         u_int16_t       wi_capinfo;
  513 };
  514 
  515 /*
  516  * ibss announcement traffic indication message (atim) frame
  517  * note: no parameters
  518  */
  519 
  520 /*
  521  * management disassociation frame
  522  */
  523 struct wi_mgmt_disas_hdr {
  524         u_int16_t       wi_reason;
  525 };
  526 
  527 /*
  528  * management association request frame prefix
  529  */
  530 struct wi_mgmt_asreq_hdr {
  531         u_int16_t       wi_capinfo;
  532         u_int16_t       wi_interval;
  533 };
  534 
  535 /*
  536  * management association response frame prefix
  537  */
  538 struct wi_mgmt_asresp_hdr {
  539         u_int16_t       wi_capinfo;
  540         u_int16_t       wi_status;
  541         u_int16_t       wi_aid;
  542 };
  543 
  544 /*
  545  * management reassociation request frame prefix
  546  */
  547 struct wi_mgmt_reasreq_hdr {
  548         u_int16_t       wi_capinfo;
  549         u_int16_t       wi_interval;
  550         u_int8_t        wi_currap[6];
  551 };
  552 
  553 /*
  554  * management reassociation response frame prefix
  555  */
  556 struct wi_mgmt_reasresp_hdr {
  557         u_int16_t       wi_capinfo;
  558         u_int16_t       wi_status;
  559         u_int16_t       wi_aid;
  560 };
  561 
  562 /*
  563  * management probe request frame prefix
  564  * note: no static parameters, only variable length
  565  */
  566 
  567 /*
  568  * management probe response frame prefix
  569  */
  570 struct wi_mgmt_proberesp_hdr {
  571         u_int32_t       wi_ts0;
  572         u_int32_t       wi_ts1;
  573         u_int16_t       wi_interval;
  574         u_int16_t       wi_capinfo;
  575 };
  576 
  577 /*
  578  * management authentication frame prefix
  579  */
  580 struct wi_mgmt_auth_hdr {
  581         u_int16_t       wi_algo;
  582         u_int16_t       wi_seq;
  583         u_int16_t       wi_status;
  584 };
  585 
  586 /*
  587  * management deauthentication frame
  588  */
  589 struct wi_mgmt_deauth_hdr {
  590         u_int16_t       wi_reason;
  591 };
  592 
  593 /*
  594  * rid configuration register definitions
  595  */
  596 #define WI_RID_SCAN_REQ         0xFCE1 /* scan request information */
  597 #define WI_RID_SCAN_RES         0xFD88 /* scan result information */
  598 
  599 #define WI_RID_PROCFRAME        0x3137 /* Return full frame information */
  600 #define WI_RID_PRISM2           0x3138 /* tell if we're a prism2 card or not */
  601 
  602 /*
  603  * 802.11 definitions
  604  */
  605 #define WI_STAT_BADCRC          0x0001
  606 #define WI_STAT_UNDECRYPTABLE   0x0002
  607 #define WI_STAT_ERRSTAT         0x0003
  608 #define WI_STAT_MAC_PORT        0x0700
  609 #define WI_STAT_1042            0x2000
  610 #define WI_STAT_TUNNEL          0x4000
  611 #define WI_STAT_WMP_MSG         0x6000
  612 #define WI_RXSTAT_MSG_TYPE      0xE000
  613 
  614 #define WI_FCTL_OPT_MASK        0xFF00
  615 #define WI_AID_SET              0xC000
  616 #define WI_AID_MASK             0x3FFF
  617 #define WI_SCTL_FRAGNUM_MASK    0x000F
  618 #define WI_SCTL_SEQNUM_MASK     0xFFF0
  619 
  620 #define WI_STAT_UNSPEC_FAIL     1
  621 #define WI_STAT_CAPINFO_FAIL    10
  622 #define WI_STAT_REAS_DENY       11
  623 #define WI_STAT_ASSOC_DENY      12
  624 #define WI_STAT_ALGO_FAIL       13
  625 #define WI_STAT_SEQ_FAIL        14
  626 #define WI_STAT_CHAL_FAIL       15
  627 #define WI_STAT_TOUT_FAIL       16
  628 #define WI_STAT_OVERL_DENY      17
  629 #define WI_STAT_RATE_DENY       18
  630 
  631 #define WI_FTYPE_MGMT           0x0000
  632 #define WI_FTYPE_CTL            0x0004
  633 #define WI_FTYPE_DATA           0x0008
  634 
  635 #define WI_FCTL_VERS            0x0002
  636 #define WI_FCTL_FTYPE           0x000C
  637 #define WI_FCTL_STYPE           0x00F0
  638 #define WI_FCTL_TODS            0x0100
  639 #define WI_FCTL_FROMDS          0x0200
  640 #define WI_FCTL_MOREFRAGS       0x0400
  641 #define WI_FCTL_RETRY           0x0800
  642 #define WI_FCTL_PM              0x1000
  643 #define WI_FCTL_MOREDATA        0x2000
  644 #define WI_FCTL_WEP             0x4000
  645 #define WI_FCTL_ORDER           0x8000
  646 
  647 #define WI_FCS_LEN              0x4 /* checksum length */
  648 
  649 /*
  650  * management definitions
  651  */
  652 #define WI_STYPE_MGMT_ASREQ     0x0000
  653 #define WI_STYPE_MGMT_ASRESP    0x0010
  654 #define WI_STYPE_MGMT_REASREQ   0x0020
  655 #define WI_STYPE_MGMT_REASRESP  0x0030
  656 #define WI_STYPE_MGMT_PROBEREQ  0x0040
  657 #define WI_STYPE_MGMT_PROBERESP 0x0050
  658 #define WI_STYPE_MGMT_BEACON    0x0080
  659 #define WI_STYPE_MGMT_ATIM      0x0090
  660 #define WI_STYPE_MGMT_DISAS     0x00A0
  661 #define WI_STYPE_MGMT_AUTH      0x00B0
  662 #define WI_STYPE_MGMT_DEAUTH    0x00C0
  663 
  664 #define WI_CAPINFO_ESS          0x01
  665 #define WI_CAPINFO_IBSS         0x02
  666 #define WI_CAPINFO_CFPOLL       0x04
  667 #define WI_CAPINFO_CFPOLLREQ    0x08
  668 #define WI_CAPINFO_PRIV         0x10
  669 
  670 #define WI_REASON_UNSPEC        1
  671 #define WI_REASON_AUTH_INVALID  2
  672 #define WI_REASON_DEAUTH_LEAVE  3
  673 #define WI_REASON_DISAS_INACT   4
  674 #define WI_REASON_DISAS_OVERL   5
  675 #define WI_REASON_CLASS2        6
  676 #define WI_REASON_CLASS3        7
  677 #define WI_REASON_DISAS_LEAVE   8
  678 #define WI_REASON_NOAUTH        9
  679 
  680 #define WI_VAR_SSID             0
  681 #define WI_VAR_SRATES           1
  682 #define WI_VAR_FH               2
  683 #define WI_VAR_DS               3
  684 #define WI_VAR_CF               4
  685 #define WI_VAR_TIM              5
  686 #define WI_VAR_IBSS             6
  687 #define WI_VAR_CHAL             16
  688 
  689 #define WI_VAR_SRATES_MASK      0x7F
  690 
  691 /*
  692  * control definitions
  693  */
  694 #define WI_STYPE_CTL_PSPOLL     0x00A0
  695 #define WI_STYPE_CTL_RTS        0x00B0
  696 #define WI_STYPE_CTL_CTS        0x00C0
  697 #define WI_STYPE_CTL_ACK        0x00D0
  698 #define WI_STYPE_CTL_CFEND      0x00E0
  699 #define WI_STYPE_CTL_CFENDCFACK 0x00F0
  700 
  701 /*
  702  * ap scanning structures
  703  */
  704 struct wi_scan_res {
  705         u_int16_t       wi_chan;
  706         u_int16_t       wi_noise;
  707         u_int16_t       wi_signal;
  708         u_int8_t        wi_bssid[6];
  709         u_int16_t       wi_interval;
  710         u_int16_t       wi_capinfo;
  711         u_int16_t       wi_ssid_len;
  712         u_int8_t        wi_ssid[32];
  713         u_int8_t        wi_srates[10];
  714         u_int8_t        wi_rate;
  715         u_int8_t        wi_rsvd;
  716 };
  717 #define WI_WAVELAN_RES_SIZE     50
  718 
  719 struct wi_scan_p2_hdr {
  720         u_int16_t       wi_rsvd;
  721         u_int16_t       wi_reason;
  722 };
  723 #define WI_PRISM2_RES_SIZE      62
  724 
  725 /*
  726  * prism2 debug mode definitions
  727  */
  728 #define SIOCSPRISM2DEBUG        _IOW('i', 137, struct ifreq)
  729 #define SIOCGPRISM2DEBUG        _IOWR('i', 138, struct ifreq)
  730 
  731 #define WI_DEBUG_RESET          0x00
  732 #define WI_DEBUG_INIT           0x01
  733 #define WI_DEBUG_SLEEP          0x02
  734 #define WI_DEBUG_WAKE           0x03
  735 #define WI_DEBUG_CHAN           0x08
  736 #define WI_DEBUG_DELAYSUPP      0x09
  737 #define WI_DEBUG_TXSUPP         0x0A
  738 #define WI_DEBUG_MONITOR        0x0B
  739 #define WI_DEBUG_LEDTEST        0x0C
  740 #define WI_DEBUG_CONTTX         0x0E
  741 #define WI_DEBUG_STOPTEST       0x0F
  742 #define WI_DEBUG_CONTRX         0x10
  743 #define WI_DEBUG_SIGSTATE       0x11
  744 #define WI_DEBUG_CALENABLE      0x13
  745 #define WI_DEBUG_CONFBITS       0x15
  746 
  747 #endif

Cache object: eea54d2d1fa9e2e6175cd74ea7fc9af6


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.