diff options
Diffstat (limited to 'net/bluetooth/sco.c')
| -rw-r--r-- | net/bluetooth/sco.c | 44 | 
1 files changed, 7 insertions, 37 deletions
diff --git a/net/bluetooth/sco.c b/net/bluetooth/sco.c index a324b009e34..5dc2f2126fa 100644 --- a/net/bluetooth/sco.c +++ b/net/bluetooth/sco.c @@ -51,7 +51,7 @@  #include <net/bluetooth/hci_core.h>  #include <net/bluetooth/sco.h> -static int disable_esco; +static bool disable_esco;  static const struct proto_ops sco_sock_ops; @@ -189,7 +189,7 @@ static int sco_connect(struct sock *sk)  	if (!hdev)  		return -EHOSTUNREACH; -	hci_dev_lock_bh(hdev); +	hci_dev_lock(hdev);  	if (lmp_esco_capable(hdev) && !disable_esco)  		type = ESCO_LINK; @@ -225,7 +225,7 @@ static int sco_connect(struct sock *sk)  	}  done: -	hci_dev_unlock_bh(hdev); +	hci_dev_unlock(hdev);  	hci_dev_put(hdev);  	return err;  } @@ -893,15 +893,12 @@ done:  }  /* ----- SCO interface with lower layer (HCI) ----- */ -static int sco_connect_ind(struct hci_dev *hdev, bdaddr_t *bdaddr, __u8 type) +int sco_connect_ind(struct hci_dev *hdev, bdaddr_t *bdaddr)  {  	register struct sock *sk;  	struct hlist_node *node;  	int lm = 0; -	if (type != SCO_LINK && type != ESCO_LINK) -		return -EINVAL; -  	BT_DBG("hdev %s, bdaddr %s", hdev->name, batostr(bdaddr));  	/* Find listening sockets */ @@ -921,13 +918,9 @@ static int sco_connect_ind(struct hci_dev *hdev, bdaddr_t *bdaddr, __u8 type)  	return lm;  } -static int sco_connect_cfm(struct hci_conn *hcon, __u8 status) +int sco_connect_cfm(struct hci_conn *hcon, __u8 status)  {  	BT_DBG("hcon %p bdaddr %s status %d", hcon, batostr(&hcon->dst), status); - -	if (hcon->type != SCO_LINK && hcon->type != ESCO_LINK) -		return -EINVAL; -  	if (!status) {  		struct sco_conn *conn; @@ -940,19 +933,15 @@ static int sco_connect_cfm(struct hci_conn *hcon, __u8 status)  	return 0;  } -static int sco_disconn_cfm(struct hci_conn *hcon, __u8 reason) +int sco_disconn_cfm(struct hci_conn *hcon, __u8 reason)  {  	BT_DBG("hcon %p reason %d", hcon, reason); -	if (hcon->type != SCO_LINK && hcon->type != ESCO_LINK) -		return -EINVAL; -  	sco_conn_del(hcon, bt_to_errno(reason)); -  	return 0;  } -static int sco_recv_scodata(struct hci_conn *hcon, struct sk_buff *skb) +int sco_recv_scodata(struct hci_conn *hcon, struct sk_buff *skb)  {  	struct sco_conn *conn = hcon->sco_data; @@ -1028,15 +1017,6 @@ static const struct net_proto_family sco_sock_family_ops = {  	.create	= sco_sock_create,  }; -static struct hci_proto sco_hci_proto = { -	.name		= "SCO", -	.id		= HCI_PROTO_SCO, -	.connect_ind	= sco_connect_ind, -	.connect_cfm	= sco_connect_cfm, -	.disconn_cfm	= sco_disconn_cfm, -	.recv_scodata	= sco_recv_scodata -}; -  int __init sco_init(void)  {  	int err; @@ -1051,13 +1031,6 @@ int __init sco_init(void)  		goto error;  	} -	err = hci_register_proto(&sco_hci_proto); -	if (err < 0) { -		BT_ERR("SCO protocol registration failed"); -		bt_sock_unregister(BTPROTO_SCO); -		goto error; -	} -  	if (bt_debugfs) {  		sco_debugfs = debugfs_create_file("sco", 0444,  					bt_debugfs, NULL, &sco_debugfs_fops); @@ -1081,9 +1054,6 @@ void __exit sco_exit(void)  	if (bt_sock_unregister(BTPROTO_SCO) < 0)  		BT_ERR("SCO socket unregistration failed"); -	if (hci_unregister_proto(&sco_hci_proto) < 0) -		BT_ERR("SCO protocol unregistration failed"); -  	proto_unregister(&sco_proto);  }  |