diff options
author | Frédéric Dalleau <frederic.dalleau@linux.intel.com> | 2013-08-19 08:23:54 -0400 |
---|---|---|
committer | Gustavo Padovan <gustavo.padovan@collabora.co.uk> | 2013-08-21 10:47:08 -0400 |
commit | e660ed6c70370dae0887e2b5224d8b6c1e138120 (patch) | |
tree | acf4bbcd791e700d8cde43d75b1940dcb211b15f | |
parent | ffe6b68cc5999a3f91a15b6667e69e14186e337d (diff) |
Bluetooth: Use hci_connect_sco directly
hci_connect is a super function for connecting hci protocols. But the
voice_setting parameter (introduced in subsequent patches) is only
needed by SCO and security requirements are not needed for SCO channels.
Thus, it makes sense to have a separate function for SCO.
Signed-off-by: Frédéric Dalleau <frederic.dalleau@linux.intel.com>
Acked-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
-rw-r--r-- | include/net/bluetooth/hci_core.h | 2 | ||||
-rw-r--r-- | net/bluetooth/hci_conn.c | 8 | ||||
-rw-r--r-- | net/bluetooth/sco.c | 3 |
3 files changed, 5 insertions, 8 deletions
diff --git a/include/net/bluetooth/hci_core.h b/include/net/bluetooth/hci_core.h index f77885ea78c2..307a19269020 100644 --- a/include/net/bluetooth/hci_core.h +++ b/include/net/bluetooth/hci_core.h | |||
@@ -584,6 +584,8 @@ struct hci_chan *hci_chan_lookup_handle(struct hci_dev *hdev, __u16 handle); | |||
584 | 584 | ||
585 | struct hci_conn *hci_connect(struct hci_dev *hdev, int type, bdaddr_t *dst, | 585 | struct hci_conn *hci_connect(struct hci_dev *hdev, int type, bdaddr_t *dst, |
586 | __u8 dst_type, __u8 sec_level, __u8 auth_type); | 586 | __u8 dst_type, __u8 sec_level, __u8 auth_type); |
587 | struct hci_conn *hci_connect_sco(struct hci_dev *hdev, int type, | ||
588 | bdaddr_t *dst); | ||
587 | int hci_conn_check_link_mode(struct hci_conn *conn); | 589 | int hci_conn_check_link_mode(struct hci_conn *conn); |
588 | int hci_conn_check_secure(struct hci_conn *conn, __u8 sec_level); | 590 | int hci_conn_check_secure(struct hci_conn *conn, __u8 sec_level); |
589 | int hci_conn_security(struct hci_conn *conn, __u8 sec_level, __u8 auth_type); | 591 | int hci_conn_security(struct hci_conn *conn, __u8 sec_level, __u8 auth_type); |
diff --git a/net/bluetooth/hci_conn.c b/net/bluetooth/hci_conn.c index 6c7f36379722..5f1f448dd0f2 100644 --- a/net/bluetooth/hci_conn.c +++ b/net/bluetooth/hci_conn.c | |||
@@ -560,13 +560,12 @@ static struct hci_conn *hci_connect_acl(struct hci_dev *hdev, bdaddr_t *dst, | |||
560 | return acl; | 560 | return acl; |
561 | } | 561 | } |
562 | 562 | ||
563 | static struct hci_conn *hci_connect_sco(struct hci_dev *hdev, int type, | 563 | struct hci_conn *hci_connect_sco(struct hci_dev *hdev, int type, bdaddr_t *dst) |
564 | bdaddr_t *dst, u8 sec_level, u8 auth_type) | ||
565 | { | 564 | { |
566 | struct hci_conn *acl; | 565 | struct hci_conn *acl; |
567 | struct hci_conn *sco; | 566 | struct hci_conn *sco; |
568 | 567 | ||
569 | acl = hci_connect_acl(hdev, dst, sec_level, auth_type); | 568 | acl = hci_connect_acl(hdev, dst, BT_SECURITY_LOW, HCI_AT_NO_BONDING); |
570 | if (IS_ERR(acl)) | 569 | if (IS_ERR(acl)) |
571 | return acl; | 570 | return acl; |
572 | 571 | ||
@@ -612,9 +611,6 @@ struct hci_conn *hci_connect(struct hci_dev *hdev, int type, bdaddr_t *dst, | |||
612 | return hci_connect_le(hdev, dst, dst_type, sec_level, auth_type); | 611 | return hci_connect_le(hdev, dst, dst_type, sec_level, auth_type); |
613 | case ACL_LINK: | 612 | case ACL_LINK: |
614 | return hci_connect_acl(hdev, dst, sec_level, auth_type); | 613 | return hci_connect_acl(hdev, dst, sec_level, auth_type); |
615 | case SCO_LINK: | ||
616 | case ESCO_LINK: | ||
617 | return hci_connect_sco(hdev, type, dst, sec_level, auth_type); | ||
618 | } | 614 | } |
619 | 615 | ||
620 | return ERR_PTR(-EINVAL); | 616 | return ERR_PTR(-EINVAL); |
diff --git a/net/bluetooth/sco.c b/net/bluetooth/sco.c index 2de7150a6304..ab2502cbecfb 100644 --- a/net/bluetooth/sco.c +++ b/net/bluetooth/sco.c | |||
@@ -176,8 +176,7 @@ static int sco_connect(struct sock *sk) | |||
176 | else | 176 | else |
177 | type = SCO_LINK; | 177 | type = SCO_LINK; |
178 | 178 | ||
179 | hcon = hci_connect(hdev, type, dst, BDADDR_BREDR, BT_SECURITY_LOW, | 179 | hcon = hci_connect_sco(hdev, type, dst); |
180 | HCI_AT_NO_BONDING); | ||
181 | if (IS_ERR(hcon)) { | 180 | if (IS_ERR(hcon)) { |
182 | err = PTR_ERR(hcon); | 181 | err = PTR_ERR(hcon); |
183 | goto done; | 182 | goto done; |