Merge rsync://bughost.org/repos/ipw-delta/
This commit is contained in:
commit
eedb9f09e9
|
@ -1,27 +1,82 @@
|
|||
|
||||
===========================
|
||||
Intel(R) PRO/Wireless 2100 Network Connection Driver for Linux
|
||||
Intel(R) PRO/Wireless 2100 Driver for Linux in support of:
|
||||
|
||||
Intel(R) PRO/Wireless 2100 Network Connection
|
||||
|
||||
Copyright (C) 2003-2005, Intel Corporation
|
||||
|
||||
README.ipw2100
|
||||
|
||||
March 14, 2005
|
||||
Version: 1.1.3
|
||||
Date : October 17, 2005
|
||||
|
||||
===========================
|
||||
Index
|
||||
---------------------------
|
||||
0. Introduction
|
||||
1. Release 1.1.0 Current Features
|
||||
2. Command Line Parameters
|
||||
3. Sysfs Helper Files
|
||||
4. Radio Kill Switch
|
||||
5. Dynamic Firmware
|
||||
6. Power Management
|
||||
7. Support
|
||||
8. License
|
||||
-----------------------------------------------
|
||||
0. IMPORTANT INFORMATION BEFORE USING THIS DRIVER
|
||||
1. Introduction
|
||||
2. Release 1.1.3 Current Features
|
||||
3. Command Line Parameters
|
||||
4. Sysfs Helper Files
|
||||
5. Radio Kill Switch
|
||||
6. Dynamic Firmware
|
||||
7. Power Management
|
||||
8. Support
|
||||
9. License
|
||||
|
||||
|
||||
===========================
|
||||
0. Introduction
|
||||
------------ ----- ----- ---- --- -- -
|
||||
0. IMPORTANT INFORMATION BEFORE USING THIS DRIVER
|
||||
-----------------------------------------------
|
||||
|
||||
Important Notice FOR ALL USERS OR DISTRIBUTORS!!!!
|
||||
|
||||
Intel wireless LAN adapters are engineered, manufactured, tested, and
|
||||
quality checked to ensure that they meet all necessary local and
|
||||
governmental regulatory agency requirements for the regions that they
|
||||
are designated and/or marked to ship into. Since wireless LANs are
|
||||
generally unlicensed devices that share spectrum with radars,
|
||||
satellites, and other licensed and unlicensed devices, it is sometimes
|
||||
necessary to dynamically detect, avoid, and limit usage to avoid
|
||||
interference with these devices. In many instances Intel is required to
|
||||
provide test data to prove regional and local compliance to regional and
|
||||
governmental regulations before certification or approval to use the
|
||||
product is granted. Intel's wireless LAN's EEPROM, firmware, and
|
||||
software driver are designed to carefully control parameters that affect
|
||||
radio operation and to ensure electromagnetic compliance (EMC). These
|
||||
parameters include, without limitation, RF power, spectrum usage,
|
||||
channel scanning, and human exposure.
|
||||
|
||||
For these reasons Intel cannot permit any manipulation by third parties
|
||||
of the software provided in binary format with the wireless WLAN
|
||||
adapters (e.g., the EEPROM and firmware). Furthermore, if you use any
|
||||
patches, utilities, or code with the Intel wireless LAN adapters that
|
||||
have been manipulated by an unauthorized party (i.e., patches,
|
||||
utilities, or code (including open source code modifications) which have
|
||||
not been validated by Intel), (i) you will be solely responsible for
|
||||
ensuring the regulatory compliance of the products, (ii) Intel will bear
|
||||
no liability, under any theory of liability for any issues associated
|
||||
with the modified products, including without limitation, claims under
|
||||
the warranty and/or issues arising from regulatory non-compliance, and
|
||||
(iii) Intel will not provide or be required to assist in providing
|
||||
support to any third parties for such modified products.
|
||||
|
||||
Note: Many regulatory agencies consider Wireless LAN adapters to be
|
||||
modules, and accordingly, condition system-level regulatory approval
|
||||
upon receipt and review of test data documenting that the antennas and
|
||||
system configuration do not cause the EMC and radio operation to be
|
||||
non-compliant.
|
||||
|
||||
The drivers available for download from SourceForge are provided as a
|
||||
part of a development project. Conformance to local regulatory
|
||||
requirements is the responsibility of the individual developer. As
|
||||
such, if you are interested in deploying or shipping a driver as part of
|
||||
solution intended to be used for purposes other than development, please
|
||||
obtain a tested driver from Intel Customer Support at:
|
||||
|
||||
http://support.intel.com/support/notebook/sb/CS-006408.htm
|
||||
|
||||
|
||||
1. Introduction
|
||||
-----------------------------------------------
|
||||
|
||||
This document provides a brief overview of the features supported by the
|
||||
IPW2100 driver project. The main project website, where the latest
|
||||
|
@ -34,9 +89,8 @@ potential fixes and patches, as well as links to the development mailing list
|
|||
for the driver project.
|
||||
|
||||
|
||||
===========================
|
||||
1. Release 1.1.0 Current Supported Features
|
||||
---------------------------
|
||||
2. Release 1.1.3 Current Supported Features
|
||||
-----------------------------------------------
|
||||
- Managed (BSS) and Ad-Hoc (IBSS)
|
||||
- WEP (shared key and open)
|
||||
- Wireless Tools support
|
||||
|
@ -51,9 +105,8 @@ on the amount of validation and interoperability testing that has been
|
|||
performed on a given feature.
|
||||
|
||||
|
||||
===========================
|
||||
2. Command Line Parameters
|
||||
---------------------------
|
||||
3. Command Line Parameters
|
||||
-----------------------------------------------
|
||||
|
||||
If the driver is built as a module, the following optional parameters are used
|
||||
by entering them on the command line with the modprobe command using this
|
||||
|
@ -75,9 +128,9 @@ associate boolean associate=0 /* Do NOT auto associate */
|
|||
disable boolean disable=1 /* Do not power the HW */
|
||||
|
||||
|
||||
===========================
|
||||
3. Sysfs Helper Files
|
||||
4. Sysfs Helper Files
|
||||
---------------------------
|
||||
-----------------------------------------------
|
||||
|
||||
There are several ways to control the behavior of the driver. Many of the
|
||||
general capabilities are exposed through the Wireless Tools (iwconfig). There
|
||||
|
@ -120,9 +173,8 @@ For the device level files, see /sys/bus/pci/drivers/ipw2100:
|
|||
based RF kill from ON -> OFF -> ON, the radio will NOT come back on
|
||||
|
||||
|
||||
===========================
|
||||
4. Radio Kill Switch
|
||||
---------------------------
|
||||
5. Radio Kill Switch
|
||||
-----------------------------------------------
|
||||
Most laptops provide the ability for the user to physically disable the radio.
|
||||
Some vendors have implemented this as a physical switch that requires no
|
||||
software to turn the radio off and on. On other laptops, however, the switch
|
||||
|
@ -134,9 +186,8 @@ See the Sysfs helper file 'rf_kill' for determining the state of the RF switch
|
|||
on your system.
|
||||
|
||||
|
||||
===========================
|
||||
5. Dynamic Firmware
|
||||
---------------------------
|
||||
6. Dynamic Firmware
|
||||
-----------------------------------------------
|
||||
As the firmware is licensed under a restricted use license, it can not be
|
||||
included within the kernel sources. To enable the IPW2100 you will need a
|
||||
firmware image to load into the wireless NIC's processors.
|
||||
|
@ -146,9 +197,8 @@ You can obtain these images from <http://ipw2100.sf.net/firmware.php>.
|
|||
See INSTALL for instructions on installing the firmware.
|
||||
|
||||
|
||||
===========================
|
||||
6. Power Management
|
||||
---------------------------
|
||||
7. Power Management
|
||||
-----------------------------------------------
|
||||
The IPW2100 supports the configuration of the Power Save Protocol
|
||||
through a private wireless extension interface. The IPW2100 supports
|
||||
the following different modes:
|
||||
|
@ -200,9 +250,8 @@ xxxx/yyyy will be replaced with 'off' -- the level reported will be the active
|
|||
level if `iwconfig eth1 power on` is invoked.
|
||||
|
||||
|
||||
===========================
|
||||
7. Support
|
||||
---------------------------
|
||||
8. Support
|
||||
-----------------------------------------------
|
||||
|
||||
For general development information and support,
|
||||
go to:
|
||||
|
@ -218,9 +267,8 @@ For installation support on the ipw2100 1.1.0 driver on Linux kernels
|
|||
|
||||
http://supportmail.intel.com
|
||||
|
||||
===========================
|
||||
8. License
|
||||
---------------------------
|
||||
9. License
|
||||
-----------------------------------------------
|
||||
|
||||
Copyright(c) 2003 - 2005 Intel Corporation. All rights reserved.
|
||||
|
||||
|
|
|
@ -1,33 +1,89 @@
|
|||
|
||||
Intel(R) PRO/Wireless 2915ABG Driver for Linux in support of:
|
||||
|
||||
Intel(R) PRO/Wireless 2200BG Network Connection
|
||||
Intel(R) PRO/Wireless 2915ABG Network Connection
|
||||
Intel(R) PRO/Wireless 2200BG Network Connection
|
||||
Intel(R) PRO/Wireless 2915ABG Network Connection
|
||||
|
||||
Note: The Intel(R) PRO/Wireless 2915ABG Driver for Linux and Intel(R)
|
||||
PRO/Wireless 2200BG Driver for Linux is a unified driver that works on
|
||||
both hardware adapters listed above. In this document the Intel(R)
|
||||
PRO/Wireless 2915ABG Driver for Linux will be used to reference the
|
||||
Note: The Intel(R) PRO/Wireless 2915ABG Driver for Linux and Intel(R)
|
||||
PRO/Wireless 2200BG Driver for Linux is a unified driver that works on
|
||||
both hardware adapters listed above. In this document the Intel(R)
|
||||
PRO/Wireless 2915ABG Driver for Linux will be used to reference the
|
||||
unified driver.
|
||||
|
||||
Copyright (C) 2004-2005, Intel Corporation
|
||||
|
||||
README.ipw2200
|
||||
|
||||
Version: 1.0.0
|
||||
Date : January 31, 2005
|
||||
Version: 1.0.8
|
||||
Date : October 20, 2005
|
||||
|
||||
|
||||
Index
|
||||
-----------------------------------------------
|
||||
0. IMPORTANT INFORMATION BEFORE USING THIS DRIVER
|
||||
1. Introduction
|
||||
1.1. Overview of features
|
||||
1.2. Module parameters
|
||||
1.3. Wireless Extension Private Methods
|
||||
1.4. Sysfs Helper Files
|
||||
2. About the Version Numbers
|
||||
3. Support
|
||||
4. License
|
||||
2. Ad-Hoc Networking
|
||||
3. Interacting with Wireless Tools
|
||||
3.1. iwconfig mode
|
||||
4. About the Version Numbers
|
||||
5. Firmware installation
|
||||
6. Support
|
||||
7. License
|
||||
|
||||
|
||||
0. IMPORTANT INFORMATION BEFORE USING THIS DRIVER
|
||||
-----------------------------------------------
|
||||
|
||||
Important Notice FOR ALL USERS OR DISTRIBUTORS!!!!
|
||||
|
||||
Intel wireless LAN adapters are engineered, manufactured, tested, and
|
||||
quality checked to ensure that they meet all necessary local and
|
||||
governmental regulatory agency requirements for the regions that they
|
||||
are designated and/or marked to ship into. Since wireless LANs are
|
||||
generally unlicensed devices that share spectrum with radars,
|
||||
satellites, and other licensed and unlicensed devices, it is sometimes
|
||||
necessary to dynamically detect, avoid, and limit usage to avoid
|
||||
interference with these devices. In many instances Intel is required to
|
||||
provide test data to prove regional and local compliance to regional and
|
||||
governmental regulations before certification or approval to use the
|
||||
product is granted. Intel's wireless LAN's EEPROM, firmware, and
|
||||
software driver are designed to carefully control parameters that affect
|
||||
radio operation and to ensure electromagnetic compliance (EMC). These
|
||||
parameters include, without limitation, RF power, spectrum usage,
|
||||
channel scanning, and human exposure.
|
||||
|
||||
For these reasons Intel cannot permit any manipulation by third parties
|
||||
of the software provided in binary format with the wireless WLAN
|
||||
adapters (e.g., the EEPROM and firmware). Furthermore, if you use any
|
||||
patches, utilities, or code with the Intel wireless LAN adapters that
|
||||
have been manipulated by an unauthorized party (i.e., patches,
|
||||
utilities, or code (including open source code modifications) which have
|
||||
not been validated by Intel), (i) you will be solely responsible for
|
||||
ensuring the regulatory compliance of the products, (ii) Intel will bear
|
||||
no liability, under any theory of liability for any issues associated
|
||||
with the modified products, including without limitation, claims under
|
||||
the warranty and/or issues arising from regulatory non-compliance, and
|
||||
(iii) Intel will not provide or be required to assist in providing
|
||||
support to any third parties for such modified products.
|
||||
|
||||
Note: Many regulatory agencies consider Wireless LAN adapters to be
|
||||
modules, and accordingly, condition system-level regulatory approval
|
||||
upon receipt and review of test data documenting that the antennas and
|
||||
system configuration do not cause the EMC and radio operation to be
|
||||
non-compliant.
|
||||
|
||||
The drivers available for download from SourceForge are provided as a
|
||||
part of a development project. Conformance to local regulatory
|
||||
requirements is the responsibility of the individual developer. As
|
||||
such, if you are interested in deploying or shipping a driver as part of
|
||||
solution intended to be used for purposes other than development, please
|
||||
obtain a tested driver from Intel Customer Support at:
|
||||
|
||||
http://support.intel.com/support/notebook/sb/CS-006408.htm
|
||||
|
||||
|
||||
1. Introduction
|
||||
|
@ -45,7 +101,7 @@ file.
|
|||
|
||||
1.1. Overview of Features
|
||||
-----------------------------------------------
|
||||
The current release (1.0.0) supports the following features:
|
||||
The current release (1.0.8) supports the following features:
|
||||
|
||||
+ BSS mode (Infrastructure, Managed)
|
||||
+ IBSS mode (Ad-Hoc)
|
||||
|
@ -56,17 +112,27 @@ The current release (1.0.0) supports the following features:
|
|||
+ Full A rate support (2915 only)
|
||||
+ Transmit power control
|
||||
+ S state support (ACPI suspend/resume)
|
||||
|
||||
The following features are currently enabled, but not officially
|
||||
supported:
|
||||
|
||||
+ WPA
|
||||
+ long/short preamble support
|
||||
+ Monitor mode (aka RFMon)
|
||||
|
||||
The distinction between officially supported and enabled is a reflection
|
||||
on the amount of validation and interoperability testing that has been
|
||||
performed on a given feature.
|
||||
|
||||
|
||||
|
||||
1.2. Command Line Parameters
|
||||
-----------------------------------------------
|
||||
|
||||
Like many modules used in the Linux kernel, the Intel(R) PRO/Wireless
|
||||
2915ABG Driver for Linux allows certain configuration options to be
|
||||
provided as module parameters. The most common way to specify a module
|
||||
parameter is via the command line.
|
||||
Like many modules used in the Linux kernel, the Intel(R) PRO/Wireless
|
||||
2915ABG Driver for Linux allows configuration options to be provided
|
||||
as module parameters. The most common way to specify a module parameter
|
||||
is via the command line.
|
||||
|
||||
The general form is:
|
||||
|
||||
|
@ -96,14 +162,18 @@ Where the supported parameter are:
|
|||
|
||||
debug
|
||||
If using a debug build, this is used to control the amount of debug
|
||||
info is logged. See the 'dval' and 'load' script for more info on
|
||||
how to use this (the dval and load scripts are provided as part
|
||||
info is logged. See the 'dvals' and 'load' script for more info on
|
||||
how to use this (the dvals and load scripts are provided as part
|
||||
of the ipw2200 development snapshot releases available from the
|
||||
SourceForge project at http://ipw2200.sf.net)
|
||||
|
||||
led
|
||||
Can be used to turn on experimental LED code.
|
||||
0 = Off, 1 = On. Default is 0.
|
||||
|
||||
mode
|
||||
Can be used to set the default mode of the adapter.
|
||||
0 = Managed, 1 = Ad-Hoc
|
||||
0 = Managed, 1 = Ad-Hoc, 2 = Monitor
|
||||
|
||||
|
||||
1.3. Wireless Extension Private Methods
|
||||
|
@ -164,8 +234,8 @@ The supported private methods are:
|
|||
-----------------------------------------------
|
||||
|
||||
The Linux kernel provides a pseudo file system that can be used to
|
||||
access various components of the operating system. The Intel(R)
|
||||
PRO/Wireless 2915ABG Driver for Linux exposes several configuration
|
||||
access various components of the operating system. The Intel(R)
|
||||
PRO/Wireless 2915ABG Driver for Linux exposes several configuration
|
||||
parameters through this mechanism.
|
||||
|
||||
An entry in the sysfs can support reading and/or writing. You can
|
||||
|
@ -184,13 +254,13 @@ You can set the debug level via:
|
|||
|
||||
Where $VALUE would be a number in the case of this sysfs entry. The
|
||||
input to sysfs files does not have to be a number. For example, the
|
||||
firmware loader used by hotplug utilizes sysfs entries for transferring
|
||||
firmware loader used by hotplug utilizes sysfs entries for transfering
|
||||
the firmware image from user space into the driver.
|
||||
|
||||
The Intel(R) PRO/Wireless 2915ABG Driver for Linux exposes sysfs entries
|
||||
at two levels -- driver level, which apply to all instances of the
|
||||
driver (in the event that there are more than one device installed) and
|
||||
device level, which applies only to the single specific instance.
|
||||
at two levels -- driver level, which apply to all instances of the driver
|
||||
(in the event that there are more than one device installed) and device
|
||||
level, which applies only to the single specific instance.
|
||||
|
||||
|
||||
1.4.1 Driver Level Sysfs Helper Files
|
||||
|
@ -203,6 +273,7 @@ For the driver level files, look in /sys/bus/pci/drivers/ipw2200/
|
|||
This controls the same global as the 'debug' module parameter
|
||||
|
||||
|
||||
|
||||
1.4.2 Device Level Sysfs Helper Files
|
||||
-----------------------------------------------
|
||||
|
||||
|
@ -213,7 +284,7 @@ For the device level files, look in
|
|||
For example:
|
||||
/sys/bus/pci/drivers/ipw2200/0000:02:01.0
|
||||
|
||||
For the device level files, see /sys/bus/pci/[drivers/ipw2200:
|
||||
For the device level files, see /sys/bus/pci/drivers/ipw2200:
|
||||
|
||||
rf_kill
|
||||
read -
|
||||
|
@ -231,8 +302,59 @@ For the device level files, see /sys/bus/pci/[drivers/ipw2200:
|
|||
ucode
|
||||
read-only access to the ucode version number
|
||||
|
||||
led
|
||||
read -
|
||||
0 = LED code disabled
|
||||
1 = LED code enabled
|
||||
write -
|
||||
0 = Disable LED code
|
||||
1 = Enable LED code
|
||||
|
||||
2. About the Version Numbers
|
||||
NOTE: The LED code has been reported to hang some systems when
|
||||
running ifconfig and is therefore disabled by default.
|
||||
|
||||
|
||||
2. Ad-Hoc Networking
|
||||
-----------------------------------------------
|
||||
|
||||
When using a device in an Ad-Hoc network, it is useful to understand the
|
||||
sequence and requirements for the driver to be able to create, join, or
|
||||
merge networks.
|
||||
|
||||
The following attempts to provide enough information so that you can
|
||||
have a consistent experience while using the driver as a member of an
|
||||
Ad-Hoc network.
|
||||
|
||||
2.1. Joining an Ad-Hoc Network
|
||||
-----------------------------------------------
|
||||
|
||||
The easiest way to get onto an Ad-Hoc network is to join one that
|
||||
already exists.
|
||||
|
||||
2.2. Creating an Ad-Hoc Network
|
||||
-----------------------------------------------
|
||||
|
||||
An Ad-Hoc networks is created using the syntax of the Wireless tool.
|
||||
|
||||
For Example:
|
||||
iwconfig eth1 mode ad-hoc essid testing channel 2
|
||||
|
||||
2.3. Merging Ad-Hoc Networks
|
||||
-----------------------------------------------
|
||||
|
||||
|
||||
3. Interaction with Wireless Tools
|
||||
-----------------------------------------------
|
||||
|
||||
3.1 iwconfig mode
|
||||
-----------------------------------------------
|
||||
|
||||
When configuring the mode of the adapter, all run-time configured parameters
|
||||
are reset to the value used when the module was loaded. This includes
|
||||
channels, rates, ESSID, etc.
|
||||
|
||||
|
||||
4. About the Version Numbers
|
||||
-----------------------------------------------
|
||||
|
||||
Due to the nature of open source development projects, there are
|
||||
|
@ -259,12 +381,23 @@ available as quickly as possible, unknown anomalies should be expected.
|
|||
The major version number will be incremented when significant changes
|
||||
are made to the driver. Currently, there are no major changes planned.
|
||||
|
||||
5. Firmware installation
|
||||
----------------------------------------------
|
||||
|
||||
3. Support
|
||||
The driver requires a firmware image, download it and extract the
|
||||
files under /lib/firmware (or wherever your hotplug's firmware.agent
|
||||
will look for firmware files)
|
||||
|
||||
The firmware can be downloaded from the following URL:
|
||||
|
||||
http://ipw2200.sf.net/
|
||||
|
||||
|
||||
6. Support
|
||||
-----------------------------------------------
|
||||
|
||||
For installation support of the 1.0.0 version, you can contact
|
||||
http://supportmail.intel.com, or you can use the open source project
|
||||
For direct support of the 1.0.0 version, you can contact
|
||||
http://supportmail.intel.com, or you can use the open source project
|
||||
support.
|
||||
|
||||
For general information and support, go to:
|
||||
|
@ -272,7 +405,7 @@ For general information and support, go to:
|
|||
http://ipw2200.sf.net/
|
||||
|
||||
|
||||
4. License
|
||||
7. License
|
||||
-----------------------------------------------
|
||||
|
||||
Copyright(c) 2003 - 2005 Intel Corporation. All rights reserved.
|
||||
|
@ -297,4 +430,3 @@ For general information and support, go to:
|
|||
James P. Ketrenos <ipw2100-admin@linux.intel.com>
|
||||
Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
|
||||
|
||||
|
||||
|
|
18
MAINTAINERS
18
MAINTAINERS
|
@ -1330,6 +1330,24 @@ M: john.ronciak@intel.com
|
|||
W: http://sourceforge.net/projects/e1000/
|
||||
S: Supported
|
||||
|
||||
INTEL PRO/WIRELESS 2100 NETWORK CONNECTION SUPPORT
|
||||
P: Yi Zhu
|
||||
M: yi.zhu@intel.com
|
||||
P: James Ketrenos
|
||||
M: jketreno@linux.intel.com
|
||||
L: http://lists.sourceforge.net/mailman/listinfo/ipw2100-devel
|
||||
W: http://ipw2100.sourceforge.net
|
||||
S: Supported
|
||||
|
||||
INTEL PRO/WIRELESS 2915ABG NETWORK CONNECTION SUPPORT
|
||||
P: Yi Zhu
|
||||
M: yi.zhu@intel.com
|
||||
P: James Ketrenos
|
||||
M: jketreno@linux.intel.com
|
||||
L: http://lists.sourceforge.net/mailman/listinfo/ipw2100-devel
|
||||
W: http://ipw2200.sourceforge.net
|
||||
S: Supported
|
||||
|
||||
IOC3 DRIVER
|
||||
P: Ralf Baechle
|
||||
M: ralf@linux-mips.org
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
|
||||
Copyright(c) 2003 - 2005 Intel Corporation. All rights reserved.
|
||||
Copyright(c) 2003 - 2004 Intel Corporation. All rights reserved.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it
|
||||
under the terms of version 2 of the GNU General Public License as
|
||||
|
@ -93,7 +93,6 @@ struct ipw2100_rx_packet;
|
|||
#define IPW_DL_IOCTL (1<<14)
|
||||
#define IPW_DL_RF_KILL (1<<17)
|
||||
|
||||
|
||||
#define IPW_DL_MANAGE (1<<15)
|
||||
#define IPW_DL_FW (1<<16)
|
||||
|
||||
|
@ -156,7 +155,9 @@ extern const char *band_str[];
|
|||
|
||||
struct bd_status {
|
||||
union {
|
||||
struct { u8 nlf:1, txType:2, intEnabled:1, reserved:4;} fields;
|
||||
struct {
|
||||
u8 nlf:1, txType:2, intEnabled:1, reserved:4;
|
||||
} fields;
|
||||
u8 field;
|
||||
} info;
|
||||
} __attribute__ ((packed));
|
||||
|
@ -165,7 +166,7 @@ struct ipw2100_bd {
|
|||
u32 host_addr;
|
||||
u32 buf_length;
|
||||
struct bd_status status;
|
||||
/* number of fragments for frame (should be set only for
|
||||
/* number of fragments for frame (should be set only for
|
||||
* 1st TBD) */
|
||||
u8 num_fragments;
|
||||
u8 reserved[6];
|
||||
|
@ -293,10 +294,10 @@ struct ipw2100_cmd_header {
|
|||
struct ipw2100_data_header {
|
||||
u32 host_command_reg;
|
||||
u32 host_command_reg1;
|
||||
u8 encrypted; // BOOLEAN in win! TRUE if frame is enc by driver
|
||||
u8 encrypted; // BOOLEAN in win! TRUE if frame is enc by driver
|
||||
u8 needs_encryption; // BOOLEAN in win! TRUE if frma need to be enc in NIC
|
||||
u8 wep_index; // 0 no key, 1-4 key index, 0xff immediate key
|
||||
u8 key_size; // 0 no imm key, 0x5 64bit encr, 0xd 128bit encr, 0x10 128bit encr and 128bit IV
|
||||
u8 key_size; // 0 no imm key, 0x5 64bit encr, 0xd 128bit encr, 0x10 128bit encr and 128bit IV
|
||||
u8 key[16];
|
||||
u8 reserved[10]; // f/w reserved
|
||||
u8 src_addr[ETH_ALEN];
|
||||
|
@ -306,14 +307,13 @@ struct ipw2100_data_header {
|
|||
|
||||
/* Host command data structure */
|
||||
struct host_command {
|
||||
u32 host_command; // COMMAND ID
|
||||
u32 host_command1; // COMMAND ID
|
||||
u32 host_command; // COMMAND ID
|
||||
u32 host_command1; // COMMAND ID
|
||||
u32 host_command_sequence; // UNIQUE COMMAND NUMBER (ID)
|
||||
u32 host_command_length; // LENGTH
|
||||
u32 host_command_parameters[HOST_COMMAND_PARAMS_REG_LEN]; // COMMAND PARAMETERS
|
||||
} __attribute__ ((packed));
|
||||
|
||||
|
||||
typedef enum {
|
||||
POWER_ON_RESET,
|
||||
EXIT_POWER_DOWN_RESET,
|
||||
|
@ -328,17 +328,16 @@ enum {
|
|||
RX
|
||||
};
|
||||
|
||||
|
||||
struct ipw2100_tx_packet {
|
||||
int type;
|
||||
int index;
|
||||
union {
|
||||
struct { /* COMMAND */
|
||||
struct ipw2100_cmd_header* cmd;
|
||||
struct { /* COMMAND */
|
||||
struct ipw2100_cmd_header *cmd;
|
||||
dma_addr_t cmd_phys;
|
||||
} c_struct;
|
||||
struct { /* DATA */
|
||||
struct ipw2100_data_header* data;
|
||||
struct { /* DATA */
|
||||
struct ipw2100_data_header *data;
|
||||
dma_addr_t data_phys;
|
||||
struct ieee80211_txb *txb;
|
||||
} d_struct;
|
||||
|
@ -348,7 +347,6 @@ struct ipw2100_tx_packet {
|
|||
struct list_head list;
|
||||
};
|
||||
|
||||
|
||||
struct ipw2100_rx_packet {
|
||||
struct ipw2100_rx *rxp;
|
||||
dma_addr_t dma_addr;
|
||||
|
@ -432,13 +430,13 @@ enum {
|
|||
};
|
||||
|
||||
#define STATUS_POWERED (1<<0)
|
||||
#define STATUS_CMD_ACTIVE (1<<1) /**< host command in progress */
|
||||
#define STATUS_RUNNING (1<<2) /* Card initialized, but not enabled */
|
||||
#define STATUS_ENABLED (1<<3) /* Card enabled -- can scan,Tx,Rx */
|
||||
#define STATUS_STOPPING (1<<4) /* Card is in shutdown phase */
|
||||
#define STATUS_INITIALIZED (1<<5) /* Card is ready for external calls */
|
||||
#define STATUS_ASSOCIATING (1<<9) /* Associated, but no BSSID yet */
|
||||
#define STATUS_ASSOCIATED (1<<10) /* Associated and BSSID valid */
|
||||
#define STATUS_CMD_ACTIVE (1<<1) /**< host command in progress */
|
||||
#define STATUS_RUNNING (1<<2) /* Card initialized, but not enabled */
|
||||
#define STATUS_ENABLED (1<<3) /* Card enabled -- can scan,Tx,Rx */
|
||||
#define STATUS_STOPPING (1<<4) /* Card is in shutdown phase */
|
||||
#define STATUS_INITIALIZED (1<<5) /* Card is ready for external calls */
|
||||
#define STATUS_ASSOCIATING (1<<9) /* Associated, but no BSSID yet */
|
||||
#define STATUS_ASSOCIATED (1<<10) /* Associated and BSSID valid */
|
||||
#define STATUS_INT_ENABLED (1<<11)
|
||||
#define STATUS_RF_KILL_HW (1<<12)
|
||||
#define STATUS_RF_KILL_SW (1<<13)
|
||||
|
@ -451,9 +449,7 @@ enum {
|
|||
#define STATUS_SCAN_COMPLETE (1<<26)
|
||||
#define STATUS_WX_EVENT_PENDING (1<<27)
|
||||
#define STATUS_RESET_PENDING (1<<29)
|
||||
#define STATUS_SECURITY_UPDATED (1<<30) /* Security sync needed */
|
||||
|
||||
|
||||
#define STATUS_SECURITY_UPDATED (1<<30) /* Security sync needed */
|
||||
|
||||
/* Internal NIC states */
|
||||
#define IPW_STATE_INITIALIZED (1<<0)
|
||||
|
@ -469,11 +465,9 @@ enum {
|
|||
#define IPW_STATE_POWER_DOWN (1<<10)
|
||||
#define IPW_STATE_SCANNING (1<<11)
|
||||
|
||||
|
||||
|
||||
#define CFG_STATIC_CHANNEL (1<<0) /* Restrict assoc. to single channel */
|
||||
#define CFG_STATIC_ESSID (1<<1) /* Restrict assoc. to single SSID */
|
||||
#define CFG_STATIC_BSSID (1<<2) /* Restrict assoc. to single BSSID */
|
||||
#define CFG_STATIC_CHANNEL (1<<0) /* Restrict assoc. to single channel */
|
||||
#define CFG_STATIC_ESSID (1<<1) /* Restrict assoc. to single SSID */
|
||||
#define CFG_STATIC_BSSID (1<<2) /* Restrict assoc. to single BSSID */
|
||||
#define CFG_CUSTOM_MAC (1<<3)
|
||||
#define CFG_LONG_PREAMBLE (1<<4)
|
||||
#define CFG_ASSOCIATE (1<<6)
|
||||
|
@ -481,14 +475,17 @@ enum {
|
|||
#define CFG_ADHOC_CREATE (1<<8)
|
||||
#define CFG_C3_DISABLED (1<<9)
|
||||
#define CFG_PASSIVE_SCAN (1<<10)
|
||||
#ifdef CONFIG_IPW2100_MONITOR
|
||||
#define CFG_CRC_CHECK (1<<11)
|
||||
#endif
|
||||
|
||||
#define CAP_SHARED_KEY (1<<0) /* Off = OPEN */
|
||||
#define CAP_PRIVACY_ON (1<<1) /* Off = No privacy */
|
||||
#define CAP_SHARED_KEY (1<<0) /* Off = OPEN */
|
||||
#define CAP_PRIVACY_ON (1<<1) /* Off = No privacy */
|
||||
|
||||
struct ipw2100_priv {
|
||||
|
||||
int stop_hang_check; /* Set 1 when shutting down to kill hang_check */
|
||||
int stop_rf_kill; /* Set 1 when shutting down to kill rf_kill */
|
||||
int stop_hang_check; /* Set 1 when shutting down to kill hang_check */
|
||||
int stop_rf_kill; /* Set 1 when shutting down to kill rf_kill */
|
||||
|
||||
struct ieee80211_device *ieee;
|
||||
unsigned long status;
|
||||
|
@ -519,19 +516,16 @@ struct ipw2100_priv {
|
|||
unsigned long hw_features;
|
||||
int hangs;
|
||||
u32 last_rtc;
|
||||
int dump_raw; /* 1 to dump raw bytes in /sys/.../memory */
|
||||
u8* snapshot[0x30];
|
||||
int dump_raw; /* 1 to dump raw bytes in /sys/.../memory */
|
||||
u8 *snapshot[0x30];
|
||||
|
||||
u8 mandatory_bssid_mac[ETH_ALEN];
|
||||
u8 mac_addr[ETH_ALEN];
|
||||
|
||||
int power_mode;
|
||||
|
||||
/* WEP data */
|
||||
struct ieee80211_security sec;
|
||||
int messages_sent;
|
||||
|
||||
|
||||
int short_retry_limit;
|
||||
int long_retry_limit;
|
||||
|
||||
|
@ -599,7 +593,6 @@ struct ipw2100_priv {
|
|||
wait_queue_head_t wait_command_queue;
|
||||
};
|
||||
|
||||
|
||||
/*********************************************************
|
||||
* Host Command -> From Driver to FW
|
||||
*********************************************************/
|
||||
|
@ -646,7 +639,6 @@ struct ipw2100_priv {
|
|||
#define CARD_DISABLE_PHY_OFF 61
|
||||
#define MSDU_TX_RATES 62
|
||||
|
||||
|
||||
/* Rogue AP Detection */
|
||||
#define SET_STATION_STAT_BITS 64
|
||||
#define CLEAR_STATIONS_STAT_BITS 65
|
||||
|
@ -655,8 +647,6 @@ struct ipw2100_priv {
|
|||
#define DISASSOCIATION_BSSID 68
|
||||
#define SET_WPA_IE 69
|
||||
|
||||
|
||||
|
||||
/* system configuration bit mask: */
|
||||
#define IPW_CFG_MONITOR 0x00004
|
||||
#define IPW_CFG_PREAMBLE_AUTO 0x00010
|
||||
|
@ -704,7 +694,7 @@ struct ipw2100_priv {
|
|||
#define IPW2100_INTA_TX_TRANSFER (0x00000001) // Bit 0 (LSB)
|
||||
#define IPW2100_INTA_RX_TRANSFER (0x00000002) // Bit 1
|
||||
#define IPW2100_INTA_TX_COMPLETE (0x00000004) // Bit 2
|
||||
#define IPW2100_INTA_EVENT_INTERRUPT (0x00000008) // Bit 3
|
||||
#define IPW2100_INTA_EVENT_INTERRUPT (0x00000008) // Bit 3
|
||||
#define IPW2100_INTA_STATUS_CHANGE (0x00000010) // Bit 4
|
||||
#define IPW2100_INTA_BEACON_PERIOD_EXPIRED (0x00000020) // Bit 5
|
||||
#define IPW2100_INTA_SLAVE_MODE_HOST_COMMAND_DONE (0x00010000) // Bit 16
|
||||
|
@ -784,9 +774,6 @@ struct ipw2100_priv {
|
|||
#define IPW_CARD_DISABLE_PHY_OFF_COMPLETE_WAIT 100 // 100 milli
|
||||
#define IPW_PREPARE_POWER_DOWN_COMPLETE_WAIT 100 // 100 milli
|
||||
|
||||
|
||||
|
||||
|
||||
#define IPW_HEADER_802_11_SIZE sizeof(struct ieee80211_hdr_3addr)
|
||||
#define IPW_MAX_80211_PAYLOAD_SIZE 2304U
|
||||
#define IPW_MAX_802_11_PAYLOAD_LENGTH 2312
|
||||
|
@ -843,8 +830,8 @@ struct ipw2100_rx {
|
|||
#define IPW_TX_POWER_MIN_DBM (-12)
|
||||
#define IPW_TX_POWER_MAX_DBM 16
|
||||
|
||||
#define FW_SCAN_DONOT_ASSOCIATE 0x0001 // Dont Attempt to Associate after Scan
|
||||
#define FW_SCAN_PASSIVE 0x0008 // Force PASSSIVE Scan
|
||||
#define FW_SCAN_DONOT_ASSOCIATE 0x0001 // Dont Attempt to Associate after Scan
|
||||
#define FW_SCAN_PASSIVE 0x0008 // Force PASSSIVE Scan
|
||||
|
||||
#define REG_MIN_CHANNEL 0
|
||||
#define REG_MAX_CHANNEL 14
|
||||
|
@ -856,7 +843,6 @@ struct ipw2100_rx {
|
|||
#define DIVERSITY_ANTENNA_A 1 // Use antenna A
|
||||
#define DIVERSITY_ANTENNA_B 2 // Use antenna B
|
||||
|
||||
|
||||
#define HOST_COMMAND_WAIT 0
|
||||
#define HOST_COMMAND_NO_WAIT 1
|
||||
|
||||
|
@ -873,10 +859,9 @@ struct ipw2100_rx {
|
|||
#define TYPE_ASSOCIATION_REQUEST 0x0013
|
||||
#define TYPE_REASSOCIATION_REQUEST 0x0014
|
||||
|
||||
|
||||
#define HW_FEATURE_RFKILL (0x0001)
|
||||
#define RF_KILLSWITCH_OFF (1)
|
||||
#define RF_KILLSWITCH_ON (0)
|
||||
#define HW_FEATURE_RFKILL 0x0001
|
||||
#define RF_KILLSWITCH_OFF 1
|
||||
#define RF_KILLSWITCH_ON 0
|
||||
|
||||
#define IPW_COMMAND_POOL_SIZE 40
|
||||
|
||||
|
@ -895,7 +880,7 @@ struct ipw2100_rx {
|
|||
// Fixed size data: Ordinal Table 1
|
||||
typedef enum _ORDINAL_TABLE_1 { // NS - means Not Supported by FW
|
||||
// Transmit statistics
|
||||
IPW_ORD_STAT_TX_HOST_REQUESTS = 1,// # of requested Host Tx's (MSDU)
|
||||
IPW_ORD_STAT_TX_HOST_REQUESTS = 1, // # of requested Host Tx's (MSDU)
|
||||
IPW_ORD_STAT_TX_HOST_COMPLETE, // # of successful Host Tx's (MSDU)
|
||||
IPW_ORD_STAT_TX_DIR_DATA, // # of successful Directed Tx's (MSDU)
|
||||
|
||||
|
@ -905,42 +890,42 @@ typedef enum _ORDINAL_TABLE_1 { // NS - means Not Supported by FW
|
|||
IPW_ORD_STAT_TX_DIR_DATA11, // # of successful Directed Tx's (MSDU) @ 11MB
|
||||
IPW_ORD_STAT_TX_DIR_DATA22, // # of successful Directed Tx's (MSDU) @ 22MB
|
||||
|
||||
IPW_ORD_STAT_TX_NODIR_DATA1 = 13,// # of successful Non_Directed Tx's (MSDU) @ 1MB
|
||||
IPW_ORD_STAT_TX_NODIR_DATA1 = 13, // # of successful Non_Directed Tx's (MSDU) @ 1MB
|
||||
IPW_ORD_STAT_TX_NODIR_DATA2, // # of successful Non_Directed Tx's (MSDU) @ 2MB
|
||||
IPW_ORD_STAT_TX_NODIR_DATA5_5, // # of successful Non_Directed Tx's (MSDU) @ 5.5MB
|
||||
IPW_ORD_STAT_TX_NODIR_DATA11, // # of successful Non_Directed Tx's (MSDU) @ 11MB
|
||||
|
||||
IPW_ORD_STAT_NULL_DATA = 21, // # of successful NULL data Tx's
|
||||
IPW_ORD_STAT_TX_RTS, // # of successful Tx RTS
|
||||
IPW_ORD_STAT_TX_CTS, // # of successful Tx CTS
|
||||
IPW_ORD_STAT_TX_ACK, // # of successful Tx ACK
|
||||
IPW_ORD_STAT_TX_ASSN, // # of successful Association Tx's
|
||||
IPW_ORD_STAT_TX_RTS, // # of successful Tx RTS
|
||||
IPW_ORD_STAT_TX_CTS, // # of successful Tx CTS
|
||||
IPW_ORD_STAT_TX_ACK, // # of successful Tx ACK
|
||||
IPW_ORD_STAT_TX_ASSN, // # of successful Association Tx's
|
||||
IPW_ORD_STAT_TX_ASSN_RESP, // # of successful Association response Tx's
|
||||
IPW_ORD_STAT_TX_REASSN, // # of successful Reassociation Tx's
|
||||
IPW_ORD_STAT_TX_REASSN, // # of successful Reassociation Tx's
|
||||
IPW_ORD_STAT_TX_REASSN_RESP, // # of successful Reassociation response Tx's
|
||||
IPW_ORD_STAT_TX_PROBE, // # of probes successfully transmitted
|
||||
IPW_ORD_STAT_TX_PROBE, // # of probes successfully transmitted
|
||||
IPW_ORD_STAT_TX_PROBE_RESP, // # of probe responses successfully transmitted
|
||||
IPW_ORD_STAT_TX_BEACON, // # of tx beacon
|
||||
IPW_ORD_STAT_TX_ATIM, // # of Tx ATIM
|
||||
IPW_ORD_STAT_TX_BEACON, // # of tx beacon
|
||||
IPW_ORD_STAT_TX_ATIM, // # of Tx ATIM
|
||||
IPW_ORD_STAT_TX_DISASSN, // # of successful Disassociation TX
|
||||
IPW_ORD_STAT_TX_AUTH, // # of successful Authentication Tx
|
||||
IPW_ORD_STAT_TX_DEAUTH, // # of successful Deauthentication TX
|
||||
IPW_ORD_STAT_TX_AUTH, // # of successful Authentication Tx
|
||||
IPW_ORD_STAT_TX_DEAUTH, // # of successful Deauthentication TX
|
||||
|
||||
IPW_ORD_STAT_TX_TOTAL_BYTES = 41,// Total successful Tx data bytes
|
||||
IPW_ORD_STAT_TX_RETRIES, // # of Tx retries
|
||||
IPW_ORD_STAT_TX_RETRY1, // # of Tx retries at 1MBPS
|
||||
IPW_ORD_STAT_TX_RETRY2, // # of Tx retries at 2MBPS
|
||||
IPW_ORD_STAT_TX_RETRY5_5, // # of Tx retries at 5.5MBPS
|
||||
IPW_ORD_STAT_TX_RETRY11, // # of Tx retries at 11MBPS
|
||||
IPW_ORD_STAT_TX_TOTAL_BYTES = 41, // Total successful Tx data bytes
|
||||
IPW_ORD_STAT_TX_RETRIES, // # of Tx retries
|
||||
IPW_ORD_STAT_TX_RETRY1, // # of Tx retries at 1MBPS
|
||||
IPW_ORD_STAT_TX_RETRY2, // # of Tx retries at 2MBPS
|
||||
IPW_ORD_STAT_TX_RETRY5_5, // # of Tx retries at 5.5MBPS
|
||||
IPW_ORD_STAT_TX_RETRY11, // # of Tx retries at 11MBPS
|
||||
|
||||
IPW_ORD_STAT_TX_FAILURES = 51, // # of Tx Failures
|
||||
IPW_ORD_STAT_TX_ABORT_AT_HOP, //NS // # of Tx's aborted at hop time
|
||||
IPW_ORD_STAT_TX_MAX_TRIES_IN_HOP,// # of times max tries in a hop failed
|
||||
IPW_ORD_STAT_TX_MAX_TRIES_IN_HOP, // # of times max tries in a hop failed
|
||||
IPW_ORD_STAT_TX_ABORT_LATE_DMA, //NS // # of times tx aborted due to late dma setup
|
||||
IPW_ORD_STAT_TX_ABORT_STX, //NS // # of times backoff aborted
|
||||
IPW_ORD_STAT_TX_DISASSN_FAIL, // # of times disassociation failed
|
||||
IPW_ORD_STAT_TX_ERR_CTS, // # of missed/bad CTS frames
|
||||
IPW_ORD_STAT_TX_BPDU, //NS // # of spanning tree BPDUs sent
|
||||
IPW_ORD_STAT_TX_ERR_CTS, // # of missed/bad CTS frames
|
||||
IPW_ORD_STAT_TX_BPDU, //NS // # of spanning tree BPDUs sent
|
||||
IPW_ORD_STAT_TX_ERR_ACK, // # of tx err due to acks
|
||||
|
||||
// Receive statistics
|
||||
|
@ -952,7 +937,7 @@ typedef enum _ORDINAL_TABLE_1 { // NS - means Not Supported by FW
|
|||
IPW_ORD_STAT_RX_DIR_DATA11, // # of directed packets at 11MB
|
||||
IPW_ORD_STAT_RX_DIR_DATA22, // # of directed packets at 22MB
|
||||
|
||||
IPW_ORD_STAT_RX_NODIR_DATA = 71,// # of nondirected packets
|
||||
IPW_ORD_STAT_RX_NODIR_DATA = 71, // # of nondirected packets
|
||||
IPW_ORD_STAT_RX_NODIR_DATA1, // # of nondirected packets at 1MB
|
||||
IPW_ORD_STAT_RX_NODIR_DATA2, // # of nondirected packets at 2MB
|
||||
IPW_ORD_STAT_RX_NODIR_DATA5_5, // # of nondirected packets at 5.5MB
|
||||
|
@ -977,18 +962,18 @@ typedef enum _ORDINAL_TABLE_1 { // NS - means Not Supported by FW
|
|||
IPW_ORD_STAT_RX_AUTH, // # of authentication Rx
|
||||
IPW_ORD_STAT_RX_DEAUTH, // # of deauthentication Rx
|
||||
|
||||
IPW_ORD_STAT_RX_TOTAL_BYTES = 101,// Total rx data bytes received
|
||||
IPW_ORD_STAT_RX_ERR_CRC, // # of packets with Rx CRC error
|
||||
IPW_ORD_STAT_RX_ERR_CRC1, // # of Rx CRC errors at 1MB
|
||||
IPW_ORD_STAT_RX_ERR_CRC2, // # of Rx CRC errors at 2MB
|
||||
IPW_ORD_STAT_RX_ERR_CRC5_5, // # of Rx CRC errors at 5.5MB
|
||||
IPW_ORD_STAT_RX_ERR_CRC11, // # of Rx CRC errors at 11MB
|
||||
IPW_ORD_STAT_RX_TOTAL_BYTES = 101, // Total rx data bytes received
|
||||
IPW_ORD_STAT_RX_ERR_CRC, // # of packets with Rx CRC error
|
||||
IPW_ORD_STAT_RX_ERR_CRC1, // # of Rx CRC errors at 1MB
|
||||
IPW_ORD_STAT_RX_ERR_CRC2, // # of Rx CRC errors at 2MB
|
||||
IPW_ORD_STAT_RX_ERR_CRC5_5, // # of Rx CRC errors at 5.5MB
|
||||
IPW_ORD_STAT_RX_ERR_CRC11, // # of Rx CRC errors at 11MB
|
||||
|
||||
IPW_ORD_STAT_RX_DUPLICATE1 = 112, // # of duplicate rx packets at 1MB
|
||||
IPW_ORD_STAT_RX_DUPLICATE2, // # of duplicate rx packets at 2MB
|
||||
IPW_ORD_STAT_RX_DUPLICATE5_5, // # of duplicate rx packets at 5.5MB
|
||||
IPW_ORD_STAT_RX_DUPLICATE11, // # of duplicate rx packets at 11MB
|
||||
IPW_ORD_STAT_RX_DUPLICATE = 119, // # of duplicate rx packets
|
||||
IPW_ORD_STAT_RX_DUPLICATE1 = 112, // # of duplicate rx packets at 1MB
|
||||
IPW_ORD_STAT_RX_DUPLICATE2, // # of duplicate rx packets at 2MB
|
||||
IPW_ORD_STAT_RX_DUPLICATE5_5, // # of duplicate rx packets at 5.5MB
|
||||
IPW_ORD_STAT_RX_DUPLICATE11, // # of duplicate rx packets at 11MB
|
||||
IPW_ORD_STAT_RX_DUPLICATE = 119, // # of duplicate rx packets
|
||||
|
||||
IPW_ORD_PERS_DB_LOCK = 120, // # locking fw permanent db
|
||||
IPW_ORD_PERS_DB_SIZE, // # size of fw permanent db
|
||||
|
@ -1006,17 +991,17 @@ typedef enum _ORDINAL_TABLE_1 { // NS - means Not Supported by FW
|
|||
IPW_ORD_STAT_RX_ICV_ERRORS, // # of ICV errors during decryption
|
||||
|
||||
// PSP Statistics
|
||||
IPW_ORD_STAT_PSP_SUSPENSION = 137,// # of times adapter suspended
|
||||
IPW_ORD_STAT_PSP_SUSPENSION = 137, // # of times adapter suspended
|
||||
IPW_ORD_STAT_PSP_BCN_TIMEOUT, // # of beacon timeout
|
||||
IPW_ORD_STAT_PSP_POLL_TIMEOUT, // # of poll response timeouts
|
||||
IPW_ORD_STAT_PSP_NONDIR_TIMEOUT,// # of timeouts waiting for last broadcast/muticast pkt
|
||||
IPW_ORD_STAT_PSP_NONDIR_TIMEOUT, // # of timeouts waiting for last broadcast/muticast pkt
|
||||
IPW_ORD_STAT_PSP_RX_DTIMS, // # of PSP DTIMs received
|
||||
IPW_ORD_STAT_PSP_RX_TIMS, // # of PSP TIMs received
|
||||
IPW_ORD_STAT_PSP_STATION_ID, // PSP Station ID
|
||||
|
||||
// Association and roaming
|
||||
IPW_ORD_LAST_ASSN_TIME = 147, // RTC time of last association
|
||||
IPW_ORD_STAT_PERCENT_MISSED_BCNS,// current calculation of % missed beacons
|
||||
IPW_ORD_STAT_PERCENT_MISSED_BCNS, // current calculation of % missed beacons
|
||||
IPW_ORD_STAT_PERCENT_RETRIES, // current calculation of % missed tx retries
|
||||
IPW_ORD_ASSOCIATED_AP_PTR, // If associated, this is ptr to the associated
|
||||
// AP table entry. set to 0 if not associated
|
||||
|
@ -1151,7 +1136,7 @@ struct ipw2100_fw_chunk {
|
|||
};
|
||||
|
||||
struct ipw2100_fw_chunk_set {
|
||||
const void *data;
|
||||
const void *data;
|
||||
unsigned long size;
|
||||
};
|
||||
|
||||
|
@ -1164,4 +1149,4 @@ struct ipw2100_fw {
|
|||
|
||||
#define MAX_FW_VERSION_LEN 14
|
||||
|
||||
#endif /* _IPW2100_H */
|
||||
#endif /* _IPW2100_H */
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
|
||||
Copyright(c) 2003 - 2004 Intel Corporation. All rights reserved.
|
||||
Copyright(c) 2003 - 2005 Intel Corporation. All rights reserved.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify it
|
||||
under the terms of version 2 of the GNU General Public License as
|
||||
|
@ -50,6 +50,7 @@
|
|||
#include <asm/io.h>
|
||||
|
||||
#include <net/ieee80211.h>
|
||||
#include <net/ieee80211_radiotap.h>
|
||||
|
||||
#define DRV_NAME "ipw2200"
|
||||
|
||||
|
@ -161,6 +162,16 @@ enum connection_manager_assoc_states {
|
|||
* TX Queue Flag Definitions
|
||||
*/
|
||||
|
||||
/* tx wep key definition */
|
||||
#define DCT_WEP_KEY_NOT_IMMIDIATE 0x00
|
||||
#define DCT_WEP_KEY_64Bit 0x40
|
||||
#define DCT_WEP_KEY_128Bit 0x80
|
||||
#define DCT_WEP_KEY_128bitIV 0xC0
|
||||
#define DCT_WEP_KEY_SIZE_MASK 0xC0
|
||||
|
||||
#define DCT_WEP_KEY_INDEX_MASK 0x0F
|
||||
#define DCT_WEP_INDEX_USE_IMMEDIATE 0x20
|
||||
|
||||
/* abort attempt if mgmt frame is rx'd */
|
||||
#define DCT_FLAG_ABORT_MGMT 0x01
|
||||
|
||||
|
@ -168,7 +179,8 @@ enum connection_manager_assoc_states {
|
|||
#define DCT_FLAG_CTS_REQUIRED 0x02
|
||||
|
||||
/* use short preamble */
|
||||
#define DCT_FLAG_SHORT_PREMBL 0x04
|
||||
#define DCT_FLAG_LONG_PREAMBLE 0x00
|
||||
#define DCT_FLAG_SHORT_PREAMBLE 0x04
|
||||
|
||||
/* RTS/CTS first */
|
||||
#define DCT_FLAG_RTS_REQD 0x08
|
||||
|
@ -185,9 +197,23 @@ enum connection_manager_assoc_states {
|
|||
/* ACK rx is expected to follow */
|
||||
#define DCT_FLAG_ACK_REQD 0x80
|
||||
|
||||
/* TX flags extension */
|
||||
#define DCT_FLAG_EXT_MODE_CCK 0x01
|
||||
#define DCT_FLAG_EXT_MODE_OFDM 0x00
|
||||
|
||||
#define DCT_FLAG_EXT_SECURITY_WEP 0x00
|
||||
#define DCT_FLAG_EXT_SECURITY_NO DCT_FLAG_EXT_SECURITY_WEP
|
||||
#define DCT_FLAG_EXT_SECURITY_CKIP 0x04
|
||||
#define DCT_FLAG_EXT_SECURITY_CCM 0x08
|
||||
#define DCT_FLAG_EXT_SECURITY_TKIP 0x0C
|
||||
#define DCT_FLAG_EXT_SECURITY_MASK 0x0C
|
||||
|
||||
#define DCT_FLAG_EXT_QOS_ENABLED 0x10
|
||||
|
||||
#define DCT_FLAG_EXT_HC_NO_SIFS_PIFS 0x00
|
||||
#define DCT_FLAG_EXT_HC_SIFS 0x20
|
||||
#define DCT_FLAG_EXT_HC_PIFS 0x40
|
||||
|
||||
#define TX_RX_TYPE_MASK 0xFF
|
||||
#define TX_FRAME_TYPE 0x00
|
||||
#define TX_HOST_COMMAND_TYPE 0x01
|
||||
|
@ -233,6 +259,117 @@ enum connection_manager_assoc_states {
|
|||
#define DCR_TYPE_SNIFFER 0x06
|
||||
#define DCR_TYPE_MU_BSS DCR_TYPE_MU_ESS
|
||||
|
||||
/* QoS definitions */
|
||||
|
||||
#define CW_MIN_OFDM 15
|
||||
#define CW_MAX_OFDM 1023
|
||||
#define CW_MIN_CCK 31
|
||||
#define CW_MAX_CCK 1023
|
||||
|
||||
#define QOS_TX0_CW_MIN_OFDM CW_MIN_OFDM
|
||||
#define QOS_TX1_CW_MIN_OFDM CW_MIN_OFDM
|
||||
#define QOS_TX2_CW_MIN_OFDM ( (CW_MIN_OFDM + 1) / 2 - 1 )
|
||||
#define QOS_TX3_CW_MIN_OFDM ( (CW_MIN_OFDM + 1) / 4 - 1 )
|
||||
|
||||
#define QOS_TX0_CW_MIN_CCK CW_MIN_CCK
|
||||
#define QOS_TX1_CW_MIN_CCK CW_MIN_CCK
|
||||
#define QOS_TX2_CW_MIN_CCK ( (CW_MIN_CCK + 1) / 2 - 1 )
|
||||
#define QOS_TX3_CW_MIN_CCK ( (CW_MIN_CCK + 1) / 4 - 1 )
|
||||
|
||||
#define QOS_TX0_CW_MAX_OFDM CW_MAX_OFDM
|
||||
#define QOS_TX1_CW_MAX_OFDM CW_MAX_OFDM
|
||||
#define QOS_TX2_CW_MAX_OFDM CW_MIN_OFDM
|
||||
#define QOS_TX3_CW_MAX_OFDM ( (CW_MIN_OFDM + 1) / 2 - 1 )
|
||||
|
||||
#define QOS_TX0_CW_MAX_CCK CW_MAX_CCK
|
||||
#define QOS_TX1_CW_MAX_CCK CW_MAX_CCK
|
||||
#define QOS_TX2_CW_MAX_CCK CW_MIN_CCK
|
||||
#define QOS_TX3_CW_MAX_CCK ( (CW_MIN_CCK + 1) / 2 - 1 )
|
||||
|
||||
#define QOS_TX0_AIFS (3 - QOS_AIFSN_MIN_VALUE)
|
||||
#define QOS_TX1_AIFS (7 - QOS_AIFSN_MIN_VALUE)
|
||||
#define QOS_TX2_AIFS (2 - QOS_AIFSN_MIN_VALUE)
|
||||
#define QOS_TX3_AIFS (2 - QOS_AIFSN_MIN_VALUE)
|
||||
|
||||
#define QOS_TX0_ACM 0
|
||||
#define QOS_TX1_ACM 0
|
||||
#define QOS_TX2_ACM 0
|
||||
#define QOS_TX3_ACM 0
|
||||
|
||||
#define QOS_TX0_TXOP_LIMIT_CCK 0
|
||||
#define QOS_TX1_TXOP_LIMIT_CCK 0
|
||||
#define QOS_TX2_TXOP_LIMIT_CCK 6016
|
||||
#define QOS_TX3_TXOP_LIMIT_CCK 3264
|
||||
|
||||
#define QOS_TX0_TXOP_LIMIT_OFDM 0
|
||||
#define QOS_TX1_TXOP_LIMIT_OFDM 0
|
||||
#define QOS_TX2_TXOP_LIMIT_OFDM 3008
|
||||
#define QOS_TX3_TXOP_LIMIT_OFDM 1504
|
||||
|
||||
#define DEF_TX0_CW_MIN_OFDM CW_MIN_OFDM
|
||||
#define DEF_TX1_CW_MIN_OFDM CW_MIN_OFDM
|
||||
#define DEF_TX2_CW_MIN_OFDM CW_MIN_OFDM
|
||||
#define DEF_TX3_CW_MIN_OFDM CW_MIN_OFDM
|
||||
|
||||
#define DEF_TX0_CW_MIN_CCK CW_MIN_CCK
|
||||
#define DEF_TX1_CW_MIN_CCK CW_MIN_CCK
|
||||
#define DEF_TX2_CW_MIN_CCK CW_MIN_CCK
|
||||
#define DEF_TX3_CW_MIN_CCK CW_MIN_CCK
|
||||
|
||||
#define DEF_TX0_CW_MAX_OFDM CW_MAX_OFDM
|
||||
#define DEF_TX1_CW_MAX_OFDM CW_MAX_OFDM
|
||||
#define DEF_TX2_CW_MAX_OFDM CW_MAX_OFDM
|
||||
#define DEF_TX3_CW_MAX_OFDM CW_MAX_OFDM
|
||||
|
||||
#define DEF_TX0_CW_MAX_CCK CW_MAX_CCK
|
||||
#define DEF_TX1_CW_MAX_CCK CW_MAX_CCK
|
||||
#define DEF_TX2_CW_MAX_CCK CW_MAX_CCK
|
||||
#define DEF_TX3_CW_MAX_CCK CW_MAX_CCK
|
||||
|
||||
#define DEF_TX0_AIFS 0
|
||||
#define DEF_TX1_AIFS 0
|
||||
#define DEF_TX2_AIFS 0
|
||||
#define DEF_TX3_AIFS 0
|
||||
|
||||
#define DEF_TX0_ACM 0
|
||||
#define DEF_TX1_ACM 0
|
||||
#define DEF_TX2_ACM 0
|
||||
#define DEF_TX3_ACM 0
|
||||
|
||||
#define DEF_TX0_TXOP_LIMIT_CCK 0
|
||||
#define DEF_TX1_TXOP_LIMIT_CCK 0
|
||||
#define DEF_TX2_TXOP_LIMIT_CCK 0
|
||||
#define DEF_TX3_TXOP_LIMIT_CCK 0
|
||||
|
||||
#define DEF_TX0_TXOP_LIMIT_OFDM 0
|
||||
#define DEF_TX1_TXOP_LIMIT_OFDM 0
|
||||
#define DEF_TX2_TXOP_LIMIT_OFDM 0
|
||||
#define DEF_TX3_TXOP_LIMIT_OFDM 0
|
||||
|
||||
#define QOS_QOS_SETS 3
|
||||
#define QOS_PARAM_SET_ACTIVE 0
|
||||
#define QOS_PARAM_SET_DEF_CCK 1
|
||||
#define QOS_PARAM_SET_DEF_OFDM 2
|
||||
|
||||
#define CTRL_QOS_NO_ACK (0x0020)
|
||||
|
||||
#define IPW_TX_QUEUE_1 1
|
||||
#define IPW_TX_QUEUE_2 2
|
||||
#define IPW_TX_QUEUE_3 3
|
||||
#define IPW_TX_QUEUE_4 4
|
||||
|
||||
/* QoS sturctures */
|
||||
struct ipw_qos_info {
|
||||
int qos_enable;
|
||||
struct ieee80211_qos_parameters *def_qos_parm_OFDM;
|
||||
struct ieee80211_qos_parameters *def_qos_parm_CCK;
|
||||
u32 burst_duration_CCK;
|
||||
u32 burst_duration_OFDM;
|
||||
u16 qos_no_ack_mask;
|
||||
int burst_enable;
|
||||
};
|
||||
|
||||
/**************************************************************/
|
||||
/**
|
||||
* Generic queue structure
|
||||
*
|
||||
|
@ -402,9 +539,9 @@ struct clx2_tx_queue {
|
|||
#define RX_FREE_BUFFERS 32
|
||||
#define RX_LOW_WATERMARK 8
|
||||
|
||||
#define SUP_RATE_11A_MAX_NUM_CHANNELS (8)
|
||||
#define SUP_RATE_11B_MAX_NUM_CHANNELS (4)
|
||||
#define SUP_RATE_11G_MAX_NUM_CHANNELS (12)
|
||||
#define SUP_RATE_11A_MAX_NUM_CHANNELS 8
|
||||
#define SUP_RATE_11B_MAX_NUM_CHANNELS 4
|
||||
#define SUP_RATE_11G_MAX_NUM_CHANNELS 12
|
||||
|
||||
// Used for passing to driver number of successes and failures per rate
|
||||
struct rate_histogram {
|
||||
|
@ -453,6 +590,9 @@ struct notif_channel_result {
|
|||
u8 uReserved;
|
||||
} __attribute__ ((packed));
|
||||
|
||||
#define SCAN_COMPLETED_STATUS_COMPLETE 1
|
||||
#define SCAN_COMPLETED_STATUS_ABORTED 2
|
||||
|
||||
struct notif_scan_complete {
|
||||
u8 scan_type;
|
||||
u8 num_channels;
|
||||
|
@ -563,8 +703,8 @@ struct ipw_rx_packet {
|
|||
} __attribute__ ((packed));
|
||||
|
||||
#define IPW_RX_NOTIFICATION_SIZE sizeof(struct ipw_rx_header) + 12
|
||||
#define IPW_RX_FRAME_SIZE sizeof(struct ipw_rx_header) + \
|
||||
sizeof(struct ipw_rx_frame)
|
||||
#define IPW_RX_FRAME_SIZE (unsigned int)(sizeof(struct ipw_rx_header) + \
|
||||
sizeof(struct ipw_rx_frame))
|
||||
|
||||
struct ipw_rx_mem_buffer {
|
||||
dma_addr_t dma_addr;
|
||||
|
@ -657,6 +797,19 @@ struct ipw_multicast_addr {
|
|||
u8 mac4[6];
|
||||
} __attribute__ ((packed));
|
||||
|
||||
#define DCW_WEP_KEY_INDEX_MASK 0x03 /* bits [0:1] */
|
||||
#define DCW_WEP_KEY_SEC_TYPE_MASK 0x30 /* bits [4:5] */
|
||||
|
||||
#define DCW_WEP_KEY_SEC_TYPE_WEP 0x00
|
||||
#define DCW_WEP_KEY_SEC_TYPE_CCM 0x20
|
||||
#define DCW_WEP_KEY_SEC_TYPE_TKIP 0x30
|
||||
|
||||
#define DCW_WEP_KEY_INVALID_SIZE 0x00 /* 0 = Invalid key */
|
||||
#define DCW_WEP_KEY64Bit_SIZE 0x05 /* 64-bit encryption */
|
||||
#define DCW_WEP_KEY128Bit_SIZE 0x0D /* 128-bit encryption */
|
||||
#define DCW_CCM_KEY128Bit_SIZE 0x10 /* 128-bit key */
|
||||
//#define DCW_WEP_KEY128BitIV_SIZE 0x10 /* 128-bit key and 128-bit IV */
|
||||
|
||||
struct ipw_wep_key {
|
||||
u8 cmd_id;
|
||||
u8 seq_num;
|
||||
|
@ -818,14 +971,6 @@ struct ipw_tx_power {
|
|||
struct ipw_channel_tx_power channels_tx_power[MAX_A_CHANNELS];
|
||||
} __attribute__ ((packed));
|
||||
|
||||
struct ipw_qos_parameters {
|
||||
u16 cw_min[4];
|
||||
u16 cw_max[4];
|
||||
u8 aifs[4];
|
||||
u8 flag[4];
|
||||
u16 tx_op_limit[4];
|
||||
} __attribute__ ((packed));
|
||||
|
||||
struct ipw_rsn_capabilities {
|
||||
u8 id;
|
||||
u8 length;
|
||||
|
@ -888,6 +1033,10 @@ struct ipw_cmd {
|
|||
#define STATUS_SCAN_PENDING (1<<20)
|
||||
#define STATUS_SCANNING (1<<21)
|
||||
#define STATUS_SCAN_ABORTING (1<<22)
|
||||
#define STATUS_SCAN_FORCED (1<<23)
|
||||
|
||||
#define STATUS_LED_LINK_ON (1<<24)
|
||||
#define STATUS_LED_ACT_ON (1<<25)
|
||||
|
||||
#define STATUS_INDIRECT_BYTE (1<<28) /* sysfs entry configured for access */
|
||||
#define STATUS_INDIRECT_DWORD (1<<29) /* sysfs entry configured for access */
|
||||
|
@ -899,11 +1048,15 @@ struct ipw_cmd {
|
|||
#define CFG_STATIC_ESSID (1<<1) /* Restrict assoc. to single SSID */
|
||||
#define CFG_STATIC_BSSID (1<<2) /* Restrict assoc. to single BSSID */
|
||||
#define CFG_CUSTOM_MAC (1<<3)
|
||||
#define CFG_PREAMBLE (1<<4)
|
||||
#define CFG_PREAMBLE_LONG (1<<4)
|
||||
#define CFG_ADHOC_PERSIST (1<<5)
|
||||
#define CFG_ASSOCIATE (1<<6)
|
||||
#define CFG_FIXED_RATE (1<<7)
|
||||
#define CFG_ADHOC_CREATE (1<<8)
|
||||
#define CFG_NO_LED (1<<9)
|
||||
#define CFG_BACKGROUND_SCAN (1<<10)
|
||||
#define CFG_SPEED_SCAN (1<<11)
|
||||
#define CFG_NET_STATS (1<<12)
|
||||
|
||||
#define CAP_SHARED_KEY (1<<0) /* Off = OPEN */
|
||||
#define CAP_PRIVACY_ON (1<<1) /* Off = No privacy */
|
||||
|
@ -925,13 +1078,50 @@ struct average {
|
|||
s32 sum;
|
||||
};
|
||||
|
||||
#define MAX_SPEED_SCAN 100
|
||||
#define IPW_IBSS_MAC_HASH_SIZE 31
|
||||
|
||||
struct ipw_ibss_seq {
|
||||
u8 mac[ETH_ALEN];
|
||||
u16 seq_num;
|
||||
u16 frag_num;
|
||||
unsigned long packet_time;
|
||||
struct list_head list;
|
||||
};
|
||||
|
||||
struct ipw_error_elem {
|
||||
u32 desc;
|
||||
u32 time;
|
||||
u32 blink1;
|
||||
u32 blink2;
|
||||
u32 link1;
|
||||
u32 link2;
|
||||
u32 data;
|
||||
};
|
||||
|
||||
struct ipw_event {
|
||||
u32 event;
|
||||
u32 time;
|
||||
u32 data;
|
||||
} __attribute__ ((packed));
|
||||
|
||||
struct ipw_fw_error {
|
||||
unsigned long jiffies;
|
||||
u32 status;
|
||||
u32 config;
|
||||
u32 elem_len;
|
||||
u32 log_len;
|
||||
struct ipw_error_elem *elem;
|
||||
struct ipw_event *log;
|
||||
u8 payload[0];
|
||||
} __attribute__ ((packed));
|
||||
|
||||
struct ipw_priv {
|
||||
/* ieee device used by generic ieee processing code */
|
||||
struct ieee80211_device *ieee;
|
||||
struct ieee80211_security sec;
|
||||
|
||||
/* spinlock */
|
||||
spinlock_t lock;
|
||||
struct semaphore sem;
|
||||
|
||||
/* basic pci-network driver stuff */
|
||||
struct pci_dev *pci_dev;
|
||||
|
@ -966,7 +1156,7 @@ struct ipw_priv {
|
|||
int rx_bufs_min; /**< minimum number of bufs in Rx queue */
|
||||
int rx_pend_max; /**< maximum pending buffers for one IRQ */
|
||||
u32 hcmd_seq; /**< sequence number for hcmd */
|
||||
u32 missed_beacon_threshold;
|
||||
u32 disassociate_threshold;
|
||||
u32 roaming_threshold;
|
||||
|
||||
struct ipw_associate assoc_request;
|
||||
|
@ -1007,6 +1197,8 @@ struct ipw_priv {
|
|||
u8 mac_addr[ETH_ALEN];
|
||||
u8 num_stations;
|
||||
u8 stations[MAX_STATIONS][ETH_ALEN];
|
||||
u8 short_retry_limit;
|
||||
u8 long_retry_limit;
|
||||
|
||||
u32 notif_missed_beacons;
|
||||
|
||||
|
@ -1024,17 +1216,29 @@ struct ipw_priv {
|
|||
u32 tx_packets;
|
||||
u32 quality;
|
||||
|
||||
u8 speed_scan[MAX_SPEED_SCAN];
|
||||
u8 speed_scan_pos;
|
||||
|
||||
u16 last_seq_num;
|
||||
u16 last_frag_num;
|
||||
unsigned long last_packet_time;
|
||||
struct list_head ibss_mac_hash[IPW_IBSS_MAC_HASH_SIZE];
|
||||
|
||||
/* eeprom */
|
||||
u8 eeprom[0x100]; /* 256 bytes of eeprom */
|
||||
u8 country[4];
|
||||
int eeprom_delay;
|
||||
|
||||
struct iw_statistics wstats;
|
||||
|
||||
struct iw_public_data wireless_data;
|
||||
|
||||
struct workqueue_struct *workqueue;
|
||||
|
||||
struct work_struct adhoc_check;
|
||||
struct work_struct associate;
|
||||
struct work_struct disassociate;
|
||||
struct work_struct system_config;
|
||||
struct work_struct rx_replenish;
|
||||
struct work_struct request_scan;
|
||||
struct work_struct adapter_restart;
|
||||
|
@ -1045,25 +1249,51 @@ struct ipw_priv {
|
|||
struct work_struct abort_scan;
|
||||
struct work_struct roam;
|
||||
struct work_struct scan_check;
|
||||
struct work_struct link_up;
|
||||
struct work_struct link_down;
|
||||
|
||||
struct tasklet_struct irq_tasklet;
|
||||
|
||||
/* LED related variables and work_struct */
|
||||
u8 nic_type;
|
||||
u32 led_activity_on;
|
||||
u32 led_activity_off;
|
||||
u32 led_association_on;
|
||||
u32 led_association_off;
|
||||
u32 led_ofdm_on;
|
||||
u32 led_ofdm_off;
|
||||
|
||||
struct work_struct led_link_on;
|
||||
struct work_struct led_link_off;
|
||||
struct work_struct led_act_off;
|
||||
struct work_struct merge_networks;
|
||||
|
||||
struct ipw_cmd_log *cmdlog;
|
||||
int cmdlog_len;
|
||||
int cmdlog_pos;
|
||||
|
||||
#define IPW_2200BG 1
|
||||
#define IPW_2915ABG 2
|
||||
u8 adapter;
|
||||
|
||||
#define IPW_DEFAULT_TX_POWER 0x14
|
||||
u8 tx_power;
|
||||
s8 tx_power;
|
||||
|
||||
#ifdef CONFIG_PM
|
||||
u32 pm_state[16];
|
||||
#endif
|
||||
|
||||
struct ipw_fw_error *error;
|
||||
|
||||
/* network state */
|
||||
|
||||
/* Used to pass the current INTA value from ISR to Tasklet */
|
||||
u32 isr_inta;
|
||||
|
||||
/* QoS */
|
||||
struct ipw_qos_info qos_data;
|
||||
struct work_struct qos_activate;
|
||||
/*********************************/
|
||||
|
||||
/* debugging info */
|
||||
u32 indirect_dword;
|
||||
u32 direct_dword;
|
||||
|
@ -1125,6 +1355,8 @@ do { if (ipw_debug_level & (level)) \
|
|||
#define IPW_DL_RF_KILL (1<<17)
|
||||
#define IPW_DL_FW_ERRORS (1<<18)
|
||||
|
||||
#define IPW_DL_LED (1<<19)
|
||||
|
||||
#define IPW_DL_ORD (1<<20)
|
||||
|
||||
#define IPW_DL_FRAG (1<<21)
|
||||
|
@ -1137,6 +1369,8 @@ do { if (ipw_debug_level & (level)) \
|
|||
#define IPW_DL_TRACE (1<<28)
|
||||
|
||||
#define IPW_DL_STATS (1<<29)
|
||||
#define IPW_DL_MERGE (1<<30)
|
||||
#define IPW_DL_QOS (1<<31)
|
||||
|
||||
#define IPW_ERROR(f, a...) printk(KERN_ERR DRV_NAME ": " f, ## a)
|
||||
#define IPW_WARNING(f, a...) printk(KERN_WARNING DRV_NAME ": " f, ## a)
|
||||
|
@ -1150,6 +1384,7 @@ do { if (ipw_debug_level & (level)) \
|
|||
#define IPW_DEBUG_TX(f, a...) IPW_DEBUG(IPW_DL_TX, f, ## a)
|
||||
#define IPW_DEBUG_ISR(f, a...) IPW_DEBUG(IPW_DL_ISR, f, ## a)
|
||||
#define IPW_DEBUG_MANAGEMENT(f, a...) IPW_DEBUG(IPW_DL_MANAGE, f, ## a)
|
||||
#define IPW_DEBUG_LED(f, a...) IPW_DEBUG(IPW_DL_LED, f, ## a)
|
||||
#define IPW_DEBUG_WEP(f, a...) IPW_DEBUG(IPW_DL_WEP, f, ## a)
|
||||
#define IPW_DEBUG_HC(f, a...) IPW_DEBUG(IPW_DL_HOST_COMMAND, f, ## a)
|
||||
#define IPW_DEBUG_FRAG(f, a...) IPW_DEBUG(IPW_DL_FRAG, f, ## a)
|
||||
|
@ -1163,6 +1398,8 @@ do { if (ipw_debug_level & (level)) \
|
|||
#define IPW_DEBUG_STATE(f, a...) IPW_DEBUG(IPW_DL_STATE | IPW_DL_ASSOC | IPW_DL_INFO, f, ## a)
|
||||
#define IPW_DEBUG_ASSOC(f, a...) IPW_DEBUG(IPW_DL_ASSOC | IPW_DL_INFO, f, ## a)
|
||||
#define IPW_DEBUG_STATS(f, a...) IPW_DEBUG(IPW_DL_STATS, f, ## a)
|
||||
#define IPW_DEBUG_MERGE(f, a...) IPW_DEBUG(IPW_DL_MERGE, f, ## a)
|
||||
#define IPW_DEBUG_QOS(f, a...) IPW_DEBUG(IPW_DL_QOS, f, ## a)
|
||||
|
||||
#include <linux/ctype.h>
|
||||
|
||||
|
@ -1177,59 +1414,65 @@ do { if (ipw_debug_level & (level)) \
|
|||
#define DINO_RXFIFO_DATA 0x01
|
||||
#define DINO_CONTROL_REG 0x00200000
|
||||
|
||||
#define CX2_INTA_RW 0x00000008
|
||||
#define CX2_INTA_MASK_R 0x0000000C
|
||||
#define CX2_INDIRECT_ADDR 0x00000010
|
||||
#define CX2_INDIRECT_DATA 0x00000014
|
||||
#define CX2_AUTOINC_ADDR 0x00000018
|
||||
#define CX2_AUTOINC_DATA 0x0000001C
|
||||
#define CX2_RESET_REG 0x00000020
|
||||
#define CX2_GP_CNTRL_RW 0x00000024
|
||||
#define IPW_INTA_RW 0x00000008
|
||||
#define IPW_INTA_MASK_R 0x0000000C
|
||||
#define IPW_INDIRECT_ADDR 0x00000010
|
||||
#define IPW_INDIRECT_DATA 0x00000014
|
||||
#define IPW_AUTOINC_ADDR 0x00000018
|
||||
#define IPW_AUTOINC_DATA 0x0000001C
|
||||
#define IPW_RESET_REG 0x00000020
|
||||
#define IPW_GP_CNTRL_RW 0x00000024
|
||||
|
||||
#define CX2_READ_INT_REGISTER 0xFF4
|
||||
#define IPW_READ_INT_REGISTER 0xFF4
|
||||
|
||||
#define CX2_GP_CNTRL_BIT_INIT_DONE 0x00000004
|
||||
#define IPW_GP_CNTRL_BIT_INIT_DONE 0x00000004
|
||||
|
||||
#define CX2_REGISTER_DOMAIN1_END 0x00001000
|
||||
#define CX2_SRAM_READ_INT_REGISTER 0x00000ff4
|
||||
#define IPW_REGISTER_DOMAIN1_END 0x00001000
|
||||
#define IPW_SRAM_READ_INT_REGISTER 0x00000ff4
|
||||
|
||||
#define CX2_SHARED_LOWER_BOUND 0x00000200
|
||||
#define CX2_INTERRUPT_AREA_LOWER_BOUND 0x00000f80
|
||||
#define IPW_SHARED_LOWER_BOUND 0x00000200
|
||||
#define IPW_INTERRUPT_AREA_LOWER_BOUND 0x00000f80
|
||||
|
||||
#define CX2_NIC_SRAM_LOWER_BOUND 0x00000000
|
||||
#define CX2_NIC_SRAM_UPPER_BOUND 0x00030000
|
||||
#define IPW_NIC_SRAM_LOWER_BOUND 0x00000000
|
||||
#define IPW_NIC_SRAM_UPPER_BOUND 0x00030000
|
||||
|
||||
#define CX2_BIT_INT_HOST_SRAM_READ_INT_REGISTER (1 << 29)
|
||||
#define CX2_GP_CNTRL_BIT_CLOCK_READY 0x00000001
|
||||
#define CX2_GP_CNTRL_BIT_HOST_ALLOWS_STANDBY 0x00000002
|
||||
#define IPW_BIT_INT_HOST_SRAM_READ_INT_REGISTER (1 << 29)
|
||||
#define IPW_GP_CNTRL_BIT_CLOCK_READY 0x00000001
|
||||
#define IPW_GP_CNTRL_BIT_HOST_ALLOWS_STANDBY 0x00000002
|
||||
|
||||
/*
|
||||
* RESET Register Bit Indexes
|
||||
*/
|
||||
#define CBD_RESET_REG_PRINCETON_RESET 0x00000001 /* Bit 0 (LSB) */
|
||||
#define CX2_RESET_REG_SW_RESET 0x00000080 /* Bit 7 */
|
||||
#define CX2_RESET_REG_MASTER_DISABLED 0x00000100 /* Bit 8 */
|
||||
#define CX2_RESET_REG_STOP_MASTER 0x00000200 /* Bit 9 */
|
||||
#define CX2_ARC_KESHET_CONFIG 0x08000000 /* Bit 27 */
|
||||
#define CX2_START_STANDBY 0x00000004 /* Bit 2 */
|
||||
#define CBD_RESET_REG_PRINCETON_RESET (1<<0)
|
||||
#define IPW_START_STANDBY (1<<2)
|
||||
#define IPW_ACTIVITY_LED (1<<4)
|
||||
#define IPW_ASSOCIATED_LED (1<<5)
|
||||
#define IPW_OFDM_LED (1<<6)
|
||||
#define IPW_RESET_REG_SW_RESET (1<<7)
|
||||
#define IPW_RESET_REG_MASTER_DISABLED (1<<8)
|
||||
#define IPW_RESET_REG_STOP_MASTER (1<<9)
|
||||
#define IPW_GATE_ODMA (1<<25)
|
||||
#define IPW_GATE_IDMA (1<<26)
|
||||
#define IPW_ARC_KESHET_CONFIG (1<<27)
|
||||
#define IPW_GATE_ADMA (1<<29)
|
||||
|
||||
#define CX2_CSR_CIS_UPPER_BOUND 0x00000200
|
||||
#define CX2_DOMAIN_0_END 0x1000
|
||||
#define IPW_CSR_CIS_UPPER_BOUND 0x00000200
|
||||
#define IPW_DOMAIN_0_END 0x1000
|
||||
#define CLX_MEM_BAR_SIZE 0x1000
|
||||
|
||||
#define CX2_BASEBAND_CONTROL_STATUS 0X00200000
|
||||
#define CX2_BASEBAND_TX_FIFO_WRITE 0X00200004
|
||||
#define CX2_BASEBAND_RX_FIFO_READ 0X00200004
|
||||
#define CX2_BASEBAND_CONTROL_STORE 0X00200010
|
||||
#define IPW_BASEBAND_CONTROL_STATUS 0X00200000
|
||||
#define IPW_BASEBAND_TX_FIFO_WRITE 0X00200004
|
||||
#define IPW_BASEBAND_RX_FIFO_READ 0X00200004
|
||||
#define IPW_BASEBAND_CONTROL_STORE 0X00200010
|
||||
|
||||
#define CX2_INTERNAL_CMD_EVENT 0X00300004
|
||||
#define CX2_BASEBAND_POWER_DOWN 0x00000001
|
||||
#define IPW_INTERNAL_CMD_EVENT 0X00300004
|
||||
#define IPW_BASEBAND_POWER_DOWN 0x00000001
|
||||
|
||||
#define CX2_MEM_HALT_AND_RESET 0x003000e0
|
||||
#define IPW_MEM_HALT_AND_RESET 0x003000e0
|
||||
|
||||
/* defgroup bits_halt_reset MEM_HALT_AND_RESET register bits */
|
||||
#define CX2_BIT_HALT_RESET_ON 0x80000000
|
||||
#define CX2_BIT_HALT_RESET_OFF 0x00000000
|
||||
#define IPW_BIT_HALT_RESET_ON 0x80000000
|
||||
#define IPW_BIT_HALT_RESET_OFF 0x00000000
|
||||
|
||||
#define CB_LAST_VALID 0x20000000
|
||||
#define CB_INT_ENABLED 0x40000000
|
||||
|
@ -1248,63 +1491,63 @@ do { if (ipw_debug_level & (level)) \
|
|||
#define DMA_CB_STOP_AND_ABORT 0x00000C00
|
||||
#define DMA_CB_START 0x00000100
|
||||
|
||||
#define CX2_SHARED_SRAM_SIZE 0x00030000
|
||||
#define CX2_SHARED_SRAM_DMA_CONTROL 0x00027000
|
||||
#define IPW_SHARED_SRAM_SIZE 0x00030000
|
||||
#define IPW_SHARED_SRAM_DMA_CONTROL 0x00027000
|
||||
#define CB_MAX_LENGTH 0x1FFF
|
||||
|
||||
#define CX2_HOST_EEPROM_DATA_SRAM_SIZE 0xA18
|
||||
#define CX2_EEPROM_IMAGE_SIZE 0x100
|
||||
#define IPW_HOST_EEPROM_DATA_SRAM_SIZE 0xA18
|
||||
#define IPW_EEPROM_IMAGE_SIZE 0x100
|
||||
|
||||
/* DMA defs */
|
||||
#define CX2_DMA_I_CURRENT_CB 0x003000D0
|
||||
#define CX2_DMA_O_CURRENT_CB 0x003000D4
|
||||
#define CX2_DMA_I_DMA_CONTROL 0x003000A4
|
||||
#define CX2_DMA_I_CB_BASE 0x003000A0
|
||||
#define IPW_DMA_I_CURRENT_CB 0x003000D0
|
||||
#define IPW_DMA_O_CURRENT_CB 0x003000D4
|
||||
#define IPW_DMA_I_DMA_CONTROL 0x003000A4
|
||||
#define IPW_DMA_I_CB_BASE 0x003000A0
|
||||
|
||||
#define CX2_TX_CMD_QUEUE_BD_BASE (0x00000200)
|
||||
#define CX2_TX_CMD_QUEUE_BD_SIZE (0x00000204)
|
||||
#define CX2_TX_QUEUE_0_BD_BASE (0x00000208)
|
||||
#define CX2_TX_QUEUE_0_BD_SIZE (0x0000020C)
|
||||
#define CX2_TX_QUEUE_1_BD_BASE (0x00000210)
|
||||
#define CX2_TX_QUEUE_1_BD_SIZE (0x00000214)
|
||||
#define CX2_TX_QUEUE_2_BD_BASE (0x00000218)
|
||||
#define CX2_TX_QUEUE_2_BD_SIZE (0x0000021C)
|
||||
#define CX2_TX_QUEUE_3_BD_BASE (0x00000220)
|
||||
#define CX2_TX_QUEUE_3_BD_SIZE (0x00000224)
|
||||
#define CX2_RX_BD_BASE (0x00000240)
|
||||
#define CX2_RX_BD_SIZE (0x00000244)
|
||||
#define CX2_RFDS_TABLE_LOWER (0x00000500)
|
||||
#define IPW_TX_CMD_QUEUE_BD_BASE 0x00000200
|
||||
#define IPW_TX_CMD_QUEUE_BD_SIZE 0x00000204
|
||||
#define IPW_TX_QUEUE_0_BD_BASE 0x00000208
|
||||
#define IPW_TX_QUEUE_0_BD_SIZE (0x0000020C)
|
||||
#define IPW_TX_QUEUE_1_BD_BASE 0x00000210
|
||||
#define IPW_TX_QUEUE_1_BD_SIZE 0x00000214
|
||||
#define IPW_TX_QUEUE_2_BD_BASE 0x00000218
|
||||
#define IPW_TX_QUEUE_2_BD_SIZE (0x0000021C)
|
||||
#define IPW_TX_QUEUE_3_BD_BASE 0x00000220
|
||||
#define IPW_TX_QUEUE_3_BD_SIZE 0x00000224
|
||||
#define IPW_RX_BD_BASE 0x00000240
|
||||
#define IPW_RX_BD_SIZE 0x00000244
|
||||
#define IPW_RFDS_TABLE_LOWER 0x00000500
|
||||
|
||||
#define CX2_TX_CMD_QUEUE_READ_INDEX (0x00000280)
|
||||
#define CX2_TX_QUEUE_0_READ_INDEX (0x00000284)
|
||||
#define CX2_TX_QUEUE_1_READ_INDEX (0x00000288)
|
||||
#define CX2_TX_QUEUE_2_READ_INDEX (0x0000028C)
|
||||
#define CX2_TX_QUEUE_3_READ_INDEX (0x00000290)
|
||||
#define CX2_RX_READ_INDEX (0x000002A0)
|
||||
#define IPW_TX_CMD_QUEUE_READ_INDEX 0x00000280
|
||||
#define IPW_TX_QUEUE_0_READ_INDEX 0x00000284
|
||||
#define IPW_TX_QUEUE_1_READ_INDEX 0x00000288
|
||||
#define IPW_TX_QUEUE_2_READ_INDEX (0x0000028C)
|
||||
#define IPW_TX_QUEUE_3_READ_INDEX 0x00000290
|
||||
#define IPW_RX_READ_INDEX (0x000002A0)
|
||||
|
||||
#define CX2_TX_CMD_QUEUE_WRITE_INDEX (0x00000F80)
|
||||
#define CX2_TX_QUEUE_0_WRITE_INDEX (0x00000F84)
|
||||
#define CX2_TX_QUEUE_1_WRITE_INDEX (0x00000F88)
|
||||
#define CX2_TX_QUEUE_2_WRITE_INDEX (0x00000F8C)
|
||||
#define CX2_TX_QUEUE_3_WRITE_INDEX (0x00000F90)
|
||||
#define CX2_RX_WRITE_INDEX (0x00000FA0)
|
||||
#define IPW_TX_CMD_QUEUE_WRITE_INDEX (0x00000F80)
|
||||
#define IPW_TX_QUEUE_0_WRITE_INDEX (0x00000F84)
|
||||
#define IPW_TX_QUEUE_1_WRITE_INDEX (0x00000F88)
|
||||
#define IPW_TX_QUEUE_2_WRITE_INDEX (0x00000F8C)
|
||||
#define IPW_TX_QUEUE_3_WRITE_INDEX (0x00000F90)
|
||||
#define IPW_RX_WRITE_INDEX (0x00000FA0)
|
||||
|
||||
/*
|
||||
* EEPROM Related Definitions
|
||||
*/
|
||||
|
||||
#define IPW_EEPROM_DATA_SRAM_ADDRESS (CX2_SHARED_LOWER_BOUND + 0x814)
|
||||
#define IPW_EEPROM_DATA_SRAM_SIZE (CX2_SHARED_LOWER_BOUND + 0x818)
|
||||
#define IPW_EEPROM_LOAD_DISABLE (CX2_SHARED_LOWER_BOUND + 0x81C)
|
||||
#define IPW_EEPROM_DATA (CX2_SHARED_LOWER_BOUND + 0x820)
|
||||
#define IPW_EEPROM_UPPER_ADDRESS (CX2_SHARED_LOWER_BOUND + 0x9E0)
|
||||
#define IPW_EEPROM_DATA_SRAM_ADDRESS (IPW_SHARED_LOWER_BOUND + 0x814)
|
||||
#define IPW_EEPROM_DATA_SRAM_SIZE (IPW_SHARED_LOWER_BOUND + 0x818)
|
||||
#define IPW_EEPROM_LOAD_DISABLE (IPW_SHARED_LOWER_BOUND + 0x81C)
|
||||
#define IPW_EEPROM_DATA (IPW_SHARED_LOWER_BOUND + 0x820)
|
||||
#define IPW_EEPROM_UPPER_ADDRESS (IPW_SHARED_LOWER_BOUND + 0x9E0)
|
||||
|
||||
#define IPW_STATION_TABLE_LOWER (CX2_SHARED_LOWER_BOUND + 0xA0C)
|
||||
#define IPW_STATION_TABLE_UPPER (CX2_SHARED_LOWER_BOUND + 0xB0C)
|
||||
#define IPW_REQUEST_ATIM (CX2_SHARED_LOWER_BOUND + 0xB0C)
|
||||
#define IPW_ATIM_SENT (CX2_SHARED_LOWER_BOUND + 0xB10)
|
||||
#define IPW_WHO_IS_AWAKE (CX2_SHARED_LOWER_BOUND + 0xB14)
|
||||
#define IPW_DURING_ATIM_WINDOW (CX2_SHARED_LOWER_BOUND + 0xB18)
|
||||
#define IPW_STATION_TABLE_LOWER (IPW_SHARED_LOWER_BOUND + 0xA0C)
|
||||
#define IPW_STATION_TABLE_UPPER (IPW_SHARED_LOWER_BOUND + 0xB0C)
|
||||
#define IPW_REQUEST_ATIM (IPW_SHARED_LOWER_BOUND + 0xB0C)
|
||||
#define IPW_ATIM_SENT (IPW_SHARED_LOWER_BOUND + 0xB10)
|
||||
#define IPW_WHO_IS_AWAKE (IPW_SHARED_LOWER_BOUND + 0xB14)
|
||||
#define IPW_DURING_ATIM_WINDOW (IPW_SHARED_LOWER_BOUND + 0xB18)
|
||||
|
||||
#define MSB 1
|
||||
#define LSB 0
|
||||
|
@ -1326,15 +1569,15 @@ do { if (ipw_debug_level & (level)) \
|
|||
#define EEPROM_HW_VERSION (GET_EEPROM_ADDR(0x72,LSB)) /* 2 bytes */
|
||||
|
||||
/* NIC type as found in the one byte EEPROM_NIC_TYPE offset*/
|
||||
#define EEPROM_NIC_TYPE_STANDARD 0
|
||||
#define EEPROM_NIC_TYPE_DELL 1
|
||||
#define EEPROM_NIC_TYPE_FUJITSU 2
|
||||
#define EEPROM_NIC_TYPE_IBM 3
|
||||
#define EEPROM_NIC_TYPE_HP 4
|
||||
#define EEPROM_NIC_TYPE_0 0
|
||||
#define EEPROM_NIC_TYPE_1 1
|
||||
#define EEPROM_NIC_TYPE_2 2
|
||||
#define EEPROM_NIC_TYPE_3 3
|
||||
#define EEPROM_NIC_TYPE_4 4
|
||||
|
||||
#define FW_MEM_REG_LOWER_BOUND 0x00300000
|
||||
#define FW_MEM_REG_EEPROM_ACCESS (FW_MEM_REG_LOWER_BOUND + 0x40)
|
||||
|
||||
#define IPW_EVENT_REG (FW_MEM_REG_LOWER_BOUND + 0x04)
|
||||
#define EEPROM_BIT_SK (1<<0)
|
||||
#define EEPROM_BIT_CS (1<<1)
|
||||
#define EEPROM_BIT_DI (1<<2)
|
||||
|
@ -1343,50 +1586,47 @@ do { if (ipw_debug_level & (level)) \
|
|||
#define EEPROM_CMD_READ 0x2
|
||||
|
||||
/* Interrupts masks */
|
||||
#define CX2_INTA_NONE 0x00000000
|
||||
#define IPW_INTA_NONE 0x00000000
|
||||
|
||||
#define CX2_INTA_BIT_RX_TRANSFER 0x00000002
|
||||
#define CX2_INTA_BIT_STATUS_CHANGE 0x00000010
|
||||
#define CX2_INTA_BIT_BEACON_PERIOD_EXPIRED 0x00000020
|
||||
#define IPW_INTA_BIT_RX_TRANSFER 0x00000002
|
||||
#define IPW_INTA_BIT_STATUS_CHANGE 0x00000010
|
||||
#define IPW_INTA_BIT_BEACON_PERIOD_EXPIRED 0x00000020
|
||||
|
||||
//Inta Bits for CF
|
||||
#define CX2_INTA_BIT_TX_CMD_QUEUE 0x00000800
|
||||
#define CX2_INTA_BIT_TX_QUEUE_1 0x00001000
|
||||
#define CX2_INTA_BIT_TX_QUEUE_2 0x00002000
|
||||
#define CX2_INTA_BIT_TX_QUEUE_3 0x00004000
|
||||
#define CX2_INTA_BIT_TX_QUEUE_4 0x00008000
|
||||
#define IPW_INTA_BIT_TX_CMD_QUEUE 0x00000800
|
||||
#define IPW_INTA_BIT_TX_QUEUE_1 0x00001000
|
||||
#define IPW_INTA_BIT_TX_QUEUE_2 0x00002000
|
||||
#define IPW_INTA_BIT_TX_QUEUE_3 0x00004000
|
||||
#define IPW_INTA_BIT_TX_QUEUE_4 0x00008000
|
||||
|
||||
#define CX2_INTA_BIT_SLAVE_MODE_HOST_CMD_DONE 0x00010000
|
||||
#define IPW_INTA_BIT_SLAVE_MODE_HOST_CMD_DONE 0x00010000
|
||||
|
||||
#define CX2_INTA_BIT_PREPARE_FOR_POWER_DOWN 0x00100000
|
||||
#define CX2_INTA_BIT_POWER_DOWN 0x00200000
|
||||
#define IPW_INTA_BIT_PREPARE_FOR_POWER_DOWN 0x00100000
|
||||
#define IPW_INTA_BIT_POWER_DOWN 0x00200000
|
||||
|
||||
#define CX2_INTA_BIT_FW_INITIALIZATION_DONE 0x01000000
|
||||
#define CX2_INTA_BIT_FW_CARD_DISABLE_PHY_OFF_DONE 0x02000000
|
||||
#define CX2_INTA_BIT_RF_KILL_DONE 0x04000000
|
||||
#define CX2_INTA_BIT_FATAL_ERROR 0x40000000
|
||||
#define CX2_INTA_BIT_PARITY_ERROR 0x80000000
|
||||
#define IPW_INTA_BIT_FW_INITIALIZATION_DONE 0x01000000
|
||||
#define IPW_INTA_BIT_FW_CARD_DISABLE_PHY_OFF_DONE 0x02000000
|
||||
#define IPW_INTA_BIT_RF_KILL_DONE 0x04000000
|
||||
#define IPW_INTA_BIT_FATAL_ERROR 0x40000000
|
||||
#define IPW_INTA_BIT_PARITY_ERROR 0x80000000
|
||||
|
||||
/* Interrupts enabled at init time. */
|
||||
#define CX2_INTA_MASK_ALL \
|
||||
(CX2_INTA_BIT_TX_QUEUE_1 | \
|
||||
CX2_INTA_BIT_TX_QUEUE_2 | \
|
||||
CX2_INTA_BIT_TX_QUEUE_3 | \
|
||||
CX2_INTA_BIT_TX_QUEUE_4 | \
|
||||
CX2_INTA_BIT_TX_CMD_QUEUE | \
|
||||
CX2_INTA_BIT_RX_TRANSFER | \
|
||||
CX2_INTA_BIT_FATAL_ERROR | \
|
||||
CX2_INTA_BIT_PARITY_ERROR | \
|
||||
CX2_INTA_BIT_STATUS_CHANGE | \
|
||||
CX2_INTA_BIT_FW_INITIALIZATION_DONE | \
|
||||
CX2_INTA_BIT_BEACON_PERIOD_EXPIRED | \
|
||||
CX2_INTA_BIT_SLAVE_MODE_HOST_CMD_DONE | \
|
||||
CX2_INTA_BIT_PREPARE_FOR_POWER_DOWN | \
|
||||
CX2_INTA_BIT_POWER_DOWN | \
|
||||
CX2_INTA_BIT_RF_KILL_DONE )
|
||||
|
||||
#define IPWSTATUS_ERROR_LOG (CX2_SHARED_LOWER_BOUND + 0x410)
|
||||
#define IPW_EVENT_LOG (CX2_SHARED_LOWER_BOUND + 0x414)
|
||||
#define IPW_INTA_MASK_ALL \
|
||||
(IPW_INTA_BIT_TX_QUEUE_1 | \
|
||||
IPW_INTA_BIT_TX_QUEUE_2 | \
|
||||
IPW_INTA_BIT_TX_QUEUE_3 | \
|
||||
IPW_INTA_BIT_TX_QUEUE_4 | \
|
||||
IPW_INTA_BIT_TX_CMD_QUEUE | \
|
||||
IPW_INTA_BIT_RX_TRANSFER | \
|
||||
IPW_INTA_BIT_FATAL_ERROR | \
|
||||
IPW_INTA_BIT_PARITY_ERROR | \
|
||||
IPW_INTA_BIT_STATUS_CHANGE | \
|
||||
IPW_INTA_BIT_FW_INITIALIZATION_DONE | \
|
||||
IPW_INTA_BIT_BEACON_PERIOD_EXPIRED | \
|
||||
IPW_INTA_BIT_SLAVE_MODE_HOST_CMD_DONE | \
|
||||
IPW_INTA_BIT_PREPARE_FOR_POWER_DOWN | \
|
||||
IPW_INTA_BIT_POWER_DOWN | \
|
||||
IPW_INTA_BIT_RF_KILL_DONE )
|
||||
|
||||
/* FW event log definitions */
|
||||
#define EVENT_ELEM_SIZE (3 * sizeof(u32))
|
||||
|
@ -1396,6 +1636,11 @@ do { if (ipw_debug_level & (level)) \
|
|||
#define ERROR_ELEM_SIZE (7 * sizeof(u32))
|
||||
#define ERROR_START_OFFSET (1 * sizeof(u32))
|
||||
|
||||
/* TX power level (dbm) */
|
||||
#define IPW_TX_POWER_MIN -12
|
||||
#define IPW_TX_POWER_MAX 20
|
||||
#define IPW_TX_POWER_DEFAULT IPW_TX_POWER_MAX
|
||||
|
||||
enum {
|
||||
IPW_FW_ERROR_OK = 0,
|
||||
IPW_FW_ERROR_FAIL,
|
||||
|
@ -1408,8 +1653,8 @@ enum {
|
|||
IPW_FW_ERROR_ALLOC_FAIL,
|
||||
IPW_FW_ERROR_DMA_UNDERRUN,
|
||||
IPW_FW_ERROR_DMA_STATUS,
|
||||
IPW_FW_ERROR_DINOSTATUS_ERROR,
|
||||
IPW_FW_ERROR_EEPROMSTATUS_ERROR,
|
||||
IPW_FW_ERROR_DINO_ERROR,
|
||||
IPW_FW_ERROR_EEPROM_ERROR,
|
||||
IPW_FW_ERROR_SYSASSERT,
|
||||
IPW_FW_ERROR_FATAL_ERROR
|
||||
};
|
||||
|
@ -1425,6 +1670,8 @@ enum {
|
|||
#define HC_IBSS_RECONF 4
|
||||
#define HC_DISASSOC_QUIET 5
|
||||
|
||||
#define HC_QOS_SUPPORT_ASSOC 0x01
|
||||
|
||||
#define IPW_RATE_CAPABILITIES 1
|
||||
#define IPW_RATE_CONNECT 0
|
||||
|
||||
|
@ -1595,18 +1842,20 @@ enum {
|
|||
IPW_ORD_TABLE_7_LAST
|
||||
};
|
||||
|
||||
#define IPW_ORDINALS_TABLE_LOWER (CX2_SHARED_LOWER_BOUND + 0x500)
|
||||
#define IPW_ORDINALS_TABLE_0 (CX2_SHARED_LOWER_BOUND + 0x180)
|
||||
#define IPW_ORDINALS_TABLE_1 (CX2_SHARED_LOWER_BOUND + 0x184)
|
||||
#define IPW_ORDINALS_TABLE_2 (CX2_SHARED_LOWER_BOUND + 0x188)
|
||||
#define IPW_MEM_FIXED_OVERRIDE (CX2_SHARED_LOWER_BOUND + 0x41C)
|
||||
#define IPW_ERROR_LOG (IPW_SHARED_LOWER_BOUND + 0x410)
|
||||
#define IPW_EVENT_LOG (IPW_SHARED_LOWER_BOUND + 0x414)
|
||||
#define IPW_ORDINALS_TABLE_LOWER (IPW_SHARED_LOWER_BOUND + 0x500)
|
||||
#define IPW_ORDINALS_TABLE_0 (IPW_SHARED_LOWER_BOUND + 0x180)
|
||||
#define IPW_ORDINALS_TABLE_1 (IPW_SHARED_LOWER_BOUND + 0x184)
|
||||
#define IPW_ORDINALS_TABLE_2 (IPW_SHARED_LOWER_BOUND + 0x188)
|
||||
#define IPW_MEM_FIXED_OVERRIDE (IPW_SHARED_LOWER_BOUND + 0x41C)
|
||||
|
||||
struct ipw_fixed_rate {
|
||||
u16 tx_rates;
|
||||
u16 reserved;
|
||||
} __attribute__ ((packed));
|
||||
|
||||
#define CX2_INDIRECT_ADDR_MASK (~0x3ul)
|
||||
#define IPW_INDIRECT_ADDR_MASK (~0x3ul)
|
||||
|
||||
struct host_cmd {
|
||||
u8 cmd;
|
||||
|
@ -1615,6 +1864,12 @@ struct host_cmd {
|
|||
u32 param[TFD_CMD_IMMEDIATE_PAYLOAD_LENGTH];
|
||||
} __attribute__ ((packed));
|
||||
|
||||
struct ipw_cmd_log {
|
||||
unsigned long jiffies;
|
||||
int retcode;
|
||||
struct host_cmd cmd;
|
||||
};
|
||||
|
||||
#define CFG_BT_COEXISTENCE_MIN 0x00
|
||||
#define CFG_BT_COEXISTENCE_DEFER 0x02
|
||||
#define CFG_BT_COEXISTENCE_KILL 0x04
|
||||
|
@ -1643,15 +1898,6 @@ struct host_cmd {
|
|||
#define REG_CHANNEL_MASK 0x00003FFF
|
||||
#define IPW_IBSS_11B_DEFAULT_MASK 0x87ff
|
||||
|
||||
static const long ipw_frequencies[] = {
|
||||
2412, 2417, 2422, 2427,
|
||||
2432, 2437, 2442, 2447,
|
||||
2452, 2457, 2462, 2467,
|
||||
2472, 2484
|
||||
};
|
||||
|
||||
#define FREQ_COUNT ARRAY_SIZE(ipw_frequencies)
|
||||
|
||||
#define IPW_MAX_CONFIG_RETRIES 10
|
||||
|
||||
static inline u32 frame_hdr_len(struct ieee80211_hdr_4addr *hdr)
|
||||
|
|
Loading…
Reference in a new issue