Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
cloud-kernel
提交
b4bf3430
cloud-kernel
项目概览
openanolis
/
cloud-kernel
1 年多 前同步成功
通知
160
Star
36
Fork
7
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
10
列表
看板
标记
里程碑
合并请求
2
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
cloud-kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
10
Issue
10
列表
看板
标记
里程碑
合并请求
2
合并请求
2
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
b4bf3430
编写于
8月 25, 2005
作者:
J
Jeff Garzik
浏览文件
操作
浏览文件
下载
差异文件
/spare/repo/netdev-2.6 branch 'ieee80211'
上级
343b0597
099c5bb1
变更
10
展开全部
隐藏空白更改
内联
并排
Showing
10 changed file
with
317 addition
and
275 deletion
+317
-275
drivers/net/wireless/Kconfig
drivers/net/wireless/Kconfig
+1
-1
drivers/net/wireless/atmel.c
drivers/net/wireless/atmel.c
+4
-4
drivers/net/wireless/ipw2100.c
drivers/net/wireless/ipw2100.c
+147
-109
drivers/net/wireless/ipw2100.h
drivers/net/wireless/ipw2100.h
+0
-28
drivers/net/wireless/ipw2200.c
drivers/net/wireless/ipw2200.c
+1
-9
drivers/net/wireless/ipw2200.h
drivers/net/wireless/ipw2200.h
+1
-29
include/net/ieee80211.h
include/net/ieee80211.h
+128
-86
net/ieee80211/ieee80211_module.c
net/ieee80211/ieee80211_module.c
+26
-0
net/ieee80211/ieee80211_rx.c
net/ieee80211/ieee80211_rx.c
+8
-8
net/ieee80211/ieee80211_tx.c
net/ieee80211/ieee80211_tx.c
+1
-1
未找到文件。
drivers/net/wireless/Kconfig
浏览文件 @
b4bf3430
...
...
@@ -164,7 +164,7 @@ config IPW2100
say M here and read <file:Documentation/modules.txt>. The module
will be called ipw2100.ko.
config IPW2100_
PROMISC
config IPW2100_
MONITOR
bool "Enable promiscuous mode"
depends on IPW2100
---help---
...
...
drivers/net/wireless/atmel.c
浏览文件 @
b4bf3430
...
...
@@ -867,7 +867,7 @@ static int start_tx (struct sk_buff *skb, struct net_device *dev)
header
.
duration_id
=
0
;
header
.
seq_ctl
=
0
;
if
(
priv
->
wep_is_on
)
frame_ctl
|=
IEEE80211_FCTL_
WEP
;
frame_ctl
|=
IEEE80211_FCTL_
PROTECTED
;
if
(
priv
->
operating_mode
==
IW_MODE_ADHOC
)
{
memcpy
(
&
header
.
addr1
,
skb
->
data
,
6
);
memcpy
(
&
header
.
addr2
,
dev
->
dev_addr
,
6
);
...
...
@@ -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
&
IEEE80211_FCTL_
WEP
))
{
if
(
!
priv
->
wep_is_on
||
!
(
frame_ctl
&
IEEE80211_FCTL_
PROTECTED
))
{
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,7 +1132,7 @@ 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
&
IEEE80211_FCTL_
WEP
)))
{
if
(
priv
->
do_rx_crc
&&
(
!
priv
->
wep_is_on
||
!
(
frame_ctl
&
IEEE80211_FCTL_
PROTECTED
)))
{
crc
=
crc32_le
(
0xffffffff
,
(
unsigned
char
*
)
&
header
,
24
);
}
msdu_size
-=
24
;
/* header */
...
...
@@ -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
(
IEEE80211_FCTL_
WEP
);
header
.
frame_ctl
|=
cpu_to_le16
(
IEEE80211_FCTL_
PROTECTED
);
}
else
{
auth
.
alg
=
cpu_to_le16
(
C80211_MGMT_AAN_OPENSYSTEM
);
}
...
...
drivers/net/wireless/ipw2100.c
浏览文件 @
b4bf3430
此差异已折叠。
点击以展开。
drivers/net/wireless/ipw2100.h
浏览文件 @
b4bf3430
...
...
@@ -48,22 +48,6 @@ struct ipw2100_priv;
struct
ipw2100_tx_packet
;
struct
ipw2100_rx_packet
;
#ifdef CONFIG_IPW_DEBUG
enum
{
IPW_DEBUG_ENABLED
=
1
};
extern
u32
ipw2100_debug_level
;
#define IPW_DEBUG(level, message...) \
do { \
if (ipw2100_debug_level & (level)) { \
printk(KERN_DEBUG "ipw2100: %c %s ", \
in_interrupt() ? 'I' : 'U', __FUNCTION__); \
printk(message); \
} \
} while (0)
#else
enum
{
IPW_DEBUG_ENABLED
=
0
};
#define IPW_DEBUG(level, message...) do {} while (0)
#endif
/* CONFIG_IPW_DEBUG */
#define IPW_DL_UNINIT 0x80000000
#define IPW_DL_NONE 0x00000000
#define IPW_DL_ALL 0x7FFFFFFF
...
...
@@ -1144,10 +1128,6 @@ typedef enum _ORDINAL_TABLE_2 { // NS - means Not Supported by FW
#define WIRELESS_SPY // enable iwspy support
#endif
extern
struct
iw_handler_def
ipw2100_wx_handler_def
;
extern
struct
iw_statistics
*
ipw2100_wx_wireless_stats
(
struct
net_device
*
dev
);
extern
void
ipw2100_wx_event_work
(
struct
ipw2100_priv
*
priv
);
#define IPW_HOST_FW_SHARED_AREA0 0x0002f200
#define IPW_HOST_FW_SHARED_AREA0_END 0x0002f510 // 0x310 bytes
...
...
@@ -1182,14 +1162,6 @@ struct ipw2100_fw {
const
struct
firmware
*
fw_entry
;
};
int
ipw2100_get_firmware
(
struct
ipw2100_priv
*
priv
,
struct
ipw2100_fw
*
fw
);
void
ipw2100_release_firmware
(
struct
ipw2100_priv
*
priv
,
struct
ipw2100_fw
*
fw
);
int
ipw2100_fw_download
(
struct
ipw2100_priv
*
priv
,
struct
ipw2100_fw
*
fw
);
int
ipw2100_ucode_download
(
struct
ipw2100_priv
*
priv
,
struct
ipw2100_fw
*
fw
);
#define MAX_FW_VERSION_LEN 14
int
ipw2100_get_fwversion
(
struct
ipw2100_priv
*
priv
,
char
*
buf
,
size_t
max
);
int
ipw2100_get_ucodeversion
(
struct
ipw2100_priv
*
priv
,
char
*
buf
,
size_t
max
);
#endif
/* _IPW2100_H */
drivers/net/wireless/ipw2200.c
浏览文件 @
b4bf3430
...
...
@@ -4485,7 +4485,7 @@ static void ipw_debug_config(struct ipw_priv *priv)
IPW_DEBUG_INFO
(
"RATE MASK: 0x%08X
\n
"
,
priv
->
rates_mask
);
}
#else
#define ipw_debug_config(x) do {} while (0)
;
#define ipw_debug_config(x) do {} while (0)
#endif
static
inline
void
ipw_set_fixed_rate
(
struct
ipw_priv
*
priv
,
...
...
@@ -6617,11 +6617,7 @@ static int ipw_setup_deferred_work(struct ipw_priv *priv)
{
int
ret
=
0
;
#ifdef CONFIG_SOFTWARE_SUSPEND2
priv
->
workqueue
=
create_workqueue
(
DRV_NAME
,
0
);
#else
priv
->
workqueue
=
create_workqueue
(
DRV_NAME
);
#endif
init_waitqueue_head
(
&
priv
->
wait_command_queue
);
INIT_WORK
(
&
priv
->
adhoc_check
,
ipw_adhoc_check
,
priv
);
...
...
@@ -7242,11 +7238,7 @@ static int ipw_pci_suspend(struct pci_dev *pdev, u32 state)
/* Remove the PRESENT state of the device */
netif_device_detach
(
dev
);
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,10)
pci_save_state
(
pdev
,
priv
->
pm_state
);
#else
pci_save_state
(
pdev
);
#endif
pci_disable_device
(
pdev
);
pci_set_power_state
(
pdev
,
state
);
...
...
drivers/net/wireless/ipw2200.h
浏览文件 @
b4bf3430
...
...
@@ -53,26 +53,6 @@
#include <linux/workqueue.h>
#ifndef IRQ_NONE
typedef
void
irqreturn_t
;
#define IRQ_NONE
#define IRQ_HANDLED
#define IRQ_RETVAL(x)
#endif
#if ( LINUX_VERSION_CODE < KERNEL_VERSION(2,6,9) )
#define __iomem
#endif
#if ( LINUX_VERSION_CODE < KERNEL_VERSION(2,6,5) )
#define pci_dma_sync_single_for_cpu pci_dma_sync_single
#define pci_dma_sync_single_for_device pci_dma_sync_single
#endif
#ifndef HAVE_FREE_NETDEV
#define free_netdev(x) kfree(x)
#endif
/* Authentication and Association States */
enum
connection_manager_assoc_states
{
...
...
@@ -93,8 +73,6 @@ enum connection_manager_assoc_states
};
#define IPW_NORMAL 0
#define IPW_NOWAIT 0
#define IPW_WAIT (1<<0)
#define IPW_QUIET (1<<1)
#define IPW_ROAMING (1<<2)
...
...
@@ -200,7 +178,7 @@ enum connection_manager_assoc_states
/* even if MAC WEP set (allows pre-encrypt) */
#define DCT_FLAG_NO_WEP 0x20
#define IPW_
/* overwrite TSF field */
#define DCT_FLAG_TSF_REQD 0x40
...
...
@@ -533,12 +511,6 @@ struct notif_authenticate {
u16
status
;
}
__attribute__
((
packed
));
struct
temperature
{
s32
measured
;
s32
active
;
}
__attribute__
((
packed
));
struct
notif_calibration
{
u8
data
[
104
];
}
__attribute__
((
packed
));
...
...
include/net/ieee80211.h
浏览文件 @
b4bf3430
...
...
@@ -47,22 +47,22 @@
#define IEEE80211_FRAME_LEN (IEEE80211_DATA_LEN + IEEE80211_HLEN)
struct
ieee80211_hdr
{
u
16
frame_ctl
;
u
16
duration_id
;
__le
16
frame_ctl
;
__le
16
duration_id
;
u8
addr1
[
ETH_ALEN
];
u8
addr2
[
ETH_ALEN
];
u8
addr3
[
ETH_ALEN
];
u
16
seq_ctl
;
__le
16
seq_ctl
;
u8
addr4
[
ETH_ALEN
];
}
__attribute__
((
packed
));
struct
ieee80211_hdr_3addr
{
u
16
frame_ctl
;
u
16
duration_id
;
__le
16
frame_ctl
;
__le
16
duration_id
;
u8
addr1
[
ETH_ALEN
];
u8
addr2
[
ETH_ALEN
];
u8
addr3
[
ETH_ALEN
];
u
16
seq_ctl
;
__le
16
seq_ctl
;
}
__attribute__
((
packed
));
enum
eap_type
{
...
...
@@ -88,10 +88,10 @@ static inline const char *eap_get_type(int type)
struct
eapol
{
u8
snap
[
6
];
u
16
ethertype
;
__be
16
ethertype
;
u8
version
;
u8
type
;
u
16
length
;
__be
16
length
;
}
__attribute__
((
packed
));
#define IEEE80211_1ADDR_LEN 10
...
...
@@ -112,8 +112,8 @@ struct eapol {
#define IEEE80211_FCTL_MOREFRAGS 0x0400
#define IEEE80211_FCTL_RETRY 0x0800
#define IEEE80211_FCTL_PM 0x1000
#define IEEE80211_FCTL_MOREDATA 0x2000
#define IEEE80211_FCTL_
WEP
0x4000
#define IEEE80211_FCTL_MOREDATA
0x2000
#define IEEE80211_FCTL_
PROTECTED
0x4000
#define IEEE80211_FCTL_ORDER 0x8000
#define IEEE80211_FTYPE_MGMT 0x0000
...
...
@@ -132,6 +132,7 @@ struct eapol {
#define IEEE80211_STYPE_DISASSOC 0x00A0
#define IEEE80211_STYPE_AUTH 0x00B0
#define IEEE80211_STYPE_DEAUTH 0x00C0
#define IEEE80211_STYPE_ACTION 0x00D0
/* control */
#define IEEE80211_STYPE_PSPOLL 0x00A0
...
...
@@ -167,8 +168,19 @@ do { if (ieee80211_debug_level & (level)) \
#define IEEE80211_DEBUG(level, fmt, args...) do {} while (0)
#endif
/* CONFIG_IEEE80211_DEBUG */
/* debug macros not dependent on CONFIG_IEEE80211_DEBUG */
#define MAC_FMT "%02x:%02x:%02x:%02x:%02x:%02x"
#define MAC_ARG(x) ((u8*)(x))[0],((u8*)(x))[1],((u8*)(x))[2],((u8*)(x))[3],((u8*)(x))[4],((u8*)(x))[5]
/* escape_essid() is intended to be used in debug (and possibly error)
* messages. It should never be used for passing essid to user space. */
const
char
*
escape_essid
(
const
char
*
essid
,
u8
essid_len
);
/*
* To use the debug system
;
* To use the debug system
:
*
* If you are defining a new debug classification, simply add it to the #define
* list here in the form of:
...
...
@@ -223,9 +235,9 @@ do { if (ieee80211_debug_level & (level)) \
#include <linux/if_arp.h>
/* ARPHRD_ETHER */
#ifndef WIRELESS_SPY
#define WIRELESS_SPY /
/ enable iwspy support
#define WIRELESS_SPY
/
* enable iwspy support */
#endif
#include <net/iw_handler.h> /
/ new driver API
#include <net/iw_handler.h>
/
* new driver API */
#ifndef ETH_P_PAE
#define ETH_P_PAE 0x888E
/* Port Access Entity (IEEE 802.1X) */
...
...
@@ -252,6 +264,7 @@ struct ieee80211_snap_hdr {
#define SNAP_SIZE sizeof(struct ieee80211_snap_hdr)
#define WLAN_FC_GET_VERS(fc) ((fc) & IEEE80211_FCTL_VERS)
#define WLAN_FC_GET_TYPE(fc) ((fc) & IEEE80211_FCTL_FTYPE)
#define WLAN_FC_GET_STYPE(fc) ((fc) & IEEE80211_FCTL_STYPE)
...
...
@@ -272,34 +285,72 @@ struct ieee80211_snap_hdr {
#define WLAN_CAPABILITY_SHORT_PREAMBLE (1<<5)
#define WLAN_CAPABILITY_PBCC (1<<6)
#define WLAN_CAPABILITY_CHANNEL_AGILITY (1<<7)
#define WLAN_CAPABILITY_SPECTRUM_MGMT (1<<8)
#define WLAN_CAPABILITY_SHORT_SLOT_TIME (1<<10)
#define WLAN_CAPABILITY_OSSS_OFDM (1<<13)
/* Status codes */
#define WLAN_STATUS_SUCCESS 0
#define WLAN_STATUS_UNSPECIFIED_FAILURE 1
#define WLAN_STATUS_CAPS_UNSUPPORTED 10
#define WLAN_STATUS_REASSOC_NO_ASSOC 11
#define WLAN_STATUS_ASSOC_DENIED_UNSPEC 12
#define WLAN_STATUS_NOT_SUPPORTED_AUTH_ALG 13
#define WLAN_STATUS_UNKNOWN_AUTH_TRANSACTION 14
#define WLAN_STATUS_CHALLENGE_FAIL 15
#define WLAN_STATUS_AUTH_TIMEOUT 16
#define WLAN_STATUS_AP_UNABLE_TO_HANDLE_NEW_STA 17
#define WLAN_STATUS_ASSOC_DENIED_RATES 18
/* 802.11b */
#define WLAN_STATUS_ASSOC_DENIED_NOSHORT 19
#define WLAN_STATUS_ASSOC_DENIED_NOPBCC 20
#define WLAN_STATUS_ASSOC_DENIED_NOAGILITY 21
enum
ieee80211_statuscode
{
WLAN_STATUS_SUCCESS
=
0
,
WLAN_STATUS_UNSPECIFIED_FAILURE
=
1
,
WLAN_STATUS_CAPS_UNSUPPORTED
=
10
,
WLAN_STATUS_REASSOC_NO_ASSOC
=
11
,
WLAN_STATUS_ASSOC_DENIED_UNSPEC
=
12
,
WLAN_STATUS_NOT_SUPPORTED_AUTH_ALG
=
13
,
WLAN_STATUS_UNKNOWN_AUTH_TRANSACTION
=
14
,
WLAN_STATUS_CHALLENGE_FAIL
=
15
,
WLAN_STATUS_AUTH_TIMEOUT
=
16
,
WLAN_STATUS_AP_UNABLE_TO_HANDLE_NEW_STA
=
17
,
WLAN_STATUS_ASSOC_DENIED_RATES
=
18
,
/* 802.11b */
WLAN_STATUS_ASSOC_DENIED_NOSHORTPREAMBLE
=
19
,
WLAN_STATUS_ASSOC_DENIED_NOPBCC
=
20
,
WLAN_STATUS_ASSOC_DENIED_NOAGILITY
=
21
,
/* 802.11h */
WLAN_STATUS_ASSOC_DENIED_NOSPECTRUM
=
22
,
WLAN_STATUS_ASSOC_REJECTED_BAD_POWER
=
23
,
WLAN_STATUS_ASSOC_REJECTED_BAD_SUPP_CHAN
=
24
,
/* 802.11g */
WLAN_STATUS_ASSOC_DENIED_NOSHORTTIME
=
25
,
WLAN_STATUS_ASSOC_DENIED_NODSSSOFDM
=
26
,
/* 802.11i */
WLAN_STATUS_INVALID_IE
=
40
,
WLAN_STATUS_INVALID_GROUP_CIPHER
=
41
,
WLAN_STATUS_INVALID_PAIRWISE_CIPHER
=
42
,
WLAN_STATUS_INVALID_AKMP
=
43
,
WLAN_STATUS_UNSUPP_RSN_VERSION
=
44
,
WLAN_STATUS_INVALID_RSN_IE_CAP
=
45
,
WLAN_STATUS_CIPHER_SUITE_REJECTED
=
46
,
};
/* Reason codes */
#define WLAN_REASON_UNSPECIFIED 1
#define WLAN_REASON_PREV_AUTH_NOT_VALID 2
#define WLAN_REASON_DEAUTH_LEAVING 3
#define WLAN_REASON_DISASSOC_DUE_TO_INACTIVITY 4
#define WLAN_REASON_DISASSOC_AP_BUSY 5
#define WLAN_REASON_CLASS2_FRAME_FROM_NONAUTH_STA 6
#define WLAN_REASON_CLASS3_FRAME_FROM_NONASSOC_STA 7
#define WLAN_REASON_DISASSOC_STA_HAS_LEFT 8
#define WLAN_REASON_STA_REQ_ASSOC_WITHOUT_AUTH 9
enum
ieee80211_reasoncode
{
WLAN_REASON_UNSPECIFIED
=
1
,
WLAN_REASON_PREV_AUTH_NOT_VALID
=
2
,
WLAN_REASON_DEAUTH_LEAVING
=
3
,
WLAN_REASON_DISASSOC_DUE_TO_INACTIVITY
=
4
,
WLAN_REASON_DISASSOC_AP_BUSY
=
5
,
WLAN_REASON_CLASS2_FRAME_FROM_NONAUTH_STA
=
6
,
WLAN_REASON_CLASS3_FRAME_FROM_NONASSOC_STA
=
7
,
WLAN_REASON_DISASSOC_STA_HAS_LEFT
=
8
,
WLAN_REASON_STA_REQ_ASSOC_WITHOUT_AUTH
=
9
,
/* 802.11h */
WLAN_REASON_DISASSOC_BAD_POWER
=
10
,
WLAN_REASON_DISASSOC_BAD_SUPP_CHAN
=
11
,
/* 802.11i */
WLAN_REASON_INVALID_IE
=
13
,
WLAN_REASON_MIC_FAILURE
=
14
,
WLAN_REASON_4WAY_HANDSHAKE_TIMEOUT
=
15
,
WLAN_REASON_GROUP_KEY_HANDSHAKE_TIMEOUT
=
16
,
WLAN_REASON_IE_DIFFERENT
=
17
,
WLAN_REASON_INVALID_GROUP_CIPHER
=
18
,
WLAN_REASON_INVALID_PAIRWISE_CIPHER
=
19
,
WLAN_REASON_INVALID_AKMP
=
20
,
WLAN_REASON_UNSUPP_RSN_VERSION
=
21
,
WLAN_REASON_INVALID_RSN_IE_CAP
=
22
,
WLAN_REASON_IEEE8021X_FAILED
=
23
,
WLAN_REASON_CIPHER_SUITE_REJECTED
=
24
,
};
#define IEEE80211_STATMASK_SIGNAL (1<<0)
...
...
@@ -478,17 +529,34 @@ Total: 28-2340 bytes
#define BEACON_PROBE_SSID_ID_POSITION 12
/* Management Frame Information Element Types */
#define MFIE_TYPE_SSID 0
#define MFIE_TYPE_RATES 1
#define MFIE_TYPE_FH_SET 2
#define MFIE_TYPE_DS_SET 3
#define MFIE_TYPE_CF_SET 4
#define MFIE_TYPE_TIM 5
#define MFIE_TYPE_IBSS_SET 6
#define MFIE_TYPE_CHALLENGE 16
#define MFIE_TYPE_RSN 48
#define MFIE_TYPE_RATES_EX 50
#define MFIE_TYPE_GENERIC 221
enum
ieee80211_mfie
{
MFIE_TYPE_SSID
=
0
,
MFIE_TYPE_RATES
=
1
,
MFIE_TYPE_FH_SET
=
2
,
MFIE_TYPE_DS_SET
=
3
,
MFIE_TYPE_CF_SET
=
4
,
MFIE_TYPE_TIM
=
5
,
MFIE_TYPE_IBSS_SET
=
6
,
MFIE_TYPE_COUNTRY
=
7
,
MFIE_TYPE_HOP_PARAMS
=
8
,
MFIE_TYPE_HOP_TABLE
=
9
,
MFIE_TYPE_REQUEST
=
10
,
MFIE_TYPE_CHALLENGE
=
16
,
MFIE_TYPE_POWER_CONSTRAINT
=
32
,
MFIE_TYPE_POWER_CAPABILITY
=
33
,
MFIE_TYPE_TPC_REQUEST
=
34
,
MFIE_TYPE_TPC_REPORT
=
35
,
MFIE_TYPE_SUPP_CHANNELS
=
36
,
MFIE_TYPE_CSA
=
37
,
MFIE_TYPE_MEASURE_REQUEST
=
38
,
MFIE_TYPE_MEASURE_REPORT
=
39
,
MFIE_TYPE_QUIET
=
40
,
MFIE_TYPE_IBSS_DFS
=
41
,
MFIE_TYPE_ERP_INFO
=
42
,
MFIE_TYPE_RSN
=
48
,
MFIE_TYPE_RATES_EX
=
50
,
MFIE_TYPE_GENERIC
=
221
,
};
struct
ieee80211_info_element_hdr
{
u8
id
;
...
...
@@ -520,9 +588,9 @@ struct ieee80211_info_element {
struct
ieee80211_authentication
{
struct
ieee80211_hdr_3addr
header
;
u
16
algorithm
;
u
16
transaction
;
u
16
status
;
__le
16
algorithm
;
__le
16
transaction
;
__le
16
status
;
struct
ieee80211_info_element
info_element
;
}
__attribute__
((
packed
));
...
...
@@ -530,23 +598,23 @@ struct ieee80211_authentication {
struct
ieee80211_probe_response
{
struct
ieee80211_hdr_3addr
header
;
u32
time_stamp
[
2
];
u
16
beacon_interval
;
u
16
capability
;
__le
16
beacon_interval
;
__le
16
capability
;
struct
ieee80211_info_element
info_element
;
}
__attribute__
((
packed
));
struct
ieee80211_assoc_request_frame
{
u
16
capability
;
u
16
listen_interval
;
__le
16
capability
;
__le
16
listen_interval
;
u8
current_ap
[
ETH_ALEN
];
struct
ieee80211_info_element
info_element
;
}
__attribute__
((
packed
));
struct
ieee80211_assoc_response_frame
{
struct
ieee80211_hdr_3addr
header
;
u
16
capability
;
u
16
status
;
u
16
aid
;
__le
16
capability
;
__le
16
status
;
__le
16
aid
;
struct
ieee80211_info_element
info_element
;
/* supported rates */
}
__attribute__
((
packed
));
...
...
@@ -561,7 +629,7 @@ struct ieee80211_txb {
};
/* SWEEP TABLE ENTRIES NUMBER*/
/* SWEEP TABLE ENTRIES NUMBER
*/
#define MAX_SWEEP_TAB_ENTRIES 42
#define MAX_SWEEP_TAB_ENTRIES_PER_PACKET 7
/* MAX_RATES_LENGTH needs to be 12. The spec says 8, and many APs
...
...
@@ -622,8 +690,6 @@ enum ieee80211_state {
#define DEFAULT_MAX_SCAN_AGE (15 * HZ)
#define DEFAULT_FTS 2346
#define MAC_FMT "%02x:%02x:%02x:%02x:%02x:%02x"
#define MAC_ARG(x) ((u8*)(x))[0],((u8*)(x))[1],((u8*)(x))[2],((u8*)(x))[3],((u8*)(x))[4],((u8*)(x))[5]
#define CFG_IEEE80211_RESERVE_FCS (1<<0)
...
...
@@ -791,8 +857,6 @@ extern struct net_device *alloc_ieee80211(int sizeof_priv);
extern
int
ieee80211_set_encryption
(
struct
ieee80211_device
*
ieee
);
/* ieee80211_tx.c */
extern
int
ieee80211_xmit
(
struct
sk_buff
*
skb
,
struct
net_device
*
dev
);
extern
void
ieee80211_txb_free
(
struct
ieee80211_txb
*
);
...
...
@@ -805,7 +869,7 @@ extern void ieee80211_rx_mgt(struct ieee80211_device *ieee,
struct
ieee80211_hdr
*
header
,
struct
ieee80211_rx_stats
*
stats
);
/* iee80211_wx.c */
/* iee
e
80211_wx.c */
extern
int
ieee80211_wx_get_scan
(
struct
ieee80211_device
*
ieee
,
struct
iw_request_info
*
info
,
union
iwreq_data
*
wrqu
,
char
*
key
);
...
...
@@ -827,27 +891,5 @@ extern inline int ieee80211_get_scans(struct ieee80211_device *ieee)
return
ieee
->
scans
;
}
static
inline
const
char
*
escape_essid
(
const
char
*
essid
,
u8
essid_len
)
{
static
char
escaped
[
IW_ESSID_MAX_SIZE
*
2
+
1
];
const
char
*
s
=
essid
;
char
*
d
=
escaped
;
if
(
ieee80211_is_empty_essid
(
essid
,
essid_len
))
{
memcpy
(
escaped
,
"<hidden>"
,
sizeof
(
"<hidden>"
));
return
escaped
;
}
essid_len
=
min
(
essid_len
,
(
u8
)
IW_ESSID_MAX_SIZE
);
while
(
essid_len
--
)
{
if
(
*
s
==
'\0'
)
{
*
d
++
=
'\\'
;
*
d
++
=
'0'
;
s
++
;
}
else
{
*
d
++
=
*
s
++
;
}
}
*
d
=
'\0'
;
return
escaped
;
}
#endif
/* IEEE80211_H */
net/ieee80211/ieee80211_module.c
浏览文件 @
b4bf3430
...
...
@@ -269,5 +269,31 @@ module_exit(ieee80211_exit);
module_init
(
ieee80211_init
);
#endif
const
char
*
escape_essid
(
const
char
*
essid
,
u8
essid_len
)
{
static
char
escaped
[
IW_ESSID_MAX_SIZE
*
2
+
1
];
const
char
*
s
=
essid
;
char
*
d
=
escaped
;
if
(
ieee80211_is_empty_essid
(
essid
,
essid_len
))
{
memcpy
(
escaped
,
"<hidden>"
,
sizeof
(
"<hidden>"
));
return
escaped
;
}
essid_len
=
min
(
essid_len
,
(
u8
)
IW_ESSID_MAX_SIZE
);
while
(
essid_len
--
)
{
if
(
*
s
==
'\0'
)
{
*
d
++
=
'\\'
;
*
d
++
=
'0'
;
s
++
;
}
else
{
*
d
++
=
*
s
++
;
}
}
*
d
=
'\0'
;
return
escaped
;
}
EXPORT_SYMBOL
(
alloc_ieee80211
);
EXPORT_SYMBOL
(
free_ieee80211
);
EXPORT_SYMBOL
(
escape_essid
);
net/ieee80211/ieee80211_rx.c
浏览文件 @
b4bf3430
...
...
@@ -439,7 +439,7 @@ int ieee80211_rx(struct ieee80211_device *ieee, struct sk_buff *skb,
crypt
->
ops
->
decrypt_mpdu
==
NULL
))
crypt
=
NULL
;
if
(
!
crypt
&&
(
fc
&
IEEE80211_FCTL_
WEP
))
{
if
(
!
crypt
&&
(
fc
&
IEEE80211_FCTL_
PROTECTED
))
{
/* This seems to be triggered by some (multicast?)
* frames from other than current BSS, so just drop the
* frames silently instead of filling system log with
...
...
@@ -455,7 +455,7 @@ int ieee80211_rx(struct ieee80211_device *ieee, struct sk_buff *skb,
#ifdef NOT_YET
if
(
type
!=
WLAN_FC_TYPE_DATA
)
{
if
(
type
==
WLAN_FC_TYPE_MGMT
&&
stype
==
WLAN_FC_STYPE_AUTH
&&
fc
&
IEEE80211_FCTL_
WEP
&&
ieee
->
host_decrypt
&&
fc
&
IEEE80211_FCTL_
PROTECTED
&&
ieee
->
host_decrypt
&&
(
keyidx
=
hostap_rx_frame_decrypt
(
ieee
,
skb
,
crypt
))
<
0
)
{
printk
(
KERN_DEBUG
"%s: failed to decrypt mgmt::auth "
...
...
@@ -556,7 +556,7 @@ int ieee80211_rx(struct ieee80211_device *ieee, struct sk_buff *skb,
/* skb: hdr + (possibly fragmented, possibly encrypted) payload */
if
(
ieee
->
host_decrypt
&&
(
fc
&
IEEE80211_FCTL_
WEP
)
&&
if
(
ieee
->
host_decrypt
&&
(
fc
&
IEEE80211_FCTL_
PROTECTED
)
&&
(
keyidx
=
ieee80211_rx_frame_decrypt
(
ieee
,
skb
,
crypt
))
<
0
)
goto
rx_dropped
;
...
...
@@ -564,7 +564,7 @@ int ieee80211_rx(struct ieee80211_device *ieee, struct sk_buff *skb,
/* skb: hdr + (possibly fragmented) plaintext payload */
// PR: FIXME: hostap has additional conditions in the "if" below:
// ieee->host_decrypt && (fc & IEEE80211_FCTL_
WEP
) &&
// ieee->host_decrypt && (fc & IEEE80211_FCTL_
PROTECTED
) &&
if
((
frag
!=
0
||
(
fc
&
IEEE80211_FCTL_MOREFRAGS
)))
{
int
flen
;
struct
sk_buff
*
frag_skb
=
ieee80211_frag_cache_get
(
ieee
,
hdr
);
...
...
@@ -620,12 +620,12 @@ int ieee80211_rx(struct ieee80211_device *ieee, struct sk_buff *skb,
/* skb: hdr + (possible reassembled) full MSDU payload; possibly still
* encrypted/authenticated */
if
(
ieee
->
host_decrypt
&&
(
fc
&
IEEE80211_FCTL_
WEP
)
&&
if
(
ieee
->
host_decrypt
&&
(
fc
&
IEEE80211_FCTL_
PROTECTED
)
&&
ieee80211_rx_frame_decrypt_msdu
(
ieee
,
skb
,
keyidx
,
crypt
))
goto
rx_dropped
;
hdr
=
(
struct
ieee80211_hdr
*
)
skb
->
data
;
if
(
crypt
&&
!
(
fc
&
IEEE80211_FCTL_
WEP
)
&&
!
ieee
->
open_wep
)
{
if
(
crypt
&&
!
(
fc
&
IEEE80211_FCTL_
PROTECTED
)
&&
!
ieee
->
open_wep
)
{
if
(
/*ieee->ieee802_1x &&*/
ieee80211_is_eapol_frame
(
ieee
,
skb
))
{
#ifdef CONFIG_IEEE80211_DEBUG
...
...
@@ -646,7 +646,7 @@ int ieee80211_rx(struct ieee80211_device *ieee, struct sk_buff *skb,
}
#ifdef CONFIG_IEEE80211_DEBUG
if
(
crypt
&&
!
(
fc
&
IEEE80211_FCTL_
WEP
)
&&
if
(
crypt
&&
!
(
fc
&
IEEE80211_FCTL_
PROTECTED
)
&&
ieee80211_is_eapol_frame
(
ieee
,
skb
))
{
struct
eapol
*
eap
=
(
struct
eapol
*
)(
skb
->
data
+
24
);
...
...
@@ -655,7 +655,7 @@ int ieee80211_rx(struct ieee80211_device *ieee, struct sk_buff *skb,
}
#endif
if
(
crypt
&&
!
(
fc
&
IEEE80211_FCTL_
WEP
)
&&
!
ieee
->
open_wep
&&
if
(
crypt
&&
!
(
fc
&
IEEE80211_FCTL_
PROTECTED
)
&&
!
ieee
->
open_wep
&&
!
ieee80211_is_eapol_frame
(
ieee
,
skb
))
{
IEEE80211_DEBUG_DROP
(
"dropped unencrypted RX data "
...
...
net/ieee80211/ieee80211_tx.c
浏览文件 @
b4bf3430
...
...
@@ -313,7 +313,7 @@ int ieee80211_xmit(struct sk_buff *skb,
if
(
encrypt
)
fc
=
IEEE80211_FTYPE_DATA
|
IEEE80211_STYPE_DATA
|
IEEE80211_FCTL_
WEP
;
IEEE80211_FCTL_
PROTECTED
;
else
fc
=
IEEE80211_FTYPE_DATA
|
IEEE80211_STYPE_DATA
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录