Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
cloud-kernel
提交
3f97fae9
cloud-kernel
项目概览
openanolis
/
cloud-kernel
1 年多 前同步成功
通知
161
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看板
提交
3f97fae9
编写于
7月 08, 2011
作者:
D
David S. Miller
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'for-davem' of
git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6
上级
06b8fc5d
8a98d935
变更
16
隐藏空白更改
内联
并排
Showing
16 changed file
with
92 addition
and
42 deletion
+92
-42
drivers/net/wireless/ath/ath5k/pci.c
drivers/net/wireless/ath/ath5k/pci.c
+5
-2
drivers/net/wireless/ath/ath5k/sysfs.c
drivers/net/wireless/ath/ath5k/sysfs.c
+6
-3
drivers/net/wireless/ath/ath9k/xmit.c
drivers/net/wireless/ath/ath9k/xmit.c
+2
-1
drivers/net/wireless/ath/carl9170/usb.c
drivers/net/wireless/ath/carl9170/usb.c
+2
-0
drivers/net/wireless/rtlwifi/rtl8192cu/sw.c
drivers/net/wireless/rtlwifi/rtl8192cu/sw.c
+1
-0
drivers/ssb/driver_pcicore.c
drivers/ssb/driver_pcicore.c
+9
-9
net/bluetooth/hci_conn.c
net/bluetooth/hci_conn.c
+3
-0
net/bluetooth/hidp/core.c
net/bluetooth/hidp/core.c
+11
-7
net/bluetooth/hidp/hidp.h
net/bluetooth/hidp/hidp.h
+1
-0
net/bluetooth/l2cap_core.c
net/bluetooth/l2cap_core.c
+3
-2
net/mac80211/scan.c
net/mac80211/scan.c
+2
-1
net/mac80211/wpa.c
net/mac80211/wpa.c
+13
-3
net/wireless/core.c
net/wireless/core.c
+9
-3
net/wireless/core.h
net/wireless/core.h
+2
-0
net/wireless/nl80211.c
net/wireless/nl80211.c
+18
-6
net/wireless/scan.c
net/wireless/scan.c
+5
-5
未找到文件。
drivers/net/wireless/ath/ath5k/pci.c
浏览文件 @
3f97fae9
...
...
@@ -297,7 +297,9 @@ ath5k_pci_remove(struct pci_dev *pdev)
#ifdef CONFIG_PM_SLEEP
static
int
ath5k_pci_suspend
(
struct
device
*
dev
)
{
struct
ath5k_softc
*
sc
=
pci_get_drvdata
(
to_pci_dev
(
dev
));
struct
pci_dev
*
pdev
=
to_pci_dev
(
dev
);
struct
ieee80211_hw
*
hw
=
pci_get_drvdata
(
pdev
);
struct
ath5k_softc
*
sc
=
hw
->
priv
;
ath5k_led_off
(
sc
);
return
0
;
...
...
@@ -306,7 +308,8 @@ static int ath5k_pci_suspend(struct device *dev)
static
int
ath5k_pci_resume
(
struct
device
*
dev
)
{
struct
pci_dev
*
pdev
=
to_pci_dev
(
dev
);
struct
ath5k_softc
*
sc
=
pci_get_drvdata
(
pdev
);
struct
ieee80211_hw
*
hw
=
pci_get_drvdata
(
pdev
);
struct
ath5k_softc
*
sc
=
hw
->
priv
;
/*
* Suspend/Resume resets the PCI configuration space, so we have to
...
...
drivers/net/wireless/ath/ath5k/sysfs.c
浏览文件 @
3f97fae9
...
...
@@ -10,7 +10,8 @@ static ssize_t ath5k_attr_show_##name(struct device *dev, \
struct device_attribute *attr, \
char *buf) \
{ \
struct ath5k_softc *sc = dev_get_drvdata(dev); \
struct ieee80211_hw *hw = dev_get_drvdata(dev); \
struct ath5k_softc *sc = hw->priv; \
return snprintf(buf, PAGE_SIZE, "%d\n", get); \
} \
\
...
...
@@ -18,7 +19,8 @@ static ssize_t ath5k_attr_store_##name(struct device *dev, \
struct device_attribute *attr, \
const char *buf, size_t count) \
{ \
struct ath5k_softc *sc = dev_get_drvdata(dev); \
struct ieee80211_hw *hw = dev_get_drvdata(dev); \
struct ath5k_softc *sc = hw->priv; \
int val; \
\
val = (int)simple_strtoul(buf, NULL, 10); \
...
...
@@ -33,7 +35,8 @@ static ssize_t ath5k_attr_show_##name(struct device *dev, \
struct device_attribute *attr, \
char *buf) \
{ \
struct ath5k_softc *sc = dev_get_drvdata(dev); \
struct ieee80211_hw *hw = dev_get_drvdata(dev); \
struct ath5k_softc *sc = hw->priv; \
return snprintf(buf, PAGE_SIZE, "%d\n", get); \
} \
static DEVICE_ATTR(name, S_IRUGO, ath5k_attr_show_##name, NULL)
...
...
drivers/net/wireless/ath/ath9k/xmit.c
浏览文件 @
3f97fae9
...
...
@@ -671,7 +671,8 @@ static int ath_compute_num_delims(struct ath_softc *sc, struct ath_atx_tid *tid,
* TODO - this could be improved to be dependent on the rate.
* The hardware can keep up at lower rates, but not higher rates
*/
if
(
fi
->
keyix
!=
ATH9K_TXKEYIX_INVALID
)
if
((
fi
->
keyix
!=
ATH9K_TXKEYIX_INVALID
)
&&
!
(
sc
->
sc_ah
->
caps
.
hw_caps
&
ATH9K_HW_CAP_EDMA
))
ndelim
+=
ATH_AGGR_ENCRYPTDELIM
;
/*
...
...
drivers/net/wireless/ath/carl9170/usb.c
浏览文件 @
3f97fae9
...
...
@@ -112,6 +112,8 @@ static struct usb_device_id carl9170_usb_ids[] = {
{
USB_DEVICE
(
0x04bb
,
0x093f
)
},
/* NEC WL300NU-G */
{
USB_DEVICE
(
0x0409
,
0x0249
)
},
/* NEC WL300NU-AG */
{
USB_DEVICE
(
0x0409
,
0x02b4
)
},
/* AVM FRITZ!WLAN USB Stick N */
{
USB_DEVICE
(
0x057c
,
0x8401
)
},
/* AVM FRITZ!WLAN USB Stick N 2.4 */
...
...
drivers/net/wireless/rtlwifi/rtl8192cu/sw.c
浏览文件 @
3f97fae9
...
...
@@ -298,6 +298,7 @@ static struct usb_device_id rtl8192c_usb_ids[] = {
{
RTL_USB_DEVICE
(
0x06f8
,
0xe033
,
rtl92cu_hal_cfg
)},
/*Hercules - Edimax*/
{
RTL_USB_DEVICE
(
0x07b8
,
0x8188
,
rtl92cu_hal_cfg
)},
/*Abocom - Abocom*/
{
RTL_USB_DEVICE
(
0x07b8
,
0x8189
,
rtl92cu_hal_cfg
)},
/*Funai - Abocom*/
{
RTL_USB_DEVICE
(
0x0846
,
0x9041
,
rtl92cu_hal_cfg
)},
/*NetGear WNA1000M*/
{
RTL_USB_DEVICE
(
0x0Df6
,
0x0052
,
rtl92cu_hal_cfg
)},
/*Sitecom - Edimax*/
{
RTL_USB_DEVICE
(
0x0eb0
,
0x9071
,
rtl92cu_hal_cfg
)},
/*NO Brand - Etop*/
/* HP - Lite-On ,8188CUS Slim Combo */
...
...
drivers/ssb/driver_pcicore.c
浏览文件 @
3f97fae9
...
...
@@ -516,8 +516,17 @@ static void ssb_pcicore_pcie_setup_workarounds(struct ssb_pcicore *pc)
static
void
ssb_pcicore_init_clientmode
(
struct
ssb_pcicore
*
pc
)
{
ssb_pcicore_fix_sprom_core_index
(
pc
);
/* Disable PCI interrupts. */
ssb_write32
(
pc
->
dev
,
SSB_INTVEC
,
0
);
/* Additional PCIe always once-executed workarounds */
if
(
pc
->
dev
->
id
.
coreid
==
SSB_DEV_PCIE
)
{
ssb_pcicore_serdes_workaround
(
pc
);
/* TODO: ASPM */
/* TODO: Clock Request Update */
}
}
void
ssb_pcicore_init
(
struct
ssb_pcicore
*
pc
)
...
...
@@ -529,8 +538,6 @@ void ssb_pcicore_init(struct ssb_pcicore *pc)
if
(
!
ssb_device_is_enabled
(
dev
))
ssb_device_enable
(
dev
,
0
);
ssb_pcicore_fix_sprom_core_index
(
pc
);
#ifdef CONFIG_SSB_PCICORE_HOSTMODE
pc
->
hostmode
=
pcicore_is_in_hostmode
(
pc
);
if
(
pc
->
hostmode
)
...
...
@@ -538,13 +545,6 @@ void ssb_pcicore_init(struct ssb_pcicore *pc)
#endif
/* CONFIG_SSB_PCICORE_HOSTMODE */
if
(
!
pc
->
hostmode
)
ssb_pcicore_init_clientmode
(
pc
);
/* Additional PCIe always once-executed workarounds */
if
(
dev
->
id
.
coreid
==
SSB_DEV_PCIE
)
{
ssb_pcicore_serdes_workaround
(
pc
);
/* TODO: ASPM */
/* TODO: Clock Request Update */
}
}
static
u32
ssb_pcie_read
(
struct
ssb_pcicore
*
pc
,
u32
address
)
...
...
net/bluetooth/hci_conn.c
浏览文件 @
3f97fae9
...
...
@@ -393,6 +393,9 @@ int hci_conn_del(struct hci_conn *conn)
hci_dev_put
(
hdev
);
if
(
conn
->
handle
==
0
)
kfree
(
conn
);
return
0
;
}
...
...
net/bluetooth/hidp/core.c
浏览文件 @
3f97fae9
...
...
@@ -464,7 +464,8 @@ static void hidp_idle_timeout(unsigned long arg)
{
struct
hidp_session
*
session
=
(
struct
hidp_session
*
)
arg
;
kthread_stop
(
session
->
task
);
atomic_inc
(
&
session
->
terminate
);
wake_up_process
(
session
->
task
);
}
static
void
hidp_set_timer
(
struct
hidp_session
*
session
)
...
...
@@ -535,7 +536,8 @@ static void hidp_process_hid_control(struct hidp_session *session,
skb_queue_purge
(
&
session
->
ctrl_transmit
);
skb_queue_purge
(
&
session
->
intr_transmit
);
kthread_stop
(
session
->
task
);
atomic_inc
(
&
session
->
terminate
);
wake_up_process
(
current
);
}
}
...
...
@@ -706,9 +708,8 @@ static int hidp_session(void *arg)
add_wait_queue
(
sk_sleep
(
intr_sk
),
&
intr_wait
);
session
->
waiting_for_startup
=
0
;
wake_up_interruptible
(
&
session
->
startup_queue
);
while
(
!
kthread_should_stop
())
{
set_current_state
(
TASK_INTERRUPTIBLE
);
set_current_state
(
TASK_INTERRUPTIBLE
);
while
(
!
atomic_read
(
&
session
->
terminate
))
{
if
(
ctrl_sk
->
sk_state
!=
BT_CONNECTED
||
intr_sk
->
sk_state
!=
BT_CONNECTED
)
break
;
...
...
@@ -726,6 +727,7 @@ static int hidp_session(void *arg)
hidp_process_transmit
(
session
);
schedule
();
set_current_state
(
TASK_INTERRUPTIBLE
);
}
set_current_state
(
TASK_RUNNING
);
remove_wait_queue
(
sk_sleep
(
intr_sk
),
&
intr_wait
);
...
...
@@ -1060,7 +1062,8 @@ int hidp_add_connection(struct hidp_connadd_req *req, struct socket *ctrl_sock,
err_add_device:
hid_destroy_device
(
session
->
hid
);
session
->
hid
=
NULL
;
kthread_stop
(
session
->
task
);
atomic_inc
(
&
session
->
terminate
);
wake_up_process
(
session
->
task
);
unlink:
hidp_del_timer
(
session
);
...
...
@@ -1111,7 +1114,8 @@ int hidp_del_connection(struct hidp_conndel_req *req)
skb_queue_purge
(
&
session
->
ctrl_transmit
);
skb_queue_purge
(
&
session
->
intr_transmit
);
kthread_stop
(
session
->
task
);
atomic_inc
(
&
session
->
terminate
);
wake_up_process
(
session
->
task
);
}
}
else
err
=
-
ENOENT
;
...
...
net/bluetooth/hidp/hidp.h
浏览文件 @
3f97fae9
...
...
@@ -142,6 +142,7 @@ struct hidp_session {
uint
ctrl_mtu
;
uint
intr_mtu
;
atomic_t
terminate
;
struct
task_struct
*
task
;
unsigned
char
keys
[
8
];
...
...
net/bluetooth/l2cap_core.c
浏览文件 @
3f97fae9
...
...
@@ -2323,7 +2323,8 @@ static inline int l2cap_config_req(struct l2cap_conn *conn, struct l2cap_cmd_hdr
sk
=
chan
->
sk
;
if
(
sk
->
sk_state
!=
BT_CONFIG
)
{
if
((
bt_sk
(
sk
)
->
defer_setup
&&
sk
->
sk_state
!=
BT_CONNECT2
)
||
(
!
bt_sk
(
sk
)
->
defer_setup
&&
sk
->
sk_state
!=
BT_CONFIG
))
{
struct
l2cap_cmd_rej
rej
;
rej
.
reason
=
cpu_to_le16
(
0x0002
);
...
...
@@ -2334,7 +2335,7 @@ static inline int l2cap_config_req(struct l2cap_conn *conn, struct l2cap_cmd_hdr
/* Reject if config buffer is too small. */
len
=
cmd_len
-
sizeof
(
*
req
);
if
(
chan
->
conf_len
+
len
>
sizeof
(
chan
->
conf_req
))
{
if
(
len
<
0
||
chan
->
conf_len
+
len
>
sizeof
(
chan
->
conf_req
))
{
l2cap_send_cmd
(
conn
,
cmd
->
ident
,
L2CAP_CONF_RSP
,
l2cap_build_conf_rsp
(
chan
,
rsp
,
L2CAP_CONF_REJECT
,
flags
),
rsp
);
...
...
net/mac80211/scan.c
浏览文件 @
3f97fae9
...
...
@@ -877,7 +877,8 @@ int ieee80211_request_sched_scan_start(struct ieee80211_sub_if_data *sdata,
for
(
i
=
0
;
i
<
IEEE80211_NUM_BANDS
;
i
++
)
{
local
->
sched_scan_ies
.
ie
[
i
]
=
kzalloc
(
2
+
IEEE80211_MAX_SSID_LEN
+
local
->
scan_ies_len
,
local
->
scan_ies_len
+
req
->
ie_len
,
GFP_KERNEL
);
if
(
!
local
->
sched_scan_ies
.
ie
[
i
])
{
ret
=
-
ENOMEM
;
...
...
net/mac80211/wpa.c
浏览文件 @
3f97fae9
...
...
@@ -86,6 +86,11 @@ ieee80211_rx_h_michael_mic_verify(struct ieee80211_rx_data *rx)
struct
sk_buff
*
skb
=
rx
->
skb
;
struct
ieee80211_rx_status
*
status
=
IEEE80211_SKB_RXCB
(
skb
);
struct
ieee80211_hdr
*
hdr
=
(
struct
ieee80211_hdr
*
)
skb
->
data
;
int
queue
=
rx
->
queue
;
/* otherwise, TKIP is vulnerable to TID 0 vs. non-QoS replays */
if
(
rx
->
queue
==
NUM_RX_DATA_QUEUES
-
1
)
queue
=
0
;
/*
* it makes no sense to check for MIC errors on anything other
...
...
@@ -148,8 +153,8 @@ ieee80211_rx_h_michael_mic_verify(struct ieee80211_rx_data *rx)
update_iv:
/* update IV in key information to be able to detect replays */
rx
->
key
->
u
.
tkip
.
rx
[
rx
->
queue
].
iv32
=
rx
->
tkip_iv32
;
rx
->
key
->
u
.
tkip
.
rx
[
rx
->
queue
].
iv16
=
rx
->
tkip_iv16
;
rx
->
key
->
u
.
tkip
.
rx
[
queue
].
iv32
=
rx
->
tkip_iv32
;
rx
->
key
->
u
.
tkip
.
rx
[
queue
].
iv16
=
rx
->
tkip_iv16
;
return
RX_CONTINUE
;
...
...
@@ -241,6 +246,11 @@ ieee80211_crypto_tkip_decrypt(struct ieee80211_rx_data *rx)
struct
ieee80211_key
*
key
=
rx
->
key
;
struct
sk_buff
*
skb
=
rx
->
skb
;
struct
ieee80211_rx_status
*
status
=
IEEE80211_SKB_RXCB
(
skb
);
int
queue
=
rx
->
queue
;
/* otherwise, TKIP is vulnerable to TID 0 vs. non-QoS replays */
if
(
rx
->
queue
==
NUM_RX_DATA_QUEUES
-
1
)
queue
=
0
;
hdrlen
=
ieee80211_hdrlen
(
hdr
->
frame_control
);
...
...
@@ -261,7 +271,7 @@ ieee80211_crypto_tkip_decrypt(struct ieee80211_rx_data *rx)
res
=
ieee80211_tkip_decrypt_data
(
rx
->
local
->
wep_rx_tfm
,
key
,
skb
->
data
+
hdrlen
,
skb
->
len
-
hdrlen
,
rx
->
sta
->
sta
.
addr
,
hdr
->
addr1
,
hwaccel
,
rx
->
queue
,
hdr
->
addr1
,
hwaccel
,
queue
,
&
rx
->
tkip_iv32
,
&
rx
->
tkip_iv16
);
if
(
res
!=
TKIP_DECRYPT_OK
)
...
...
net/wireless/core.c
浏览文件 @
3f97fae9
...
...
@@ -366,6 +366,7 @@ struct wiphy *wiphy_new(const struct cfg80211_ops *ops, int sizeof_priv)
mutex_init
(
&
rdev
->
mtx
);
mutex_init
(
&
rdev
->
devlist_mtx
);
mutex_init
(
&
rdev
->
sched_scan_mtx
);
INIT_LIST_HEAD
(
&
rdev
->
netdev_list
);
spin_lock_init
(
&
rdev
->
bss_lock
);
INIT_LIST_HEAD
(
&
rdev
->
bss_list
);
...
...
@@ -701,6 +702,7 @@ void cfg80211_dev_free(struct cfg80211_registered_device *rdev)
rfkill_destroy
(
rdev
->
rfkill
);
mutex_destroy
(
&
rdev
->
mtx
);
mutex_destroy
(
&
rdev
->
devlist_mtx
);
mutex_destroy
(
&
rdev
->
sched_scan_mtx
);
list_for_each_entry_safe
(
scan
,
tmp
,
&
rdev
->
bss_list
,
list
)
cfg80211_put_bss
(
&
scan
->
pub
);
cfg80211_rdev_free_wowlan
(
rdev
);
...
...
@@ -737,12 +739,16 @@ static void wdev_cleanup_work(struct work_struct *work)
___cfg80211_scan_done
(
rdev
,
true
);
}
cfg80211_unlock_rdev
(
rdev
);
mutex_lock
(
&
rdev
->
sched_scan_mtx
);
if
(
WARN_ON
(
rdev
->
sched_scan_req
&&
rdev
->
sched_scan_req
->
dev
==
wdev
->
netdev
))
{
__cfg80211_stop_sched_scan
(
rdev
,
false
);
}
cfg80211_unlock_rdev
(
rdev
);
mutex_unlock
(
&
rdev
->
sched_scan_mtx
);
mutex_lock
(
&
rdev
->
devlist_mtx
);
rdev
->
opencount
--
;
...
...
@@ -830,9 +836,9 @@ static int cfg80211_netdev_notifier_call(struct notifier_block * nb,
break
;
case
NL80211_IFTYPE_P2P_CLIENT
:
case
NL80211_IFTYPE_STATION
:
cfg80211_lock_rdev
(
rdev
);
mutex_lock
(
&
rdev
->
sched_scan_mtx
);
__cfg80211_stop_sched_scan
(
rdev
,
false
);
cfg80211_unlock_rdev
(
rdev
);
mutex_unlock
(
&
rdev
->
sched_scan_mtx
);
wdev_lock
(
wdev
);
#ifdef CONFIG_CFG80211_WEXT
...
...
net/wireless/core.h
浏览文件 @
3f97fae9
...
...
@@ -65,6 +65,8 @@ struct cfg80211_registered_device {
struct
work_struct
scan_done_wk
;
struct
work_struct
sched_scan_results_wk
;
struct
mutex
sched_scan_mtx
;
#ifdef CONFIG_NL80211_TESTMODE
struct
genl_info
*
testmode_info
;
#endif
...
...
net/wireless/nl80211.c
浏览文件 @
3f97fae9
...
...
@@ -3461,9 +3461,6 @@ static int nl80211_start_sched_scan(struct sk_buff *skb,
if
(
!
is_valid_ie_attr
(
info
->
attrs
[
NL80211_ATTR_IE
]))
return
-
EINVAL
;
if
(
rdev
->
sched_scan_req
)
return
-
EINPROGRESS
;
if
(
!
info
->
attrs
[
NL80211_ATTR_SCHED_SCAN_INTERVAL
])
return
-
EINVAL
;
...
...
@@ -3502,12 +3499,21 @@ static int nl80211_start_sched_scan(struct sk_buff *skb,
if
(
ie_len
>
wiphy
->
max_scan_ie_len
)
return
-
EINVAL
;
mutex_lock
(
&
rdev
->
sched_scan_mtx
);
if
(
rdev
->
sched_scan_req
)
{
err
=
-
EINPROGRESS
;
goto
out
;
}
request
=
kzalloc
(
sizeof
(
*
request
)
+
sizeof
(
*
request
->
ssids
)
*
n_ssids
+
sizeof
(
*
request
->
channels
)
*
n_channels
+
ie_len
,
GFP_KERNEL
);
if
(
!
request
)
return
-
ENOMEM
;
if
(
!
request
)
{
err
=
-
ENOMEM
;
goto
out
;
}
if
(
n_ssids
)
request
->
ssids
=
(
void
*
)
&
request
->
channels
[
n_channels
];
...
...
@@ -3605,6 +3611,7 @@ static int nl80211_start_sched_scan(struct sk_buff *skb,
out_free:
kfree
(
request
);
out:
mutex_unlock
(
&
rdev
->
sched_scan_mtx
);
return
err
;
}
...
...
@@ -3612,12 +3619,17 @@ static int nl80211_stop_sched_scan(struct sk_buff *skb,
struct
genl_info
*
info
)
{
struct
cfg80211_registered_device
*
rdev
=
info
->
user_ptr
[
0
];
int
err
;
if
(
!
(
rdev
->
wiphy
.
flags
&
WIPHY_FLAG_SUPPORTS_SCHED_SCAN
)
||
!
rdev
->
ops
->
sched_scan_stop
)
return
-
EOPNOTSUPP
;
return
__cfg80211_stop_sched_scan
(
rdev
,
false
);
mutex_lock
(
&
rdev
->
sched_scan_mtx
);
err
=
__cfg80211_stop_sched_scan
(
rdev
,
false
);
mutex_unlock
(
&
rdev
->
sched_scan_mtx
);
return
err
;
}
static
int
nl80211_send_bss
(
struct
sk_buff
*
msg
,
u32
pid
,
u32
seq
,
int
flags
,
...
...
net/wireless/scan.c
浏览文件 @
3f97fae9
...
...
@@ -100,14 +100,14 @@ void __cfg80211_sched_scan_results(struct work_struct *wk)
rdev
=
container_of
(
wk
,
struct
cfg80211_registered_device
,
sched_scan_results_wk
);
cfg80211_lock_rdev
(
rdev
);
mutex_lock
(
&
rdev
->
sched_scan_mtx
);
/* we don't have sched_scan_req anymore if the scan is stopping */
if
(
rdev
->
sched_scan_req
)
nl80211_send_sched_scan_results
(
rdev
,
rdev
->
sched_scan_req
->
dev
);
cfg80211_unlock_rdev
(
rdev
);
mutex_unlock
(
&
rdev
->
sched_scan_mtx
);
}
void
cfg80211_sched_scan_results
(
struct
wiphy
*
wiphy
)
...
...
@@ -123,9 +123,9 @@ void cfg80211_sched_scan_stopped(struct wiphy *wiphy)
{
struct
cfg80211_registered_device
*
rdev
=
wiphy_to_dev
(
wiphy
);
cfg80211_lock_rdev
(
rdev
);
mutex_lock
(
&
rdev
->
sched_scan_mtx
);
__cfg80211_stop_sched_scan
(
rdev
,
true
);
cfg80211_unlock_rdev
(
rdev
);
mutex_unlock
(
&
rdev
->
sched_scan_mtx
);
}
EXPORT_SYMBOL
(
cfg80211_sched_scan_stopped
);
...
...
@@ -135,7 +135,7 @@ int __cfg80211_stop_sched_scan(struct cfg80211_registered_device *rdev,
int
err
;
struct
net_device
*
dev
;
ASSERT_RDEV_LOCK
(
rdev
);
lockdep_assert_held
(
&
rdev
->
sched_scan_mtx
);
if
(
!
rdev
->
sched_scan_req
)
return
0
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录