Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
cloud-kernel
提交
ead0ad16
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看板
提交
ead0ad16
编写于
1月 22, 2013
作者:
J
John W. Linville
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'for-john' of
git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211
上级
cb4ec37d
8680451f
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
35 addition
and
31 deletion
+35
-31
net/mac80211/cfg.c
net/mac80211/cfg.c
+11
-1
net/mac80211/ieee80211_i.h
net/mac80211/ieee80211_i.h
+2
-4
net/mac80211/mesh_hwmp.c
net/mac80211/mesh_hwmp.c
+4
-1
net/mac80211/offchannel.c
net/mac80211/offchannel.c
+7
-12
net/mac80211/scan.c
net/mac80211/scan.c
+5
-10
net/mac80211/tx.c
net/mac80211/tx.c
+6
-3
未找到文件。
net/mac80211/cfg.c
浏览文件 @
ead0ad16
...
...
@@ -164,7 +164,17 @@ static int ieee80211_add_key(struct wiphy *wiphy, struct net_device *dev,
sta
=
sta_info_get
(
sdata
,
mac_addr
);
else
sta
=
sta_info_get_bss
(
sdata
,
mac_addr
);
if
(
!
sta
)
{
/*
* The ASSOC test makes sure the driver is ready to
* receive the key. When wpa_supplicant has roamed
* using FT, it attempts to set the key before
* association has completed, this rejects that attempt
* so it will set the key again after assocation.
*
* TODO: accept the key if we have a station entry and
* add it to the device after the station.
*/
if
(
!
sta
||
!
test_sta_flag
(
sta
,
WLAN_STA_ASSOC
))
{
ieee80211_key_free
(
sdata
->
local
,
key
);
err
=
-
ENOENT
;
goto
out_unlock
;
...
...
net/mac80211/ieee80211_i.h
浏览文件 @
ead0ad16
...
...
@@ -1358,10 +1358,8 @@ int ieee80211_request_sched_scan_stop(struct ieee80211_sub_if_data *sdata);
void
ieee80211_sched_scan_stopped_work
(
struct
work_struct
*
work
);
/* off-channel helpers */
void
ieee80211_offchannel_stop_vifs
(
struct
ieee80211_local
*
local
,
bool
offchannel_ps_enable
);
void
ieee80211_offchannel_return
(
struct
ieee80211_local
*
local
,
bool
offchannel_ps_disable
);
void
ieee80211_offchannel_stop_vifs
(
struct
ieee80211_local
*
local
);
void
ieee80211_offchannel_return
(
struct
ieee80211_local
*
local
);
void
ieee80211_roc_setup
(
struct
ieee80211_local
*
local
);
void
ieee80211_start_next_roc
(
struct
ieee80211_local
*
local
);
void
ieee80211_roc_purge
(
struct
ieee80211_sub_if_data
*
sdata
);
...
...
net/mac80211/mesh_hwmp.c
浏览文件 @
ead0ad16
...
...
@@ -215,6 +215,7 @@ static void prepare_frame_for_deferred_tx(struct ieee80211_sub_if_data *sdata,
skb
->
priority
=
7
;
info
->
control
.
vif
=
&
sdata
->
vif
;
info
->
flags
|=
IEEE80211_TX_INTFL_NEED_TXPROCESSING
;
ieee80211_set_qos_hdr
(
sdata
,
skb
);
}
...
...
@@ -246,11 +247,13 @@ int mesh_path_error_tx(u8 ttl, u8 *target, __le32 target_sn,
return
-
EAGAIN
;
skb
=
dev_alloc_skb
(
local
->
tx_headroom
+
IEEE80211_ENCRYPT_HEADROOM
+
IEEE80211_ENCRYPT_TAILROOM
+
hdr_len
+
2
+
15
/* PERR IE */
);
if
(
!
skb
)
return
-
1
;
skb_reserve
(
skb
,
local
->
tx_headroom
);
skb_reserve
(
skb
,
local
->
tx_headroom
+
IEEE80211_ENCRYPT_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/offchannel.c
浏览文件 @
ead0ad16
...
...
@@ -102,8 +102,7 @@ static void ieee80211_offchannel_ps_disable(struct ieee80211_sub_if_data *sdata)
ieee80211_sta_reset_conn_monitor
(
sdata
);
}
void
ieee80211_offchannel_stop_vifs
(
struct
ieee80211_local
*
local
,
bool
offchannel_ps_enable
)
void
ieee80211_offchannel_stop_vifs
(
struct
ieee80211_local
*
local
)
{
struct
ieee80211_sub_if_data
*
sdata
;
...
...
@@ -134,8 +133,7 @@ void ieee80211_offchannel_stop_vifs(struct ieee80211_local *local,
if
(
sdata
->
vif
.
type
!=
NL80211_IFTYPE_MONITOR
)
{
netif_tx_stop_all_queues
(
sdata
->
dev
);
if
(
offchannel_ps_enable
&&
(
sdata
->
vif
.
type
==
NL80211_IFTYPE_STATION
)
&&
if
(
sdata
->
vif
.
type
==
NL80211_IFTYPE_STATION
&&
sdata
->
u
.
mgd
.
associated
)
ieee80211_offchannel_ps_enable
(
sdata
);
}
...
...
@@ -143,8 +141,7 @@ void ieee80211_offchannel_stop_vifs(struct ieee80211_local *local,
mutex_unlock
(
&
local
->
iflist_mtx
);
}
void
ieee80211_offchannel_return
(
struct
ieee80211_local
*
local
,
bool
offchannel_ps_disable
)
void
ieee80211_offchannel_return
(
struct
ieee80211_local
*
local
)
{
struct
ieee80211_sub_if_data
*
sdata
;
...
...
@@ -163,11 +160,9 @@ void ieee80211_offchannel_return(struct ieee80211_local *local,
continue
;
/* Tell AP we're back */
if
(
offchannel_ps_disable
&&
sdata
->
vif
.
type
==
NL80211_IFTYPE_STATION
)
{
if
(
sdata
->
u
.
mgd
.
associated
)
ieee80211_offchannel_ps_disable
(
sdata
);
}
if
(
sdata
->
vif
.
type
==
NL80211_IFTYPE_STATION
&&
sdata
->
u
.
mgd
.
associated
)
ieee80211_offchannel_ps_disable
(
sdata
);
if
(
sdata
->
vif
.
type
!=
NL80211_IFTYPE_MONITOR
)
{
/*
...
...
@@ -385,7 +380,7 @@ void ieee80211_sw_roc_work(struct work_struct *work)
local
->
tmp_channel
=
NULL
;
ieee80211_hw_config
(
local
,
0
);
ieee80211_offchannel_return
(
local
,
true
);
ieee80211_offchannel_return
(
local
);
}
ieee80211_recalc_idle
(
local
);
...
...
net/mac80211/scan.c
浏览文件 @
ead0ad16
...
...
@@ -292,7 +292,7 @@ static void __ieee80211_scan_completed(struct ieee80211_hw *hw, bool aborted,
if
(
!
was_hw_scan
)
{
ieee80211_configure_filter
(
local
);
drv_sw_scan_complete
(
local
);
ieee80211_offchannel_return
(
local
,
true
);
ieee80211_offchannel_return
(
local
);
}
ieee80211_recalc_idle
(
local
);
...
...
@@ -341,7 +341,7 @@ static int ieee80211_start_sw_scan(struct ieee80211_local *local)
local
->
next_scan_state
=
SCAN_DECISION
;
local
->
scan_channel_idx
=
0
;
ieee80211_offchannel_stop_vifs
(
local
,
true
);
ieee80211_offchannel_stop_vifs
(
local
);
ieee80211_configure_filter
(
local
);
...
...
@@ -678,12 +678,8 @@ static void ieee80211_scan_state_suspend(struct ieee80211_local *local,
local
->
scan_channel
=
NULL
;
ieee80211_hw_config
(
local
,
IEEE80211_CONF_CHANGE_CHANNEL
);
/*
* Re-enable vifs and beaconing. Leave PS
* in off-channel state..will put that back
* on-channel at the end of scanning.
*/
ieee80211_offchannel_return
(
local
,
false
);
/* disable PS */
ieee80211_offchannel_return
(
local
);
*
next_delay
=
HZ
/
5
;
/* afterwards, resume scan & go to next channel */
...
...
@@ -693,8 +689,7 @@ static void ieee80211_scan_state_suspend(struct ieee80211_local *local,
static
void
ieee80211_scan_state_resume
(
struct
ieee80211_local
*
local
,
unsigned
long
*
next_delay
)
{
/* PS already is in off-channel mode */
ieee80211_offchannel_stop_vifs
(
local
,
false
);
ieee80211_offchannel_stop_vifs
(
local
);
if
(
local
->
ops
->
flush
)
{
drv_flush
(
local
,
false
);
...
...
net/mac80211/tx.c
浏览文件 @
ead0ad16
...
...
@@ -1673,10 +1673,13 @@ netdev_tx_t ieee80211_monitor_start_xmit(struct sk_buff *skb,
chanctx_conf
=
rcu_dereference
(
tmp_sdata
->
vif
.
chanctx_conf
);
}
if
(
!
chanctx_conf
)
goto
fail_rcu
;
chan
=
chanctx_conf
->
def
.
chan
;
if
(
chanctx_conf
)
chan
=
chanctx_conf
->
def
.
chan
;
else
if
(
!
local
->
use_chanctx
)
chan
=
local
->
_oper_channel
;
else
goto
fail_rcu
;
/*
* Frame injection is not allowed if beaconing is not allowed
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录