projects
/
linux-2.6-block.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel...
[linux-2.6-block.git]
/
net
/
bluetooth
/
hci_conn.c
diff --git
a/net/bluetooth/hci_conn.c
b/net/bluetooth/hci_conn.c
index c9b8fa544785df83d1afa02629b6be00a7325934..ee5e59839b0294a6db0ea95f9f3eda4db0e4c503 100644
(file)
--- a/
net/bluetooth/hci_conn.c
+++ b/
net/bluetooth/hci_conn.c
@@
-309,7
+309,7
@@
void hci_sco_setup(struct hci_conn *conn, __u8 status)
else
hci_add_sco(sco, conn->handle);
} else {
else
hci_add_sco(sco, conn->handle);
} else {
- hci_
proto_
connect_cfm(sco, status);
+ hci_connect_cfm(sco, status);
hci_conn_del(sco);
}
}
hci_conn_del(sco);
}
}
@@
-571,7
+571,7
@@
struct hci_dev *hci_get_route(bdaddr_t *dst, bdaddr_t *src)
list_for_each_entry(d, &hci_dev_list, list) {
if (!test_bit(HCI_UP, &d->flags) ||
list_for_each_entry(d, &hci_dev_list, list) {
if (!test_bit(HCI_UP, &d->flags) ||
-
test_bit(HCI_USER_CHANNEL, &d->dev_flags
) ||
+
hci_dev_test_flag(d, HCI_USER_CHANNEL
) ||
d->dev_type != HCI_BREDR)
continue;
d->dev_type != HCI_BREDR)
continue;
@@
-618,7
+618,7
@@
void hci_le_conn_failed(struct hci_conn *conn, u8 status)
mgmt_connect_failed(hdev, &conn->dst, conn->type, conn->dst_type,
status);
mgmt_connect_failed(hdev, &conn->dst, conn->type, conn->dst_type,
status);
- hci_
proto_
connect_cfm(conn, status);
+ hci_connect_cfm(conn, status);
hci_conn_del(conn);
hci_conn_del(conn);
@@
-700,7
+700,7
@@
static void hci_req_directed_advertising(struct hci_request *req,
* and write a new random address. The flag will be set back on
* as soon as the SET_ADV_ENABLE HCI command completes.
*/
* and write a new random address. The flag will be set back on
* as soon as the SET_ADV_ENABLE HCI command completes.
*/
-
clear_bit(HCI_LE_ADV, &hdev->dev_flags
);
+
hci_dev_clear_flag(hdev, HCI_LE_ADV
);
/* Set require_privacy to false so that the remote device has a
* chance of identifying us.
/* Set require_privacy to false so that the remote device has a
* chance of identifying us.
@@
-733,6
+733,14
@@
struct hci_conn *hci_connect_le(struct hci_dev *hdev, bdaddr_t *dst,
struct hci_request req;
int err;
struct hci_request req;
int err;
+ /* Let's make sure that le is enabled.*/
+ if (!hci_dev_test_flag(hdev, HCI_LE_ENABLED)) {
+ if (lmp_le_capable(hdev))
+ return ERR_PTR(-ECONNREFUSED);
+
+ return ERR_PTR(-EOPNOTSUPP);
+ }
+
/* Some devices send ATT messages as soon as the physical link is
* established. To be able to handle these ATT messages, the user-
* space first establishes the connection and then starts the pairing
/* Some devices send ATT messages as soon as the physical link is
* established. To be able to handle these ATT messages, the user-
* space first establishes the connection and then starts the pairing
@@
-791,7
+799,7
@@
struct hci_conn *hci_connect_le(struct hci_dev *hdev, bdaddr_t *dst,
* anyway have to disable it in order to start directed
* advertising.
*/
* anyway have to disable it in order to start directed
* advertising.
*/
- if (
test_bit(HCI_LE_ADV, &hdev->dev_flags
)) {
+ if (
hci_dev_test_flag(hdev, HCI_LE_ADV
)) {
u8 enable = 0x00;
hci_req_add(&req, HCI_OP_LE_SET_ADV_ENABLE, sizeof(enable),
&enable);
u8 enable = 0x00;
hci_req_add(&req, HCI_OP_LE_SET_ADV_ENABLE, sizeof(enable),
&enable);
@@
-802,7
+810,7
@@
struct hci_conn *hci_connect_le(struct hci_dev *hdev, bdaddr_t *dst,
/* If we're active scanning most controllers are unable
* to initiate advertising. Simply reject the attempt.
*/
/* If we're active scanning most controllers are unable
* to initiate advertising. Simply reject the attempt.
*/
- if (
test_bit(HCI_LE_SCAN, &hdev->dev_flags
) &&
+ if (
hci_dev_test_flag(hdev, HCI_LE_SCAN
) &&
hdev->le_scan_type == LE_SCAN_ACTIVE) {
skb_queue_purge(&req.cmd_q);
hci_conn_del(conn);
hdev->le_scan_type == LE_SCAN_ACTIVE) {
skb_queue_purge(&req.cmd_q);
hci_conn_del(conn);
@@
-832,9
+840,9
@@
struct hci_conn *hci_connect_le(struct hci_dev *hdev, bdaddr_t *dst,
* handler for scan disabling knows to set the correct discovery
* state.
*/
* handler for scan disabling knows to set the correct discovery
* state.
*/
- if (
test_bit(HCI_LE_SCAN, &hdev->dev_flags
)) {
+ if (
hci_dev_test_flag(hdev, HCI_LE_SCAN
)) {
hci_req_add_le_scan_disable(&req);
hci_req_add_le_scan_disable(&req);
-
set_bit(HCI_LE_SCAN_INTERRUPTED, &hdev->dev_flags
);
+
hci_dev_set_flag(hdev, HCI_LE_SCAN_INTERRUPTED
);
}
hci_req_add_le_create_conn(&req, conn);
}
hci_req_add_le_create_conn(&req, conn);
@@
-856,8
+864,12
@@
struct hci_conn *hci_connect_acl(struct hci_dev *hdev, bdaddr_t *dst,
{
struct hci_conn *acl;
{
struct hci_conn *acl;
- if (!test_bit(HCI_BREDR_ENABLED, &hdev->dev_flags))
+ if (!hci_dev_test_flag(hdev, HCI_BREDR_ENABLED)) {
+ if (lmp_bredr_capable(hdev))
+ return ERR_PTR(-ECONNREFUSED);
+
return ERR_PTR(-EOPNOTSUPP);
return ERR_PTR(-EOPNOTSUPP);
+ }
acl = hci_conn_hash_lookup_ba(hdev, ACL_LINK, dst);
if (!acl) {
acl = hci_conn_hash_lookup_ba(hdev, ACL_LINK, dst);
if (!acl) {
@@
-930,7
+942,7
@@
int hci_conn_check_link_mode(struct hci_conn *conn)
* Connections is used and the link is encrypted with AES-CCM
* using a P-256 authenticated combination key.
*/
* Connections is used and the link is encrypted with AES-CCM
* using a P-256 authenticated combination key.
*/
- if (
test_bit(HCI_SC_ONLY, &conn->hdev->flags
)) {
+ if (
hci_dev_test_flag(conn->hdev, HCI_SC_ONLY
)) {
if (!hci_conn_sc_enabled(conn) ||
!test_bit(HCI_CONN_AES_CCM, &conn->flags) ||
conn->key_type != HCI_LK_AUTH_COMBINATION_P256)
if (!hci_conn_sc_enabled(conn) ||
!test_bit(HCI_CONN_AES_CCM, &conn->flags) ||
conn->key_type != HCI_LK_AUTH_COMBINATION_P256)
@@
-1139,7
+1151,7
@@
void hci_conn_hash_flush(struct hci_dev *hdev)
list_for_each_entry_safe(c, n, &h->list, list) {
c->state = BT_CLOSED;
list_for_each_entry_safe(c, n, &h->list, list) {
c->state = BT_CLOSED;
- hci_
proto_
disconn_cfm(c, HCI_ERROR_LOCAL_HOST_TERM);
+ hci_disconn_cfm(c, HCI_ERROR_LOCAL_HOST_TERM);
hci_conn_del(c);
}
}
hci_conn_del(c);
}
}