Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
cloud-kernel
提交
c125d5e8
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看板
提交
c125d5e8
编写于
11月 02, 2011
作者:
J
John W. Linville
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'master' of
git://git.kernel.org/pub/scm/linux/kernel/git/padovan/bluetooth
上级
6a32e4f9
6b441fab
变更
7
显示空白变更内容
内联
并排
Showing
7 changed file
with
29 addition
and
14 deletion
+29
-14
drivers/bluetooth/ath3k.c
drivers/bluetooth/ath3k.c
+2
-2
drivers/bluetooth/bcm203x.c
drivers/bluetooth/bcm203x.c
+11
-1
drivers/bluetooth/bfusb.c
drivers/bluetooth/bfusb.c
+7
-6
include/net/bluetooth/rfcomm.h
include/net/bluetooth/rfcomm.h
+1
-0
net/bluetooth/hci_core.c
net/bluetooth/hci_core.c
+1
-1
net/bluetooth/mgmt.c
net/bluetooth/mgmt.c
+0
-2
net/bluetooth/rfcomm/core.c
net/bluetooth/rfcomm/core.c
+7
-2
未找到文件。
drivers/bluetooth/ath3k.c
浏览文件 @
c125d5e8
...
@@ -105,7 +105,7 @@ static int ath3k_load_firmware(struct usb_device *udev,
...
@@ -105,7 +105,7 @@ static int ath3k_load_firmware(struct usb_device *udev,
pipe
=
usb_sndctrlpipe
(
udev
,
0
);
pipe
=
usb_sndctrlpipe
(
udev
,
0
);
send_buf
=
kmalloc
(
BULK_SIZE
,
GFP_
ATOMIC
);
send_buf
=
kmalloc
(
BULK_SIZE
,
GFP_
KERNEL
);
if
(
!
send_buf
)
{
if
(
!
send_buf
)
{
BT_ERR
(
"Can't allocate memory chunk for firmware"
);
BT_ERR
(
"Can't allocate memory chunk for firmware"
);
return
-
ENOMEM
;
return
-
ENOMEM
;
...
@@ -176,7 +176,7 @@ static int ath3k_load_fwfile(struct usb_device *udev,
...
@@ -176,7 +176,7 @@ static int ath3k_load_fwfile(struct usb_device *udev,
count
=
firmware
->
size
;
count
=
firmware
->
size
;
send_buf
=
kmalloc
(
BULK_SIZE
,
GFP_
ATOMIC
);
send_buf
=
kmalloc
(
BULK_SIZE
,
GFP_
KERNEL
);
if
(
!
send_buf
)
{
if
(
!
send_buf
)
{
BT_ERR
(
"Can't allocate memory chunk for firmware"
);
BT_ERR
(
"Can't allocate memory chunk for firmware"
);
return
-
ENOMEM
;
return
-
ENOMEM
;
...
...
drivers/bluetooth/bcm203x.c
浏览文件 @
c125d5e8
...
@@ -24,6 +24,7 @@
...
@@ -24,6 +24,7 @@
#include <linux/module.h>
#include <linux/module.h>
#include <linux/atomic.h>
#include <linux/kernel.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/init.h>
#include <linux/slab.h>
#include <linux/slab.h>
...
@@ -65,6 +66,7 @@ struct bcm203x_data {
...
@@ -65,6 +66,7 @@ struct bcm203x_data {
unsigned
long
state
;
unsigned
long
state
;
struct
work_struct
work
;
struct
work_struct
work
;
atomic_t
shutdown
;
struct
urb
*
urb
;
struct
urb
*
urb
;
unsigned
char
*
buffer
;
unsigned
char
*
buffer
;
...
@@ -97,6 +99,7 @@ static void bcm203x_complete(struct urb *urb)
...
@@ -97,6 +99,7 @@ static void bcm203x_complete(struct urb *urb)
data
->
state
=
BCM203X_SELECT_MEMORY
;
data
->
state
=
BCM203X_SELECT_MEMORY
;
/* use workqueue to have a small delay */
schedule_work
(
&
data
->
work
);
schedule_work
(
&
data
->
work
);
break
;
break
;
...
@@ -155,7 +158,10 @@ static void bcm203x_work(struct work_struct *work)
...
@@ -155,7 +158,10 @@ static void bcm203x_work(struct work_struct *work)
struct
bcm203x_data
*
data
=
struct
bcm203x_data
*
data
=
container_of
(
work
,
struct
bcm203x_data
,
work
);
container_of
(
work
,
struct
bcm203x_data
,
work
);
if
(
usb_submit_urb
(
data
->
urb
,
GFP_ATOMIC
)
<
0
)
if
(
atomic_read
(
&
data
->
shutdown
))
return
;
if
(
usb_submit_urb
(
data
->
urb
,
GFP_KERNEL
)
<
0
)
BT_ERR
(
"Can't submit URB"
);
BT_ERR
(
"Can't submit URB"
);
}
}
...
@@ -243,6 +249,7 @@ static int bcm203x_probe(struct usb_interface *intf, const struct usb_device_id
...
@@ -243,6 +249,7 @@ static int bcm203x_probe(struct usb_interface *intf, const struct usb_device_id
usb_set_intfdata
(
intf
,
data
);
usb_set_intfdata
(
intf
,
data
);
/* use workqueue to have a small delay */
schedule_work
(
&
data
->
work
);
schedule_work
(
&
data
->
work
);
return
0
;
return
0
;
...
@@ -254,6 +261,9 @@ static void bcm203x_disconnect(struct usb_interface *intf)
...
@@ -254,6 +261,9 @@ static void bcm203x_disconnect(struct usb_interface *intf)
BT_DBG
(
"intf %p"
,
intf
);
BT_DBG
(
"intf %p"
,
intf
);
atomic_inc
(
&
data
->
shutdown
);
cancel_work_sync
(
&
data
->
work
);
usb_kill_urb
(
data
->
urb
);
usb_kill_urb
(
data
->
urb
);
usb_set_intfdata
(
intf
,
NULL
);
usb_set_intfdata
(
intf
,
NULL
);
...
...
drivers/bluetooth/bfusb.c
浏览文件 @
c125d5e8
...
@@ -568,22 +568,23 @@ static int bfusb_load_firmware(struct bfusb_data *data,
...
@@ -568,22 +568,23 @@ static int bfusb_load_firmware(struct bfusb_data *data,
BT_INFO
(
"BlueFRITZ! USB loading firmware"
);
BT_INFO
(
"BlueFRITZ! USB loading firmware"
);
buf
=
kmalloc
(
BFUSB_MAX_BLOCK_SIZE
+
3
,
GFP_KERNEL
);
if
(
!
buf
)
{
BT_ERR
(
"Can't allocate memory chunk for firmware"
);
return
-
ENOMEM
;
}
pipe
=
usb_sndctrlpipe
(
data
->
udev
,
0
);
pipe
=
usb_sndctrlpipe
(
data
->
udev
,
0
);
if
(
usb_control_msg
(
data
->
udev
,
pipe
,
USB_REQ_SET_CONFIGURATION
,
if
(
usb_control_msg
(
data
->
udev
,
pipe
,
USB_REQ_SET_CONFIGURATION
,
0
,
1
,
0
,
NULL
,
0
,
USB_CTRL_SET_TIMEOUT
)
<
0
)
{
0
,
1
,
0
,
NULL
,
0
,
USB_CTRL_SET_TIMEOUT
)
<
0
)
{
BT_ERR
(
"Can't change to loading configuration"
);
BT_ERR
(
"Can't change to loading configuration"
);
kfree
(
buf
);
return
-
EBUSY
;
return
-
EBUSY
;
}
}
data
->
udev
->
toggle
[
0
]
=
data
->
udev
->
toggle
[
1
]
=
0
;
data
->
udev
->
toggle
[
0
]
=
data
->
udev
->
toggle
[
1
]
=
0
;
buf
=
kmalloc
(
BFUSB_MAX_BLOCK_SIZE
+
3
,
GFP_ATOMIC
);
if
(
!
buf
)
{
BT_ERR
(
"Can't allocate memory chunk for firmware"
);
return
-
ENOMEM
;
}
pipe
=
usb_sndbulkpipe
(
data
->
udev
,
data
->
bulk_out_ep
);
pipe
=
usb_sndbulkpipe
(
data
->
udev
,
data
->
bulk_out_ep
);
while
(
count
)
{
while
(
count
)
{
...
...
include/net/bluetooth/rfcomm.h
浏览文件 @
c125d5e8
...
@@ -211,6 +211,7 @@ struct rfcomm_dlc {
...
@@ -211,6 +211,7 @@ struct rfcomm_dlc {
#define RFCOMM_AUTH_ACCEPT 6
#define RFCOMM_AUTH_ACCEPT 6
#define RFCOMM_AUTH_REJECT 7
#define RFCOMM_AUTH_REJECT 7
#define RFCOMM_DEFER_SETUP 8
#define RFCOMM_DEFER_SETUP 8
#define RFCOMM_ENC_DROP 9
/* Scheduling flags and events */
/* Scheduling flags and events */
#define RFCOMM_SCHED_WAKEUP 31
#define RFCOMM_SCHED_WAKEUP 31
...
...
net/bluetooth/hci_core.c
浏览文件 @
c125d5e8
...
@@ -613,7 +613,7 @@ static int hci_dev_do_close(struct hci_dev *hdev)
...
@@ -613,7 +613,7 @@ static int hci_dev_do_close(struct hci_dev *hdev)
if
(
!
test_bit
(
HCI_RAW
,
&
hdev
->
flags
))
{
if
(
!
test_bit
(
HCI_RAW
,
&
hdev
->
flags
))
{
set_bit
(
HCI_INIT
,
&
hdev
->
flags
);
set_bit
(
HCI_INIT
,
&
hdev
->
flags
);
__hci_request
(
hdev
,
hci_reset_req
,
0
,
__hci_request
(
hdev
,
hci_reset_req
,
0
,
msecs_to_jiffies
(
250
));
msecs_to_jiffies
(
HCI_INIT_TIMEOUT
));
clear_bit
(
HCI_INIT
,
&
hdev
->
flags
);
clear_bit
(
HCI_INIT
,
&
hdev
->
flags
);
}
}
...
...
net/bluetooth/mgmt.c
浏览文件 @
c125d5e8
...
@@ -147,8 +147,6 @@ static int read_index_list(struct sock *sk)
...
@@ -147,8 +147,6 @@ static int read_index_list(struct sock *sk)
hci_del_off_timer
(
d
);
hci_del_off_timer
(
d
);
set_bit
(
HCI_MGMT
,
&
d
->
flags
);
if
(
test_bit
(
HCI_SETUP
,
&
d
->
flags
))
if
(
test_bit
(
HCI_SETUP
,
&
d
->
flags
))
continue
;
continue
;
...
...
net/bluetooth/rfcomm/core.c
浏览文件 @
c125d5e8
...
@@ -1802,6 +1802,11 @@ static inline void rfcomm_process_dlcs(struct rfcomm_session *s)
...
@@ -1802,6 +1802,11 @@ static inline void rfcomm_process_dlcs(struct rfcomm_session *s)
continue
;
continue
;
}
}
if
(
test_bit
(
RFCOMM_ENC_DROP
,
&
d
->
flags
))
{
__rfcomm_dlc_close
(
d
,
ECONNREFUSED
);
continue
;
}
if
(
test_and_clear_bit
(
RFCOMM_AUTH_ACCEPT
,
&
d
->
flags
))
{
if
(
test_and_clear_bit
(
RFCOMM_AUTH_ACCEPT
,
&
d
->
flags
))
{
rfcomm_dlc_clear_timer
(
d
);
rfcomm_dlc_clear_timer
(
d
);
if
(
d
->
out
)
{
if
(
d
->
out
)
{
...
@@ -2077,7 +2082,7 @@ static void rfcomm_security_cfm(struct hci_conn *conn, u8 status, u8 encrypt)
...
@@ -2077,7 +2082,7 @@ static void rfcomm_security_cfm(struct hci_conn *conn, u8 status, u8 encrypt)
if
(
test_and_clear_bit
(
RFCOMM_SEC_PENDING
,
&
d
->
flags
))
{
if
(
test_and_clear_bit
(
RFCOMM_SEC_PENDING
,
&
d
->
flags
))
{
rfcomm_dlc_clear_timer
(
d
);
rfcomm_dlc_clear_timer
(
d
);
if
(
status
||
encrypt
==
0x00
)
{
if
(
status
||
encrypt
==
0x00
)
{
__rfcomm_dlc_close
(
d
,
ECONNREFUSED
);
set_bit
(
RFCOMM_ENC_DROP
,
&
d
->
flags
);
continue
;
continue
;
}
}
}
}
...
@@ -2088,7 +2093,7 @@ static void rfcomm_security_cfm(struct hci_conn *conn, u8 status, u8 encrypt)
...
@@ -2088,7 +2093,7 @@ static void rfcomm_security_cfm(struct hci_conn *conn, u8 status, u8 encrypt)
rfcomm_dlc_set_timer
(
d
,
RFCOMM_AUTH_TIMEOUT
);
rfcomm_dlc_set_timer
(
d
,
RFCOMM_AUTH_TIMEOUT
);
continue
;
continue
;
}
else
if
(
d
->
sec_level
==
BT_SECURITY_HIGH
)
{
}
else
if
(
d
->
sec_level
==
BT_SECURITY_HIGH
)
{
__rfcomm_dlc_close
(
d
,
ECONNREFUSED
);
set_bit
(
RFCOMM_ENC_DROP
,
&
d
->
flags
);
continue
;
continue
;
}
}
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录