Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
cloud-kernel
提交
1c659a44
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看板
提交
1c659a44
编写于
1月 18, 2012
作者:
D
David S. Miller
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'master' of
git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless
上级
ccb19d26
4f3d09de
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
54 addition
and
21 deletion
+54
-21
drivers/net/wireless/b43/Kconfig
drivers/net/wireless/b43/Kconfig
+6
-0
drivers/net/wireless/b43/main.c
drivers/net/wireless/b43/main.c
+2
-0
drivers/net/wireless/brcm80211/brcmsmac/main.c
drivers/net/wireless/brcm80211/brcmsmac/main.c
+9
-1
net/mac80211/debugfs_key.c
net/mac80211/debugfs_key.c
+4
-3
net/mac80211/mesh_hwmp.c
net/mac80211/mesh_hwmp.c
+4
-4
net/mac80211/mesh_plink.c
net/mac80211/mesh_plink.c
+2
-2
net/mac80211/mlme.c
net/mac80211/mlme.c
+27
-11
未找到文件。
drivers/net/wireless/b43/Kconfig
浏览文件 @
1c659a44
...
...
@@ -31,6 +31,12 @@ config B43_BCMA
depends on B43 && BCMA
default y
config B43_BCMA_EXTRA
bool "Hardware support that overlaps with the brcmsmac driver"
depends on B43_BCMA
default n if BRCMSMAC || BRCMSMAC_MODULE
default y
config B43_SSB
bool
depends on B43 && SSB
...
...
drivers/net/wireless/b43/main.c
浏览文件 @
1c659a44
...
...
@@ -116,8 +116,10 @@ MODULE_PARM_DESC(pio, "Use PIO accesses by default: 0=DMA, 1=PIO");
#ifdef CONFIG_B43_BCMA
static
const
struct
bcma_device_id
b43_bcma_tbl
[]
=
{
BCMA_CORE
(
BCMA_MANUF_BCM
,
BCMA_CORE_80211
,
0x11
,
BCMA_ANY_CLASS
),
#ifdef CONFIG_B43_BCMA_EXTRA
BCMA_CORE
(
BCMA_MANUF_BCM
,
BCMA_CORE_80211
,
0x17
,
BCMA_ANY_CLASS
),
BCMA_CORE
(
BCMA_MANUF_BCM
,
BCMA_CORE_80211
,
0x18
,
BCMA_ANY_CLASS
),
#endif
BCMA_CORE
(
BCMA_MANUF_BCM
,
BCMA_CORE_80211
,
0x1D
,
BCMA_ANY_CLASS
),
BCMA_CORETABLE_END
};
...
...
drivers/net/wireless/brcm80211/brcmsmac/main.c
浏览文件 @
1c659a44
...
...
@@ -7981,13 +7981,21 @@ int brcms_c_get_curband(struct brcms_c_info *wlc)
void
brcms_c_wait_for_tx_completion
(
struct
brcms_c_info
*
wlc
,
bool
drop
)
{
int
timeout
=
20
;
/* flush packet queue when requested */
if
(
drop
)
brcmu_pktq_flush
(
&
wlc
->
pkt_queue
->
q
,
false
,
NULL
,
NULL
);
/* wait for queue and DMA fifos to run dry */
while
(
!
pktq_empty
(
&
wlc
->
pkt_queue
->
q
)
||
brcms_txpktpendtot
(
wlc
)
>
0
)
while
(
!
pktq_empty
(
&
wlc
->
pkt_queue
->
q
)
||
brcms_txpktpendtot
(
wlc
)
>
0
)
{
brcms_msleep
(
wlc
->
wl
,
1
);
if
(
--
timeout
==
0
)
break
;
}
WARN_ON_ONCE
(
timeout
==
0
);
}
void
brcms_c_set_beacon_listen_interval
(
struct
brcms_c_info
*
wlc
,
u8
interval
)
...
...
net/mac80211/debugfs_key.c
浏览文件 @
1c659a44
...
...
@@ -225,9 +225,9 @@ KEY_OPS(key);
key, &key_##name##_ops);
void
ieee80211_debugfs_key_add
(
struct
ieee80211_key
*
key
)
{
{
static
int
keycount
;
char
buf
[
5
0
];
char
buf
[
10
0
];
struct
sta_info
*
sta
;
if
(
!
key
->
local
->
debugfs
.
keys
)
...
...
@@ -244,7 +244,8 @@ void ieee80211_debugfs_key_add(struct ieee80211_key *key)
sta
=
key
->
sta
;
if
(
sta
)
{
sprintf
(
buf
,
"../../stations/%pM"
,
sta
->
sta
.
addr
);
sprintf
(
buf
,
"../../netdev:%s/stations/%pM"
,
sta
->
sdata
->
name
,
sta
->
sta
.
addr
);
key
->
debugfs
.
stalink
=
debugfs_create_symlink
(
"station"
,
key
->
debugfs
.
dir
,
buf
);
}
...
...
net/mac80211/mesh_hwmp.c
浏览文件 @
1c659a44
...
...
@@ -119,12 +119,12 @@ static int mesh_path_sel_frame_tx(enum mpath_frame_type action, u8 flags,
int
hdr_len
=
offsetof
(
struct
ieee80211_mgmt
,
u
.
action
.
u
.
mesh_action
)
+
sizeof
(
mgmt
->
u
.
action
.
u
.
mesh_action
);
skb
=
dev_alloc_skb
(
local
->
hw
.
extra_
tx_headroom
+
skb
=
dev_alloc_skb
(
local
->
tx_headroom
+
hdr_len
+
2
+
37
);
/* max HWMP IE */
if
(
!
skb
)
return
-
1
;
skb_reserve
(
skb
,
local
->
hw
.
extra_
tx_headroom
);
skb_reserve
(
skb
,
local
->
tx_headroom
);
mgmt
=
(
struct
ieee80211_mgmt
*
)
skb_put
(
skb
,
hdr_len
);
memset
(
mgmt
,
0
,
hdr_len
);
mgmt
->
frame_control
=
cpu_to_le16
(
IEEE80211_FTYPE_MGMT
|
...
...
@@ -250,12 +250,12 @@ int mesh_path_error_tx(u8 ttl, u8 *target, __le32 target_sn,
if
(
time_before
(
jiffies
,
ifmsh
->
next_perr
))
return
-
EAGAIN
;
skb
=
dev_alloc_skb
(
local
->
hw
.
extra_
tx_headroom
+
skb
=
dev_alloc_skb
(
local
->
tx_headroom
+
hdr_len
+
2
+
15
/* PERR IE */
);
if
(
!
skb
)
return
-
1
;
skb_reserve
(
skb
,
local
->
tx_headroom
+
local
->
hw
.
extra_tx_headroom
);
skb_reserve
(
skb
,
local
->
tx_headroom
);
mgmt
=
(
struct
ieee80211_mgmt
*
)
skb_put
(
skb
,
hdr_len
);
memset
(
mgmt
,
0
,
hdr_len
);
mgmt
->
frame_control
=
cpu_to_le16
(
IEEE80211_FTYPE_MGMT
|
...
...
net/mac80211/mesh_plink.c
浏览文件 @
1c659a44
...
...
@@ -172,7 +172,7 @@ static int mesh_plink_frame_tx(struct ieee80211_sub_if_data *sdata,
int
hdr_len
=
offsetof
(
struct
ieee80211_mgmt
,
u
.
action
.
u
.
self_prot
)
+
sizeof
(
mgmt
->
u
.
action
.
u
.
self_prot
);
skb
=
dev_alloc_skb
(
local
->
hw
.
extra_
tx_headroom
+
skb
=
dev_alloc_skb
(
local
->
tx_headroom
+
hdr_len
+
2
+
/* capability info */
2
+
/* AID */
...
...
@@ -186,7 +186,7 @@ static int mesh_plink_frame_tx(struct ieee80211_sub_if_data *sdata,
sdata
->
u
.
mesh
.
ie_len
);
if
(
!
skb
)
return
-
1
;
skb_reserve
(
skb
,
local
->
hw
.
extra_
tx_headroom
);
skb_reserve
(
skb
,
local
->
tx_headroom
);
mgmt
=
(
struct
ieee80211_mgmt
*
)
skb_put
(
skb
,
hdr_len
);
memset
(
mgmt
,
0
,
hdr_len
);
mgmt
->
frame_control
=
cpu_to_le16
(
IEEE80211_FTYPE_MGMT
|
...
...
net/mac80211/mlme.c
浏览文件 @
1c659a44
...
...
@@ -2750,7 +2750,6 @@ int ieee80211_mgd_deauth(struct ieee80211_sub_if_data *sdata,
{
struct
ieee80211_local
*
local
=
sdata
->
local
;
struct
ieee80211_if_managed
*
ifmgd
=
&
sdata
->
u
.
mgd
;
struct
ieee80211_work
*
wk
;
u8
bssid
[
ETH_ALEN
];
bool
assoc_bss
=
false
;
...
...
@@ -2763,30 +2762,47 @@ int ieee80211_mgd_deauth(struct ieee80211_sub_if_data *sdata,
assoc_bss
=
true
;
}
else
{
bool
not_auth_yet
=
false
;
struct
ieee80211_work
*
tmp
,
*
wk
=
NULL
;
mutex_unlock
(
&
ifmgd
->
mtx
);
mutex_lock
(
&
local
->
mtx
);
list_for_each_entry
(
wk
,
&
local
->
work_list
,
list
)
{
if
(
wk
->
sdata
!=
sdata
)
list_for_each_entry
(
tmp
,
&
local
->
work_list
,
list
)
{
if
(
tmp
->
sdata
!=
sdata
)
continue
;
if
(
wk
->
type
!=
IEEE80211_WORK_DIRECT_PROBE
&&
wk
->
type
!=
IEEE80211_WORK_AUTH
&&
wk
->
type
!=
IEEE80211_WORK_ASSOC
&&
wk
->
type
!=
IEEE80211_WORK_ASSOC_BEACON_WAIT
)
if
(
tmp
->
type
!=
IEEE80211_WORK_DIRECT_PROBE
&&
tmp
->
type
!=
IEEE80211_WORK_AUTH
&&
tmp
->
type
!=
IEEE80211_WORK_ASSOC
&&
tmp
->
type
!=
IEEE80211_WORK_ASSOC_BEACON_WAIT
)
continue
;
if
(
memcmp
(
req
->
bss
->
bssid
,
wk
->
filter_ta
,
ETH_ALEN
))
if
(
memcmp
(
req
->
bss
->
bssid
,
tmp
->
filter_ta
,
ETH_ALEN
))
continue
;
not_auth_yet
=
wk
->
type
==
IEEE80211_WORK_DIRECT_PROBE
;
list_del_rcu
(
&
wk
->
list
);
free_work
(
wk
);
not_auth_yet
=
tmp
->
type
==
IEEE80211_WORK_DIRECT_PROBE
;
list_del_rcu
(
&
tmp
->
list
);
synchronize_rcu
();
wk
=
tmp
;
break
;
}
mutex_unlock
(
&
local
->
mtx
);
if
(
wk
&&
wk
->
type
==
IEEE80211_WORK_ASSOC
)
{
/* clean up dummy sta & TX sync */
sta_info_destroy_addr
(
wk
->
sdata
,
wk
->
filter_ta
);
if
(
wk
->
assoc
.
synced
)
drv_finish_tx_sync
(
local
,
wk
->
sdata
,
wk
->
filter_ta
,
IEEE80211_TX_SYNC_ASSOC
);
}
else
if
(
wk
&&
wk
->
type
==
IEEE80211_WORK_AUTH
)
{
if
(
wk
->
probe_auth
.
synced
)
drv_finish_tx_sync
(
local
,
wk
->
sdata
,
wk
->
filter_ta
,
IEEE80211_TX_SYNC_AUTH
);
}
kfree
(
wk
);
/*
* If somebody requests authentication and we haven't
* sent out an auth frame yet there's no need to send
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录