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
nexedi
linux
Commits
4dcc0637
Commit
4dcc0637
authored
Apr 27, 2012
by
John W. Linville
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'for-upstream' of
git://git.kernel.org/pub/scm/linux/kernel/git/bluetooth/bluetooth
parents
afa762f6
98514036
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
29 additions
and
16 deletions
+29
-16
drivers/bluetooth/ath3k.c
drivers/bluetooth/ath3k.c
+4
-0
drivers/bluetooth/btusb.c
drivers/bluetooth/btusb.c
+6
-0
include/net/bluetooth/hci_core.h
include/net/bluetooth/hci_core.h
+2
-1
net/bluetooth/hci_core.c
net/bluetooth/hci_core.c
+13
-14
net/bluetooth/hci_event.c
net/bluetooth/hci_event.c
+3
-0
net/bluetooth/mgmt.c
net/bluetooth/mgmt.c
+1
-1
No files found.
drivers/bluetooth/ath3k.c
View file @
4dcc0637
...
@@ -75,6 +75,8 @@ static struct usb_device_id ath3k_table[] = {
...
@@ -75,6 +75,8 @@ static struct usb_device_id ath3k_table[] = {
{
USB_DEVICE
(
0x0CF3
,
0x311D
)
},
{
USB_DEVICE
(
0x0CF3
,
0x311D
)
},
{
USB_DEVICE
(
0x13d3
,
0x3375
)
},
{
USB_DEVICE
(
0x13d3
,
0x3375
)
},
{
USB_DEVICE
(
0x04CA
,
0x3005
)
},
{
USB_DEVICE
(
0x04CA
,
0x3005
)
},
{
USB_DEVICE
(
0x13d3
,
0x3362
)
},
{
USB_DEVICE
(
0x0CF3
,
0xE004
)
},
/* Atheros AR5BBU12 with sflash firmware */
/* Atheros AR5BBU12 with sflash firmware */
{
USB_DEVICE
(
0x0489
,
0xE02C
)
},
{
USB_DEVICE
(
0x0489
,
0xE02C
)
},
...
@@ -94,6 +96,8 @@ static struct usb_device_id ath3k_blist_tbl[] = {
...
@@ -94,6 +96,8 @@ static struct usb_device_id ath3k_blist_tbl[] = {
{
USB_DEVICE
(
0x0cf3
,
0x311D
),
.
driver_info
=
BTUSB_ATH3012
},
{
USB_DEVICE
(
0x0cf3
,
0x311D
),
.
driver_info
=
BTUSB_ATH3012
},
{
USB_DEVICE
(
0x13d3
,
0x3375
),
.
driver_info
=
BTUSB_ATH3012
},
{
USB_DEVICE
(
0x13d3
,
0x3375
),
.
driver_info
=
BTUSB_ATH3012
},
{
USB_DEVICE
(
0x04ca
,
0x3005
),
.
driver_info
=
BTUSB_ATH3012
},
{
USB_DEVICE
(
0x04ca
,
0x3005
),
.
driver_info
=
BTUSB_ATH3012
},
{
USB_DEVICE
(
0x13d3
,
0x3362
),
.
driver_info
=
BTUSB_ATH3012
},
{
USB_DEVICE
(
0x0cf3
,
0xe004
),
.
driver_info
=
BTUSB_ATH3012
},
{
}
/* Terminating entry */
{
}
/* Terminating entry */
};
};
...
...
drivers/bluetooth/btusb.c
View file @
4dcc0637
...
@@ -101,12 +101,16 @@ static struct usb_device_id btusb_table[] = {
...
@@ -101,12 +101,16 @@ static struct usb_device_id btusb_table[] = {
{
USB_DEVICE
(
0x0c10
,
0x0000
)
},
{
USB_DEVICE
(
0x0c10
,
0x0000
)
},
/* Broadcom BCM20702A0 */
/* Broadcom BCM20702A0 */
{
USB_DEVICE
(
0x0489
,
0xe042
)
},
{
USB_DEVICE
(
0x0a5c
,
0x21e3
)
},
{
USB_DEVICE
(
0x0a5c
,
0x21e3
)
},
{
USB_DEVICE
(
0x0a5c
,
0x21e6
)
},
{
USB_DEVICE
(
0x0a5c
,
0x21e6
)
},
{
USB_DEVICE
(
0x0a5c
,
0x21e8
)
},
{
USB_DEVICE
(
0x0a5c
,
0x21e8
)
},
{
USB_DEVICE
(
0x0a5c
,
0x21f3
)
},
{
USB_DEVICE
(
0x0a5c
,
0x21f3
)
},
{
USB_DEVICE
(
0x413c
,
0x8197
)
},
{
USB_DEVICE
(
0x413c
,
0x8197
)
},
/* Foxconn - Hon Hai */
{
USB_DEVICE
(
0x0489
,
0xe033
)
},
{
}
/* Terminating entry */
{
}
/* Terminating entry */
};
};
...
@@ -133,6 +137,8 @@ static struct usb_device_id blacklist_table[] = {
...
@@ -133,6 +137,8 @@ static struct usb_device_id blacklist_table[] = {
{
USB_DEVICE
(
0x0cf3
,
0x311d
),
.
driver_info
=
BTUSB_ATH3012
},
{
USB_DEVICE
(
0x0cf3
,
0x311d
),
.
driver_info
=
BTUSB_ATH3012
},
{
USB_DEVICE
(
0x13d3
,
0x3375
),
.
driver_info
=
BTUSB_ATH3012
},
{
USB_DEVICE
(
0x13d3
,
0x3375
),
.
driver_info
=
BTUSB_ATH3012
},
{
USB_DEVICE
(
0x04ca
,
0x3005
),
.
driver_info
=
BTUSB_ATH3012
},
{
USB_DEVICE
(
0x04ca
,
0x3005
),
.
driver_info
=
BTUSB_ATH3012
},
{
USB_DEVICE
(
0x13d3
,
0x3362
),
.
driver_info
=
BTUSB_ATH3012
},
{
USB_DEVICE
(
0x0cf3
,
0xe004
),
.
driver_info
=
BTUSB_ATH3012
},
/* Atheros AR5BBU12 with sflash firmware */
/* Atheros AR5BBU12 with sflash firmware */
{
USB_DEVICE
(
0x0489
,
0xe02c
),
.
driver_info
=
BTUSB_IGNORE
},
{
USB_DEVICE
(
0x0489
,
0xe02c
),
.
driver_info
=
BTUSB_IGNORE
},
...
...
include/net/bluetooth/hci_core.h
View file @
4dcc0637
...
@@ -314,6 +314,7 @@ struct hci_conn {
...
@@ -314,6 +314,7 @@ struct hci_conn {
__u8
remote_cap
;
__u8
remote_cap
;
__u8
remote_auth
;
__u8
remote_auth
;
bool
flush_key
;
unsigned
int
sent
;
unsigned
int
sent
;
...
@@ -980,7 +981,7 @@ int mgmt_discoverable(struct hci_dev *hdev, u8 discoverable);
...
@@ -980,7 +981,7 @@ int mgmt_discoverable(struct hci_dev *hdev, u8 discoverable);
int
mgmt_connectable
(
struct
hci_dev
*
hdev
,
u8
connectable
);
int
mgmt_connectable
(
struct
hci_dev
*
hdev
,
u8
connectable
);
int
mgmt_write_scan_failed
(
struct
hci_dev
*
hdev
,
u8
scan
,
u8
status
);
int
mgmt_write_scan_failed
(
struct
hci_dev
*
hdev
,
u8
scan
,
u8
status
);
int
mgmt_new_link_key
(
struct
hci_dev
*
hdev
,
struct
link_key
*
key
,
int
mgmt_new_link_key
(
struct
hci_dev
*
hdev
,
struct
link_key
*
key
,
u8
persistent
);
bool
persistent
);
int
mgmt_device_connected
(
struct
hci_dev
*
hdev
,
bdaddr_t
*
bdaddr
,
u8
link_type
,
int
mgmt_device_connected
(
struct
hci_dev
*
hdev
,
bdaddr_t
*
bdaddr
,
u8
link_type
,
u8
addr_type
,
u32
flags
,
u8
*
name
,
u8
name_len
,
u8
addr_type
,
u32
flags
,
u8
*
name
,
u8
name_len
,
u8
*
dev_class
);
u8
*
dev_class
);
...
...
net/bluetooth/hci_core.c
View file @
4dcc0637
...
@@ -1215,40 +1215,40 @@ struct link_key *hci_find_link_key(struct hci_dev *hdev, bdaddr_t *bdaddr)
...
@@ -1215,40 +1215,40 @@ struct link_key *hci_find_link_key(struct hci_dev *hdev, bdaddr_t *bdaddr)
return
NULL
;
return
NULL
;
}
}
static
int
hci_persistent_key
(
struct
hci_dev
*
hdev
,
struct
hci_conn
*
conn
,
static
bool
hci_persistent_key
(
struct
hci_dev
*
hdev
,
struct
hci_conn
*
conn
,
u8
key_type
,
u8
old_key_type
)
u8
key_type
,
u8
old_key_type
)
{
{
/* Legacy key */
/* Legacy key */
if
(
key_type
<
0x03
)
if
(
key_type
<
0x03
)
return
1
;
return
true
;
/* Debug keys are insecure so don't store them persistently */
/* Debug keys are insecure so don't store them persistently */
if
(
key_type
==
HCI_LK_DEBUG_COMBINATION
)
if
(
key_type
==
HCI_LK_DEBUG_COMBINATION
)
return
0
;
return
false
;
/* Changed combination key and there's no previous one */
/* Changed combination key and there's no previous one */
if
(
key_type
==
HCI_LK_CHANGED_COMBINATION
&&
old_key_type
==
0xff
)
if
(
key_type
==
HCI_LK_CHANGED_COMBINATION
&&
old_key_type
==
0xff
)
return
0
;
return
false
;
/* Security mode 3 case */
/* Security mode 3 case */
if
(
!
conn
)
if
(
!
conn
)
return
1
;
return
true
;
/* Neither local nor remote side had no-bonding as requirement */
/* Neither local nor remote side had no-bonding as requirement */
if
(
conn
->
auth_type
>
0x01
&&
conn
->
remote_auth
>
0x01
)
if
(
conn
->
auth_type
>
0x01
&&
conn
->
remote_auth
>
0x01
)
return
1
;
return
true
;
/* Local side had dedicated bonding as requirement */
/* Local side had dedicated bonding as requirement */
if
(
conn
->
auth_type
==
0x02
||
conn
->
auth_type
==
0x03
)
if
(
conn
->
auth_type
==
0x02
||
conn
->
auth_type
==
0x03
)
return
1
;
return
true
;
/* Remote side had dedicated bonding as requirement */
/* Remote side had dedicated bonding as requirement */
if
(
conn
->
remote_auth
==
0x02
||
conn
->
remote_auth
==
0x03
)
if
(
conn
->
remote_auth
==
0x02
||
conn
->
remote_auth
==
0x03
)
return
1
;
return
true
;
/* If none of the above criteria match, then don't store the key
/* If none of the above criteria match, then don't store the key
* persistently */
* persistently */
return
0
;
return
false
;
}
}
struct
smp_ltk
*
hci_find_ltk
(
struct
hci_dev
*
hdev
,
__le16
ediv
,
u8
rand
[
8
])
struct
smp_ltk
*
hci_find_ltk
(
struct
hci_dev
*
hdev
,
__le16
ediv
,
u8
rand
[
8
])
...
@@ -1285,7 +1285,8 @@ int hci_add_link_key(struct hci_dev *hdev, struct hci_conn *conn, int new_key,
...
@@ -1285,7 +1285,8 @@ int hci_add_link_key(struct hci_dev *hdev, struct hci_conn *conn, int new_key,
bdaddr_t
*
bdaddr
,
u8
*
val
,
u8
type
,
u8
pin_len
)
bdaddr_t
*
bdaddr
,
u8
*
val
,
u8
type
,
u8
pin_len
)
{
{
struct
link_key
*
key
,
*
old_key
;
struct
link_key
*
key
,
*
old_key
;
u8
old_key_type
,
persistent
;
u8
old_key_type
;
bool
persistent
;
old_key
=
hci_find_link_key
(
hdev
,
bdaddr
);
old_key
=
hci_find_link_key
(
hdev
,
bdaddr
);
if
(
old_key
)
{
if
(
old_key
)
{
...
@@ -1328,10 +1329,8 @@ int hci_add_link_key(struct hci_dev *hdev, struct hci_conn *conn, int new_key,
...
@@ -1328,10 +1329,8 @@ int hci_add_link_key(struct hci_dev *hdev, struct hci_conn *conn, int new_key,
mgmt_new_link_key
(
hdev
,
key
,
persistent
);
mgmt_new_link_key
(
hdev
,
key
,
persistent
);
if
(
!
persistent
)
{
if
(
conn
)
list_del
(
&
key
->
list
);
conn
->
flush_key
=
!
persistent
;
kfree
(
key
);
}
return
0
;
return
0
;
}
}
...
...
net/bluetooth/hci_event.c
View file @
4dcc0637
...
@@ -1901,6 +1901,8 @@ static inline void hci_disconn_complete_evt(struct hci_dev *hdev, struct sk_buff
...
@@ -1901,6 +1901,8 @@ static inline void hci_disconn_complete_evt(struct hci_dev *hdev, struct sk_buff
}
}
if
(
ev
->
status
==
0
)
{
if
(
ev
->
status
==
0
)
{
if
(
conn
->
type
==
ACL_LINK
&&
conn
->
flush_key
)
hci_remove_link_key
(
hdev
,
&
conn
->
dst
);
hci_proto_disconn_cfm
(
conn
,
ev
->
reason
);
hci_proto_disconn_cfm
(
conn
,
ev
->
reason
);
hci_conn_del
(
conn
);
hci_conn_del
(
conn
);
}
}
...
@@ -2311,6 +2313,7 @@ static inline void hci_cmd_complete_evt(struct hci_dev *hdev, struct sk_buff *sk
...
@@ -2311,6 +2313,7 @@ static inline void hci_cmd_complete_evt(struct hci_dev *hdev, struct sk_buff *sk
case
HCI_OP_USER_PASSKEY_NEG_REPLY
:
case
HCI_OP_USER_PASSKEY_NEG_REPLY
:
hci_cc_user_passkey_neg_reply
(
hdev
,
skb
);
hci_cc_user_passkey_neg_reply
(
hdev
,
skb
);
break
;
case
HCI_OP_LE_SET_SCAN_PARAM
:
case
HCI_OP_LE_SET_SCAN_PARAM
:
hci_cc_le_set_scan_param
(
hdev
,
skb
);
hci_cc_le_set_scan_param
(
hdev
,
skb
);
...
...
net/bluetooth/mgmt.c
View file @
4dcc0637
...
@@ -2884,7 +2884,7 @@ int mgmt_write_scan_failed(struct hci_dev *hdev, u8 scan, u8 status)
...
@@ -2884,7 +2884,7 @@ int mgmt_write_scan_failed(struct hci_dev *hdev, u8 scan, u8 status)
return
0
;
return
0
;
}
}
int
mgmt_new_link_key
(
struct
hci_dev
*
hdev
,
struct
link_key
*
key
,
u8
persistent
)
int
mgmt_new_link_key
(
struct
hci_dev
*
hdev
,
struct
link_key
*
key
,
bool
persistent
)
{
{
struct
mgmt_ev_new_link_key
ev
;
struct
mgmt_ev_new_link_key
ev
;
...
...
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