Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
c125d5e8
Commit
c125d5e8
authored
Nov 02, 2011
by
John W. Linville
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
git://git.kernel.org/pub/scm/linux/kernel/git/padovan/bluetooth
parents
6a32e4f9
6b441fab
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
29 additions
and
14 deletions
+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
No files found.
drivers/bluetooth/ath3k.c
View file @
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
View file @
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
View file @
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
View file @
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
View file @
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
View file @
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
View file @
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
;
}
}
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment