2009-09-27 03:12:52 -06:00
|
|
|
|
/*******************************************************************************
|
|
|
|
|
* Agere Systems Inc.
|
|
|
|
|
* Wireless device driver for Linux (wlags49).
|
|
|
|
|
*
|
|
|
|
|
* Copyright (c) 1998-2003 Agere Systems Inc.
|
|
|
|
|
* All rights reserved.
|
|
|
|
|
* http://www.agere.com
|
|
|
|
|
*
|
|
|
|
|
* Initially developed by TriplePoint, Inc.
|
|
|
|
|
* http://www.triplepoint.com
|
|
|
|
|
*
|
|
|
|
|
*------------------------------------------------------------------------------
|
|
|
|
|
*
|
|
|
|
|
* Driver common header for info needed by driver source and user-space
|
|
|
|
|
* processes communicating with the driver.
|
|
|
|
|
*
|
|
|
|
|
*------------------------------------------------------------------------------
|
|
|
|
|
*
|
|
|
|
|
* SOFTWARE LICENSE
|
|
|
|
|
*
|
|
|
|
|
* This software is provided subject to the following terms and conditions,
|
|
|
|
|
* which you should read carefully before using the software. Using this
|
|
|
|
|
* software indicates your acceptance of these terms and conditions. If you do
|
|
|
|
|
* not agree with these terms and conditions, do not use the software.
|
|
|
|
|
*
|
2011-12-29 15:09:01 -07:00
|
|
|
|
* Copyright © 2003 Agere Systems Inc.
|
2009-09-27 03:12:52 -06:00
|
|
|
|
* All rights reserved.
|
|
|
|
|
*
|
|
|
|
|
* Redistribution and use in source or binary forms, with or without
|
|
|
|
|
* modifications, are permitted provided that the following conditions are met:
|
|
|
|
|
*
|
|
|
|
|
* . Redistributions of source code must retain the above copyright notice, this
|
|
|
|
|
* list of conditions and the following Disclaimer as comments in the code as
|
|
|
|
|
* well as in the documentation and/or other materials provided with the
|
|
|
|
|
* distribution.
|
|
|
|
|
*
|
|
|
|
|
* . Redistributions in binary form must reproduce the above copyright notice,
|
|
|
|
|
* this list of conditions and the following Disclaimer in the documentation
|
|
|
|
|
* and/or other materials provided with the distribution.
|
|
|
|
|
*
|
|
|
|
|
* . Neither the name of Agere Systems Inc. nor the names of the contributors
|
|
|
|
|
* may be used to endorse or promote products derived from this software
|
|
|
|
|
* without specific prior written permission.
|
|
|
|
|
*
|
|
|
|
|
* Disclaimer
|
|
|
|
|
*
|
2011-12-29 15:09:01 -07:00
|
|
|
|
* THIS SOFTWARE IS PROVIDED AS IS AND ANY EXPRESS OR IMPLIED WARRANTIES,
|
2009-09-27 03:12:52 -06:00
|
|
|
|
* INCLUDING, BUT NOT LIMITED TO, INFRINGEMENT AND THE IMPLIED WARRANTIES OF
|
|
|
|
|
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. ANY
|
|
|
|
|
* USE, MODIFICATION OR DISTRIBUTION OF THIS SOFTWARE IS SOLELY AT THE USERS OWN
|
|
|
|
|
* RISK. IN NO EVENT SHALL AGERE SYSTEMS INC. OR CONTRIBUTORS BE LIABLE FOR ANY
|
|
|
|
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
|
|
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
|
|
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
|
|
|
|
* ON ANY THEORY OF LIABILITY, INCLUDING, BUT NOT LIMITED TO, CONTRACT, STRICT
|
|
|
|
|
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
|
|
|
|
|
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
|
|
|
|
|
* DAMAGE.
|
|
|
|
|
*
|
|
|
|
|
******************************************************************************/
|
|
|
|
|
|
|
|
|
|
#ifndef __WAVELAN2_IF_H__
|
|
|
|
|
#define __WAVELAN2_IF_H__
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*******************************************************************************
|
|
|
|
|
* constant definitions
|
|
|
|
|
******************************************************************************/
|
|
|
|
|
#define MAX_LTV_BUF_SIZE (512 - (sizeof(hcf_16) * 2))
|
|
|
|
|
|
|
|
|
|
#define HCF_TALLIES_SIZE (sizeof(CFG_HERMES_TALLIES_STRCT) + \
|
2012-11-20 07:44:54 -07:00
|
|
|
|
(sizeof(hcf_16) * 2))
|
2009-09-27 03:12:52 -06:00
|
|
|
|
|
|
|
|
|
#define HCF_MAX_MULTICAST 16
|
|
|
|
|
#define HCF_MAX_NAME_LEN 32
|
2012-11-20 07:44:55 -07:00
|
|
|
|
#define MAX_LINE_SIZE 256
|
2009-09-27 03:12:52 -06:00
|
|
|
|
#define HCF_NUM_IO_PORTS 0x80
|
|
|
|
|
#define TX_TIMEOUT ((800 * HZ) / 1000)
|
|
|
|
|
|
|
|
|
|
|
2012-11-20 07:44:58 -07:00
|
|
|
|
/* PE1DNN
|
|
|
|
|
* Better data from the real world. Not scientific but empirical data gathered
|
|
|
|
|
* from a Thomson Speedtouch 110 which is identified as:
|
|
|
|
|
* PCMCIA Info: "Agere Systems" "Wireless PC Card Model 0110"
|
|
|
|
|
* Manufacture ID: 0156,0003
|
|
|
|
|
* Lowest measurment for noise floor seen is value 54
|
|
|
|
|
* Highest signal strength in close proximity to the AP seen is value 118
|
|
|
|
|
* Very good must be around 100 (otherwise its never "full scale"
|
|
|
|
|
* All other constants are derrived from these. This makes the signal gauge
|
|
|
|
|
* work for me...
|
|
|
|
|
*/
|
2009-12-06 13:29:31 -07:00
|
|
|
|
#define HCF_MIN_SIGNAL_LEVEL 54
|
|
|
|
|
#define HCF_MAX_SIGNAL_LEVEL 100
|
|
|
|
|
#define HCF_MIN_NOISE_LEVEL HCF_MIN_SIGNAL_LEVEL
|
|
|
|
|
#define HCF_MAX_NOISE_LEVEL HCF_MAX_SIGNAL_LEVEL
|
|
|
|
|
#define HCF_0DBM_OFFSET (HCF_MAX_SIGNAL_LEVEL + 1)
|
2009-09-27 03:12:52 -06:00
|
|
|
|
#define HCF_MIN_COMM_QUALITY 0
|
2012-11-20 07:44:56 -07:00
|
|
|
|
#define HCF_MAX_COMM_QUALITY (HCF_MAX_SIGNAL_LEVEL - \
|
|
|
|
|
HCF_MIN_NOISE_LEVEL + 1)
|
2009-12-06 13:29:31 -07:00
|
|
|
|
|
2009-09-27 03:12:52 -06:00
|
|
|
|
|
|
|
|
|
/* For encryption (WEP) */
|
2012-11-20 07:44:58 -07:00
|
|
|
|
#define MIN_KEY_SIZE 5 /* 40 bits RC4 - WEP */
|
|
|
|
|
#define MAX_KEY_SIZE 13 /* 104 bits */
|
2009-09-27 03:12:52 -06:00
|
|
|
|
#define MAX_KEYS 4
|
|
|
|
|
|
|
|
|
|
#define RADIO_CHANNELS 14
|
|
|
|
|
#define RADIO_SENSITIVITY_LEVELS 3
|
|
|
|
|
#define RADIO_TX_POWER_MWATT 32
|
|
|
|
|
#define RADIO_TX_POWER_DBM 15
|
|
|
|
|
|
|
|
|
|
#define MIN_RTS_BYTES 0
|
|
|
|
|
#define MAX_RTS_BYTES 2347
|
|
|
|
|
|
|
|
|
|
#define MAX_RATES 8
|
2012-11-20 07:44:10 -07:00
|
|
|
|
#define MEGABIT (1024 * 1024)
|
2009-09-27 03:12:52 -06:00
|
|
|
|
|
|
|
|
|
#define HCF_FAILURE 0xFF
|
|
|
|
|
#define UIL_FAILURE 0xFF
|
2012-11-20 07:44:58 -07:00
|
|
|
|
#define CFG_UIL_CONNECT 0xA123 /* Define differently? */
|
|
|
|
|
#define CFG_UIL_CONNECT_ACK_CODE 0x5653435A /* VSCZ */
|
2009-09-27 03:12:52 -06:00
|
|
|
|
#define WVLAN2_UIL_CONNECTED (0x01L << 0)
|
|
|
|
|
#define WVLAN2_UIL_BUSY (0x01L << 1)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*******************************************************************************
|
|
|
|
|
* driver ioctl interface
|
|
|
|
|
******************************************************************************/
|
|
|
|
|
#define WVLAN2_IOCTL_UIL SIOCDEVPRIVATE
|
|
|
|
|
|
|
|
|
|
/* The UIL Interface used in conjunction with the WVLAN2_IOCTL_UIL code above
|
|
|
|
|
is defined in mdd.h. A quick reference of the UIL codes is listed below */
|
|
|
|
|
/*
|
|
|
|
|
UIL_FUN_CONNECT
|
|
|
|
|
UIL_FUN_DISCONNECT
|
|
|
|
|
UIL_FUN_ACTION
|
|
|
|
|
UIL_ACT_BLOCK
|
|
|
|
|
UIL_ACT_UNBLOCK
|
|
|
|
|
UIL_ACT_SCA
|
|
|
|
|
UIL_ACT_DIAG
|
|
|
|
|
UIL_ACT_APPLY
|
|
|
|
|
UIL_FUN_SEND_DIAG_MSG
|
|
|
|
|
UIL_FUN_GET_INFO
|
|
|
|
|
UIL_FUN_PUT_INFO
|
|
|
|
|
*/
|
|
|
|
|
|
2012-11-20 07:44:10 -07:00
|
|
|
|
#define SIOCSIWNETNAME (SIOCDEVPRIVATE + 1)
|
|
|
|
|
#define SIOCGIWNETNAME (SIOCDEVPRIVATE + 2)
|
|
|
|
|
#define SIOCSIWSTANAME (SIOCDEVPRIVATE + 3)
|
|
|
|
|
#define SIOCGIWSTANAME (SIOCDEVPRIVATE + 4)
|
|
|
|
|
#define SIOCSIWPORTTYPE (SIOCDEVPRIVATE + 5)
|
|
|
|
|
#define SIOCGIWPORTTYPE (SIOCDEVPRIVATE + 6)
|
2009-09-27 03:12:52 -06:00
|
|
|
|
|
|
|
|
|
/* IOCTL code for the RTS interface */
|
2012-11-20 07:44:10 -07:00
|
|
|
|
#define WL_IOCTL_RTS (SIOCDEVPRIVATE + 7)
|
2009-09-27 03:12:52 -06:00
|
|
|
|
|
|
|
|
|
/* IOCTL subcodes for WL_IOCTL_RTS */
|
|
|
|
|
#define WL_IOCTL_RTS_READ 1
|
|
|
|
|
#define WL_IOCTL_RTS_WRITE 2
|
|
|
|
|
#define WL_IOCTL_RTS_BATCH_READ 3
|
|
|
|
|
#define WL_IOCTL_RTS_BATCH_WRITE 4
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*******************************************************************************
|
|
|
|
|
* STRUCTURE DEFINITIONS
|
|
|
|
|
******************************************************************************/
|
2012-11-20 07:44:57 -07:00
|
|
|
|
typedef struct {
|
2012-11-20 07:44:54 -07:00
|
|
|
|
__u16 length;
|
|
|
|
|
__u8 name[HCF_MAX_NAME_LEN];
|
2009-09-27 03:12:52 -06:00
|
|
|
|
}
|
|
|
|
|
wvName_t;
|
|
|
|
|
|
|
|
|
|
|
2012-11-20 07:44:57 -07:00
|
|
|
|
typedef struct {
|
2012-11-20 07:44:54 -07:00
|
|
|
|
hcf_16 len;
|
|
|
|
|
hcf_16 typ;
|
2012-11-20 07:44:57 -07:00
|
|
|
|
union {
|
2012-11-20 07:44:54 -07:00
|
|
|
|
hcf_8 u8[MAX_LTV_BUF_SIZE / sizeof(hcf_8)];
|
|
|
|
|
hcf_16 u16[MAX_LTV_BUF_SIZE / sizeof(hcf_16)];
|
|
|
|
|
hcf_32 u32[MAX_LTV_BUF_SIZE / sizeof(hcf_32)];
|
|
|
|
|
} u;
|
2009-09-27 03:12:52 -06:00
|
|
|
|
}
|
|
|
|
|
ltv_t;
|
|
|
|
|
|
|
|
|
|
|
2012-11-20 07:44:57 -07:00
|
|
|
|
struct uilreq {
|
|
|
|
|
union {
|
2012-11-20 07:44:54 -07:00
|
|
|
|
char ifrn_name[IFNAMSIZ];
|
|
|
|
|
} ifr_ifrn;
|
|
|
|
|
|
|
|
|
|
IFBP hcfCtx;
|
|
|
|
|
__u8 command;
|
|
|
|
|
__u8 result;
|
|
|
|
|
|
2012-11-20 07:44:56 -07:00
|
|
|
|
/* The data field in this structure is typically an LTV of some type.
|
|
|
|
|
The len field is the size of the buffer in bytes, as opposed to words
|
|
|
|
|
(like the L-field in the LTV */
|
2012-11-20 07:44:54 -07:00
|
|
|
|
__u16 len;
|
|
|
|
|
void *data;
|
2009-09-27 03:12:52 -06:00
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
2012-11-20 07:44:57 -07:00
|
|
|
|
struct rtsreq {
|
|
|
|
|
union {
|
2012-11-20 07:44:54 -07:00
|
|
|
|
char ifrn_name[IFNAMSIZ];
|
|
|
|
|
}
|
|
|
|
|
ifr_ifrn;
|
|
|
|
|
|
|
|
|
|
__u16 typ;
|
|
|
|
|
__u16 reg;
|
|
|
|
|
__u16 len;
|
|
|
|
|
__u16 *data;
|
2009-09-27 03:12:52 -06:00
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
2012-11-20 07:44:58 -07:00
|
|
|
|
#endif /* __WAVELAN2_IF_H__ */
|
2009-09-27 03:12:52 -06:00
|
|
|
|
|