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


[ 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.