blob: ed2b4135a10e02591e6cb255393247931ae12e48 [file] [log] [blame]
/*******************************************************************************
* 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.
*
* Copyright © 2003 Agere Systems Inc.
* 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
*
* THIS SOFTWARE IS PROVIDED “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES,
* 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) + \
(sizeof(hcf_16) * 2))
#define HCF_MAX_MULTICAST 16
#define HCF_MAX_NAME_LEN 32
#define MAX_LINE_SIZE 256
#define HCF_NUM_IO_PORTS 0x80
#define TX_TIMEOUT ((800 * HZ) / 1000)
//#define HCF_MIN_COMM_QUALITY 0
//#define HCF_MAX_COMM_QUALITY 92
//#define HCF_MIN_SIGNAL_LEVEL 47
//#define HCF_MAX_SIGNAL_LEVEL 138
//#define HCF_MIN_NOISE_LEVEL 47
//#define HCF_MAX_NOISE_LEVEL 138
//#define HCF_0DBM_OFFSET 149
// 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 arround 100 (otherwise its never "full scale"
// All other constants are derrived from these. This makes the signal gauge
// work for me...
#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)
#define HCF_MIN_COMM_QUALITY 0
#define HCF_MAX_COMM_QUALITY (HCF_MAX_SIGNAL_LEVEL - HCF_MIN_NOISE_LEVEL + 1)
/* For encryption (WEP) */
#define MIN_KEY_SIZE 5 // 40 bits RC4 - WEP
#define MAX_KEY_SIZE 13 // 104 bits
#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
#define MEGABIT 1024*1024
#define HCF_FAILURE 0xFF
#define UIL_FAILURE 0xFF
#define CFG_UIL_CONNECT 0xA123 // Define differently?
#define CFG_UIL_CONNECT_ACK_CODE 0x5653435A // VSCZ
#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
*/
#define SIOCSIWNETNAME SIOCDEVPRIVATE+1
#define SIOCGIWNETNAME SIOCDEVPRIVATE+2
#define SIOCSIWSTANAME SIOCDEVPRIVATE+3
#define SIOCGIWSTANAME SIOCDEVPRIVATE+4
#define SIOCSIWPORTTYPE SIOCDEVPRIVATE+5
#define SIOCGIWPORTTYPE SIOCDEVPRIVATE+6
/* IOCTL code for the RTS interface */
#define WL_IOCTL_RTS SIOCDEVPRIVATE+7
/* 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
******************************************************************************/
typedef struct
{
__u16 length;
__u8 name[HCF_MAX_NAME_LEN];
}
wvName_t;
typedef struct
{
hcf_16 len;
hcf_16 typ;
union
{
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;
}
ltv_t;
struct uilreq
{
union
{
char ifrn_name[IFNAMSIZ];
} ifr_ifrn;
IFBP hcfCtx;
__u8 command;
__u8 result;
/* 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 */
__u16 len;
void *data;
};
struct rtsreq
{
union
{
char ifrn_name[IFNAMSIZ];
}
ifr_ifrn;
__u16 typ;
__u16 reg;
__u16 len;
__u16 *data;
};
#endif // __WAVELAN2_IF_H__