Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
cloud-kernel
提交
d1f10302
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看板
提交
d1f10302
编写于
10月 29, 2012
作者:
J
John W. Linville
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'for-john' of
git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next
上级
9b34f40c
1724ffbc
变更
11
隐藏空白更改
内联
并排
Showing
11 changed file
with
104 addition
and
18 deletion
+104
-18
include/net/mac80211.h
include/net/mac80211.h
+13
-0
net/mac80211/aes_cmac.c
net/mac80211/aes_cmac.c
+17
-0
net/mac80211/main.c
net/mac80211/main.c
+1
-1
net/mac80211/mesh.c
net/mac80211/mesh.c
+5
-4
net/mac80211/mlme.c
net/mac80211/mlme.c
+4
-5
net/mac80211/trace.h
net/mac80211/trace.h
+31
-3
net/mac80211/util.c
net/mac80211/util.c
+1
-1
net/wireless/core.c
net/wireless/core.c
+2
-2
net/wireless/nl80211.c
net/wireless/nl80211.c
+2
-2
net/wireless/rdev-ops.h
net/wireless/rdev-ops.h
+18
-0
net/wireless/trace.h
net/wireless/trace.h
+10
-0
未找到文件。
include/net/mac80211.h
浏览文件 @
d1f10302
...
...
@@ -3222,6 +3222,19 @@ void ieee80211_get_tkip_rx_p1k(struct ieee80211_key_conf *keyconf,
void
ieee80211_get_tkip_p2k
(
struct
ieee80211_key_conf
*
keyconf
,
struct
sk_buff
*
skb
,
u8
*
p2k
);
/**
* ieee80211_aes_cmac_calculate_k1_k2 - calculate the AES-CMAC sub keys
*
* This function computes the two AES-CMAC sub-keys, based on the
* previously installed master key.
*
* @keyconf: the parameter passed with the set key
* @k1: a buffer to be filled with the 1st sub-key
* @k2: a buffer to be filled with the 2nd sub-key
*/
void
ieee80211_aes_cmac_calculate_k1_k2
(
struct
ieee80211_key_conf
*
keyconf
,
u8
*
k1
,
u8
*
k2
);
/**
* struct ieee80211_key_seq - key sequence counter
*
...
...
net/mac80211/aes_cmac.c
浏览文件 @
d1f10302
...
...
@@ -126,3 +126,20 @@ void ieee80211_aes_cmac_key_free(struct crypto_cipher *tfm)
{
crypto_free_cipher
(
tfm
);
}
void
ieee80211_aes_cmac_calculate_k1_k2
(
struct
ieee80211_key_conf
*
keyconf
,
u8
*
k1
,
u8
*
k2
)
{
u8
l
[
AES_BLOCK_SIZE
]
=
{};
struct
ieee80211_key
*
key
=
container_of
(
keyconf
,
struct
ieee80211_key
,
conf
);
crypto_cipher_encrypt_one
(
key
->
u
.
aes_cmac
.
tfm
,
l
,
l
);
memcpy
(
k1
,
l
,
AES_BLOCK_SIZE
);
gf_mulx
(
k1
);
memcpy
(
k2
,
k1
,
AES_BLOCK_SIZE
);
gf_mulx
(
k2
);
}
EXPORT_SYMBOL
(
ieee80211_aes_cmac_calculate_k1_k2
);
net/mac80211/main.c
浏览文件 @
d1f10302
...
...
@@ -751,7 +751,7 @@ int ieee80211_register_hw(struct ieee80211_hw *hw)
if
(
comb
->
num_different_channels
>
1
)
return
-
EINVAL
;
}
}
else
{
/*
* WDS is currently prohibited when channel contexts are used
* because there's no clear definition of which channel WDS
...
...
net/mac80211/mesh.c
浏览文件 @
d1f10302
...
...
@@ -703,8 +703,10 @@ static void ieee80211_mesh_rx_bcn_presp(struct ieee80211_sub_if_data *sdata,
ieee802_11_parse_elems
(
mgmt
->
u
.
probe_resp
.
variable
,
len
-
baselen
,
&
elems
);
/* ignore beacons from secure mesh peers if our security is off */
if
(
elems
.
rsn_len
&&
sdata
->
u
.
mesh
.
security
==
IEEE80211_MESH_SEC_NONE
)
/* ignore non-mesh or secure / unsecure mismatch */
if
((
!
elems
.
mesh_id
||
!
elems
.
mesh_config
)
||
(
elems
.
rsn
&&
sdata
->
u
.
mesh
.
security
==
IEEE80211_MESH_SEC_NONE
)
||
(
!
elems
.
rsn
&&
sdata
->
u
.
mesh
.
security
!=
IEEE80211_MESH_SEC_NONE
))
return
;
if
(
elems
.
ds_params
&&
elems
.
ds_params_len
==
1
)
...
...
@@ -717,8 +719,7 @@ static void ieee80211_mesh_rx_bcn_presp(struct ieee80211_sub_if_data *sdata,
if
(
!
channel
||
channel
->
flags
&
IEEE80211_CHAN_DISABLED
)
return
;
if
(
elems
.
mesh_id
&&
elems
.
mesh_config
&&
mesh_matches_local
(
sdata
,
&
elems
))
if
(
mesh_matches_local
(
sdata
,
&
elems
))
mesh_neighbour_update
(
sdata
,
mgmt
->
sa
,
&
elems
);
if
(
ifmsh
->
sync_ops
)
...
...
net/mac80211/mlme.c
浏览文件 @
d1f10302
...
...
@@ -2433,7 +2433,7 @@ static void ieee80211_rx_mgmt_beacon(struct ieee80211_sub_if_data *sdata,
struct
ieee80211_chanctx_conf
*
chanctx_conf
;
struct
ieee80211_channel
*
chan
;
u32
changed
=
0
;
bool
erp_valid
,
directed_tim
=
false
;
bool
erp_valid
;
u8
erp_value
=
0
;
u32
ncrc
;
u8
*
bssid
;
...
...
@@ -2564,11 +2564,10 @@ static void ieee80211_rx_mgmt_beacon(struct ieee80211_sub_if_data *sdata,
len
-
baselen
,
&
elems
,
care_about_ies
,
ncrc
);
if
(
local
->
hw
.
flags
&
IEEE80211_HW_PS_NULLFUNC_STACK
)
directed_tim
=
ieee80211_check_tim
(
elems
.
tim
,
elems
.
tim_len
,
ifmgd
->
aid
);
if
(
local
->
hw
.
flags
&
IEEE80211_HW_PS_NULLFUNC_STACK
)
{
bool
directed_tim
=
ieee80211_check_tim
(
elems
.
tim
,
elems
.
tim_len
,
ifmgd
->
aid
);
if
(
directed_tim
)
{
if
(
local
->
hw
.
conf
.
dynamic_ps_timeout
>
0
)
{
if
(
local
->
hw
.
conf
.
flags
&
IEEE80211_CONF_PS
)
{
...
...
net/mac80211/trace.h
浏览文件 @
d1f10302
...
...
@@ -315,20 +315,33 @@ TRACE_EVENT(drv_bss_info_changed,
TP_STRUCT__entry
(
LOCAL_ENTRY
VIF_ENTRY
__field
(
u32
,
changed
)
__field
(
bool
,
assoc
)
__field
(
bool
,
ibss_joined
)
__field
(
bool
,
ibss_creator
)
__field
(
u16
,
aid
)
__field
(
bool
,
cts
)
__field
(
bool
,
shortpre
)
__field
(
bool
,
shortslot
)
__field
(
bool
,
enable_beacon
)
__field
(
u8
,
dtimper
)
__field
(
u16
,
bcnint
)
__field
(
u16
,
assoc_cap
)
__field
(
u64
,
sync_tsf
)
__field
(
u32
,
sync_device_ts
)
__field
(
u32
,
basic_rates
)
__field
(
u32
,
changed
)
__field
(
bool
,
enable_beacon
)
__array
(
int
,
mcast_rate
,
IEEE80211_NUM_BANDS
)
__field
(
u16
,
ht_operation_mode
)
__field
(
s32
,
cqm_rssi_thold
);
__field
(
s32
,
cqm_rssi_hyst
);
__field
(
u32
,
channel_type
);
__dynamic_array
(
u32
,
arp_addr_list
,
info
->
arp_addr_cnt
);
__field
(
bool
,
arp_filter_enabled
);
__field
(
bool
,
qos
);
__field
(
bool
,
idle
);
__field
(
bool
,
ps
);
__dynamic_array
(
u8
,
ssid
,
info
->
ssid_len
);
__field
(
bool
,
hidden_ssid
);
),
TP_fast_assign
(
...
...
@@ -337,17 +350,32 @@ TRACE_EVENT(drv_bss_info_changed,
__entry
->
changed
=
changed
;
__entry
->
aid
=
info
->
aid
;
__entry
->
assoc
=
info
->
assoc
;
__entry
->
ibss_joined
=
info
->
ibss_joined
;
__entry
->
ibss_creator
=
info
->
ibss_creator
;
__entry
->
shortpre
=
info
->
use_short_preamble
;
__entry
->
cts
=
info
->
use_cts_prot
;
__entry
->
shortslot
=
info
->
use_short_slot
;
__entry
->
enable_beacon
=
info
->
enable_beacon
;
__entry
->
dtimper
=
info
->
dtim_period
;
__entry
->
bcnint
=
info
->
beacon_int
;
__entry
->
assoc_cap
=
info
->
assoc_capability
;
__entry
->
sync_tsf
=
info
->
sync_tsf
;
__entry
->
sync_device_ts
=
info
->
sync_device_ts
;
__entry
->
basic_rates
=
info
->
basic_rates
;
__entry
->
enable_beacon
=
info
->
enable_beacon
;
memcpy
(
__entry
->
mcast_rate
,
info
->
mcast_rate
,
sizeof
(
__entry
->
mcast_rate
));
__entry
->
ht_operation_mode
=
info
->
ht_operation_mode
;
__entry
->
cqm_rssi_thold
=
info
->
cqm_rssi_thold
;
__entry
->
cqm_rssi_hyst
=
info
->
cqm_rssi_hyst
;
__entry
->
channel_type
=
info
->
channel_type
;
memcpy
(
__get_dynamic_array
(
arp_addr_list
),
info
->
arp_addr_list
,
sizeof
(
u32
)
*
info
->
arp_addr_cnt
);
__entry
->
arp_filter_enabled
=
info
->
arp_filter_enabled
;
__entry
->
qos
=
info
->
qos
;
__entry
->
idle
=
info
->
idle
;
__entry
->
ps
=
info
->
ps
;
memcpy
(
__get_dynamic_array
(
ssid
),
info
->
ssid
,
info
->
ssid_len
);
__entry
->
hidden_ssid
=
info
->
hidden_ssid
;
),
TP_printk
(
...
...
net/mac80211/util.c
浏览文件 @
d1f10302
...
...
@@ -821,7 +821,7 @@ u32 ieee802_11_parse_elems_crc(u8 *start, size_t len,
if
(
elem_parse_failed
)
elems
->
parse_error
=
true
;
else
set_bit
(
id
,
seen_elems
);
__
set_bit
(
id
,
seen_elems
);
left
-=
elen
;
pos
+=
elen
;
...
...
net/wireless/core.c
浏览文件 @
d1f10302
...
...
@@ -241,7 +241,7 @@ static int cfg80211_rfkill_set_block(void *data, bool blocked)
case
NL80211_IFTYPE_P2P_DEVICE
:
if
(
!
wdev
->
p2p_started
)
break
;
rdev
->
ops
->
stop_p2p_device
(
&
rdev
->
wiphy
,
wdev
);
rdev
_stop_p2p_device
(
rdev
,
wdev
);
wdev
->
p2p_started
=
false
;
rdev
->
opencount
--
;
break
;
...
...
@@ -774,7 +774,7 @@ void cfg80211_unregister_wdev(struct wireless_dev *wdev)
case
NL80211_IFTYPE_P2P_DEVICE
:
if
(
!
wdev
->
p2p_started
)
break
;
rdev
->
ops
->
stop_p2p_device
(
&
rdev
->
wiphy
,
wdev
);
rdev
_stop_p2p_device
(
rdev
,
wdev
);
wdev
->
p2p_started
=
false
;
rdev
->
opencount
--
;
break
;
...
...
net/wireless/nl80211.c
浏览文件 @
d1f10302
...
...
@@ -6932,7 +6932,7 @@ static int nl80211_start_p2p_device(struct sk_buff *skb, struct genl_info *info)
if
(
err
)
return
err
;
err
=
rdev
->
ops
->
start_p2p_device
(
&
rdev
->
wiphy
,
wdev
);
err
=
rdev
_start_p2p_device
(
rdev
,
wdev
);
if
(
err
)
return
err
;
...
...
@@ -6958,7 +6958,7 @@ static int nl80211_stop_p2p_device(struct sk_buff *skb, struct genl_info *info)
if
(
!
wdev
->
p2p_started
)
return
0
;
rdev
->
ops
->
stop_p2p_device
(
&
rdev
->
wiphy
,
wdev
);
rdev
_stop_p2p_device
(
rdev
,
wdev
);
wdev
->
p2p_started
=
false
;
mutex_lock
(
&
rdev
->
devlist_mtx
);
...
...
net/wireless/rdev-ops.h
浏览文件 @
d1f10302
...
...
@@ -858,4 +858,22 @@ static inline struct ieee80211_channel
return
ret
;
}
static
inline
int
rdev_start_p2p_device
(
struct
cfg80211_registered_device
*
rdev
,
struct
wireless_dev
*
wdev
)
{
int
ret
;
trace_rdev_start_p2p_device
(
&
rdev
->
wiphy
,
wdev
);
ret
=
rdev
->
ops
->
start_p2p_device
(
&
rdev
->
wiphy
,
wdev
);
trace_rdev_return_int
(
&
rdev
->
wiphy
,
ret
);
return
ret
;
}
static
inline
void
rdev_stop_p2p_device
(
struct
cfg80211_registered_device
*
rdev
,
struct
wireless_dev
*
wdev
)
{
trace_rdev_stop_p2p_device
(
&
rdev
->
wiphy
,
wdev
);
rdev
->
ops
->
stop_p2p_device
(
&
rdev
->
wiphy
,
wdev
);
trace_rdev_return_void
(
&
rdev
->
wiphy
);
}
#endif
/* __CFG80211_RDEV_OPS */
net/wireless/trace.h
浏览文件 @
d1f10302
...
...
@@ -1741,6 +1741,16 @@ TRACE_EVENT(rdev_return_channel,
WIPHY_PR_ARG
,
CHAN_PR_ARG
,
__entry
->
type
)
);
DEFINE_EVENT
(
wiphy_wdev_evt
,
rdev_start_p2p_device
,
TP_PROTO
(
struct
wiphy
*
wiphy
,
struct
wireless_dev
*
wdev
),
TP_ARGS
(
wiphy
,
wdev
)
);
DEFINE_EVENT
(
wiphy_wdev_evt
,
rdev_stop_p2p_device
,
TP_PROTO
(
struct
wiphy
*
wiphy
,
struct
wireless_dev
*
wdev
),
TP_ARGS
(
wiphy
,
wdev
)
);
/*************************************************************
* cfg80211 exported functions traces *
*************************************************************/
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录