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/netif/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: head/sys/dev/wi/if_wavelan_ieee.h 192492 2009-05-20 22:28:55Z 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 WI_RID_ALT_RETRY_CNT    0xFC32
  230 #define  PRIVACY_INVOKED        0x01
  231 #define  EXCLUDE_UNENCRYPTED    0x02
  232 #define  HOST_ENCRYPT           0x10
  233 #define  IV_EVERY_FRAME         0x00    /* IV = Initialization Vector */
  234 #define  IV_EVERY10_FRAME       0x20    /* every 10 frame IV reuse */
  235 #define  IV_EVERY50_FRAME       0x40    /* every 50 frame IV reuse */
  236 #define  IV_EVERY100_FRAME      0x60    /* every 100 frame IV reuse */
  237 #define  HOST_DECRYPT           0x80
  238 #define WI_RID_WEP_MAPTABLE     0xFC29
  239 #define WI_RID_CNFAUTHMODE      0xFC2A
  240 #define WI_RID_ROAMING_MODE     0xFC2D
  241 #define WI_RID_OWN_BEACON_INT   0xFC33 /* beacon xmit time for BSS creation */
  242 #define WI_RID_ENH_SECURITY     0xFC43 /* enhanced security (AP mode) */
  243 #define WI_RID_CNF_DBM_ADJUST   0xFC46
  244 #define WI_RID_DBM_ADJUST       0xFC46 /* RSSI - WI_RID_DBM_ADJUST ~ dBm */
  245 #define WI_RID_WPA_DATA         0xFC48 /* WPA IE */
  246 #define WI_RID_BASIC_RATE       0xFCB3
  247 #define WI_RID_SUPPORT_RATE     0xFCB4
  248 #define WI_RID_WPA_HANDLING     0xFCBB /* WPA handling procedures */
  249 
  250 /*
  251  * Network parameters, dynamic configuration entities
  252  */
  253 #define WI_RID_MCAST_LIST       0xFC80 /* list of multicast addrs */
  254 #define WI_RID_CREATE_IBSS      0xFC81 /* create IBSS */
  255 #define WI_RID_FRAG_THRESH      0xFC82 /* frag len, unicast msg xmit */
  256 #define WI_RID_RTS_THRESH       0xFC83 /* frame len for RTS/CTS handshake */
  257 #define WI_RID_TX_RATE          0xFC84 /* data rate for message xmit
  258                                         * 0 == Fixed 1mbps
  259                                         * 1 == Fixed 2mbps
  260                                         * 2 == auto fallback
  261                                         */
  262 #define WI_RID_PROMISC          0xFC85 /* enable promisc mode */
  263 #define WI_RID_FRAG_THRESH0     0xFC90
  264 #define WI_RID_FRAG_THRESH1     0xFC91
  265 #define WI_RID_FRAG_THRESH2     0xFC92
  266 #define WI_RID_FRAG_THRESH3     0xFC93
  267 #define WI_RID_FRAG_THRESH4     0xFC94
  268 #define WI_RID_FRAG_THRESH5     0xFC95
  269 #define WI_RID_FRAG_THRESH6     0xFC96
  270 #define WI_RID_RTS_THRESH0      0xFC97
  271 #define WI_RID_RTS_THRESH1      0xFC98
  272 #define WI_RID_RTS_THRESH2      0xFC99
  273 #define WI_RID_RTS_THRESH3      0xFC9A
  274 #define WI_RID_RTS_THRESH4      0xFC9B
  275 #define WI_RID_RTS_THRESH5      0xFC9C
  276 #define WI_RID_RTS_THRESH6      0xFC9D
  277 #define WI_RID_TX_RATE0         0xFC9E
  278 #define WI_RID_TX_RATE1         0xFC9F
  279 #define WI_RID_TX_RATE2         0xFCA0
  280 #define WI_RID_TX_RATE3         0xFCA1
  281 #define WI_RID_TX_RATE4         0xFCA2
  282 #define WI_RID_TX_RATE5         0xFCA3
  283 #define WI_RID_TX_RATE6         0xFCA4
  284 #define WI_RID_DEFLT_CRYPT_KEYS 0xFCB0
  285 #define WI_RID_TX_CRYPT_KEY     0xFCB1
  286 #define WI_RID_TICK_TIME        0xFCE0
  287 
  288 struct wi_key {
  289         u_int16_t               wi_keylen;
  290         u_int8_t                wi_keydat[14];
  291 };
  292 
  293 #define WI_NLTV_KEYS 4
  294 struct wi_ltv_keys {
  295         u_int16_t               wi_len;
  296         u_int16_t               wi_type;
  297         struct wi_key           wi_keys[WI_NLTV_KEYS];
  298 };
  299 
  300 /*
  301  * NIC information
  302  */
  303 #define WI_RID_DNLD_BUF         0xFD01
  304 #define WI_RID_MEMSZ            0xFD02 /* memory size info (XXX Lucent) */
  305                                         /* Looks like on lucnet pri firm too */
  306 #define WI_RID_PRI_IDENTITY     0xFD02 /* primary funcs firmware ident (PRISM2) */
  307 #define WI_RID_PRI_SUP_RANGE    0xFD03 /* primary supplier compatibility */
  308 #define WI_RID_CIF_ACT_RANGE    0xFD04 /* controller sup. compatibility */
  309 #define WI_RID_SERIALNO         0xFD0A /* card serial number */
  310 #define WI_RID_CARD_ID          0xFD0B /* card identification */
  311 #define WI_RID_MFI_SUP_RANGE    0xFD0C /* modem supplier compatibility */
  312 #define WI_RID_CFI_SUP_RANGE    0xFD0D /* controller sup. compatibility */
  313 #define WI_RID_CHANNEL_LIST     0xFD10 /* allowd comm. frequencies. */
  314 #define WI_RID_REG_DOMAINS      0xFD11 /* list of intendted regulatory doms */
  315 #define WI_RID_TEMP_TYPE        0xFD12 /* hw temp range code */
  316 #define WI_RID_CIS              0xFD13 /* PC card info struct */
  317 #define WI_RID_STA_IDENTITY     0xFD20 /* station funcs firmware ident */
  318 #define WI_RID_STA_SUP_RANGE    0xFD21 /* station supplier compat */
  319 #define WI_RID_MFI_ACT_RANGE    0xFD22
  320 #define WI_RID_SYMBOL_IDENTITY  0xFD24
  321 #define WI_RID_CFI_ACT_RANGE    0xFD33
  322 #define WI_RID_COMMQUAL         0xFD43
  323 #define WI_RID_SCALETHRESH      0xFD46
  324 #define WI_RID_PCF              0xFD87
  325 
  326 /*
  327  * MAC information
  328  */
  329 #define WI_RID_PORT_STAT        0xFD40 /* actual MAC port con control stat */
  330 #define WI_RID_CURRENT_SSID     0xFD41 /* ID of actually connected SS */
  331 #define WI_RID_CURRENT_BSSID    0xFD42 /* ID of actually connected BSS */
  332 #define WI_RID_COMMS_QUALITY    0xFD43 /* quality of BSS connection */
  333 #define WI_RID_CUR_TX_RATE      0xFD44 /* current TX rate */
  334 #define WI_RID_CUR_BEACON_INT   0xFD45 /* current beacon interval */
  335 #define WI_RID_CUR_SCALE_THRESH 0xFD46 /* actual system scane thresh setting */
  336 #define WI_RID_PROT_RESP_TIME   0xFD47 /* time to wait for resp to req msg */
  337 #define WI_RID_SHORT_RTR_LIM    0xFD48 /* max tx attempts for short frames */
  338 #define WI_RID_LONG_RTS_LIM     0xFD49 /* max tx attempts for long frames */
  339 #define WI_RID_MAX_TX_LIFE      0xFD4A /* max tx frame handling duration */
  340 #define WI_RID_MAX_RX_LIFE      0xFD4B /* max rx frame handling duration */
  341 #define WI_RID_CF_POLL          0xFD4C /* contention free pollable ind */
  342 #define WI_RID_AUTH_ALGS        0xFD4D /* auth algorithms available */
  343 #define WI_RID_AUTH_TYPE        0xFD4E /* availanle auth types */
  344 #define WI_RID_WEP_AVAIL        0xFD4F /* WEP privacy option available */
  345 #define WI_RID_DBM_COMMS_QUAL   0xFD51 /* CommQuality normalized to dBm */
  346 #define WI_RID_CUR_TX_RATE1     0xFD80
  347 #define WI_RID_CUR_TX_RATE2     0xFD81
  348 #define WI_RID_CUR_TX_RATE3     0xFD82
  349 #define WI_RID_CUR_TX_RATE4     0xFD83
  350 #define WI_RID_CUR_TX_RATE5     0xFD84
  351 #define WI_RID_CUR_TX_RATE6     0xFD85
  352 #define WI_RID_OWN_MAC          0xFD86 /* unique local MAC addr */
  353 #define WI_RID_PCI_INFO         0xFD87 /* point coordination func cap */
  354 
  355 /*
  356  * Scan Information
  357  */
  358 #define WI_RID_BCAST_SCAN_REQ   0xFCAB /* Broadcast Scan request (Symbol) */
  359 #define  BSCAN_5SEC             0x01
  360 #define  BSCAN_ONETIME          0x02
  361 #define  BSCAN_PASSIVE          0x40
  362 #define  BSCAN_BCAST            0x80
  363 #define WI_RID_SCAN_REQ         0xFCE1 /* Scan request (STA only) */
  364 #define WI_RID_JOIN_REQ         0xFCE2 /* Join request (STA only) */
  365 #define WI_RID_AUTH_STATION     0xFCE3 /* Authenticates Station (AP) */
  366 #define WI_RID_CHANNEL_REQ      0xFCE4 /* Channel Information Request (AP) */
  367 #define WI_RID_SCAN_RESULTS     0xFD88 /* Scan Results Table */
  368 
  369 struct wi_apinfo {
  370         int                     scanreason;     /* ScanReason */
  371         char                    bssid[6];       /* BSSID (mac address) */
  372         int                     channel;        /* Channel */
  373         int                     signal;         /* Signal level */
  374         int                     noise;          /* Average Noise Level*/
  375         int                     quality;        /* Quality */
  376         int                     namelen;        /* Length of SSID string */
  377         char                    name[32];       /* SSID string */
  378         int                     capinfo;        /* Capability info. */ 
  379         int                     interval;       /* BSS Beacon Interval */
  380         int                     rate;           /* Data Rate */
  381 };
  382 
  383 /*
  384  * Modem information
  385  */
  386 #define WI_RID_PHY_TYPE         0xFDC0 /* phys layer type indication */
  387 #define WI_RID_CURRENT_CHAN     0xFDC1 /* current frequency */
  388 #define WI_RID_PWR_STATE        0xFDC2 /* pwr consumption status */
  389 #define WI_RID_CCA_MODE         0xFDC3 /* clear chan assess mode indication */
  390 #define WI_RID_CCA_TIME         0xFDC4 /* clear chan assess time */
  391 #define WI_RID_MAC_PROC_DELAY   0xFDC5 /* MAC processing delay time */
  392 #define WI_RID_DATA_RATES       0xFDC6 /* supported data rates */
  393 
  394 /*
  395  * bsd-airtools v0.2 - source-mods v0.2 [common.h]
  396  * by h1kari - (c) Dachb0den Labs 2001
  397  */
  398 
  399 /*
  400  * Copyright (c) 2001 Dachb0den Labs.
  401  *      David Hulton <h1kari@dachb0den.com>.  All rights reserved.
  402  *
  403  * Redistribution and use in source and binary forms, with or without
  404  * modification, are permitted provided that the following conditions
  405  * are met:
  406  * 1. Redistributions of source code must retain the above copyright
  407  *    notice, this list of conditions and the following disclaimer.
  408  * 2. Redistributions in binary form must reproduce the above copyright
  409  *    notice, this list of conditions and the following disclaimer in the
  410  *    documentation and/or other materials provided with the distribution.
  411  * 3. All advertising materials mentioning features or use of this software
  412  *    must display the following acknowledgement:
  413  *      This product includes software developed by David Hulton.
  414  * 4. Neither the name of the author nor the names of any co-contributors
  415  *    may be used to endorse or promote products derived from this software
  416  *    without specific prior written permission.
  417  *
  418  * THIS SOFTWARE IS PROVIDED BY David Hulton AND CONTRIBUTORS ``AS IS'' AND
  419  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  420  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  421  * ARE DISCLAIMED.  IN NO EVENT SHALL David Hulton OR THE VOICES IN HIS HEAD
  422  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
  423  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
  424  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
  425  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
  426  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  427  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
  428  * THE POSSIBILITY OF SUCH DAMAGE.
  429  */
  430 
  431 /*
  432  * standard hermes recieve frame used by wavelan/prism2 cards
  433  */
  434 struct wi_rx_frame {
  435         /*
  436          * hermes prefix header. supplies information on the current status of
  437          * the network and various other statistics gathered from the
  438          * management/control frames as used internally.
  439          */
  440         u_int16_t       wi_status;
  441         u_int16_t       wi_ts0;
  442         u_int16_t       wi_ts1;
  443         u_int8_t        wi_silence;
  444         u_int8_t        wi_signal;
  445         u_int8_t        wi_rate;
  446         u_int8_t        wi_rx_flow;
  447         u_int16_t       wi_rsvd0;
  448         u_int16_t       wi_rsvd1;
  449         /*
  450          * standard 80211 frame header. all packets have to use this header as
  451          * per the AN9900 from intersil, even management/control. for
  452          * management packets, they just threw the header into the data field,
  453          * but for control packets the headers are lost in translation and
  454          * therefore not all control packet info can be displayed.
  455          */
  456         u_int16_t       wi_frame_ctl;
  457         u_int16_t       wi_id;
  458         u_int8_t        wi_addr1[6];
  459         u_int8_t        wi_addr2[6];
  460         u_int8_t        wi_addr3[6];
  461         u_int16_t       wi_seq_ctl;
  462         u_int8_t        wi_addr4[6];
  463         u_int16_t       wi_dat_len;
  464         /*
  465          * another wierdity with the drivers. they append a 802.3 header which
  466          * is somewhat redundant, since all the same data is provided in the
  467          * 802.11 header.
  468          */
  469         u_int8_t        wi_dst_addr[6];
  470         u_int8_t        wi_src_addr[6];
  471         u_int16_t       wi_len;
  472 };
  473 #define WI_DATA_HDRLEN          0x3C
  474 #define WI_MGMT_HDRLEN          0x3C
  475 #define WI_CTL_HDRLEN           0x3C
  476 
  477 
  478 /*
  479  * all data packets have a snap (sub-network access protocol) header that
  480  * isn't entirely definied, but added for ethernet compatibility.
  481  */
  482 struct wi_snap_frame {
  483         u_int16_t       wi_dat[3];
  484         u_int16_t       wi_type;
  485 };
  486 
  487 
  488 /*
  489  * management frame headers
  490  * note: all management frames consist of a static header and variable length
  491  * fields.
  492  */
  493 
  494 /*
  495  * variable length field structure
  496  */
  497 struct wi_mgmt_var_hdr {
  498         u_int8_t        wi_code;
  499         u_int8_t        wi_len;
  500         u_int8_t        wi_data[256];
  501 };
  502 
  503 /*
  504  * management beacon frame prefix
  505  */
  506 struct wi_mgmt_beacon_hdr {
  507         u_int32_t       wi_ts0;
  508         u_int32_t       wi_ts1;
  509         u_int16_t       wi_interval;
  510         u_int16_t       wi_capinfo;
  511 };
  512 
  513 /*
  514  * ibss announcement traffic indication message (atim) frame
  515  * note: no parameters
  516  */
  517 
  518 /*
  519  * management disassociation frame
  520  */
  521 struct wi_mgmt_disas_hdr {
  522         u_int16_t       wi_reason;
  523 };
  524 
  525 /*
  526  * management association request frame prefix
  527  */
  528 struct wi_mgmt_asreq_hdr {
  529         u_int16_t       wi_capinfo;
  530         u_int16_t       wi_interval;
  531 };
  532 
  533 /*
  534  * management association response frame prefix
  535  */
  536 struct wi_mgmt_asresp_hdr {
  537         u_int16_t       wi_capinfo;
  538         u_int16_t       wi_status;
  539         u_int16_t       wi_aid;
  540 };
  541 
  542 /*
  543  * management reassociation request frame prefix
  544  */
  545 struct wi_mgmt_reasreq_hdr {
  546         u_int16_t       wi_capinfo;
  547         u_int16_t       wi_interval;
  548         u_int8_t        wi_currap[6];
  549 };
  550 
  551 /*
  552  * management reassociation response frame prefix
  553  */
  554 struct wi_mgmt_reasresp_hdr {
  555         u_int16_t       wi_capinfo;
  556         u_int16_t       wi_status;
  557         u_int16_t       wi_aid;
  558 };
  559 
  560 /*
  561  * management probe request frame prefix
  562  * note: no static parameters, only variable length
  563  */
  564 
  565 /*
  566  * management probe response frame prefix
  567  */
  568 struct wi_mgmt_proberesp_hdr {
  569         u_int32_t       wi_ts0;
  570         u_int32_t       wi_ts1;
  571         u_int16_t       wi_interval;
  572         u_int16_t       wi_capinfo;
  573 };
  574 
  575 /*
  576  * management authentication frame prefix
  577  */
  578 struct wi_mgmt_auth_hdr {
  579         u_int16_t       wi_algo;
  580         u_int16_t       wi_seq;
  581         u_int16_t       wi_status;
  582 };
  583 
  584 /*
  585  * management deauthentication frame
  586  */
  587 struct wi_mgmt_deauth_hdr {
  588         u_int16_t       wi_reason;
  589 };
  590 
  591 
  592 /*
  593  * rid configuration register definitions
  594  */
  595 #define WI_RID_SCAN_REQ         0xFCE1 /* scan request information */
  596 #define WI_RID_SCAN_RES         0xFD88 /* scan result information */
  597 
  598 #define WI_RID_PROCFRAME        0x3137 /* Return full frame information */
  599 #define WI_RID_PRISM2           0x3138 /* tell if we're a prism2 card or not */
  600 
  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 /*
  651  * management definitions
  652  */
  653 #define WI_STYPE_MGMT_ASREQ     0x0000
  654 #define WI_STYPE_MGMT_ASRESP    0x0010
  655 #define WI_STYPE_MGMT_REASREQ   0x0020
  656 #define WI_STYPE_MGMT_REASRESP  0x0030
  657 #define WI_STYPE_MGMT_PROBEREQ  0x0040
  658 #define WI_STYPE_MGMT_PROBERESP 0x0050
  659 #define WI_STYPE_MGMT_BEACON    0x0080
  660 #define WI_STYPE_MGMT_ATIM      0x0090
  661 #define WI_STYPE_MGMT_DISAS     0x00A0
  662 #define WI_STYPE_MGMT_AUTH      0x00B0
  663 #define WI_STYPE_MGMT_DEAUTH    0x00C0
  664 
  665 #define WI_CAPINFO_ESS          0x01
  666 #define WI_CAPINFO_IBSS         0x02
  667 #define WI_CAPINFO_CFPOLL       0x04
  668 #define WI_CAPINFO_CFPOLLREQ    0x08
  669 #define WI_CAPINFO_PRIV         0x10
  670 
  671 #define WI_REASON_UNSPEC        1
  672 #define WI_REASON_AUTH_INVALID  2
  673 #define WI_REASON_DEAUTH_LEAVE  3
  674 #define WI_REASON_DISAS_INACT   4
  675 #define WI_REASON_DISAS_OVERL   5
  676 #define WI_REASON_CLASS2        6
  677 #define WI_REASON_CLASS3        7
  678 #define WI_REASON_DISAS_LEAVE   8
  679 #define WI_REASON_NOAUTH        9
  680 
  681 #define WI_VAR_SSID             0
  682 #define WI_VAR_SRATES           1
  683 #define WI_VAR_FH               2
  684 #define WI_VAR_DS               3
  685 #define WI_VAR_CF               4
  686 #define WI_VAR_TIM              5
  687 #define WI_VAR_IBSS             6
  688 #define WI_VAR_CHAL             16
  689 
  690 #define WI_VAR_SRATES_MASK      0x7F
  691 
  692 
  693 /*
  694  * control definitions
  695  */
  696 #define WI_STYPE_CTL_PSPOLL     0x00A0
  697 #define WI_STYPE_CTL_RTS        0x00B0
  698 #define WI_STYPE_CTL_CTS        0x00C0
  699 #define WI_STYPE_CTL_ACK        0x00D0
  700 #define WI_STYPE_CTL_CFEND      0x00E0
  701 #define WI_STYPE_CTL_CFENDCFACK 0x00F0
  702 
  703 
  704 /*
  705  * ap scanning structures
  706  */
  707 struct wi_scan_res {
  708         u_int16_t       wi_chan;
  709         u_int16_t       wi_noise;
  710         u_int16_t       wi_signal;
  711         u_int8_t        wi_bssid[6];
  712         u_int16_t       wi_interval;
  713         u_int16_t       wi_capinfo;
  714         u_int16_t       wi_ssid_len;
  715         u_int8_t        wi_ssid[32];
  716         u_int8_t        wi_srates[10];
  717         u_int8_t        wi_rate;
  718         u_int8_t        wi_rsvd;
  719 };
  720 #define WI_WAVELAN_RES_SIZE     50
  721 
  722 struct wi_scan_p2_hdr {
  723         u_int16_t       wi_rsvd;
  724         u_int16_t       wi_reason;
  725 };
  726 #define WI_PRISM2_RES_SIZE      62
  727 
  728 
  729 /*
  730  * prism2 debug mode definitions
  731  */
  732 #define SIOCSPRISM2DEBUG        _IOW('i', 137, struct ifreq)
  733 #define SIOCGPRISM2DEBUG        _IOWR('i', 138, struct ifreq)
  734 
  735 #define WI_DEBUG_RESET          0x00
  736 #define WI_DEBUG_INIT           0x01
  737 #define WI_DEBUG_SLEEP          0x02
  738 #define WI_DEBUG_WAKE           0x03
  739 #define WI_DEBUG_CHAN           0x08
  740 #define WI_DEBUG_DELAYSUPP      0x09
  741 #define WI_DEBUG_TXSUPP         0x0A
  742 #define WI_DEBUG_MONITOR        0x0B
  743 #define WI_DEBUG_LEDTEST        0x0C
  744 #define WI_DEBUG_CONTTX         0x0E
  745 #define WI_DEBUG_STOPTEST       0x0F
  746 #define WI_DEBUG_CONTRX         0x10
  747 #define WI_DEBUG_SIGSTATE       0x11
  748 #define WI_DEBUG_CALENABLE      0x13
  749 #define WI_DEBUG_CONFBITS       0x15
  750 
  751 #endif

Cache object: 653ab6180704f18a7a190b3e492e6a3b


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