ASoC: topology: Log control load errors in soc_tplg_control_load()
[platform/kernel/linux-starfive.git] / net / bluetooth / sco.c
1 /*
2    BlueZ - Bluetooth protocol stack for Linux
3    Copyright (C) 2000-2001 Qualcomm Incorporated
4
5    Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com>
6
7    This program is free software; you can redistribute it and/or modify
8    it under the terms of the GNU General Public License version 2 as
9    published by the Free Software Foundation;
10
11    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
12    OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
13    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
14    IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY
15    CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES
16    WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
17    ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
18    OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
19
20    ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS,
21    COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS
22    SOFTWARE IS DISCLAIMED.
23 */
24
25 /* Bluetooth SCO sockets. */
26
27 #include <linux/module.h>
28 #include <linux/debugfs.h>
29 #include <linux/seq_file.h>
30 #include <linux/sched/signal.h>
31
32 #include <net/bluetooth/bluetooth.h>
33 #include <net/bluetooth/hci_core.h>
34 #include <net/bluetooth/sco.h>
35
36 static bool disable_esco;
37
38 static const struct proto_ops sco_sock_ops;
39
40 static struct bt_sock_list sco_sk_list = {
41         .lock = __RW_LOCK_UNLOCKED(sco_sk_list.lock)
42 };
43
44 /* ---- SCO connections ---- */
45 struct sco_conn {
46         struct hci_conn *hcon;
47
48         spinlock_t      lock;
49         struct sock     *sk;
50
51         struct delayed_work     timeout_work;
52
53         unsigned int    mtu;
54 };
55
56 #define sco_conn_lock(c)        spin_lock(&c->lock)
57 #define sco_conn_unlock(c)      spin_unlock(&c->lock)
58
59 static void sco_sock_close(struct sock *sk);
60 static void sco_sock_kill(struct sock *sk);
61
62 /* ----- SCO socket info ----- */
63 #define sco_pi(sk) ((struct sco_pinfo *) sk)
64
65 struct sco_pinfo {
66         struct bt_sock  bt;
67         bdaddr_t        src;
68         bdaddr_t        dst;
69         __u32           flags;
70         __u16           setting;
71         __u8            cmsg_mask;
72         struct bt_codec codec;
73         struct sco_conn *conn;
74 };
75
76 /* ---- SCO timers ---- */
77 #define SCO_CONN_TIMEOUT        (HZ * 40)
78 #define SCO_DISCONN_TIMEOUT     (HZ * 2)
79
80 static void sco_sock_timeout(struct work_struct *work)
81 {
82         struct sco_conn *conn = container_of(work, struct sco_conn,
83                                              timeout_work.work);
84         struct sock *sk;
85
86         sco_conn_lock(conn);
87         sk = conn->sk;
88         if (sk)
89                 sock_hold(sk);
90         sco_conn_unlock(conn);
91
92         if (!sk)
93                 return;
94
95         BT_DBG("sock %p state %d", sk, sk->sk_state);
96
97         lock_sock(sk);
98         sk->sk_err = ETIMEDOUT;
99         sk->sk_state_change(sk);
100         release_sock(sk);
101         sock_put(sk);
102 }
103
104 static void sco_sock_set_timer(struct sock *sk, long timeout)
105 {
106         if (!sco_pi(sk)->conn)
107                 return;
108
109         BT_DBG("sock %p state %d timeout %ld", sk, sk->sk_state, timeout);
110         cancel_delayed_work(&sco_pi(sk)->conn->timeout_work);
111         schedule_delayed_work(&sco_pi(sk)->conn->timeout_work, timeout);
112 }
113
114 static void sco_sock_clear_timer(struct sock *sk)
115 {
116         if (!sco_pi(sk)->conn)
117                 return;
118
119         BT_DBG("sock %p state %d", sk, sk->sk_state);
120         cancel_delayed_work(&sco_pi(sk)->conn->timeout_work);
121 }
122
123 /* ---- SCO connections ---- */
124 static struct sco_conn *sco_conn_add(struct hci_conn *hcon)
125 {
126         struct hci_dev *hdev = hcon->hdev;
127         struct sco_conn *conn = hcon->sco_data;
128
129         if (conn)
130                 return conn;
131
132         conn = kzalloc(sizeof(struct sco_conn), GFP_KERNEL);
133         if (!conn)
134                 return NULL;
135
136         spin_lock_init(&conn->lock);
137         INIT_DELAYED_WORK(&conn->timeout_work, sco_sock_timeout);
138
139         hcon->sco_data = conn;
140         conn->hcon = hcon;
141
142         if (hdev->sco_mtu > 0)
143                 conn->mtu = hdev->sco_mtu;
144         else
145                 conn->mtu = 60;
146
147         BT_DBG("hcon %p conn %p", hcon, conn);
148
149         return conn;
150 }
151
152 /* Delete channel.
153  * Must be called on the locked socket. */
154 static void sco_chan_del(struct sock *sk, int err)
155 {
156         struct sco_conn *conn;
157
158         conn = sco_pi(sk)->conn;
159
160         BT_DBG("sk %p, conn %p, err %d", sk, conn, err);
161
162         if (conn) {
163                 sco_conn_lock(conn);
164                 conn->sk = NULL;
165                 sco_pi(sk)->conn = NULL;
166                 sco_conn_unlock(conn);
167
168                 if (conn->hcon)
169                         hci_conn_drop(conn->hcon);
170         }
171
172         sk->sk_state = BT_CLOSED;
173         sk->sk_err   = err;
174         sk->sk_state_change(sk);
175
176         sock_set_flag(sk, SOCK_ZAPPED);
177 }
178
179 static void sco_conn_del(struct hci_conn *hcon, int err)
180 {
181         struct sco_conn *conn = hcon->sco_data;
182         struct sock *sk;
183
184         if (!conn)
185                 return;
186
187         BT_DBG("hcon %p conn %p, err %d", hcon, conn, err);
188
189         /* Kill socket */
190         sco_conn_lock(conn);
191         sk = conn->sk;
192         if (sk)
193                 sock_hold(sk);
194         sco_conn_unlock(conn);
195
196         if (sk) {
197                 lock_sock(sk);
198                 sco_sock_clear_timer(sk);
199                 sco_chan_del(sk, err);
200                 release_sock(sk);
201                 sock_put(sk);
202         }
203
204         /* Ensure no more work items will run before freeing conn. */
205         cancel_delayed_work_sync(&conn->timeout_work);
206
207         hcon->sco_data = NULL;
208         kfree(conn);
209 }
210
211 static void __sco_chan_add(struct sco_conn *conn, struct sock *sk,
212                            struct sock *parent)
213 {
214         BT_DBG("conn %p", conn);
215
216         sco_pi(sk)->conn = conn;
217         conn->sk = sk;
218
219         if (parent)
220                 bt_accept_enqueue(parent, sk, true);
221 }
222
223 static int sco_chan_add(struct sco_conn *conn, struct sock *sk,
224                         struct sock *parent)
225 {
226         int err = 0;
227
228         sco_conn_lock(conn);
229         if (conn->sk)
230                 err = -EBUSY;
231         else
232                 __sco_chan_add(conn, sk, parent);
233
234         sco_conn_unlock(conn);
235         return err;
236 }
237
238 static int sco_connect(struct sock *sk)
239 {
240         struct sco_conn *conn;
241         struct hci_conn *hcon;
242         struct hci_dev  *hdev;
243         int err, type;
244
245         BT_DBG("%pMR -> %pMR", &sco_pi(sk)->src, &sco_pi(sk)->dst);
246
247         hdev = hci_get_route(&sco_pi(sk)->dst, &sco_pi(sk)->src, BDADDR_BREDR);
248         if (!hdev)
249                 return -EHOSTUNREACH;
250
251         hci_dev_lock(hdev);
252
253         if (lmp_esco_capable(hdev) && !disable_esco)
254                 type = ESCO_LINK;
255         else
256                 type = SCO_LINK;
257
258         if (sco_pi(sk)->setting == BT_VOICE_TRANSPARENT &&
259             (!lmp_transp_capable(hdev) || !lmp_esco_capable(hdev))) {
260                 err = -EOPNOTSUPP;
261                 goto unlock;
262         }
263
264         hcon = hci_connect_sco(hdev, type, &sco_pi(sk)->dst,
265                                sco_pi(sk)->setting, &sco_pi(sk)->codec);
266         if (IS_ERR(hcon)) {
267                 err = PTR_ERR(hcon);
268                 goto unlock;
269         }
270
271         hci_dev_unlock(hdev);
272         hci_dev_put(hdev);
273
274         conn = sco_conn_add(hcon);
275         if (!conn) {
276                 hci_conn_drop(hcon);
277                 return -ENOMEM;
278         }
279
280         err = sco_chan_add(conn, sk, NULL);
281         if (err)
282                 return err;
283
284         lock_sock(sk);
285
286         /* Update source addr of the socket */
287         bacpy(&sco_pi(sk)->src, &hcon->src);
288
289         if (hcon->state == BT_CONNECTED) {
290                 sco_sock_clear_timer(sk);
291                 sk->sk_state = BT_CONNECTED;
292         } else {
293                 sk->sk_state = BT_CONNECT;
294                 sco_sock_set_timer(sk, sk->sk_sndtimeo);
295         }
296
297         release_sock(sk);
298
299         return err;
300
301 unlock:
302         hci_dev_unlock(hdev);
303         hci_dev_put(hdev);
304         return err;
305 }
306
307 static int sco_send_frame(struct sock *sk, struct sk_buff *skb)
308 {
309         struct sco_conn *conn = sco_pi(sk)->conn;
310         int len = skb->len;
311
312         /* Check outgoing MTU */
313         if (len > conn->mtu)
314                 return -EINVAL;
315
316         BT_DBG("sk %p len %d", sk, len);
317
318         hci_send_sco(conn->hcon, skb);
319
320         return len;
321 }
322
323 static void sco_recv_frame(struct sco_conn *conn, struct sk_buff *skb)
324 {
325         struct sock *sk;
326
327         sco_conn_lock(conn);
328         sk = conn->sk;
329         sco_conn_unlock(conn);
330
331         if (!sk)
332                 goto drop;
333
334         BT_DBG("sk %p len %u", sk, skb->len);
335
336         if (sk->sk_state != BT_CONNECTED)
337                 goto drop;
338
339         if (!sock_queue_rcv_skb(sk, skb))
340                 return;
341
342 drop:
343         kfree_skb(skb);
344 }
345
346 /* -------- Socket interface ---------- */
347 static struct sock *__sco_get_sock_listen_by_addr(bdaddr_t *ba)
348 {
349         struct sock *sk;
350
351         sk_for_each(sk, &sco_sk_list.head) {
352                 if (sk->sk_state != BT_LISTEN)
353                         continue;
354
355                 if (!bacmp(&sco_pi(sk)->src, ba))
356                         return sk;
357         }
358
359         return NULL;
360 }
361
362 /* Find socket listening on source bdaddr.
363  * Returns closest match.
364  */
365 static struct sock *sco_get_sock_listen(bdaddr_t *src)
366 {
367         struct sock *sk = NULL, *sk1 = NULL;
368
369         read_lock(&sco_sk_list.lock);
370
371         sk_for_each(sk, &sco_sk_list.head) {
372                 if (sk->sk_state != BT_LISTEN)
373                         continue;
374
375                 /* Exact match. */
376                 if (!bacmp(&sco_pi(sk)->src, src))
377                         break;
378
379                 /* Closest match */
380                 if (!bacmp(&sco_pi(sk)->src, BDADDR_ANY))
381                         sk1 = sk;
382         }
383
384         read_unlock(&sco_sk_list.lock);
385
386         return sk ? sk : sk1;
387 }
388
389 static void sco_sock_destruct(struct sock *sk)
390 {
391         BT_DBG("sk %p", sk);
392
393         skb_queue_purge(&sk->sk_receive_queue);
394         skb_queue_purge(&sk->sk_write_queue);
395 }
396
397 static void sco_sock_cleanup_listen(struct sock *parent)
398 {
399         struct sock *sk;
400
401         BT_DBG("parent %p", parent);
402
403         /* Close not yet accepted channels */
404         while ((sk = bt_accept_dequeue(parent, NULL))) {
405                 sco_sock_close(sk);
406                 sco_sock_kill(sk);
407         }
408
409         parent->sk_state  = BT_CLOSED;
410         sock_set_flag(parent, SOCK_ZAPPED);
411 }
412
413 /* Kill socket (only if zapped and orphan)
414  * Must be called on unlocked socket.
415  */
416 static void sco_sock_kill(struct sock *sk)
417 {
418         if (!sock_flag(sk, SOCK_ZAPPED) || sk->sk_socket)
419                 return;
420
421         BT_DBG("sk %p state %d", sk, sk->sk_state);
422
423         /* Kill poor orphan */
424         bt_sock_unlink(&sco_sk_list, sk);
425         sock_set_flag(sk, SOCK_DEAD);
426         sock_put(sk);
427 }
428
429 static void __sco_sock_close(struct sock *sk)
430 {
431         BT_DBG("sk %p state %d socket %p", sk, sk->sk_state, sk->sk_socket);
432
433         switch (sk->sk_state) {
434         case BT_LISTEN:
435                 sco_sock_cleanup_listen(sk);
436                 break;
437
438         case BT_CONNECTED:
439         case BT_CONFIG:
440                 if (sco_pi(sk)->conn->hcon) {
441                         sk->sk_state = BT_DISCONN;
442                         sco_sock_set_timer(sk, SCO_DISCONN_TIMEOUT);
443                         sco_conn_lock(sco_pi(sk)->conn);
444                         hci_conn_drop(sco_pi(sk)->conn->hcon);
445                         sco_pi(sk)->conn->hcon = NULL;
446                         sco_conn_unlock(sco_pi(sk)->conn);
447                 } else
448                         sco_chan_del(sk, ECONNRESET);
449                 break;
450
451         case BT_CONNECT2:
452         case BT_CONNECT:
453         case BT_DISCONN:
454                 sco_chan_del(sk, ECONNRESET);
455                 break;
456
457         default:
458                 sock_set_flag(sk, SOCK_ZAPPED);
459                 break;
460         }
461
462 }
463
464 /* Must be called on unlocked socket. */
465 static void sco_sock_close(struct sock *sk)
466 {
467         lock_sock(sk);
468         sco_sock_clear_timer(sk);
469         __sco_sock_close(sk);
470         release_sock(sk);
471 }
472
473 static void sco_skb_put_cmsg(struct sk_buff *skb, struct msghdr *msg,
474                              struct sock *sk)
475 {
476         if (sco_pi(sk)->cmsg_mask & SCO_CMSG_PKT_STATUS)
477                 put_cmsg(msg, SOL_BLUETOOTH, BT_SCM_PKT_STATUS,
478                          sizeof(bt_cb(skb)->sco.pkt_status),
479                          &bt_cb(skb)->sco.pkt_status);
480 }
481
482 static void sco_sock_init(struct sock *sk, struct sock *parent)
483 {
484         BT_DBG("sk %p", sk);
485
486         if (parent) {
487                 sk->sk_type = parent->sk_type;
488                 bt_sk(sk)->flags = bt_sk(parent)->flags;
489                 security_sk_clone(parent, sk);
490         } else {
491                 bt_sk(sk)->skb_put_cmsg = sco_skb_put_cmsg;
492         }
493 }
494
495 static struct proto sco_proto = {
496         .name           = "SCO",
497         .owner          = THIS_MODULE,
498         .obj_size       = sizeof(struct sco_pinfo)
499 };
500
501 static struct sock *sco_sock_alloc(struct net *net, struct socket *sock,
502                                    int proto, gfp_t prio, int kern)
503 {
504         struct sock *sk;
505
506         sk = sk_alloc(net, PF_BLUETOOTH, prio, &sco_proto, kern);
507         if (!sk)
508                 return NULL;
509
510         sock_init_data(sock, sk);
511         INIT_LIST_HEAD(&bt_sk(sk)->accept_q);
512
513         sk->sk_destruct = sco_sock_destruct;
514         sk->sk_sndtimeo = SCO_CONN_TIMEOUT;
515
516         sock_reset_flag(sk, SOCK_ZAPPED);
517
518         sk->sk_protocol = proto;
519         sk->sk_state    = BT_OPEN;
520
521         sco_pi(sk)->setting = BT_VOICE_CVSD_16BIT;
522         sco_pi(sk)->codec.id = BT_CODEC_CVSD;
523         sco_pi(sk)->codec.cid = 0xffff;
524         sco_pi(sk)->codec.vid = 0xffff;
525         sco_pi(sk)->codec.data_path = 0x00;
526
527         bt_sock_link(&sco_sk_list, sk);
528         return sk;
529 }
530
531 static int sco_sock_create(struct net *net, struct socket *sock, int protocol,
532                            int kern)
533 {
534         struct sock *sk;
535
536         BT_DBG("sock %p", sock);
537
538         sock->state = SS_UNCONNECTED;
539
540         if (sock->type != SOCK_SEQPACKET)
541                 return -ESOCKTNOSUPPORT;
542
543         sock->ops = &sco_sock_ops;
544
545         sk = sco_sock_alloc(net, sock, protocol, GFP_ATOMIC, kern);
546         if (!sk)
547                 return -ENOMEM;
548
549         sco_sock_init(sk, NULL);
550         return 0;
551 }
552
553 static int sco_sock_bind(struct socket *sock, struct sockaddr *addr,
554                          int addr_len)
555 {
556         struct sockaddr_sco *sa = (struct sockaddr_sco *) addr;
557         struct sock *sk = sock->sk;
558         int err = 0;
559
560         if (!addr || addr_len < sizeof(struct sockaddr_sco) ||
561             addr->sa_family != AF_BLUETOOTH)
562                 return -EINVAL;
563
564         BT_DBG("sk %p %pMR", sk, &sa->sco_bdaddr);
565
566         lock_sock(sk);
567
568         if (sk->sk_state != BT_OPEN) {
569                 err = -EBADFD;
570                 goto done;
571         }
572
573         if (sk->sk_type != SOCK_SEQPACKET) {
574                 err = -EINVAL;
575                 goto done;
576         }
577
578         bacpy(&sco_pi(sk)->src, &sa->sco_bdaddr);
579
580         sk->sk_state = BT_BOUND;
581
582 done:
583         release_sock(sk);
584         return err;
585 }
586
587 static int sco_sock_connect(struct socket *sock, struct sockaddr *addr, int alen, int flags)
588 {
589         struct sockaddr_sco *sa = (struct sockaddr_sco *) addr;
590         struct sock *sk = sock->sk;
591         int err;
592
593         BT_DBG("sk %p", sk);
594
595         if (alen < sizeof(struct sockaddr_sco) ||
596             addr->sa_family != AF_BLUETOOTH)
597                 return -EINVAL;
598
599         if (sk->sk_state != BT_OPEN && sk->sk_state != BT_BOUND)
600                 return -EBADFD;
601
602         if (sk->sk_type != SOCK_SEQPACKET)
603                 err = -EINVAL;
604
605         lock_sock(sk);
606         /* Set destination address and psm */
607         bacpy(&sco_pi(sk)->dst, &sa->sco_bdaddr);
608         release_sock(sk);
609
610         err = sco_connect(sk);
611         if (err)
612                 return err;
613
614         lock_sock(sk);
615
616         err = bt_sock_wait_state(sk, BT_CONNECTED,
617                                  sock_sndtimeo(sk, flags & O_NONBLOCK));
618
619         release_sock(sk);
620         return err;
621 }
622
623 static int sco_sock_listen(struct socket *sock, int backlog)
624 {
625         struct sock *sk = sock->sk;
626         bdaddr_t *src = &sco_pi(sk)->src;
627         int err = 0;
628
629         BT_DBG("sk %p backlog %d", sk, backlog);
630
631         lock_sock(sk);
632
633         if (sk->sk_state != BT_BOUND) {
634                 err = -EBADFD;
635                 goto done;
636         }
637
638         if (sk->sk_type != SOCK_SEQPACKET) {
639                 err = -EINVAL;
640                 goto done;
641         }
642
643         write_lock(&sco_sk_list.lock);
644
645         if (__sco_get_sock_listen_by_addr(src)) {
646                 err = -EADDRINUSE;
647                 goto unlock;
648         }
649
650         sk->sk_max_ack_backlog = backlog;
651         sk->sk_ack_backlog = 0;
652
653         sk->sk_state = BT_LISTEN;
654
655 unlock:
656         write_unlock(&sco_sk_list.lock);
657
658 done:
659         release_sock(sk);
660         return err;
661 }
662
663 static int sco_sock_accept(struct socket *sock, struct socket *newsock,
664                            int flags, bool kern)
665 {
666         DEFINE_WAIT_FUNC(wait, woken_wake_function);
667         struct sock *sk = sock->sk, *ch;
668         long timeo;
669         int err = 0;
670
671         lock_sock(sk);
672
673         timeo = sock_rcvtimeo(sk, flags & O_NONBLOCK);
674
675         BT_DBG("sk %p timeo %ld", sk, timeo);
676
677         /* Wait for an incoming connection. (wake-one). */
678         add_wait_queue_exclusive(sk_sleep(sk), &wait);
679         while (1) {
680                 if (sk->sk_state != BT_LISTEN) {
681                         err = -EBADFD;
682                         break;
683                 }
684
685                 ch = bt_accept_dequeue(sk, newsock);
686                 if (ch)
687                         break;
688
689                 if (!timeo) {
690                         err = -EAGAIN;
691                         break;
692                 }
693
694                 if (signal_pending(current)) {
695                         err = sock_intr_errno(timeo);
696                         break;
697                 }
698
699                 release_sock(sk);
700
701                 timeo = wait_woken(&wait, TASK_INTERRUPTIBLE, timeo);
702                 lock_sock(sk);
703         }
704         remove_wait_queue(sk_sleep(sk), &wait);
705
706         if (err)
707                 goto done;
708
709         newsock->state = SS_CONNECTED;
710
711         BT_DBG("new socket %p", ch);
712
713 done:
714         release_sock(sk);
715         return err;
716 }
717
718 static int sco_sock_getname(struct socket *sock, struct sockaddr *addr,
719                             int peer)
720 {
721         struct sockaddr_sco *sa = (struct sockaddr_sco *) addr;
722         struct sock *sk = sock->sk;
723
724         BT_DBG("sock %p, sk %p", sock, sk);
725
726         addr->sa_family = AF_BLUETOOTH;
727
728         if (peer)
729                 bacpy(&sa->sco_bdaddr, &sco_pi(sk)->dst);
730         else
731                 bacpy(&sa->sco_bdaddr, &sco_pi(sk)->src);
732
733         return sizeof(struct sockaddr_sco);
734 }
735
736 static int sco_sock_sendmsg(struct socket *sock, struct msghdr *msg,
737                             size_t len)
738 {
739         struct sock *sk = sock->sk;
740         struct sk_buff *skb;
741         int err;
742
743         BT_DBG("sock %p, sk %p", sock, sk);
744
745         err = sock_error(sk);
746         if (err)
747                 return err;
748
749         if (msg->msg_flags & MSG_OOB)
750                 return -EOPNOTSUPP;
751
752         skb = bt_skb_sendmsg(sk, msg, len, len, 0, 0);
753         if (IS_ERR(skb))
754                 return PTR_ERR(skb);
755
756         lock_sock(sk);
757
758         if (sk->sk_state == BT_CONNECTED)
759                 err = sco_send_frame(sk, skb);
760         else
761                 err = -ENOTCONN;
762
763         release_sock(sk);
764
765         if (err < 0)
766                 kfree_skb(skb);
767         return err;
768 }
769
770 static void sco_conn_defer_accept(struct hci_conn *conn, u16 setting)
771 {
772         struct hci_dev *hdev = conn->hdev;
773
774         BT_DBG("conn %p", conn);
775
776         conn->state = BT_CONFIG;
777
778         if (!lmp_esco_capable(hdev)) {
779                 struct hci_cp_accept_conn_req cp;
780
781                 bacpy(&cp.bdaddr, &conn->dst);
782                 cp.role = 0x00; /* Ignored */
783
784                 hci_send_cmd(hdev, HCI_OP_ACCEPT_CONN_REQ, sizeof(cp), &cp);
785         } else {
786                 struct hci_cp_accept_sync_conn_req cp;
787
788                 bacpy(&cp.bdaddr, &conn->dst);
789                 cp.pkt_type = cpu_to_le16(conn->pkt_type);
790
791                 cp.tx_bandwidth   = cpu_to_le32(0x00001f40);
792                 cp.rx_bandwidth   = cpu_to_le32(0x00001f40);
793                 cp.content_format = cpu_to_le16(setting);
794
795                 switch (setting & SCO_AIRMODE_MASK) {
796                 case SCO_AIRMODE_TRANSP:
797                         if (conn->pkt_type & ESCO_2EV3)
798                                 cp.max_latency = cpu_to_le16(0x0008);
799                         else
800                                 cp.max_latency = cpu_to_le16(0x000D);
801                         cp.retrans_effort = 0x02;
802                         break;
803                 case SCO_AIRMODE_CVSD:
804                         cp.max_latency = cpu_to_le16(0xffff);
805                         cp.retrans_effort = 0xff;
806                         break;
807                 default:
808                         /* use CVSD settings as fallback */
809                         cp.max_latency = cpu_to_le16(0xffff);
810                         cp.retrans_effort = 0xff;
811                         break;
812                 }
813
814                 hci_send_cmd(hdev, HCI_OP_ACCEPT_SYNC_CONN_REQ,
815                              sizeof(cp), &cp);
816         }
817 }
818
819 static int sco_sock_recvmsg(struct socket *sock, struct msghdr *msg,
820                             size_t len, int flags)
821 {
822         struct sock *sk = sock->sk;
823         struct sco_pinfo *pi = sco_pi(sk);
824
825         lock_sock(sk);
826
827         if (sk->sk_state == BT_CONNECT2 &&
828             test_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags)) {
829                 sco_conn_defer_accept(pi->conn->hcon, pi->setting);
830                 sk->sk_state = BT_CONFIG;
831
832                 release_sock(sk);
833                 return 0;
834         }
835
836         release_sock(sk);
837
838         return bt_sock_recvmsg(sock, msg, len, flags);
839 }
840
841 static int sco_sock_setsockopt(struct socket *sock, int level, int optname,
842                                sockptr_t optval, unsigned int optlen)
843 {
844         struct sock *sk = sock->sk;
845         int len, err = 0;
846         struct bt_voice voice;
847         u32 opt;
848         struct bt_codecs *codecs;
849         struct hci_dev *hdev;
850         __u8 buffer[255];
851
852         BT_DBG("sk %p", sk);
853
854         lock_sock(sk);
855
856         switch (optname) {
857
858         case BT_DEFER_SETUP:
859                 if (sk->sk_state != BT_BOUND && sk->sk_state != BT_LISTEN) {
860                         err = -EINVAL;
861                         break;
862                 }
863
864                 if (copy_from_sockptr(&opt, optval, sizeof(u32))) {
865                         err = -EFAULT;
866                         break;
867                 }
868
869                 if (opt)
870                         set_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags);
871                 else
872                         clear_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags);
873                 break;
874
875         case BT_VOICE:
876                 if (sk->sk_state != BT_OPEN && sk->sk_state != BT_BOUND &&
877                     sk->sk_state != BT_CONNECT2) {
878                         err = -EINVAL;
879                         break;
880                 }
881
882                 voice.setting = sco_pi(sk)->setting;
883
884                 len = min_t(unsigned int, sizeof(voice), optlen);
885                 if (copy_from_sockptr(&voice, optval, len)) {
886                         err = -EFAULT;
887                         break;
888                 }
889
890                 /* Explicitly check for these values */
891                 if (voice.setting != BT_VOICE_TRANSPARENT &&
892                     voice.setting != BT_VOICE_CVSD_16BIT) {
893                         err = -EINVAL;
894                         break;
895                 }
896
897                 sco_pi(sk)->setting = voice.setting;
898                 hdev = hci_get_route(&sco_pi(sk)->dst, &sco_pi(sk)->src,
899                                      BDADDR_BREDR);
900                 if (!hdev) {
901                         err = -EBADFD;
902                         break;
903                 }
904                 if (enhanced_sync_conn_capable(hdev) &&
905                     voice.setting == BT_VOICE_TRANSPARENT)
906                         sco_pi(sk)->codec.id = BT_CODEC_TRANSPARENT;
907                 hci_dev_put(hdev);
908                 break;
909
910         case BT_PKT_STATUS:
911                 if (copy_from_sockptr(&opt, optval, sizeof(u32))) {
912                         err = -EFAULT;
913                         break;
914                 }
915
916                 if (opt)
917                         sco_pi(sk)->cmsg_mask |= SCO_CMSG_PKT_STATUS;
918                 else
919                         sco_pi(sk)->cmsg_mask &= SCO_CMSG_PKT_STATUS;
920                 break;
921
922         case BT_CODEC:
923                 if (sk->sk_state != BT_OPEN && sk->sk_state != BT_BOUND &&
924                     sk->sk_state != BT_CONNECT2) {
925                         err = -EINVAL;
926                         break;
927                 }
928
929                 hdev = hci_get_route(&sco_pi(sk)->dst, &sco_pi(sk)->src,
930                                      BDADDR_BREDR);
931                 if (!hdev) {
932                         err = -EBADFD;
933                         break;
934                 }
935
936                 if (!hci_dev_test_flag(hdev, HCI_OFFLOAD_CODECS_ENABLED)) {
937                         hci_dev_put(hdev);
938                         err = -EOPNOTSUPP;
939                         break;
940                 }
941
942                 if (!hdev->get_data_path_id) {
943                         hci_dev_put(hdev);
944                         err = -EOPNOTSUPP;
945                         break;
946                 }
947
948                 if (optlen < sizeof(struct bt_codecs) ||
949                     optlen > sizeof(buffer)) {
950                         hci_dev_put(hdev);
951                         err = -EINVAL;
952                         break;
953                 }
954
955                 if (copy_from_sockptr(buffer, optval, optlen)) {
956                         hci_dev_put(hdev);
957                         err = -EFAULT;
958                         break;
959                 }
960
961                 codecs = (void *)buffer;
962
963                 if (codecs->num_codecs > 1) {
964                         hci_dev_put(hdev);
965                         err = -EINVAL;
966                         break;
967                 }
968
969                 sco_pi(sk)->codec = codecs->codecs[0];
970                 hci_dev_put(hdev);
971                 break;
972
973         default:
974                 err = -ENOPROTOOPT;
975                 break;
976         }
977
978         release_sock(sk);
979         return err;
980 }
981
982 static int sco_sock_getsockopt_old(struct socket *sock, int optname,
983                                    char __user *optval, int __user *optlen)
984 {
985         struct sock *sk = sock->sk;
986         struct sco_options opts;
987         struct sco_conninfo cinfo;
988         int len, err = 0;
989
990         BT_DBG("sk %p", sk);
991
992         if (get_user(len, optlen))
993                 return -EFAULT;
994
995         lock_sock(sk);
996
997         switch (optname) {
998         case SCO_OPTIONS:
999                 if (sk->sk_state != BT_CONNECTED &&
1000                     !(sk->sk_state == BT_CONNECT2 &&
1001                       test_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags))) {
1002                         err = -ENOTCONN;
1003                         break;
1004                 }
1005
1006                 opts.mtu = sco_pi(sk)->conn->mtu;
1007
1008                 BT_DBG("mtu %u", opts.mtu);
1009
1010                 len = min_t(unsigned int, len, sizeof(opts));
1011                 if (copy_to_user(optval, (char *)&opts, len))
1012                         err = -EFAULT;
1013
1014                 break;
1015
1016         case SCO_CONNINFO:
1017                 if (sk->sk_state != BT_CONNECTED &&
1018                     !(sk->sk_state == BT_CONNECT2 &&
1019                       test_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags))) {
1020                         err = -ENOTCONN;
1021                         break;
1022                 }
1023
1024                 memset(&cinfo, 0, sizeof(cinfo));
1025                 cinfo.hci_handle = sco_pi(sk)->conn->hcon->handle;
1026                 memcpy(cinfo.dev_class, sco_pi(sk)->conn->hcon->dev_class, 3);
1027
1028                 len = min_t(unsigned int, len, sizeof(cinfo));
1029                 if (copy_to_user(optval, (char *)&cinfo, len))
1030                         err = -EFAULT;
1031
1032                 break;
1033
1034         default:
1035                 err = -ENOPROTOOPT;
1036                 break;
1037         }
1038
1039         release_sock(sk);
1040         return err;
1041 }
1042
1043 static int sco_sock_getsockopt(struct socket *sock, int level, int optname,
1044                                char __user *optval, int __user *optlen)
1045 {
1046         struct sock *sk = sock->sk;
1047         int len, err = 0;
1048         struct bt_voice voice;
1049         u32 phys;
1050         int pkt_status;
1051         int buf_len;
1052         struct codec_list *c;
1053         u8 num_codecs, i, __user *ptr;
1054         struct hci_dev *hdev;
1055         struct hci_codec_caps *caps;
1056         struct bt_codec codec;
1057
1058         BT_DBG("sk %p", sk);
1059
1060         if (level == SOL_SCO)
1061                 return sco_sock_getsockopt_old(sock, optname, optval, optlen);
1062
1063         if (get_user(len, optlen))
1064                 return -EFAULT;
1065
1066         lock_sock(sk);
1067
1068         switch (optname) {
1069
1070         case BT_DEFER_SETUP:
1071                 if (sk->sk_state != BT_BOUND && sk->sk_state != BT_LISTEN) {
1072                         err = -EINVAL;
1073                         break;
1074                 }
1075
1076                 if (put_user(test_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags),
1077                              (u32 __user *)optval))
1078                         err = -EFAULT;
1079
1080                 break;
1081
1082         case BT_VOICE:
1083                 voice.setting = sco_pi(sk)->setting;
1084
1085                 len = min_t(unsigned int, len, sizeof(voice));
1086                 if (copy_to_user(optval, (char *)&voice, len))
1087                         err = -EFAULT;
1088
1089                 break;
1090
1091         case BT_PHY:
1092                 if (sk->sk_state != BT_CONNECTED) {
1093                         err = -ENOTCONN;
1094                         break;
1095                 }
1096
1097                 phys = hci_conn_get_phy(sco_pi(sk)->conn->hcon);
1098
1099                 if (put_user(phys, (u32 __user *) optval))
1100                         err = -EFAULT;
1101                 break;
1102
1103         case BT_PKT_STATUS:
1104                 pkt_status = (sco_pi(sk)->cmsg_mask & SCO_CMSG_PKT_STATUS);
1105
1106                 if (put_user(pkt_status, (int __user *)optval))
1107                         err = -EFAULT;
1108                 break;
1109
1110         case BT_SNDMTU:
1111         case BT_RCVMTU:
1112                 if (sk->sk_state != BT_CONNECTED) {
1113                         err = -ENOTCONN;
1114                         break;
1115                 }
1116
1117                 if (put_user(sco_pi(sk)->conn->mtu, (u32 __user *)optval))
1118                         err = -EFAULT;
1119                 break;
1120
1121         case BT_CODEC:
1122                 num_codecs = 0;
1123                 buf_len = 0;
1124
1125                 hdev = hci_get_route(&sco_pi(sk)->dst, &sco_pi(sk)->src, BDADDR_BREDR);
1126                 if (!hdev) {
1127                         err = -EBADFD;
1128                         break;
1129                 }
1130
1131                 if (!hci_dev_test_flag(hdev, HCI_OFFLOAD_CODECS_ENABLED)) {
1132                         hci_dev_put(hdev);
1133                         err = -EOPNOTSUPP;
1134                         break;
1135                 }
1136
1137                 if (!hdev->get_data_path_id) {
1138                         hci_dev_put(hdev);
1139                         err = -EOPNOTSUPP;
1140                         break;
1141                 }
1142
1143                 release_sock(sk);
1144
1145                 /* find total buffer size required to copy codec + caps */
1146                 hci_dev_lock(hdev);
1147                 list_for_each_entry(c, &hdev->local_codecs, list) {
1148                         if (c->transport != HCI_TRANSPORT_SCO_ESCO)
1149                                 continue;
1150                         num_codecs++;
1151                         for (i = 0, caps = c->caps; i < c->num_caps; i++) {
1152                                 buf_len += 1 + caps->len;
1153                                 caps = (void *)&caps->data[caps->len];
1154                         }
1155                         buf_len += sizeof(struct bt_codec);
1156                 }
1157                 hci_dev_unlock(hdev);
1158
1159                 buf_len += sizeof(struct bt_codecs);
1160                 if (buf_len > len) {
1161                         hci_dev_put(hdev);
1162                         return -ENOBUFS;
1163                 }
1164                 ptr = optval;
1165
1166                 if (put_user(num_codecs, ptr)) {
1167                         hci_dev_put(hdev);
1168                         return -EFAULT;
1169                 }
1170                 ptr += sizeof(num_codecs);
1171
1172                 /* Iterate all the codecs supported over SCO and populate
1173                  * codec data
1174                  */
1175                 hci_dev_lock(hdev);
1176                 list_for_each_entry(c, &hdev->local_codecs, list) {
1177                         if (c->transport != HCI_TRANSPORT_SCO_ESCO)
1178                                 continue;
1179
1180                         codec.id = c->id;
1181                         codec.cid = c->cid;
1182                         codec.vid = c->vid;
1183                         err = hdev->get_data_path_id(hdev, &codec.data_path);
1184                         if (err < 0)
1185                                 break;
1186                         codec.num_caps = c->num_caps;
1187                         if (copy_to_user(ptr, &codec, sizeof(codec))) {
1188                                 err = -EFAULT;
1189                                 break;
1190                         }
1191                         ptr += sizeof(codec);
1192
1193                         /* find codec capabilities data length */
1194                         len = 0;
1195                         for (i = 0, caps = c->caps; i < c->num_caps; i++) {
1196                                 len += 1 + caps->len;
1197                                 caps = (void *)&caps->data[caps->len];
1198                         }
1199
1200                         /* copy codec capabilities data */
1201                         if (len && copy_to_user(ptr, c->caps, len)) {
1202                                 err = -EFAULT;
1203                                 break;
1204                         }
1205                         ptr += len;
1206                 }
1207
1208                 hci_dev_unlock(hdev);
1209                 hci_dev_put(hdev);
1210
1211                 lock_sock(sk);
1212
1213                 if (!err && put_user(buf_len, optlen))
1214                         err = -EFAULT;
1215
1216                 break;
1217
1218         default:
1219                 err = -ENOPROTOOPT;
1220                 break;
1221         }
1222
1223         release_sock(sk);
1224         return err;
1225 }
1226
1227 static int sco_sock_shutdown(struct socket *sock, int how)
1228 {
1229         struct sock *sk = sock->sk;
1230         int err = 0;
1231
1232         BT_DBG("sock %p, sk %p", sock, sk);
1233
1234         if (!sk)
1235                 return 0;
1236
1237         sock_hold(sk);
1238         lock_sock(sk);
1239
1240         if (!sk->sk_shutdown) {
1241                 sk->sk_shutdown = SHUTDOWN_MASK;
1242                 sco_sock_clear_timer(sk);
1243                 __sco_sock_close(sk);
1244
1245                 if (sock_flag(sk, SOCK_LINGER) && sk->sk_lingertime &&
1246                     !(current->flags & PF_EXITING))
1247                         err = bt_sock_wait_state(sk, BT_CLOSED,
1248                                                  sk->sk_lingertime);
1249         }
1250
1251         release_sock(sk);
1252         sock_put(sk);
1253
1254         return err;
1255 }
1256
1257 static int sco_sock_release(struct socket *sock)
1258 {
1259         struct sock *sk = sock->sk;
1260         int err = 0;
1261
1262         BT_DBG("sock %p, sk %p", sock, sk);
1263
1264         if (!sk)
1265                 return 0;
1266
1267         sco_sock_close(sk);
1268
1269         if (sock_flag(sk, SOCK_LINGER) && sk->sk_lingertime &&
1270             !(current->flags & PF_EXITING)) {
1271                 lock_sock(sk);
1272                 err = bt_sock_wait_state(sk, BT_CLOSED, sk->sk_lingertime);
1273                 release_sock(sk);
1274         }
1275
1276         sock_orphan(sk);
1277         sco_sock_kill(sk);
1278         return err;
1279 }
1280
1281 static void sco_conn_ready(struct sco_conn *conn)
1282 {
1283         struct sock *parent;
1284         struct sock *sk = conn->sk;
1285
1286         BT_DBG("conn %p", conn);
1287
1288         if (sk) {
1289                 lock_sock(sk);
1290                 sco_sock_clear_timer(sk);
1291                 sk->sk_state = BT_CONNECTED;
1292                 sk->sk_state_change(sk);
1293                 release_sock(sk);
1294         } else {
1295                 sco_conn_lock(conn);
1296
1297                 if (!conn->hcon) {
1298                         sco_conn_unlock(conn);
1299                         return;
1300                 }
1301
1302                 parent = sco_get_sock_listen(&conn->hcon->src);
1303                 if (!parent) {
1304                         sco_conn_unlock(conn);
1305                         return;
1306                 }
1307
1308                 lock_sock(parent);
1309
1310                 sk = sco_sock_alloc(sock_net(parent), NULL,
1311                                     BTPROTO_SCO, GFP_ATOMIC, 0);
1312                 if (!sk) {
1313                         release_sock(parent);
1314                         sco_conn_unlock(conn);
1315                         return;
1316                 }
1317
1318                 sco_sock_init(sk, parent);
1319
1320                 bacpy(&sco_pi(sk)->src, &conn->hcon->src);
1321                 bacpy(&sco_pi(sk)->dst, &conn->hcon->dst);
1322
1323                 hci_conn_hold(conn->hcon);
1324                 __sco_chan_add(conn, sk, parent);
1325
1326                 if (test_bit(BT_SK_DEFER_SETUP, &bt_sk(parent)->flags))
1327                         sk->sk_state = BT_CONNECT2;
1328                 else
1329                         sk->sk_state = BT_CONNECTED;
1330
1331                 /* Wake up parent */
1332                 parent->sk_data_ready(parent);
1333
1334                 release_sock(parent);
1335
1336                 sco_conn_unlock(conn);
1337         }
1338 }
1339
1340 /* ----- SCO interface with lower layer (HCI) ----- */
1341 int sco_connect_ind(struct hci_dev *hdev, bdaddr_t *bdaddr, __u8 *flags)
1342 {
1343         struct sock *sk;
1344         int lm = 0;
1345
1346         BT_DBG("hdev %s, bdaddr %pMR", hdev->name, bdaddr);
1347
1348         /* Find listening sockets */
1349         read_lock(&sco_sk_list.lock);
1350         sk_for_each(sk, &sco_sk_list.head) {
1351                 if (sk->sk_state != BT_LISTEN)
1352                         continue;
1353
1354                 if (!bacmp(&sco_pi(sk)->src, &hdev->bdaddr) ||
1355                     !bacmp(&sco_pi(sk)->src, BDADDR_ANY)) {
1356                         lm |= HCI_LM_ACCEPT;
1357
1358                         if (test_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags))
1359                                 *flags |= HCI_PROTO_DEFER;
1360                         break;
1361                 }
1362         }
1363         read_unlock(&sco_sk_list.lock);
1364
1365         return lm;
1366 }
1367
1368 static void sco_connect_cfm(struct hci_conn *hcon, __u8 status)
1369 {
1370         if (hcon->type != SCO_LINK && hcon->type != ESCO_LINK)
1371                 return;
1372
1373         BT_DBG("hcon %p bdaddr %pMR status %u", hcon, &hcon->dst, status);
1374
1375         if (!status) {
1376                 struct sco_conn *conn;
1377
1378                 conn = sco_conn_add(hcon);
1379                 if (conn)
1380                         sco_conn_ready(conn);
1381         } else
1382                 sco_conn_del(hcon, bt_to_errno(status));
1383 }
1384
1385 static void sco_disconn_cfm(struct hci_conn *hcon, __u8 reason)
1386 {
1387         if (hcon->type != SCO_LINK && hcon->type != ESCO_LINK)
1388                 return;
1389
1390         BT_DBG("hcon %p reason %d", hcon, reason);
1391
1392         sco_conn_del(hcon, bt_to_errno(reason));
1393 }
1394
1395 void sco_recv_scodata(struct hci_conn *hcon, struct sk_buff *skb)
1396 {
1397         struct sco_conn *conn = hcon->sco_data;
1398
1399         if (!conn)
1400                 goto drop;
1401
1402         BT_DBG("conn %p len %u", conn, skb->len);
1403
1404         if (skb->len) {
1405                 sco_recv_frame(conn, skb);
1406                 return;
1407         }
1408
1409 drop:
1410         kfree_skb(skb);
1411 }
1412
1413 static struct hci_cb sco_cb = {
1414         .name           = "SCO",
1415         .connect_cfm    = sco_connect_cfm,
1416         .disconn_cfm    = sco_disconn_cfm,
1417 };
1418
1419 static int sco_debugfs_show(struct seq_file *f, void *p)
1420 {
1421         struct sock *sk;
1422
1423         read_lock(&sco_sk_list.lock);
1424
1425         sk_for_each(sk, &sco_sk_list.head) {
1426                 seq_printf(f, "%pMR %pMR %d\n", &sco_pi(sk)->src,
1427                            &sco_pi(sk)->dst, sk->sk_state);
1428         }
1429
1430         read_unlock(&sco_sk_list.lock);
1431
1432         return 0;
1433 }
1434
1435 DEFINE_SHOW_ATTRIBUTE(sco_debugfs);
1436
1437 static struct dentry *sco_debugfs;
1438
1439 static const struct proto_ops sco_sock_ops = {
1440         .family         = PF_BLUETOOTH,
1441         .owner          = THIS_MODULE,
1442         .release        = sco_sock_release,
1443         .bind           = sco_sock_bind,
1444         .connect        = sco_sock_connect,
1445         .listen         = sco_sock_listen,
1446         .accept         = sco_sock_accept,
1447         .getname        = sco_sock_getname,
1448         .sendmsg        = sco_sock_sendmsg,
1449         .recvmsg        = sco_sock_recvmsg,
1450         .poll           = bt_sock_poll,
1451         .ioctl          = bt_sock_ioctl,
1452         .gettstamp      = sock_gettstamp,
1453         .mmap           = sock_no_mmap,
1454         .socketpair     = sock_no_socketpair,
1455         .shutdown       = sco_sock_shutdown,
1456         .setsockopt     = sco_sock_setsockopt,
1457         .getsockopt     = sco_sock_getsockopt
1458 };
1459
1460 static const struct net_proto_family sco_sock_family_ops = {
1461         .family = PF_BLUETOOTH,
1462         .owner  = THIS_MODULE,
1463         .create = sco_sock_create,
1464 };
1465
1466 int __init sco_init(void)
1467 {
1468         int err;
1469
1470         BUILD_BUG_ON(sizeof(struct sockaddr_sco) > sizeof(struct sockaddr));
1471
1472         err = proto_register(&sco_proto, 0);
1473         if (err < 0)
1474                 return err;
1475
1476         err = bt_sock_register(BTPROTO_SCO, &sco_sock_family_ops);
1477         if (err < 0) {
1478                 BT_ERR("SCO socket registration failed");
1479                 goto error;
1480         }
1481
1482         err = bt_procfs_init(&init_net, "sco", &sco_sk_list, NULL);
1483         if (err < 0) {
1484                 BT_ERR("Failed to create SCO proc file");
1485                 bt_sock_unregister(BTPROTO_SCO);
1486                 goto error;
1487         }
1488
1489         BT_INFO("SCO socket layer initialized");
1490
1491         hci_register_cb(&sco_cb);
1492
1493         if (IS_ERR_OR_NULL(bt_debugfs))
1494                 return 0;
1495
1496         sco_debugfs = debugfs_create_file("sco", 0444, bt_debugfs,
1497                                           NULL, &sco_debugfs_fops);
1498
1499         return 0;
1500
1501 error:
1502         proto_unregister(&sco_proto);
1503         return err;
1504 }
1505
1506 void sco_exit(void)
1507 {
1508         bt_procfs_cleanup(&init_net, "sco");
1509
1510         debugfs_remove(sco_debugfs);
1511
1512         hci_unregister_cb(&sco_cb);
1513
1514         bt_sock_unregister(BTPROTO_SCO);
1515
1516         proto_unregister(&sco_proto);
1517 }
1518
1519 module_param(disable_esco, bool, 0644);
1520 MODULE_PARM_DESC(disable_esco, "Disable eSCO connection creation");