Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
Kernel
提交
5419575e
K
Kernel
项目概览
openeuler
/
Kernel
1 年多 前同步成功
通知
8
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
Kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
5419575e
编写于
9月 25, 2012
作者:
J
John W. Linville
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'for-john' of
git://git.kernel.org/pub/scm/linux/kernel/git/jberg/mac80211-next
上级
0c49b699
64629b9d
变更
17
隐藏空白更改
内联
并排
Showing
17 changed file
with
132 addition
and
39 deletion
+132
-39
drivers/net/wireless/ath/ath6kl/cfg80211.c
drivers/net/wireless/ath/ath6kl/cfg80211.c
+2
-2
drivers/net/wireless/ath/ath6kl/cfg80211.h
drivers/net/wireless/ath/ath6kl/cfg80211.h
+1
-1
drivers/net/wireless/mwifiex/cfg80211.c
drivers/net/wireless/mwifiex/cfg80211.c
+1
-1
drivers/net/wireless/mwifiex/main.h
drivers/net/wireless/mwifiex/main.h
+1
-1
include/linux/nl80211.h
include/linux/nl80211.h
+24
-0
include/net/cfg80211.h
include/net/cfg80211.h
+21
-4
net/mac80211/agg-tx.c
net/mac80211/agg-tx.c
+1
-1
net/mac80211/cfg.c
net/mac80211/cfg.c
+2
-1
net/mac80211/debugfs.c
net/mac80211/debugfs.c
+4
-0
net/mac80211/ibss.c
net/mac80211/ibss.c
+1
-1
net/mac80211/mlme.c
net/mac80211/mlme.c
+1
-1
net/mac80211/sta_info.c
net/mac80211/sta_info.c
+1
-1
net/rfkill/core.c
net/rfkill/core.c
+7
-1
net/wireless/mlme.c
net/wireless/mlme.c
+11
-0
net/wireless/nl80211.c
net/wireless/nl80211.c
+34
-0
net/wireless/nl80211.h
net/wireless/nl80211.h
+5
-0
net/wireless/reg.c
net/wireless/reg.c
+15
-24
未找到文件。
drivers/net/wireless/ath/ath6kl/cfg80211.c
浏览文件 @
5419575e
...
...
@@ -1488,7 +1488,7 @@ static int ath6kl_cfg80211_set_power_mgmt(struct wiphy *wiphy,
}
static
struct
wireless_dev
*
ath6kl_cfg80211_add_iface
(
struct
wiphy
*
wiphy
,
char
*
name
,
c
onst
c
har
*
name
,
enum
nl80211_iftype
type
,
u32
*
flags
,
struct
vif_params
*
params
)
...
...
@@ -3477,7 +3477,7 @@ void ath6kl_cfg80211_vif_cleanup(struct ath6kl_vif *vif)
ar
->
num_vif
--
;
}
struct
wireless_dev
*
ath6kl_interface_add
(
struct
ath6kl
*
ar
,
char
*
name
,
struct
wireless_dev
*
ath6kl_interface_add
(
struct
ath6kl
*
ar
,
c
onst
c
har
*
name
,
enum
nl80211_iftype
type
,
u8
fw_vif_idx
,
u8
nw_type
)
{
...
...
drivers/net/wireless/ath/ath6kl/cfg80211.h
浏览文件 @
5419575e
...
...
@@ -25,7 +25,7 @@ enum ath6kl_cfg_suspend_mode {
ATH6KL_CFG_SUSPEND_SCHED_SCAN
,
};
struct
wireless_dev
*
ath6kl_interface_add
(
struct
ath6kl
*
ar
,
char
*
name
,
struct
wireless_dev
*
ath6kl_interface_add
(
struct
ath6kl
*
ar
,
c
onst
c
har
*
name
,
enum
nl80211_iftype
type
,
u8
fw_vif_idx
,
u8
nw_type
);
void
ath6kl_cfg80211_ch_switch_notify
(
struct
ath6kl_vif
*
vif
,
int
freq
,
...
...
drivers/net/wireless/mwifiex/cfg80211.c
浏览文件 @
5419575e
...
...
@@ -1636,7 +1636,7 @@ mwifiex_setup_ht_caps(struct ieee80211_sta_ht_cap *ht_info,
* create a new virtual interface with the given name
*/
struct
wireless_dev
*
mwifiex_add_virtual_intf
(
struct
wiphy
*
wiphy
,
char
*
name
,
c
onst
c
har
*
name
,
enum
nl80211_iftype
type
,
u32
*
flags
,
struct
vif_params
*
params
)
...
...
drivers/net/wireless/mwifiex/main.h
浏览文件 @
5419575e
...
...
@@ -1033,7 +1033,7 @@ int mwifiex_check_network_compatibility(struct mwifiex_private *priv,
struct
mwifiex_bssdescriptor
*
bss_desc
);
struct
wireless_dev
*
mwifiex_add_virtual_intf
(
struct
wiphy
*
wiphy
,
char
*
name
,
c
onst
c
har
*
name
,
enum
nl80211_iftype
type
,
u32
*
flags
,
struct
vif_params
*
params
);
...
...
include/linux/nl80211.h
浏览文件 @
5419575e
...
...
@@ -573,6 +573,11 @@
* @NL80211_CMD_STOP_P2P_DEVICE: Stop the given P2P Device, identified by
* its %NL80211_ATTR_WDEV identifier.
*
* @NL80211_CMD_CONN_FAILED: connection request to an AP failed; used to
* notify userspace that AP has rejected the connection request from a
* station, due to particular reason. %NL80211_ATTR_CONN_FAILED_REASON
* is used for this.
*
* @NL80211_CMD_MAX: highest used command number
* @__NL80211_CMD_AFTER_LAST: internal use
*/
...
...
@@ -719,6 +724,8 @@ enum nl80211_commands {
NL80211_CMD_START_P2P_DEVICE
,
NL80211_CMD_STOP_P2P_DEVICE
,
NL80211_CMD_CONN_FAILED
,
/* add new commands above here */
/* used to define NL80211_CMD_MAX below */
...
...
@@ -1262,6 +1269,10 @@ enum nl80211_commands {
* was used to provide the hint. For the different types of
* allowed user regulatory hints see nl80211_user_reg_hint_type.
*
* @NL80211_ATTR_CONN_FAILED_REASON: The reason for which AP has rejected
* the connection request from a station. nl80211_connect_failed_reason
* enum has different reasons of connection failure.
*
* @NL80211_ATTR_MAX: highest attribute number currently defined
* @__NL80211_ATTR_AFTER_LAST: internal use
*/
...
...
@@ -1517,6 +1528,8 @@ enum nl80211_attrs {
NL80211_ATTR_USER_REG_HINT_TYPE
,
NL80211_ATTR_CONN_FAILED_REASON
,
/* add attributes here, update the policy in nl80211.c */
__NL80211_ATTR_AFTER_LAST
,
...
...
@@ -3045,4 +3058,15 @@ enum nl80211_probe_resp_offload_support_attr {
NL80211_PROBE_RESP_OFFLOAD_SUPPORT_80211U
=
1
<<
3
,
};
/**
* enum nl80211_connect_failed_reason - connection request failed reasons
* @NL80211_CONN_FAIL_MAX_CLIENTS: Maximum number of clients that can be
* handled by the AP is reached.
* @NL80211_CONN_FAIL_BLOCKED_CLIENT: Client's MAC is in the AP's blocklist.
*/
enum
nl80211_connect_failed_reason
{
NL80211_CONN_FAIL_MAX_CLIENTS
,
NL80211_CONN_FAIL_BLOCKED_CLIENT
,
};
#endif
/* __LINUX_NL80211_H */
include/net/cfg80211.h
浏览文件 @
5419575e
...
...
@@ -1580,9 +1580,7 @@ struct cfg80211_gtk_rekey_data {
* @set_cqm_txe_config: Configure connection quality monitor TX error
* thresholds.
* @sched_scan_start: Tell the driver to start a scheduled scan.
* @sched_scan_stop: Tell the driver to stop an ongoing scheduled
* scan. The driver_initiated flag specifies whether the driver
* itself has informed that the scan has stopped.
* @sched_scan_stop: Tell the driver to stop an ongoing scheduled scan.
*
* @mgmt_frame_register: Notify driver that a management frame type was
* registered. Note that this callback may not sleep, and cannot run
...
...
@@ -1630,7 +1628,7 @@ struct cfg80211_ops {
void
(
*
set_wakeup
)(
struct
wiphy
*
wiphy
,
bool
enabled
);
struct
wireless_dev
*
(
*
add_virtual_intf
)(
struct
wiphy
*
wiphy
,
char
*
name
,
c
onst
c
har
*
name
,
enum
nl80211_iftype
type
,
u32
*
flags
,
struct
vif_params
*
params
);
...
...
@@ -3362,6 +3360,25 @@ void cfg80211_new_sta(struct net_device *dev, const u8 *mac_addr,
*/
void
cfg80211_del_sta
(
struct
net_device
*
dev
,
const
u8
*
mac_addr
,
gfp_t
gfp
);
/**
* cfg80211_conn_failed - connection request failed notification
*
* @dev: the netdev
* @mac_addr: the station's address
* @reason: the reason for connection failure
* @gfp: allocation flags
*
* Whenever a station tries to connect to an AP and if the station
* could not connect to the AP as the AP has rejected the connection
* for some reasons, this function is called.
*
* The reason for connection failure can be any of the value from
* nl80211_connect_failed_reason enum
*/
void
cfg80211_conn_failed
(
struct
net_device
*
dev
,
const
u8
*
mac_addr
,
enum
nl80211_connect_failed_reason
reason
,
gfp_t
gfp
);
/**
* cfg80211_rx_mgmt - notification of received, unprocessed management frame
* @wdev: wireless device receiving the frame
...
...
net/mac80211/agg-tx.c
浏览文件 @
5419575e
...
...
@@ -869,7 +869,7 @@ void ieee80211_process_addba_resp(struct ieee80211_local *local,
}
else
{
___ieee80211_stop_tx_ba_session
(
sta
,
tid
,
WLAN_BACK_INITIATOR
,
tru
e
);
fals
e
);
}
out:
...
...
net/mac80211/cfg.c
浏览文件 @
5419575e
...
...
@@ -20,7 +20,8 @@
#include "rate.h"
#include "mesh.h"
static
struct
wireless_dev
*
ieee80211_add_iface
(
struct
wiphy
*
wiphy
,
char
*
name
,
static
struct
wireless_dev
*
ieee80211_add_iface
(
struct
wiphy
*
wiphy
,
const
char
*
name
,
enum
nl80211_iftype
type
,
u32
*
flags
,
struct
vif_params
*
params
)
...
...
net/mac80211/debugfs.c
浏览文件 @
5419575e
...
...
@@ -70,6 +70,7 @@ DEBUGFS_READONLY_FILE(wep_iv, "%#08x",
DEBUGFS_READONLY_FILE
(
rate_ctrl_alg
,
"%s"
,
local
->
rate_ctrl
?
local
->
rate_ctrl
->
ops
->
name
:
"hw/driver"
);
#ifdef CONFIG_PM
static
ssize_t
reset_write
(
struct
file
*
file
,
const
char
__user
*
user_buf
,
size_t
count
,
loff_t
*
ppos
)
{
...
...
@@ -88,6 +89,7 @@ static const struct file_operations reset_ops = {
.
open
=
simple_open
,
.
llseek
=
noop_llseek
,
};
#endif
static
ssize_t
hwflags_read
(
struct
file
*
file
,
char
__user
*
user_buf
,
size_t
count
,
loff_t
*
ppos
)
...
...
@@ -245,7 +247,9 @@ void debugfs_hw_add(struct ieee80211_local *local)
DEBUGFS_ADD
(
total_ps_buffered
);
DEBUGFS_ADD
(
wep_iv
);
DEBUGFS_ADD
(
queues
);
#ifdef CONFIG_PM
DEBUGFS_ADD_MODE
(
reset
,
0200
);
#endif
DEBUGFS_ADD
(
hwflags
);
DEBUGFS_ADD
(
user_power
);
DEBUGFS_ADD
(
power
);
...
...
net/mac80211/ibss.c
浏览文件 @
5419575e
...
...
@@ -278,7 +278,7 @@ static struct sta_info *ieee80211_ibss_finish_sta(struct sta_info *sta,
if
(
auth
&&
!
sdata
->
u
.
ibss
.
auth_frame_registrations
)
{
ibss_dbg
(
sdata
,
"TX Auth SA=%pM DA=%pM BSSID=%pM (auth_transaction=1)
\n
"
,
sdata
->
vif
.
addr
,
sdata
->
u
.
ibss
.
bssid
,
addr
);
sdata
->
vif
.
addr
,
addr
,
sdata
->
u
.
ibss
.
bssid
);
ieee80211_send_auth
(
sdata
,
1
,
WLAN_AUTH_OPEN
,
NULL
,
0
,
addr
,
sdata
->
u
.
ibss
.
bssid
,
NULL
,
0
,
0
);
}
...
...
net/mac80211/mlme.c
浏览文件 @
5419575e
...
...
@@ -1399,7 +1399,7 @@ static void ieee80211_set_disassoc(struct ieee80211_sub_if_data *sdata,
sta
=
sta_info_get
(
sdata
,
ifmgd
->
bssid
);
if
(
sta
)
{
set_sta_flag
(
sta
,
WLAN_STA_BLOCK_BA
);
ieee80211_sta_tear_down_BA_sessions
(
sta
,
tx
);
ieee80211_sta_tear_down_BA_sessions
(
sta
,
false
);
}
mutex_unlock
(
&
local
->
sta_mtx
);
...
...
net/mac80211/sta_info.c
浏览文件 @
5419575e
...
...
@@ -738,7 +738,7 @@ int __must_check __sta_info_destroy(struct sta_info *sta)
* will be sufficient.
*/
set_sta_flag
(
sta
,
WLAN_STA_BLOCK_BA
);
ieee80211_sta_tear_down_BA_sessions
(
sta
,
tru
e
);
ieee80211_sta_tear_down_BA_sessions
(
sta
,
fals
e
);
ret
=
sta_info_hash_del
(
local
,
sta
);
if
(
ret
)
...
...
net/rfkill/core.c
浏览文件 @
5419575e
...
...
@@ -270,6 +270,7 @@ static bool __rfkill_set_hw_state(struct rfkill *rfkill,
static
void
rfkill_set_block
(
struct
rfkill
*
rfkill
,
bool
blocked
)
{
unsigned
long
flags
;
bool
prev
,
curr
;
int
err
;
if
(
unlikely
(
rfkill
->
dev
.
power
.
power_state
.
event
&
PM_EVENT_SLEEP
))
...
...
@@ -284,6 +285,8 @@ static void rfkill_set_block(struct rfkill *rfkill, bool blocked)
rfkill
->
ops
->
query
(
rfkill
,
rfkill
->
data
);
spin_lock_irqsave
(
&
rfkill
->
lock
,
flags
);
prev
=
rfkill
->
state
&
RFKILL_BLOCK_SW
;
if
(
rfkill
->
state
&
RFKILL_BLOCK_SW
)
rfkill
->
state
|=
RFKILL_BLOCK_SW_PREV
;
else
...
...
@@ -313,10 +316,13 @@ static void rfkill_set_block(struct rfkill *rfkill, bool blocked)
}
rfkill
->
state
&=
~
RFKILL_BLOCK_SW_SETCALL
;
rfkill
->
state
&=
~
RFKILL_BLOCK_SW_PREV
;
curr
=
rfkill
->
state
&
RFKILL_BLOCK_SW
;
spin_unlock_irqrestore
(
&
rfkill
->
lock
,
flags
);
rfkill_led_trigger_event
(
rfkill
);
rfkill_event
(
rfkill
);
if
(
prev
!=
curr
)
rfkill_event
(
rfkill
);
}
#ifdef CONFIG_RFKILL_INPUT
...
...
net/wireless/mlme.c
浏览文件 @
5419575e
...
...
@@ -612,6 +612,17 @@ void cfg80211_del_sta(struct net_device *dev, const u8 *mac_addr, gfp_t gfp)
}
EXPORT_SYMBOL
(
cfg80211_del_sta
);
void
cfg80211_conn_failed
(
struct
net_device
*
dev
,
const
u8
*
mac_addr
,
enum
nl80211_connect_failed_reason
reason
,
gfp_t
gfp
)
{
struct
wiphy
*
wiphy
=
dev
->
ieee80211_ptr
->
wiphy
;
struct
cfg80211_registered_device
*
rdev
=
wiphy_to_dev
(
wiphy
);
nl80211_send_conn_failed_event
(
rdev
,
dev
,
mac_addr
,
reason
,
gfp
);
}
EXPORT_SYMBOL
(
cfg80211_conn_failed
);
struct
cfg80211_mgmt_registration
{
struct
list_head
list
;
...
...
net/wireless/nl80211.c
浏览文件 @
5419575e
...
...
@@ -8364,6 +8364,40 @@ void nl80211_send_sta_del_event(struct cfg80211_registered_device *rdev,
nlmsg_free
(
msg
);
}
void
nl80211_send_conn_failed_event
(
struct
cfg80211_registered_device
*
rdev
,
struct
net_device
*
dev
,
const
u8
*
mac_addr
,
enum
nl80211_connect_failed_reason
reason
,
gfp_t
gfp
)
{
struct
sk_buff
*
msg
;
void
*
hdr
;
msg
=
nlmsg_new
(
NLMSG_GOODSIZE
,
gfp
);
if
(
!
msg
)
return
;
hdr
=
nl80211hdr_put
(
msg
,
0
,
0
,
0
,
NL80211_CMD_CONN_FAILED
);
if
(
!
hdr
)
{
nlmsg_free
(
msg
);
return
;
}
if
(
nla_put_u32
(
msg
,
NL80211_ATTR_IFINDEX
,
dev
->
ifindex
)
||
nla_put
(
msg
,
NL80211_ATTR_MAC
,
ETH_ALEN
,
mac_addr
)
||
nla_put_u32
(
msg
,
NL80211_ATTR_CONN_FAILED_REASON
,
reason
))
goto
nla_put_failure
;
genlmsg_end
(
msg
,
hdr
);
genlmsg_multicast_netns
(
wiphy_net
(
&
rdev
->
wiphy
),
msg
,
0
,
nl80211_mlme_mcgrp
.
id
,
gfp
);
return
;
nla_put_failure:
genlmsg_cancel
(
msg
,
hdr
);
nlmsg_free
(
msg
);
}
static
bool
__nl80211_unexpected_frame
(
struct
net_device
*
dev
,
u8
cmd
,
const
u8
*
addr
,
gfp_t
gfp
)
{
...
...
net/wireless/nl80211.h
浏览文件 @
5419575e
...
...
@@ -91,6 +91,11 @@ void nl80211_send_sta_del_event(struct cfg80211_registered_device *rdev,
struct
net_device
*
dev
,
const
u8
*
mac_addr
,
gfp_t
gfp
);
void
nl80211_send_conn_failed_event
(
struct
cfg80211_registered_device
*
rdev
,
struct
net_device
*
dev
,
const
u8
*
mac_addr
,
enum
nl80211_connect_failed_reason
reason
,
gfp_t
gfp
);
int
nl80211_send_mgmt
(
struct
cfg80211_registered_device
*
rdev
,
struct
wireless_dev
*
wdev
,
u32
nlpid
,
int
freq
,
int
sig_dbm
,
...
...
net/wireless/reg.c
浏览文件 @
5419575e
...
...
@@ -504,9 +504,11 @@ static bool reg_does_bw_fit(const struct ieee80211_freq_range *freq_range,
*
* This lets us know if a specific frequency rule is or is not relevant to
* a specific frequency's band. Bands are device specific and artificial
* definitions (the "2.4 GHz band" and the "5 GHz band"), however it is
* safe for now to assume that a frequency rule should not be part of a
* frequency's band if the start freq or end freq are off by more than 2 GHz.
* definitions (the "2.4 GHz band", the "5 GHz band" and the "60GHz band"),
* however it is safe for now to assume that a frequency rule should not be
* part of a frequency's band if the start freq or end freq are off by more
* than 2 GHz for the 2.4 and 5 GHz bands, and by more than 10 GHz for the
* 60 GHz band.
* This resolution can be lowered and should be considered as we add
* regulatory rule support for other "bands".
**/
...
...
@@ -514,9 +516,16 @@ static bool freq_in_rule_band(const struct ieee80211_freq_range *freq_range,
u32
freq_khz
)
{
#define ONE_GHZ_IN_KHZ 1000000
if
(
abs
(
freq_khz
-
freq_range
->
start_freq_khz
)
<=
(
2
*
ONE_GHZ_IN_KHZ
))
/*
* From 802.11ad: directional multi-gigabit (DMG):
* Pertaining to operation in a frequency band containing a channel
* with the Channel starting frequency above 45 GHz.
*/
u32
limit
=
freq_khz
>
45
*
ONE_GHZ_IN_KHZ
?
10
*
ONE_GHZ_IN_KHZ
:
2
*
ONE_GHZ_IN_KHZ
;
if
(
abs
(
freq_khz
-
freq_range
->
start_freq_khz
)
<=
limit
)
return
true
;
if
(
abs
(
freq_khz
-
freq_range
->
end_freq_khz
)
<=
(
2
*
ONE_GHZ_IN_KHZ
)
)
if
(
abs
(
freq_khz
-
freq_range
->
end_freq_khz
)
<=
limit
)
return
true
;
return
false
;
#undef ONE_GHZ_IN_KHZ
...
...
@@ -2193,7 +2202,6 @@ static void print_regdomain_info(const struct ieee80211_regdomain *rd)
static
int
__set_regdom
(
const
struct
ieee80211_regdomain
*
rd
)
{
const
struct
ieee80211_regdomain
*
intersected_rd
=
NULL
;
struct
cfg80211_registered_device
*
rdev
=
NULL
;
struct
wiphy
*
request_wiphy
;
/* Some basic sanity checks first */
...
...
@@ -2305,24 +2313,7 @@ static int __set_regdom(const struct ieee80211_regdomain *rd)
return
0
;
}
if
(
!
intersected_rd
)
return
-
EINVAL
;
rdev
=
wiphy_to_dev
(
request_wiphy
);
rdev
->
country_ie_alpha2
[
0
]
=
rd
->
alpha2
[
0
];
rdev
->
country_ie_alpha2
[
1
]
=
rd
->
alpha2
[
1
];
rdev
->
env
=
last_request
->
country_ie_env
;
BUG_ON
(
intersected_rd
==
rd
);
kfree
(
rd
);
rd
=
NULL
;
reset_regdomains
(
false
);
cfg80211_regdomain
=
intersected_rd
;
return
0
;
return
-
EINVAL
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录