Automatic merge of /spare/repo/netdev-2.6 branch we18-ieee80211
This commit is contained in:
@@ -137,6 +137,111 @@ config PCMCIA_RAYCS
|
||||
comment "Wireless 802.11b ISA/PCI cards support"
|
||||
depends on NET_RADIO && (ISA || PCI || PPC_PMAC || PCMCIA)
|
||||
|
||||
config IPW2100
|
||||
tristate "Intel PRO/Wireless 2100 Network Connection"
|
||||
depends on NET_RADIO && PCI && IEEE80211
|
||||
select FW_LOADER
|
||||
---help---
|
||||
A driver for the Intel PRO/Wireless 2100 Network
|
||||
Connection 802.11b wireless network adapter.
|
||||
|
||||
See <file:Documentation/networking/README.ipw2100> for information on
|
||||
the capabilities currently enabled in this driver and for tips
|
||||
for debugging issues and problems.
|
||||
|
||||
In order to use this driver, you will need a firmware image for it.
|
||||
You can obtain the firmware from
|
||||
<http://ipw2100.sf.net/>. Once you have the firmware image, you
|
||||
will need to place it in /etc/firmware.
|
||||
|
||||
You will also very likely need the Wireless Tools in order to
|
||||
configure your card:
|
||||
|
||||
<http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Tools.html>.
|
||||
|
||||
If you want to compile the driver as a module ( = code which can be
|
||||
inserted in and remvoed from the running kernel whenever you want),
|
||||
say M here and read <file:Documentation/modules.txt>. The module
|
||||
will be called ipw2100.ko.
|
||||
|
||||
config IPW2100_PROMISC
|
||||
bool "Enable promiscuous mode"
|
||||
depends on IPW2100
|
||||
---help---
|
||||
Enables promiscuous/monitor mode support for the ipw2100 driver.
|
||||
With this feature compiled into the driver, you can switch to
|
||||
promiscuous mode via the Wireless Tool's Monitor mode. While in this
|
||||
mode, no packets can be sent.
|
||||
|
||||
config IPW_DEBUG
|
||||
bool "Enable full debugging output in IPW2100 module."
|
||||
depends on IPW2100
|
||||
---help---
|
||||
This option will enable debug tracing output for the IPW2100.
|
||||
|
||||
This will result in the kernel module being ~60k larger. You can
|
||||
control which debug output is sent to the kernel log by setting the
|
||||
value in
|
||||
|
||||
/sys/bus/pci/drivers/ipw2100/debug_level
|
||||
|
||||
This entry will only exist if this option is enabled.
|
||||
|
||||
If you are not trying to debug or develop the IPW2100 driver, you
|
||||
most likely want to say N here.
|
||||
|
||||
config IPW2200
|
||||
tristate "Intel PRO/Wireless 2200BG and 2915ABG Network Connection"
|
||||
depends on NET_RADIO && PCI
|
||||
select FW_LOADER
|
||||
select IEEE80211
|
||||
---help---
|
||||
A driver for the Intel PRO/Wireless 2200BG and 2915ABG Network
|
||||
Connection adapters.
|
||||
|
||||
See <file:Documentation/networking/README.ipw2200> for
|
||||
information on the capabilities currently enabled in this
|
||||
driver and for tips for debugging issues and problems.
|
||||
|
||||
In order to use this driver, you will need a firmware image for it.
|
||||
You can obtain the firmware from
|
||||
<http://ipw2200.sf.net/>. See the above referenced README.ipw2200
|
||||
for information on where to install the firmare images.
|
||||
|
||||
You will also very likely need the Wireless Tools in order to
|
||||
configure your card:
|
||||
|
||||
<http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Tools.html>.
|
||||
|
||||
If you want to compile the driver as a module ( = code which can be
|
||||
inserted in and remvoed from the running kernel whenever you want),
|
||||
say M here and read <file:Documentation/modules.txt>. The module
|
||||
will be called ipw2200.ko.
|
||||
|
||||
config IPW_DEBUG
|
||||
bool "Enable full debugging output in IPW2200 module."
|
||||
depends on IPW2200
|
||||
---help---
|
||||
This option will enable debug tracing output for the IPW2200.
|
||||
|
||||
This will result in the kernel module being ~100k larger. You can
|
||||
control which debug output is sent to the kernel log by setting the
|
||||
value in
|
||||
|
||||
/sys/bus/pci/drivers/ipw2200/debug_level
|
||||
|
||||
This entry will only exist if this option is enabled.
|
||||
|
||||
To set a value, simply echo an 8-byte hex value to the same file:
|
||||
|
||||
% echo 0x00000FFO > /sys/bus/pci/drivers/ipw2200/debug_level
|
||||
|
||||
You can find the list of debug mask values in
|
||||
drivers/net/wireless/ipw2200.h
|
||||
|
||||
If you are not trying to debug or develop the IPW2200 driver, you
|
||||
most likely want to say N here.
|
||||
|
||||
config AIRO
|
||||
tristate "Cisco/Aironet 34X/35X/4500/4800 ISA and PCI cards"
|
||||
depends on NET_RADIO && ISA && (PCI || BROKEN)
|
||||
|
@@ -2,6 +2,10 @@
|
||||
# Makefile for the Linux Wireless network device drivers.
|
||||
#
|
||||
|
||||
obj-$(CONFIG_IPW2100) += ipw2100.o
|
||||
|
||||
obj-$(CONFIG_IPW2200) += ipw2200.o
|
||||
|
||||
obj-$(CONFIG_STRIP) += strip.o
|
||||
obj-$(CONFIG_ARLAN) += arlan.o
|
||||
|
||||
|
@@ -68,7 +68,7 @@
|
||||
#include <linux/device.h>
|
||||
#include <linux/moduleparam.h>
|
||||
#include <linux/firmware.h>
|
||||
#include "ieee802_11.h"
|
||||
#include <net/ieee80211.h>
|
||||
#include "atmel.h"
|
||||
|
||||
#define DRIVER_MAJOR 0
|
||||
@@ -618,12 +618,12 @@ static int atmel_lock_mac(struct atmel_private *priv);
|
||||
static void atmel_wmem32(struct atmel_private *priv, u16 pos, u32 data);
|
||||
static void atmel_command_irq(struct atmel_private *priv);
|
||||
static int atmel_validate_channel(struct atmel_private *priv, int channel);
|
||||
static void atmel_management_frame(struct atmel_private *priv, struct ieee802_11_hdr *header,
|
||||
static void atmel_management_frame(struct atmel_private *priv, struct ieee80211_hdr *header,
|
||||
u16 frame_len, u8 rssi);
|
||||
static void atmel_management_timer(u_long a);
|
||||
static void atmel_send_command(struct atmel_private *priv, int command, void *cmd, int cmd_size);
|
||||
static int atmel_send_command_wait(struct atmel_private *priv, int command, void *cmd, int cmd_size);
|
||||
static void atmel_transmit_management_frame(struct atmel_private *priv, struct ieee802_11_hdr *header,
|
||||
static void atmel_transmit_management_frame(struct atmel_private *priv, struct ieee80211_hdr *header,
|
||||
u8 *body, int body_len);
|
||||
|
||||
static u8 atmel_get_mib8(struct atmel_private *priv, u8 type, u8 index);
|
||||
@@ -827,7 +827,7 @@ static void tx_update_descriptor(struct atmel_private *priv, int is_bcast, u16 l
|
||||
static int start_tx (struct sk_buff *skb, struct net_device *dev)
|
||||
{
|
||||
struct atmel_private *priv = netdev_priv(dev);
|
||||
struct ieee802_11_hdr header;
|
||||
struct ieee80211_hdr header;
|
||||
unsigned long flags;
|
||||
u16 buff, frame_ctl, len = (ETH_ZLEN < skb->len) ? skb->len : ETH_ZLEN;
|
||||
u8 SNAP_RFC1024[6] = {0xaa, 0xaa, 0x03, 0x00, 0x00, 0x00};
|
||||
@@ -863,17 +863,17 @@ static int start_tx (struct sk_buff *skb, struct net_device *dev)
|
||||
return 1;
|
||||
}
|
||||
|
||||
frame_ctl = IEEE802_11_FTYPE_DATA;
|
||||
frame_ctl = IEEE80211_FTYPE_DATA;
|
||||
header.duration_id = 0;
|
||||
header.seq_ctl = 0;
|
||||
if (priv->wep_is_on)
|
||||
frame_ctl |= IEEE802_11_FCTL_WEP;
|
||||
frame_ctl |= IEEE80211_FCTL_WEP;
|
||||
if (priv->operating_mode == IW_MODE_ADHOC) {
|
||||
memcpy(&header.addr1, skb->data, 6);
|
||||
memcpy(&header.addr2, dev->dev_addr, 6);
|
||||
memcpy(&header.addr3, priv->BSSID, 6);
|
||||
} else {
|
||||
frame_ctl |= IEEE802_11_FCTL_TODS;
|
||||
frame_ctl |= IEEE80211_FCTL_TODS;
|
||||
memcpy(&header.addr1, priv->CurrentBSSID, 6);
|
||||
memcpy(&header.addr2, dev->dev_addr, 6);
|
||||
memcpy(&header.addr3, skb->data, 6);
|
||||
@@ -902,7 +902,7 @@ static int start_tx (struct sk_buff *skb, struct net_device *dev)
|
||||
}
|
||||
|
||||
static void atmel_transmit_management_frame(struct atmel_private *priv,
|
||||
struct ieee802_11_hdr *header,
|
||||
struct ieee80211_hdr *header,
|
||||
u8 *body, int body_len)
|
||||
{
|
||||
u16 buff;
|
||||
@@ -917,7 +917,7 @@ static void atmel_transmit_management_frame(struct atmel_private *priv,
|
||||
tx_update_descriptor(priv, header->addr1[0] & 0x01, len, buff, TX_PACKET_TYPE_MGMT);
|
||||
}
|
||||
|
||||
static void fast_rx_path(struct atmel_private *priv, struct ieee802_11_hdr *header,
|
||||
static void fast_rx_path(struct atmel_private *priv, struct ieee80211_hdr *header,
|
||||
u16 msdu_size, u16 rx_packet_loc, u32 crc)
|
||||
{
|
||||
/* fast path: unfragmented packet copy directly into skbuf */
|
||||
@@ -955,7 +955,7 @@ static void fast_rx_path(struct atmel_private *priv, struct ieee802_11_hdr *head
|
||||
}
|
||||
|
||||
memcpy(skbp, header->addr1, 6); /* destination address */
|
||||
if (le16_to_cpu(header->frame_ctl) & IEEE802_11_FCTL_FROMDS)
|
||||
if (le16_to_cpu(header->frame_ctl) & IEEE80211_FCTL_FROMDS)
|
||||
memcpy(&skbp[6], header->addr3, 6);
|
||||
else
|
||||
memcpy(&skbp[6], header->addr2, 6); /* source address */
|
||||
@@ -990,14 +990,14 @@ static int probe_crc(struct atmel_private *priv, u16 packet_loc, u16 msdu_size)
|
||||
return (crc ^ 0xffffffff) == netcrc;
|
||||
}
|
||||
|
||||
static void frag_rx_path(struct atmel_private *priv, struct ieee802_11_hdr *header,
|
||||
static void frag_rx_path(struct atmel_private *priv, struct ieee80211_hdr *header,
|
||||
u16 msdu_size, u16 rx_packet_loc, u32 crc, u16 seq_no, u8 frag_no, int more_frags)
|
||||
{
|
||||
u8 mac4[6];
|
||||
u8 source[6];
|
||||
struct sk_buff *skb;
|
||||
|
||||
if (le16_to_cpu(header->frame_ctl) & IEEE802_11_FCTL_FROMDS)
|
||||
if (le16_to_cpu(header->frame_ctl) & IEEE80211_FCTL_FROMDS)
|
||||
memcpy(source, header->addr3, 6);
|
||||
else
|
||||
memcpy(source, header->addr2, 6);
|
||||
@@ -1082,7 +1082,7 @@ static void frag_rx_path(struct atmel_private *priv, struct ieee802_11_hdr *head
|
||||
static void rx_done_irq(struct atmel_private *priv)
|
||||
{
|
||||
int i;
|
||||
struct ieee802_11_hdr header;
|
||||
struct ieee80211_hdr header;
|
||||
|
||||
for (i = 0;
|
||||
atmel_rmem8(priv, atmel_rx(priv, RX_DESC_FLAGS_OFFSET, priv->rx_desc_head)) == RX_DESC_FLAG_VALID &&
|
||||
@@ -1117,7 +1117,7 @@ static void rx_done_irq(struct atmel_private *priv)
|
||||
/* probe for CRC use here if needed once five packets have arrived with
|
||||
the same crc status, we assume we know what's happening and stop probing */
|
||||
if (priv->probe_crc) {
|
||||
if (!priv->wep_is_on || !(frame_ctl & IEEE802_11_FCTL_WEP)) {
|
||||
if (!priv->wep_is_on || !(frame_ctl & IEEE80211_FCTL_WEP)) {
|
||||
priv->do_rx_crc = probe_crc(priv, rx_packet_loc, msdu_size);
|
||||
} else {
|
||||
priv->do_rx_crc = probe_crc(priv, rx_packet_loc + 24, msdu_size - 24);
|
||||
@@ -1132,16 +1132,16 @@ static void rx_done_irq(struct atmel_private *priv)
|
||||
}
|
||||
|
||||
/* don't CRC header when WEP in use */
|
||||
if (priv->do_rx_crc && (!priv->wep_is_on || !(frame_ctl & IEEE802_11_FCTL_WEP))) {
|
||||
if (priv->do_rx_crc && (!priv->wep_is_on || !(frame_ctl & IEEE80211_FCTL_WEP))) {
|
||||
crc = crc32_le(0xffffffff, (unsigned char *)&header, 24);
|
||||
}
|
||||
msdu_size -= 24; /* header */
|
||||
|
||||
if ((frame_ctl & IEEE802_11_FCTL_FTYPE) == IEEE802_11_FTYPE_DATA) {
|
||||
if ((frame_ctl & IEEE80211_FCTL_FTYPE) == IEEE80211_FTYPE_DATA) {
|
||||
|
||||
int more_fragments = frame_ctl & IEEE802_11_FCTL_MOREFRAGS;
|
||||
u8 packet_fragment_no = seq_control & IEEE802_11_SCTL_FRAG;
|
||||
u16 packet_sequence_no = (seq_control & IEEE802_11_SCTL_SEQ) >> 4;
|
||||
int more_fragments = frame_ctl & IEEE80211_FCTL_MOREFRAGS;
|
||||
u8 packet_fragment_no = seq_control & IEEE80211_SCTL_FRAG;
|
||||
u16 packet_sequence_no = (seq_control & IEEE80211_SCTL_SEQ) >> 4;
|
||||
|
||||
if (!more_fragments && packet_fragment_no == 0 ) {
|
||||
fast_rx_path(priv, &header, msdu_size, rx_packet_loc, crc);
|
||||
@@ -1151,7 +1151,7 @@ static void rx_done_irq(struct atmel_private *priv)
|
||||
}
|
||||
}
|
||||
|
||||
if ((frame_ctl & IEEE802_11_FCTL_FTYPE) == IEEE802_11_FTYPE_MGMT) {
|
||||
if ((frame_ctl & IEEE80211_FCTL_FTYPE) == IEEE80211_FTYPE_MGMT) {
|
||||
/* copy rest of packet into buffer */
|
||||
atmel_copy_to_host(priv->dev, (unsigned char *)&priv->rx_buf, rx_packet_loc + 24, msdu_size);
|
||||
|
||||
@@ -2663,10 +2663,10 @@ static void handle_beacon_probe(struct atmel_private *priv, u16 capability, u8 c
|
||||
|
||||
static void send_authentication_request(struct atmel_private *priv, u8 *challenge, int challenge_len)
|
||||
{
|
||||
struct ieee802_11_hdr header;
|
||||
struct ieee80211_hdr header;
|
||||
struct auth_body auth;
|
||||
|
||||
header.frame_ctl = cpu_to_le16(IEEE802_11_FTYPE_MGMT | IEEE802_11_STYPE_AUTH);
|
||||
header.frame_ctl = cpu_to_le16(IEEE80211_FTYPE_MGMT | IEEE80211_STYPE_AUTH);
|
||||
header.duration_id = cpu_to_le16(0x8000);
|
||||
header.seq_ctl = 0;
|
||||
memcpy(header.addr1, priv->CurrentBSSID, 6);
|
||||
@@ -2677,7 +2677,7 @@ static void send_authentication_request(struct atmel_private *priv, u8 *challeng
|
||||
auth.alg = cpu_to_le16(C80211_MGMT_AAN_SHAREDKEY);
|
||||
/* no WEP for authentication frames with TrSeqNo 1 */
|
||||
if (priv->CurrentAuthentTransactionSeqNum != 1)
|
||||
header.frame_ctl |= cpu_to_le16(IEEE802_11_FCTL_WEP);
|
||||
header.frame_ctl |= cpu_to_le16(IEEE80211_FCTL_WEP);
|
||||
} else {
|
||||
auth.alg = cpu_to_le16(C80211_MGMT_AAN_OPENSYSTEM);
|
||||
}
|
||||
@@ -2701,7 +2701,7 @@ static void send_association_request(struct atmel_private *priv, int is_reassoc)
|
||||
{
|
||||
u8 *ssid_el_p;
|
||||
int bodysize;
|
||||
struct ieee802_11_hdr header;
|
||||
struct ieee80211_hdr header;
|
||||
struct ass_req_format {
|
||||
u16 capability;
|
||||
u16 listen_interval;
|
||||
@@ -2714,8 +2714,8 @@ static void send_association_request(struct atmel_private *priv, int is_reassoc)
|
||||
u8 rates[4];
|
||||
} body;
|
||||
|
||||
header.frame_ctl = cpu_to_le16(IEEE802_11_FTYPE_MGMT |
|
||||
(is_reassoc ? IEEE802_11_STYPE_REASSOC_REQ : IEEE802_11_STYPE_ASSOC_REQ));
|
||||
header.frame_ctl = cpu_to_le16(IEEE80211_FTYPE_MGMT |
|
||||
(is_reassoc ? IEEE80211_STYPE_REASSOC_REQ : IEEE80211_STYPE_ASSOC_REQ));
|
||||
header.duration_id = cpu_to_le16(0x8000);
|
||||
header.seq_ctl = 0;
|
||||
|
||||
@@ -2751,9 +2751,9 @@ static void send_association_request(struct atmel_private *priv, int is_reassoc)
|
||||
atmel_transmit_management_frame(priv, &header, (void *)&body, bodysize);
|
||||
}
|
||||
|
||||
static int is_frame_from_current_bss(struct atmel_private *priv, struct ieee802_11_hdr *header)
|
||||
static int is_frame_from_current_bss(struct atmel_private *priv, struct ieee80211_hdr *header)
|
||||
{
|
||||
if (le16_to_cpu(header->frame_ctl) & IEEE802_11_FCTL_FROMDS)
|
||||
if (le16_to_cpu(header->frame_ctl) & IEEE80211_FCTL_FROMDS)
|
||||
return memcmp(header->addr3, priv->CurrentBSSID, 6) == 0;
|
||||
else
|
||||
return memcmp(header->addr2, priv->CurrentBSSID, 6) == 0;
|
||||
@@ -2801,7 +2801,7 @@ static int retrieve_bss(struct atmel_private *priv)
|
||||
}
|
||||
|
||||
|
||||
static void store_bss_info(struct atmel_private *priv, struct ieee802_11_hdr *header,
|
||||
static void store_bss_info(struct atmel_private *priv, struct ieee80211_hdr *header,
|
||||
u16 capability, u16 beacon_period, u8 channel, u8 rssi,
|
||||
u8 ssid_len, u8 *ssid, int is_beacon)
|
||||
{
|
||||
@@ -3085,12 +3085,12 @@ static void atmel_smooth_qual(struct atmel_private *priv)
|
||||
}
|
||||
|
||||
/* deals with incoming managment frames. */
|
||||
static void atmel_management_frame(struct atmel_private *priv, struct ieee802_11_hdr *header,
|
||||
static void atmel_management_frame(struct atmel_private *priv, struct ieee80211_hdr *header,
|
||||
u16 frame_len, u8 rssi)
|
||||
{
|
||||
u16 subtype;
|
||||
|
||||
switch (subtype = le16_to_cpu(header->frame_ctl) & IEEE802_11_FCTL_STYPE) {
|
||||
switch (subtype = le16_to_cpu(header->frame_ctl) & IEEE80211_FCTL_STYPE) {
|
||||
case C80211_SUBTYPE_MGMT_BEACON :
|
||||
case C80211_SUBTYPE_MGMT_ProbeResponse:
|
||||
|
||||
|
@@ -1,78 +0,0 @@
|
||||
#ifndef _IEEE802_11_H
|
||||
#define _IEEE802_11_H
|
||||
|
||||
#define IEEE802_11_DATA_LEN 2304
|
||||
/* Maximum size for the MA-UNITDATA primitive, 802.11 standard section
|
||||
6.2.1.1.2.
|
||||
|
||||
The figure in section 7.1.2 suggests a body size of up to 2312
|
||||
bytes is allowed, which is a bit confusing, I suspect this
|
||||
represents the 2304 bytes of real data, plus a possible 8 bytes of
|
||||
WEP IV and ICV. (this interpretation suggested by Ramiro Barreiro) */
|
||||
|
||||
|
||||
#define IEEE802_11_HLEN 30
|
||||
#define IEEE802_11_FRAME_LEN (IEEE802_11_DATA_LEN + IEEE802_11_HLEN)
|
||||
|
||||
struct ieee802_11_hdr {
|
||||
u16 frame_ctl;
|
||||
u16 duration_id;
|
||||
u8 addr1[ETH_ALEN];
|
||||
u8 addr2[ETH_ALEN];
|
||||
u8 addr3[ETH_ALEN];
|
||||
u16 seq_ctl;
|
||||
u8 addr4[ETH_ALEN];
|
||||
} __attribute__ ((packed));
|
||||
|
||||
/* Frame control field constants */
|
||||
#define IEEE802_11_FCTL_VERS 0x0002
|
||||
#define IEEE802_11_FCTL_FTYPE 0x000c
|
||||
#define IEEE802_11_FCTL_STYPE 0x00f0
|
||||
#define IEEE802_11_FCTL_TODS 0x0100
|
||||
#define IEEE802_11_FCTL_FROMDS 0x0200
|
||||
#define IEEE802_11_FCTL_MOREFRAGS 0x0400
|
||||
#define IEEE802_11_FCTL_RETRY 0x0800
|
||||
#define IEEE802_11_FCTL_PM 0x1000
|
||||
#define IEEE802_11_FCTL_MOREDATA 0x2000
|
||||
#define IEEE802_11_FCTL_WEP 0x4000
|
||||
#define IEEE802_11_FCTL_ORDER 0x8000
|
||||
|
||||
#define IEEE802_11_FTYPE_MGMT 0x0000
|
||||
#define IEEE802_11_FTYPE_CTL 0x0004
|
||||
#define IEEE802_11_FTYPE_DATA 0x0008
|
||||
|
||||
/* management */
|
||||
#define IEEE802_11_STYPE_ASSOC_REQ 0x0000
|
||||
#define IEEE802_11_STYPE_ASSOC_RESP 0x0010
|
||||
#define IEEE802_11_STYPE_REASSOC_REQ 0x0020
|
||||
#define IEEE802_11_STYPE_REASSOC_RESP 0x0030
|
||||
#define IEEE802_11_STYPE_PROBE_REQ 0x0040
|
||||
#define IEEE802_11_STYPE_PROBE_RESP 0x0050
|
||||
#define IEEE802_11_STYPE_BEACON 0x0080
|
||||
#define IEEE802_11_STYPE_ATIM 0x0090
|
||||
#define IEEE802_11_STYPE_DISASSOC 0x00A0
|
||||
#define IEEE802_11_STYPE_AUTH 0x00B0
|
||||
#define IEEE802_11_STYPE_DEAUTH 0x00C0
|
||||
|
||||
/* control */
|
||||
#define IEEE802_11_STYPE_PSPOLL 0x00A0
|
||||
#define IEEE802_11_STYPE_RTS 0x00B0
|
||||
#define IEEE802_11_STYPE_CTS 0x00C0
|
||||
#define IEEE802_11_STYPE_ACK 0x00D0
|
||||
#define IEEE802_11_STYPE_CFEND 0x00E0
|
||||
#define IEEE802_11_STYPE_CFENDACK 0x00F0
|
||||
|
||||
/* data */
|
||||
#define IEEE802_11_STYPE_DATA 0x0000
|
||||
#define IEEE802_11_STYPE_DATA_CFACK 0x0010
|
||||
#define IEEE802_11_STYPE_DATA_CFPOLL 0x0020
|
||||
#define IEEE802_11_STYPE_DATA_CFACKPOLL 0x0030
|
||||
#define IEEE802_11_STYPE_NULLFUNC 0x0040
|
||||
#define IEEE802_11_STYPE_CFACK 0x0050
|
||||
#define IEEE802_11_STYPE_CFPOLL 0x0060
|
||||
#define IEEE802_11_STYPE_CFACKPOLL 0x0070
|
||||
|
||||
#define IEEE802_11_SCTL_FRAG 0x000F
|
||||
#define IEEE802_11_SCTL_SEQ 0xFFF0
|
||||
|
||||
#endif /* _IEEE802_11_H */
|
8649
drivers/net/wireless/ipw2100.c
Normal file
8649
drivers/net/wireless/ipw2100.c
Normal file
文件差異過大導致無法顯示
Load Diff
1278
drivers/net/wireless/ipw2100.h
Normal file
1278
drivers/net/wireless/ipw2100.h
Normal file
文件差異過大導致無法顯示
Load Diff
7348
drivers/net/wireless/ipw2200.c
Normal file
7348
drivers/net/wireless/ipw2200.c
Normal file
文件差異過大導致無法顯示
Load Diff
1770
drivers/net/wireless/ipw2200.h
Normal file
1770
drivers/net/wireless/ipw2200.h
Normal file
文件差異過大導致無法顯示
Load Diff
@@ -464,6 +464,8 @@
|
||||
#include <linux/etherdevice.h>
|
||||
#include <linux/wireless.h>
|
||||
|
||||
#include <net/ieee80211.h>
|
||||
|
||||
#include <asm/uaccess.h>
|
||||
#include <asm/io.h>
|
||||
#include <asm/system.h>
|
||||
@@ -471,7 +473,6 @@
|
||||
#include "hermes.h"
|
||||
#include "hermes_rid.h"
|
||||
#include "orinoco.h"
|
||||
#include "ieee802_11.h"
|
||||
|
||||
/********************************************************************/
|
||||
/* Module information */
|
||||
@@ -509,7 +510,7 @@ MODULE_PARM_DESC(suppress_linkstatus, "Don't log link status changes");
|
||||
/********************************************************************/
|
||||
|
||||
#define ORINOCO_MIN_MTU 256
|
||||
#define ORINOCO_MAX_MTU (IEEE802_11_DATA_LEN - ENCAPS_OVERHEAD)
|
||||
#define ORINOCO_MAX_MTU (IEEE80211_DATA_LEN - ENCAPS_OVERHEAD)
|
||||
|
||||
#define SYMBOL_MAX_VER_LEN (14)
|
||||
#define USER_BAP 0
|
||||
@@ -760,7 +761,7 @@ static int orinoco_change_mtu(struct net_device *dev, int new_mtu)
|
||||
if ( (new_mtu < ORINOCO_MIN_MTU) || (new_mtu > ORINOCO_MAX_MTU) )
|
||||
return -EINVAL;
|
||||
|
||||
if ( (new_mtu + ENCAPS_OVERHEAD + IEEE802_11_HLEN) >
|
||||
if ( (new_mtu + ENCAPS_OVERHEAD + IEEE80211_HLEN) >
|
||||
(priv->nicbuf_size - ETH_HLEN) )
|
||||
return -EINVAL;
|
||||
|
||||
@@ -1104,7 +1105,7 @@ static void __orinoco_ev_rx(struct net_device *dev, hermes_t *hw)
|
||||
stats->rx_dropped++;
|
||||
goto drop;
|
||||
}
|
||||
if (length > IEEE802_11_DATA_LEN) {
|
||||
if (length > IEEE80211_DATA_LEN) {
|
||||
printk(KERN_WARNING "%s: Oversized frame received (%d bytes)\n",
|
||||
dev->name, length);
|
||||
stats->rx_length_errors++;
|
||||
@@ -2264,7 +2265,7 @@ static int orinoco_init(struct net_device *dev)
|
||||
|
||||
/* No need to lock, the hw_unavailable flag is already set in
|
||||
* alloc_orinocodev() */
|
||||
priv->nicbuf_size = IEEE802_11_FRAME_LEN + ETH_HLEN;
|
||||
priv->nicbuf_size = IEEE80211_FRAME_LEN + ETH_HLEN;
|
||||
|
||||
/* Initialize the firmware */
|
||||
err = hermes_init(hw);
|
||||
|
@@ -2,7 +2,7 @@
|
||||
#define __WL3501_H__
|
||||
|
||||
#include <linux/spinlock.h>
|
||||
#include "ieee802_11.h"
|
||||
#include <net/ieee80211.h>
|
||||
|
||||
/* define for WLA 2.0 */
|
||||
#define WL3501_BLKSZ 256
|
||||
@@ -548,7 +548,7 @@ struct wl3501_80211_tx_plcp_hdr {
|
||||
|
||||
struct wl3501_80211_tx_hdr {
|
||||
struct wl3501_80211_tx_plcp_hdr pclp_hdr;
|
||||
struct ieee802_11_hdr mac_hdr;
|
||||
struct ieee80211_hdr mac_hdr;
|
||||
} __attribute__ ((packed));
|
||||
|
||||
/*
|
||||
|
Reference in New Issue
Block a user