1 // SPDX-License-Identifier: GPL-2.0
3 * BlueZ - Bluetooth protocol stack for Linux
5 * Copyright (C) 2022 Intel Corporation
9 #include <linux/module.h>
10 #include <linux/debugfs.h>
11 #include <linux/seq_file.h>
12 #include <linux/sched/signal.h>
14 #include <net/bluetooth/bluetooth.h>
15 #include <net/bluetooth/hci_core.h>
16 #include <net/bluetooth/iso.h>
19 static const struct proto_ops iso_sock_ops;
21 static struct bt_sock_list iso_sk_list = {
22 .lock = __RW_LOCK_UNLOCKED(iso_sk_list.lock)
25 /* ---- ISO connections ---- */
27 struct hci_conn *hcon;
29 /* @lock: spinlock protecting changes to iso_conn fields */
33 struct delayed_work timeout_work;
35 struct sk_buff *rx_skb;
40 #define iso_conn_lock(c) spin_lock(&(c)->lock)
41 #define iso_conn_unlock(c) spin_unlock(&(c)->lock)
43 static void iso_sock_close(struct sock *sk);
44 static void iso_sock_kill(struct sock *sk);
46 /* ----- ISO socket info ----- */
47 #define iso_pi(sk) ((struct iso_pinfo *)sk)
49 #define EIR_SERVICE_DATA_LENGTH 4
50 #define BASE_MAX_LENGTH (HCI_MAX_PER_AD_LENGTH - EIR_SERVICE_DATA_LENGTH)
51 #define EIR_BAA_SERVICE_UUID 0x1851
53 /* iso_pinfo flags values */
67 __u8 bc_bis[ISO_MAX_NUM_BIS];
70 struct bt_iso_qos qos;
73 __u8 base[BASE_MAX_LENGTH];
74 struct iso_conn *conn;
77 static struct bt_iso_qos default_qos;
79 static bool check_ucast_qos(struct bt_iso_qos *qos);
80 static bool check_bcast_qos(struct bt_iso_qos *qos);
81 static bool iso_match_sid(struct sock *sk, void *data);
82 static bool iso_match_sync_handle(struct sock *sk, void *data);
83 static void iso_sock_disconn(struct sock *sk);
85 /* ---- ISO timers ---- */
86 #define ISO_CONN_TIMEOUT (HZ * 40)
87 #define ISO_DISCONN_TIMEOUT (HZ * 2)
89 static void iso_sock_timeout(struct work_struct *work)
91 struct iso_conn *conn = container_of(work, struct iso_conn,
99 iso_conn_unlock(conn);
104 BT_DBG("sock %p state %d", sk, sk->sk_state);
107 sk->sk_err = ETIMEDOUT;
108 sk->sk_state_change(sk);
113 static void iso_sock_set_timer(struct sock *sk, long timeout)
115 if (!iso_pi(sk)->conn)
118 BT_DBG("sock %p state %d timeout %ld", sk, sk->sk_state, timeout);
119 cancel_delayed_work(&iso_pi(sk)->conn->timeout_work);
120 schedule_delayed_work(&iso_pi(sk)->conn->timeout_work, timeout);
123 static void iso_sock_clear_timer(struct sock *sk)
125 if (!iso_pi(sk)->conn)
128 BT_DBG("sock %p state %d", sk, sk->sk_state);
129 cancel_delayed_work(&iso_pi(sk)->conn->timeout_work);
132 /* ---- ISO connections ---- */
133 static struct iso_conn *iso_conn_add(struct hci_conn *hcon)
135 struct iso_conn *conn = hcon->iso_data;
143 conn = kzalloc(sizeof(*conn), GFP_KERNEL);
147 spin_lock_init(&conn->lock);
148 INIT_DELAYED_WORK(&conn->timeout_work, iso_sock_timeout);
150 hcon->iso_data = conn;
154 BT_DBG("hcon %p conn %p", hcon, conn);
159 /* Delete channel. Must be called on the locked socket. */
160 static void iso_chan_del(struct sock *sk, int err)
162 struct iso_conn *conn;
165 conn = iso_pi(sk)->conn;
167 BT_DBG("sk %p, conn %p, err %d", sk, conn, err);
172 iso_pi(sk)->conn = NULL;
173 iso_conn_unlock(conn);
176 hci_conn_drop(conn->hcon);
179 sk->sk_state = BT_CLOSED;
182 parent = bt_sk(sk)->parent;
184 bt_accept_unlink(sk);
185 parent->sk_data_ready(parent);
187 sk->sk_state_change(sk);
190 sock_set_flag(sk, SOCK_ZAPPED);
193 static void iso_conn_del(struct hci_conn *hcon, int err)
195 struct iso_conn *conn = hcon->iso_data;
201 BT_DBG("hcon %p conn %p, err %d", hcon, conn, err);
208 iso_conn_unlock(conn);
212 iso_sock_clear_timer(sk);
213 iso_chan_del(sk, err);
218 /* Ensure no more work items will run before freeing conn. */
219 cancel_delayed_work_sync(&conn->timeout_work);
221 hcon->iso_data = NULL;
225 static int __iso_chan_add(struct iso_conn *conn, struct sock *sk,
228 BT_DBG("conn %p", conn);
230 if (iso_pi(sk)->conn == conn && conn->sk == sk)
234 BT_ERR("conn->sk already set");
238 iso_pi(sk)->conn = conn;
242 bt_accept_enqueue(parent, sk, true);
247 static int iso_chan_add(struct iso_conn *conn, struct sock *sk,
253 err = __iso_chan_add(conn, sk, parent);
254 iso_conn_unlock(conn);
259 static inline u8 le_addr_type(u8 bdaddr_type)
261 if (bdaddr_type == BDADDR_LE_PUBLIC)
262 return ADDR_LE_DEV_PUBLIC;
264 return ADDR_LE_DEV_RANDOM;
267 static int iso_connect_bis(struct sock *sk)
269 struct iso_conn *conn;
270 struct hci_conn *hcon;
271 struct hci_dev *hdev;
274 BT_DBG("%pMR", &iso_pi(sk)->src);
276 hdev = hci_get_route(&iso_pi(sk)->dst, &iso_pi(sk)->src,
277 iso_pi(sk)->src_type);
279 return -EHOSTUNREACH;
283 if (!bis_capable(hdev)) {
288 /* Fail if user set invalid QoS */
289 if (iso_pi(sk)->qos_user_set && !check_bcast_qos(&iso_pi(sk)->qos)) {
290 iso_pi(sk)->qos = default_qos;
295 /* Fail if out PHYs are marked as disabled */
296 if (!iso_pi(sk)->qos.bcast.out.phy) {
301 /* Just bind if DEFER_SETUP has been set */
302 if (test_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags)) {
303 hcon = hci_bind_bis(hdev, &iso_pi(sk)->dst,
304 &iso_pi(sk)->qos, iso_pi(sk)->base_len,
311 hcon = hci_connect_bis(hdev, &iso_pi(sk)->dst,
312 le_addr_type(iso_pi(sk)->dst_type),
313 &iso_pi(sk)->qos, iso_pi(sk)->base_len,
321 conn = iso_conn_add(hcon);
330 err = iso_chan_add(conn, sk, NULL);
336 /* Update source addr of the socket */
337 bacpy(&iso_pi(sk)->src, &hcon->src);
339 if (hcon->state == BT_CONNECTED) {
340 iso_sock_clear_timer(sk);
341 sk->sk_state = BT_CONNECTED;
342 } else if (test_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags)) {
343 iso_sock_clear_timer(sk);
344 sk->sk_state = BT_CONNECT;
346 sk->sk_state = BT_CONNECT;
347 iso_sock_set_timer(sk, sk->sk_sndtimeo);
353 hci_dev_unlock(hdev);
358 static int iso_connect_cis(struct sock *sk)
360 struct iso_conn *conn;
361 struct hci_conn *hcon;
362 struct hci_dev *hdev;
365 BT_DBG("%pMR -> %pMR", &iso_pi(sk)->src, &iso_pi(sk)->dst);
367 hdev = hci_get_route(&iso_pi(sk)->dst, &iso_pi(sk)->src,
368 iso_pi(sk)->src_type);
370 return -EHOSTUNREACH;
374 if (!cis_central_capable(hdev)) {
379 /* Fail if user set invalid QoS */
380 if (iso_pi(sk)->qos_user_set && !check_ucast_qos(&iso_pi(sk)->qos)) {
381 iso_pi(sk)->qos = default_qos;
386 /* Fail if either PHYs are marked as disabled */
387 if (!iso_pi(sk)->qos.ucast.in.phy && !iso_pi(sk)->qos.ucast.out.phy) {
392 /* Just bind if DEFER_SETUP has been set */
393 if (test_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags)) {
394 hcon = hci_bind_cis(hdev, &iso_pi(sk)->dst,
395 le_addr_type(iso_pi(sk)->dst_type),
402 hcon = hci_connect_cis(hdev, &iso_pi(sk)->dst,
403 le_addr_type(iso_pi(sk)->dst_type),
411 conn = iso_conn_add(hcon);
420 err = iso_chan_add(conn, sk, NULL);
426 /* Update source addr of the socket */
427 bacpy(&iso_pi(sk)->src, &hcon->src);
429 if (hcon->state == BT_CONNECTED) {
430 iso_sock_clear_timer(sk);
431 sk->sk_state = BT_CONNECTED;
432 } else if (test_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags)) {
433 iso_sock_clear_timer(sk);
434 sk->sk_state = BT_CONNECT;
436 sk->sk_state = BT_CONNECT;
437 iso_sock_set_timer(sk, sk->sk_sndtimeo);
443 hci_dev_unlock(hdev);
448 static struct bt_iso_qos *iso_sock_get_qos(struct sock *sk)
450 if (sk->sk_state == BT_CONNECTED || sk->sk_state == BT_CONNECT2)
451 return &iso_pi(sk)->conn->hcon->iso_qos;
453 return &iso_pi(sk)->qos;
456 static int iso_send_frame(struct sock *sk, struct sk_buff *skb)
458 struct iso_conn *conn = iso_pi(sk)->conn;
459 struct bt_iso_qos *qos = iso_sock_get_qos(sk);
460 struct hci_iso_data_hdr *hdr;
463 BT_DBG("sk %p len %d", sk, skb->len);
465 if (skb->len > qos->ucast.out.sdu)
470 /* Push ISO data header */
471 hdr = skb_push(skb, HCI_ISO_DATA_HDR_SIZE);
472 hdr->sn = cpu_to_le16(conn->tx_sn++);
473 hdr->slen = cpu_to_le16(hci_iso_data_len_pack(len,
474 HCI_ISO_STATUS_VALID));
476 if (sk->sk_state == BT_CONNECTED)
477 hci_send_iso(conn->hcon, skb);
484 static void iso_recv_frame(struct iso_conn *conn, struct sk_buff *skb)
490 iso_conn_unlock(conn);
495 BT_DBG("sk %p len %d", sk, skb->len);
497 if (sk->sk_state != BT_CONNECTED)
500 if (!sock_queue_rcv_skb(sk, skb))
507 /* -------- Socket interface ---------- */
508 static struct sock *__iso_get_sock_listen_by_addr(bdaddr_t *src, bdaddr_t *dst)
512 sk_for_each(sk, &iso_sk_list.head) {
513 if (sk->sk_state != BT_LISTEN)
516 if (bacmp(&iso_pi(sk)->dst, dst))
519 if (!bacmp(&iso_pi(sk)->src, src))
526 static struct sock *__iso_get_sock_listen_by_sid(bdaddr_t *ba, bdaddr_t *bc,
531 sk_for_each(sk, &iso_sk_list.head) {
532 if (sk->sk_state != BT_LISTEN)
535 if (bacmp(&iso_pi(sk)->src, ba))
538 if (bacmp(&iso_pi(sk)->dst, bc))
541 if (iso_pi(sk)->bc_sid == sid)
548 typedef bool (*iso_sock_match_t)(struct sock *sk, void *data);
550 /* Find socket listening:
551 * source bdaddr (Unicast)
552 * destination bdaddr (Broadcast only)
553 * match func - pass NULL to ignore
554 * match func data - pass -1 to ignore
555 * Returns closest match.
557 static struct sock *iso_get_sock_listen(bdaddr_t *src, bdaddr_t *dst,
558 iso_sock_match_t match, void *data)
560 struct sock *sk = NULL, *sk1 = NULL;
562 read_lock(&iso_sk_list.lock);
564 sk_for_each(sk, &iso_sk_list.head) {
565 if (sk->sk_state != BT_LISTEN)
568 /* Match Broadcast destination */
569 if (bacmp(dst, BDADDR_ANY) && bacmp(&iso_pi(sk)->dst, dst))
572 /* Use Match function if provided */
573 if (match && !match(sk, data))
577 if (!bacmp(&iso_pi(sk)->src, src))
581 if (!bacmp(&iso_pi(sk)->src, BDADDR_ANY))
585 read_unlock(&iso_sk_list.lock);
587 return sk ? sk : sk1;
590 static void iso_sock_destruct(struct sock *sk)
594 skb_queue_purge(&sk->sk_receive_queue);
595 skb_queue_purge(&sk->sk_write_queue);
598 static void iso_sock_cleanup_listen(struct sock *parent)
602 BT_DBG("parent %p", parent);
604 /* Close not yet accepted channels */
605 while ((sk = bt_accept_dequeue(parent, NULL))) {
610 /* If listening socket stands for a PA sync connection,
611 * properly disconnect the hcon and socket.
613 if (iso_pi(parent)->conn && iso_pi(parent)->conn->hcon &&
614 test_bit(HCI_CONN_PA_SYNC, &iso_pi(parent)->conn->hcon->flags)) {
615 iso_sock_disconn(parent);
619 parent->sk_state = BT_CLOSED;
620 sock_set_flag(parent, SOCK_ZAPPED);
623 /* Kill socket (only if zapped and orphan)
624 * Must be called on unlocked socket.
626 static void iso_sock_kill(struct sock *sk)
628 if (!sock_flag(sk, SOCK_ZAPPED) || sk->sk_socket ||
629 sock_flag(sk, SOCK_DEAD))
632 BT_DBG("sk %p state %d", sk, sk->sk_state);
634 /* Kill poor orphan */
635 bt_sock_unlink(&iso_sk_list, sk);
636 sock_set_flag(sk, SOCK_DEAD);
640 static void iso_sock_disconn(struct sock *sk)
642 sk->sk_state = BT_DISCONN;
643 iso_sock_set_timer(sk, ISO_DISCONN_TIMEOUT);
644 iso_conn_lock(iso_pi(sk)->conn);
645 hci_conn_drop(iso_pi(sk)->conn->hcon);
646 iso_pi(sk)->conn->hcon = NULL;
647 iso_conn_unlock(iso_pi(sk)->conn);
650 static void __iso_sock_close(struct sock *sk)
652 BT_DBG("sk %p state %d socket %p", sk, sk->sk_state, sk->sk_socket);
654 switch (sk->sk_state) {
656 iso_sock_cleanup_listen(sk);
662 if (iso_pi(sk)->conn->hcon)
663 iso_sock_disconn(sk);
665 iso_chan_del(sk, ECONNRESET);
669 if (iso_pi(sk)->conn->hcon &&
670 (test_bit(HCI_CONN_PA_SYNC, &iso_pi(sk)->conn->hcon->flags) ||
671 test_bit(HCI_CONN_PA_SYNC_FAILED, &iso_pi(sk)->conn->hcon->flags)))
672 iso_sock_disconn(sk);
674 iso_chan_del(sk, ECONNRESET);
677 iso_chan_del(sk, ECONNRESET);
681 sock_set_flag(sk, SOCK_ZAPPED);
686 /* Must be called on unlocked socket. */
687 static void iso_sock_close(struct sock *sk)
689 iso_sock_clear_timer(sk);
691 __iso_sock_close(sk);
696 static void iso_sock_init(struct sock *sk, struct sock *parent)
701 sk->sk_type = parent->sk_type;
702 bt_sk(sk)->flags = bt_sk(parent)->flags;
703 security_sk_clone(parent, sk);
707 static struct proto iso_proto = {
709 .owner = THIS_MODULE,
710 .obj_size = sizeof(struct iso_pinfo)
713 #define DEFAULT_IO_QOS \
715 .interval = 10000u, \
718 .phy = BT_ISO_PHY_2M, \
722 static struct bt_iso_qos default_qos = {
724 .big = BT_ISO_QOS_BIG_UNSET,
725 .bis = BT_ISO_QOS_BIS_UNSET,
729 .in = DEFAULT_IO_QOS,
730 .out = DEFAULT_IO_QOS,
735 .sync_timeout = 0x4000,
736 .sync_cte_type = 0x00,
742 static struct sock *iso_sock_alloc(struct net *net, struct socket *sock,
743 int proto, gfp_t prio, int kern)
747 sk = bt_sock_alloc(net, sock, &iso_proto, proto, prio, kern);
751 sk->sk_destruct = iso_sock_destruct;
752 sk->sk_sndtimeo = ISO_CONN_TIMEOUT;
754 /* Set address type as public as default src address is BDADDR_ANY */
755 iso_pi(sk)->src_type = BDADDR_LE_PUBLIC;
757 iso_pi(sk)->qos = default_qos;
759 bt_sock_link(&iso_sk_list, sk);
763 static int iso_sock_create(struct net *net, struct socket *sock, int protocol,
768 BT_DBG("sock %p", sock);
770 sock->state = SS_UNCONNECTED;
772 if (sock->type != SOCK_SEQPACKET)
773 return -ESOCKTNOSUPPORT;
775 sock->ops = &iso_sock_ops;
777 sk = iso_sock_alloc(net, sock, protocol, GFP_ATOMIC, kern);
781 iso_sock_init(sk, NULL);
785 static int iso_sock_bind_bc(struct socket *sock, struct sockaddr *addr,
788 struct sockaddr_iso *sa = (struct sockaddr_iso *)addr;
789 struct sock *sk = sock->sk;
792 BT_DBG("sk %p bc_sid %u bc_num_bis %u", sk, sa->iso_bc->bc_sid,
793 sa->iso_bc->bc_num_bis);
795 if (addr_len > sizeof(*sa) + sizeof(*sa->iso_bc))
798 bacpy(&iso_pi(sk)->dst, &sa->iso_bc->bc_bdaddr);
799 iso_pi(sk)->dst_type = sa->iso_bc->bc_bdaddr_type;
800 iso_pi(sk)->sync_handle = -1;
801 iso_pi(sk)->bc_sid = sa->iso_bc->bc_sid;
802 iso_pi(sk)->bc_num_bis = sa->iso_bc->bc_num_bis;
804 for (i = 0; i < iso_pi(sk)->bc_num_bis; i++) {
805 if (sa->iso_bc->bc_bis[i] < 0x01 ||
806 sa->iso_bc->bc_bis[i] > 0x1f)
809 memcpy(iso_pi(sk)->bc_bis, sa->iso_bc->bc_bis,
810 iso_pi(sk)->bc_num_bis);
816 static int iso_sock_bind(struct socket *sock, struct sockaddr *addr,
819 struct sockaddr_iso *sa = (struct sockaddr_iso *)addr;
820 struct sock *sk = sock->sk;
823 BT_DBG("sk %p %pMR type %u", sk, &sa->iso_bdaddr, sa->iso_bdaddr_type);
825 if (!addr || addr_len < sizeof(struct sockaddr_iso) ||
826 addr->sa_family != AF_BLUETOOTH)
831 if (sk->sk_state != BT_OPEN) {
836 if (sk->sk_type != SOCK_SEQPACKET) {
841 /* Check if the address type is of LE type */
842 if (!bdaddr_type_is_le(sa->iso_bdaddr_type)) {
847 bacpy(&iso_pi(sk)->src, &sa->iso_bdaddr);
848 iso_pi(sk)->src_type = sa->iso_bdaddr_type;
850 /* Check for Broadcast address */
851 if (addr_len > sizeof(*sa)) {
852 err = iso_sock_bind_bc(sock, addr, addr_len);
857 sk->sk_state = BT_BOUND;
864 static int iso_sock_connect(struct socket *sock, struct sockaddr *addr,
867 struct sockaddr_iso *sa = (struct sockaddr_iso *)addr;
868 struct sock *sk = sock->sk;
873 if (alen < sizeof(struct sockaddr_iso) ||
874 addr->sa_family != AF_BLUETOOTH)
877 if (sk->sk_state != BT_OPEN && sk->sk_state != BT_BOUND)
880 if (sk->sk_type != SOCK_SEQPACKET)
883 /* Check if the address type is of LE type */
884 if (!bdaddr_type_is_le(sa->iso_bdaddr_type))
889 bacpy(&iso_pi(sk)->dst, &sa->iso_bdaddr);
890 iso_pi(sk)->dst_type = sa->iso_bdaddr_type;
894 if (bacmp(&iso_pi(sk)->dst, BDADDR_ANY))
895 err = iso_connect_cis(sk);
897 err = iso_connect_bis(sk);
904 if (!test_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags)) {
905 err = bt_sock_wait_state(sk, BT_CONNECTED,
906 sock_sndtimeo(sk, flags & O_NONBLOCK));
913 static int iso_listen_bis(struct sock *sk)
915 struct hci_dev *hdev;
918 BT_DBG("%pMR -> %pMR (SID 0x%2.2x)", &iso_pi(sk)->src,
919 &iso_pi(sk)->dst, iso_pi(sk)->bc_sid);
921 write_lock(&iso_sk_list.lock);
923 if (__iso_get_sock_listen_by_sid(&iso_pi(sk)->src, &iso_pi(sk)->dst,
927 write_unlock(&iso_sk_list.lock);
932 hdev = hci_get_route(&iso_pi(sk)->dst, &iso_pi(sk)->src,
933 iso_pi(sk)->src_type);
935 return -EHOSTUNREACH;
937 /* Fail if user set invalid QoS */
938 if (iso_pi(sk)->qos_user_set && !check_bcast_qos(&iso_pi(sk)->qos)) {
939 iso_pi(sk)->qos = default_qos;
943 err = hci_pa_create_sync(hdev, &iso_pi(sk)->dst,
944 le_addr_type(iso_pi(sk)->dst_type),
945 iso_pi(sk)->bc_sid, &iso_pi(sk)->qos);
952 static int iso_listen_cis(struct sock *sk)
956 BT_DBG("%pMR", &iso_pi(sk)->src);
958 write_lock(&iso_sk_list.lock);
960 if (__iso_get_sock_listen_by_addr(&iso_pi(sk)->src, &iso_pi(sk)->dst))
963 write_unlock(&iso_sk_list.lock);
968 static int iso_sock_listen(struct socket *sock, int backlog)
970 struct sock *sk = sock->sk;
973 BT_DBG("sk %p backlog %d", sk, backlog);
977 if (sk->sk_state != BT_BOUND) {
982 if (sk->sk_type != SOCK_SEQPACKET) {
987 if (!bacmp(&iso_pi(sk)->dst, BDADDR_ANY))
988 err = iso_listen_cis(sk);
990 err = iso_listen_bis(sk);
995 sk->sk_max_ack_backlog = backlog;
996 sk->sk_ack_backlog = 0;
998 sk->sk_state = BT_LISTEN;
1005 static int iso_sock_accept(struct socket *sock, struct socket *newsock,
1006 int flags, bool kern)
1008 DEFINE_WAIT_FUNC(wait, woken_wake_function);
1009 struct sock *sk = sock->sk, *ch;
1015 timeo = sock_rcvtimeo(sk, flags & O_NONBLOCK);
1017 BT_DBG("sk %p timeo %ld", sk, timeo);
1019 /* Wait for an incoming connection. (wake-one). */
1020 add_wait_queue_exclusive(sk_sleep(sk), &wait);
1022 if (sk->sk_state != BT_LISTEN) {
1027 ch = bt_accept_dequeue(sk, newsock);
1036 if (signal_pending(current)) {
1037 err = sock_intr_errno(timeo);
1043 timeo = wait_woken(&wait, TASK_INTERRUPTIBLE, timeo);
1046 remove_wait_queue(sk_sleep(sk), &wait);
1051 newsock->state = SS_CONNECTED;
1053 BT_DBG("new socket %p", ch);
1060 static int iso_sock_getname(struct socket *sock, struct sockaddr *addr,
1063 struct sockaddr_iso *sa = (struct sockaddr_iso *)addr;
1064 struct sock *sk = sock->sk;
1066 BT_DBG("sock %p, sk %p", sock, sk);
1068 addr->sa_family = AF_BLUETOOTH;
1071 bacpy(&sa->iso_bdaddr, &iso_pi(sk)->dst);
1072 sa->iso_bdaddr_type = iso_pi(sk)->dst_type;
1074 bacpy(&sa->iso_bdaddr, &iso_pi(sk)->src);
1075 sa->iso_bdaddr_type = iso_pi(sk)->src_type;
1078 return sizeof(struct sockaddr_iso);
1081 static int iso_sock_sendmsg(struct socket *sock, struct msghdr *msg,
1084 struct sock *sk = sock->sk;
1085 struct sk_buff *skb, **frag;
1089 BT_DBG("sock %p, sk %p", sock, sk);
1091 err = sock_error(sk);
1095 if (msg->msg_flags & MSG_OOB)
1100 if (sk->sk_state != BT_CONNECTED) {
1105 mtu = iso_pi(sk)->conn->hcon->hdev->iso_mtu;
1109 skb = bt_skb_sendmsg(sk, msg, len, mtu, HCI_ISO_DATA_HDR_SIZE, 0);
1111 return PTR_ERR(skb);
1115 BT_DBG("skb %p len %d", sk, skb->len);
1117 /* Continuation fragments */
1118 frag = &skb_shinfo(skb)->frag_list;
1120 struct sk_buff *tmp;
1122 tmp = bt_skb_sendmsg(sk, msg, len, mtu, 0, 0);
1125 return PTR_ERR(tmp);
1132 skb->len += tmp->len;
1133 skb->data_len += tmp->len;
1135 BT_DBG("frag %p len %d", *frag, tmp->len);
1137 frag = &(*frag)->next;
1142 if (sk->sk_state == BT_CONNECTED)
1143 err = iso_send_frame(sk, skb);
1154 static void iso_conn_defer_accept(struct hci_conn *conn)
1156 struct hci_cp_le_accept_cis cp;
1157 struct hci_dev *hdev = conn->hdev;
1159 BT_DBG("conn %p", conn);
1161 conn->state = BT_CONFIG;
1163 cp.handle = cpu_to_le16(conn->handle);
1165 hci_send_cmd(hdev, HCI_OP_LE_ACCEPT_CIS, sizeof(cp), &cp);
1168 static void iso_conn_big_sync(struct sock *sk)
1171 struct hci_dev *hdev;
1173 hdev = hci_get_route(&iso_pi(sk)->dst, &iso_pi(sk)->src,
1174 iso_pi(sk)->src_type);
1179 if (!test_and_set_bit(BT_SK_BIG_SYNC, &iso_pi(sk)->flags)) {
1180 err = hci_le_big_create_sync(hdev, iso_pi(sk)->conn->hcon,
1182 iso_pi(sk)->sync_handle,
1183 iso_pi(sk)->bc_num_bis,
1184 iso_pi(sk)->bc_bis);
1186 bt_dev_err(hdev, "hci_le_big_create_sync: %d",
1191 static int iso_sock_recvmsg(struct socket *sock, struct msghdr *msg,
1192 size_t len, int flags)
1194 struct sock *sk = sock->sk;
1195 struct iso_pinfo *pi = iso_pi(sk);
1197 BT_DBG("sk %p", sk);
1199 if (test_and_clear_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags)) {
1201 switch (sk->sk_state) {
1203 if (pi->conn->hcon &&
1204 test_bit(HCI_CONN_PA_SYNC, &pi->conn->hcon->flags)) {
1205 iso_conn_big_sync(sk);
1206 sk->sk_state = BT_LISTEN;
1208 iso_conn_defer_accept(pi->conn->hcon);
1209 sk->sk_state = BT_CONFIG;
1215 return iso_connect_cis(sk);
1222 return bt_sock_recvmsg(sock, msg, len, flags);
1225 static bool check_io_qos(struct bt_iso_io_qos *qos)
1227 /* If no PHY is enable SDU must be 0 */
1228 if (!qos->phy && qos->sdu)
1231 if (qos->interval && (qos->interval < 0xff || qos->interval > 0xfffff))
1234 if (qos->latency && (qos->latency < 0x05 || qos->latency > 0xfa0))
1237 if (qos->phy > BT_ISO_PHY_ANY)
1243 static bool check_ucast_qos(struct bt_iso_qos *qos)
1245 if (qos->ucast.cig > 0xef && qos->ucast.cig != BT_ISO_QOS_CIG_UNSET)
1248 if (qos->ucast.cis > 0xef && qos->ucast.cis != BT_ISO_QOS_CIS_UNSET)
1251 if (qos->ucast.sca > 0x07)
1254 if (qos->ucast.packing > 0x01)
1257 if (qos->ucast.framing > 0x01)
1260 if (!check_io_qos(&qos->ucast.in))
1263 if (!check_io_qos(&qos->ucast.out))
1269 static bool check_bcast_qos(struct bt_iso_qos *qos)
1271 if (qos->bcast.sync_factor == 0x00)
1274 if (qos->bcast.packing > 0x01)
1277 if (qos->bcast.framing > 0x01)
1280 if (!check_io_qos(&qos->bcast.in))
1283 if (!check_io_qos(&qos->bcast.out))
1286 if (qos->bcast.encryption > 0x01)
1289 if (qos->bcast.options > 0x07)
1292 if (qos->bcast.skip > 0x01f3)
1295 if (qos->bcast.sync_timeout < 0x000a || qos->bcast.sync_timeout > 0x4000)
1298 if (qos->bcast.sync_cte_type > 0x1f)
1301 if (qos->bcast.mse > 0x1f)
1304 if (qos->bcast.timeout < 0x000a || qos->bcast.timeout > 0x4000)
1310 static int iso_sock_setsockopt(struct socket *sock, int level, int optname,
1311 sockptr_t optval, unsigned int optlen)
1313 struct sock *sk = sock->sk;
1315 struct bt_iso_qos qos = default_qos;
1318 BT_DBG("sk %p", sk);
1323 case BT_DEFER_SETUP:
1324 if (sk->sk_state != BT_BOUND && sk->sk_state != BT_LISTEN) {
1329 if (copy_from_sockptr(&opt, optval, sizeof(u32))) {
1335 set_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags);
1337 clear_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags);
1341 if (copy_from_sockptr(&opt, optval, sizeof(u32))) {
1347 set_bit(BT_SK_PKT_STATUS, &bt_sk(sk)->flags);
1349 clear_bit(BT_SK_PKT_STATUS, &bt_sk(sk)->flags);
1353 if (sk->sk_state != BT_OPEN && sk->sk_state != BT_BOUND &&
1354 sk->sk_state != BT_CONNECT2) {
1359 len = min_t(unsigned int, sizeof(qos), optlen);
1361 if (copy_from_sockptr(&qos, optval, len)) {
1366 if (len == sizeof(qos.ucast) && !check_ucast_qos(&qos)) {
1371 iso_pi(sk)->qos = qos;
1372 iso_pi(sk)->qos_user_set = true;
1377 if (sk->sk_state != BT_OPEN && sk->sk_state != BT_BOUND &&
1378 sk->sk_state != BT_CONNECT2) {
1383 if (optlen > sizeof(iso_pi(sk)->base)) {
1388 len = min_t(unsigned int, sizeof(iso_pi(sk)->base), optlen);
1390 if (copy_from_sockptr(iso_pi(sk)->base, optval, len)) {
1395 iso_pi(sk)->base_len = len;
1408 static int iso_sock_getsockopt(struct socket *sock, int level, int optname,
1409 char __user *optval, int __user *optlen)
1411 struct sock *sk = sock->sk;
1413 struct bt_iso_qos *qos;
1417 BT_DBG("sk %p", sk);
1419 if (get_user(len, optlen))
1425 case BT_DEFER_SETUP:
1426 if (sk->sk_state == BT_CONNECTED) {
1431 if (put_user(test_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags),
1432 (u32 __user *)optval))
1438 if (put_user(test_bit(BT_SK_PKT_STATUS, &bt_sk(sk)->flags),
1439 (int __user *)optval))
1444 qos = iso_sock_get_qos(sk);
1446 len = min_t(unsigned int, len, sizeof(*qos));
1447 if (copy_to_user(optval, qos, len))
1453 if (sk->sk_state == BT_CONNECTED &&
1454 !bacmp(&iso_pi(sk)->dst, BDADDR_ANY)) {
1455 base_len = iso_pi(sk)->conn->hcon->le_per_adv_data_len;
1456 base = iso_pi(sk)->conn->hcon->le_per_adv_data;
1458 base_len = iso_pi(sk)->base_len;
1459 base = iso_pi(sk)->base;
1462 len = min_t(unsigned int, len, base_len);
1463 if (copy_to_user(optval, base, len))
1465 if (put_user(len, optlen))
1479 static int iso_sock_shutdown(struct socket *sock, int how)
1481 struct sock *sk = sock->sk;
1484 BT_DBG("sock %p, sk %p, how %d", sock, sk, how);
1494 if (sk->sk_shutdown & RCV_SHUTDOWN)
1496 sk->sk_shutdown |= RCV_SHUTDOWN;
1499 if (sk->sk_shutdown & SEND_SHUTDOWN)
1501 sk->sk_shutdown |= SEND_SHUTDOWN;
1504 if (sk->sk_shutdown & SHUTDOWN_MASK)
1506 sk->sk_shutdown |= SHUTDOWN_MASK;
1510 iso_sock_clear_timer(sk);
1511 __iso_sock_close(sk);
1513 if (sock_flag(sk, SOCK_LINGER) && sk->sk_lingertime &&
1514 !(current->flags & PF_EXITING))
1515 err = bt_sock_wait_state(sk, BT_CLOSED, sk->sk_lingertime);
1524 static int iso_sock_release(struct socket *sock)
1526 struct sock *sk = sock->sk;
1529 BT_DBG("sock %p, sk %p", sock, sk);
1536 if (sock_flag(sk, SOCK_LINGER) && READ_ONCE(sk->sk_lingertime) &&
1537 !(current->flags & PF_EXITING)) {
1539 err = bt_sock_wait_state(sk, BT_CLOSED, sk->sk_lingertime);
1548 static void iso_sock_ready(struct sock *sk)
1550 BT_DBG("sk %p", sk);
1556 iso_sock_clear_timer(sk);
1557 sk->sk_state = BT_CONNECTED;
1558 sk->sk_state_change(sk);
1562 struct iso_list_data {
1563 struct hci_conn *hcon;
1567 static bool iso_match_big(struct sock *sk, void *data)
1569 struct hci_evt_le_big_sync_estabilished *ev = data;
1571 return ev->handle == iso_pi(sk)->qos.bcast.big;
1574 static bool iso_match_pa_sync_flag(struct sock *sk, void *data)
1576 return test_bit(BT_SK_PA_SYNC, &iso_pi(sk)->flags);
1579 static void iso_conn_ready(struct iso_conn *conn)
1581 struct sock *parent = NULL;
1582 struct sock *sk = conn->sk;
1583 struct hci_ev_le_big_sync_estabilished *ev = NULL;
1584 struct hci_ev_le_pa_sync_established *ev2 = NULL;
1585 struct hci_evt_le_big_info_adv_report *ev3 = NULL;
1586 struct hci_conn *hcon;
1588 BT_DBG("conn %p", conn);
1591 iso_sock_ready(conn->sk);
1597 if (test_bit(HCI_CONN_BIG_SYNC, &hcon->flags) ||
1598 test_bit(HCI_CONN_BIG_SYNC_FAILED, &hcon->flags)) {
1599 ev = hci_recv_event_data(hcon->hdev,
1600 HCI_EVT_LE_BIG_SYNC_ESTABILISHED);
1602 /* Get reference to PA sync parent socket, if it exists */
1603 parent = iso_get_sock_listen(&hcon->src,
1605 iso_match_pa_sync_flag, NULL);
1607 parent = iso_get_sock_listen(&hcon->src,
1610 } else if (test_bit(HCI_CONN_PA_SYNC_FAILED, &hcon->flags)) {
1611 ev2 = hci_recv_event_data(hcon->hdev,
1612 HCI_EV_LE_PA_SYNC_ESTABLISHED);
1614 parent = iso_get_sock_listen(&hcon->src,
1616 iso_match_sid, ev2);
1617 } else if (test_bit(HCI_CONN_PA_SYNC, &hcon->flags)) {
1618 ev3 = hci_recv_event_data(hcon->hdev,
1619 HCI_EVT_LE_BIG_INFO_ADV_REPORT);
1621 parent = iso_get_sock_listen(&hcon->src,
1623 iso_match_sync_handle, ev3);
1627 parent = iso_get_sock_listen(&hcon->src,
1628 BDADDR_ANY, NULL, NULL);
1635 sk = iso_sock_alloc(sock_net(parent), NULL,
1636 BTPROTO_ISO, GFP_ATOMIC, 0);
1638 release_sock(parent);
1642 iso_sock_init(sk, parent);
1644 bacpy(&iso_pi(sk)->src, &hcon->src);
1646 /* Convert from HCI to three-value type */
1647 if (hcon->src_type == ADDR_LE_DEV_PUBLIC)
1648 iso_pi(sk)->src_type = BDADDR_LE_PUBLIC;
1650 iso_pi(sk)->src_type = BDADDR_LE_RANDOM;
1652 /* If hcon has no destination address (BDADDR_ANY) it means it
1653 * was created by HCI_EV_LE_BIG_SYNC_ESTABILISHED or
1654 * HCI_EV_LE_PA_SYNC_ESTABLISHED so we need to initialize using
1655 * the parent socket destination address.
1657 if (!bacmp(&hcon->dst, BDADDR_ANY)) {
1658 bacpy(&hcon->dst, &iso_pi(parent)->dst);
1659 hcon->dst_type = iso_pi(parent)->dst_type;
1660 hcon->sync_handle = iso_pi(parent)->sync_handle;
1664 iso_pi(sk)->qos = iso_pi(parent)->qos;
1665 iso_pi(sk)->qos.bcast.encryption = ev3->encryption;
1666 hcon->iso_qos = iso_pi(sk)->qos;
1667 iso_pi(sk)->bc_num_bis = iso_pi(parent)->bc_num_bis;
1668 memcpy(iso_pi(sk)->bc_bis, iso_pi(parent)->bc_bis, ISO_MAX_NUM_BIS);
1669 set_bit(BT_SK_PA_SYNC, &iso_pi(sk)->flags);
1672 bacpy(&iso_pi(sk)->dst, &hcon->dst);
1673 iso_pi(sk)->dst_type = hcon->dst_type;
1674 iso_pi(sk)->sync_handle = iso_pi(parent)->sync_handle;
1675 memcpy(iso_pi(sk)->base, iso_pi(parent)->base, iso_pi(parent)->base_len);
1676 iso_pi(sk)->base_len = iso_pi(parent)->base_len;
1678 hci_conn_hold(hcon);
1679 iso_chan_add(conn, sk, parent);
1681 if ((ev && ((struct hci_evt_le_big_sync_estabilished *)ev)->status) ||
1682 (ev2 && ev2->status)) {
1683 /* Trigger error signal on child socket */
1684 sk->sk_err = ECONNREFUSED;
1685 sk->sk_error_report(sk);
1688 if (test_bit(BT_SK_DEFER_SETUP, &bt_sk(parent)->flags))
1689 sk->sk_state = BT_CONNECT2;
1691 sk->sk_state = BT_CONNECTED;
1693 /* Wake up parent */
1694 parent->sk_data_ready(parent);
1696 release_sock(parent);
1700 static bool iso_match_sid(struct sock *sk, void *data)
1702 struct hci_ev_le_pa_sync_established *ev = data;
1704 return ev->sid == iso_pi(sk)->bc_sid;
1707 static bool iso_match_sync_handle(struct sock *sk, void *data)
1709 struct hci_evt_le_big_info_adv_report *ev = data;
1711 return le16_to_cpu(ev->sync_handle) == iso_pi(sk)->sync_handle;
1714 static bool iso_match_sync_handle_pa_report(struct sock *sk, void *data)
1716 struct hci_ev_le_per_adv_report *ev = data;
1718 return le16_to_cpu(ev->sync_handle) == iso_pi(sk)->sync_handle;
1721 /* ----- ISO interface with lower layer (HCI) ----- */
1723 int iso_connect_ind(struct hci_dev *hdev, bdaddr_t *bdaddr, __u8 *flags)
1725 struct hci_ev_le_pa_sync_established *ev1;
1726 struct hci_evt_le_big_info_adv_report *ev2;
1727 struct hci_ev_le_per_adv_report *ev3;
1731 bt_dev_dbg(hdev, "bdaddr %pMR", bdaddr);
1733 /* Broadcast receiver requires handling of some events before it can
1734 * proceed to establishing a BIG sync:
1736 * 1. HCI_EV_LE_PA_SYNC_ESTABLISHED: The socket may specify a specific
1737 * SID to listen to and once sync is estabilished its handle needs to
1738 * be stored in iso_pi(sk)->sync_handle so it can be matched once
1739 * receiving the BIG Info.
1740 * 2. HCI_EVT_LE_BIG_INFO_ADV_REPORT: When connect_ind is triggered by a
1741 * a BIG Info it attempts to check if there any listening socket with
1742 * the same sync_handle and if it does then attempt to create a sync.
1743 * 3. HCI_EV_LE_PER_ADV_REPORT: When a PA report is received, it is stored
1744 * in iso_pi(sk)->base so it can be passed up to user, in the case of a
1747 ev1 = hci_recv_event_data(hdev, HCI_EV_LE_PA_SYNC_ESTABLISHED);
1749 sk = iso_get_sock_listen(&hdev->bdaddr, bdaddr, iso_match_sid,
1751 if (sk && !ev1->status)
1752 iso_pi(sk)->sync_handle = le16_to_cpu(ev1->handle);
1757 ev2 = hci_recv_event_data(hdev, HCI_EVT_LE_BIG_INFO_ADV_REPORT);
1759 /* Try to get PA sync listening socket, if it exists */
1760 sk = iso_get_sock_listen(&hdev->bdaddr, bdaddr,
1761 iso_match_pa_sync_flag, NULL);
1763 sk = iso_get_sock_listen(&hdev->bdaddr, bdaddr,
1764 iso_match_sync_handle, ev2);
1768 if (ev2->num_bis < iso_pi(sk)->bc_num_bis)
1769 iso_pi(sk)->bc_num_bis = ev2->num_bis;
1771 if (!test_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags) &&
1772 !test_and_set_bit(BT_SK_BIG_SYNC, &iso_pi(sk)->flags)) {
1773 err = hci_le_big_create_sync(hdev, NULL,
1775 iso_pi(sk)->sync_handle,
1776 iso_pi(sk)->bc_num_bis,
1777 iso_pi(sk)->bc_bis);
1779 bt_dev_err(hdev, "hci_le_big_create_sync: %d",
1787 ev3 = hci_recv_event_data(hdev, HCI_EV_LE_PER_ADV_REPORT);
1789 size_t base_len = ev3->length;
1792 sk = iso_get_sock_listen(&hdev->bdaddr, bdaddr,
1793 iso_match_sync_handle_pa_report, ev3);
1794 base = eir_get_service_data(ev3->data, ev3->length,
1795 EIR_BAA_SERVICE_UUID, &base_len);
1796 if (base && sk && base_len <= sizeof(iso_pi(sk)->base)) {
1797 memcpy(iso_pi(sk)->base, base, base_len);
1798 iso_pi(sk)->base_len = base_len;
1801 sk = iso_get_sock_listen(&hdev->bdaddr, BDADDR_ANY, NULL, NULL);
1808 lm |= HCI_LM_ACCEPT;
1810 if (test_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags))
1811 *flags |= HCI_PROTO_DEFER;
1816 static void iso_connect_cfm(struct hci_conn *hcon, __u8 status)
1818 if (hcon->type != ISO_LINK) {
1819 if (hcon->type != LE_LINK)
1822 /* Check if LE link has failed */
1824 struct hci_link *link, *t;
1826 list_for_each_entry_safe(link, t, &hcon->link_list,
1828 iso_conn_del(link->conn, bt_to_errno(status));
1833 /* Create CIS if pending */
1834 hci_le_create_cis_pending(hcon->hdev);
1838 BT_DBG("hcon %p bdaddr %pMR status %d", hcon, &hcon->dst, status);
1840 /* Similar to the success case, if HCI_CONN_BIG_SYNC_FAILED or
1841 * HCI_CONN_PA_SYNC_FAILED is set, queue the failed connection
1842 * into the accept queue of the listening socket and wake up
1843 * userspace, to inform the user about the event.
1845 if (!status || test_bit(HCI_CONN_BIG_SYNC_FAILED, &hcon->flags) ||
1846 test_bit(HCI_CONN_PA_SYNC_FAILED, &hcon->flags)) {
1847 struct iso_conn *conn;
1849 conn = iso_conn_add(hcon);
1851 iso_conn_ready(conn);
1853 iso_conn_del(hcon, bt_to_errno(status));
1857 static void iso_disconn_cfm(struct hci_conn *hcon, __u8 reason)
1859 if (hcon->type != ISO_LINK)
1862 BT_DBG("hcon %p reason %d", hcon, reason);
1864 iso_conn_del(hcon, bt_to_errno(reason));
1867 void iso_recv(struct hci_conn *hcon, struct sk_buff *skb, u16 flags)
1869 struct iso_conn *conn = hcon->iso_data;
1875 pb = hci_iso_flags_pb(flags);
1876 ts = hci_iso_flags_ts(flags);
1878 BT_DBG("conn %p len %d pb 0x%x ts 0x%x", conn, skb->len, pb, ts);
1884 BT_ERR("Unexpected start frame (len %d)", skb->len);
1885 kfree_skb(conn->rx_skb);
1886 conn->rx_skb = NULL;
1891 struct hci_iso_ts_data_hdr *hdr;
1893 /* TODO: add timestamp to the packet? */
1894 hdr = skb_pull_data(skb, HCI_ISO_TS_DATA_HDR_SIZE);
1896 BT_ERR("Frame is too short (len %d)", skb->len);
1900 len = __le16_to_cpu(hdr->slen);
1902 struct hci_iso_data_hdr *hdr;
1904 hdr = skb_pull_data(skb, HCI_ISO_DATA_HDR_SIZE);
1906 BT_ERR("Frame is too short (len %d)", skb->len);
1910 len = __le16_to_cpu(hdr->slen);
1913 flags = hci_iso_data_flags(len);
1914 len = hci_iso_data_len(len);
1916 BT_DBG("Start: total len %d, frag len %d flags 0x%4.4x", len,
1919 if (len == skb->len) {
1920 /* Complete frame received */
1921 hci_skb_pkt_status(skb) = flags & 0x03;
1922 iso_recv_frame(conn, skb);
1926 if (pb == ISO_SINGLE) {
1927 BT_ERR("Frame malformed (len %d, expected len %d)",
1932 if (skb->len > len) {
1933 BT_ERR("Frame is too long (len %d, expected len %d)",
1938 /* Allocate skb for the complete frame (with header) */
1939 conn->rx_skb = bt_skb_alloc(len, GFP_KERNEL);
1943 hci_skb_pkt_status(conn->rx_skb) = flags & 0x03;
1944 skb_copy_from_linear_data(skb, skb_put(conn->rx_skb, skb->len),
1946 conn->rx_len = len - skb->len;
1950 BT_DBG("Cont: frag len %d (expecting %d)", skb->len,
1953 if (!conn->rx_len) {
1954 BT_ERR("Unexpected continuation frame (len %d)",
1959 if (skb->len > conn->rx_len) {
1960 BT_ERR("Fragment is too long (len %d, expected %d)",
1961 skb->len, conn->rx_len);
1962 kfree_skb(conn->rx_skb);
1963 conn->rx_skb = NULL;
1968 skb_copy_from_linear_data(skb, skb_put(conn->rx_skb, skb->len),
1970 conn->rx_len -= skb->len;
1974 skb_copy_from_linear_data(skb, skb_put(conn->rx_skb, skb->len),
1976 conn->rx_len -= skb->len;
1978 if (!conn->rx_len) {
1979 struct sk_buff *rx_skb = conn->rx_skb;
1981 /* Complete frame received. iso_recv_frame
1982 * takes ownership of the skb so set the global
1983 * rx_skb pointer to NULL first.
1985 conn->rx_skb = NULL;
1986 iso_recv_frame(conn, rx_skb);
1995 static struct hci_cb iso_cb = {
1997 .connect_cfm = iso_connect_cfm,
1998 .disconn_cfm = iso_disconn_cfm,
2001 static int iso_debugfs_show(struct seq_file *f, void *p)
2005 read_lock(&iso_sk_list.lock);
2007 sk_for_each(sk, &iso_sk_list.head) {
2008 seq_printf(f, "%pMR %pMR %d\n", &iso_pi(sk)->src,
2009 &iso_pi(sk)->dst, sk->sk_state);
2012 read_unlock(&iso_sk_list.lock);
2017 DEFINE_SHOW_ATTRIBUTE(iso_debugfs);
2019 static struct dentry *iso_debugfs;
2021 static const struct proto_ops iso_sock_ops = {
2022 .family = PF_BLUETOOTH,
2023 .owner = THIS_MODULE,
2024 .release = iso_sock_release,
2025 .bind = iso_sock_bind,
2026 .connect = iso_sock_connect,
2027 .listen = iso_sock_listen,
2028 .accept = iso_sock_accept,
2029 .getname = iso_sock_getname,
2030 .sendmsg = iso_sock_sendmsg,
2031 .recvmsg = iso_sock_recvmsg,
2032 .poll = bt_sock_poll,
2033 .ioctl = bt_sock_ioctl,
2034 .mmap = sock_no_mmap,
2035 .socketpair = sock_no_socketpair,
2036 .shutdown = iso_sock_shutdown,
2037 .setsockopt = iso_sock_setsockopt,
2038 .getsockopt = iso_sock_getsockopt
2041 static const struct net_proto_family iso_sock_family_ops = {
2042 .family = PF_BLUETOOTH,
2043 .owner = THIS_MODULE,
2044 .create = iso_sock_create,
2047 static bool iso_inited;
2049 bool iso_enabled(void)
2058 BUILD_BUG_ON(sizeof(struct sockaddr_iso) > sizeof(struct sockaddr));
2063 err = proto_register(&iso_proto, 0);
2067 err = bt_sock_register(BTPROTO_ISO, &iso_sock_family_ops);
2069 BT_ERR("ISO socket registration failed");
2073 err = bt_procfs_init(&init_net, "iso", &iso_sk_list, NULL);
2075 BT_ERR("Failed to create ISO proc file");
2076 bt_sock_unregister(BTPROTO_ISO);
2080 BT_INFO("ISO socket layer initialized");
2082 hci_register_cb(&iso_cb);
2084 if (IS_ERR_OR_NULL(bt_debugfs))
2088 iso_debugfs = debugfs_create_file("iso", 0444, bt_debugfs,
2089 NULL, &iso_debugfs_fops);
2097 proto_unregister(&iso_proto);
2106 bt_procfs_cleanup(&init_net, "iso");
2108 debugfs_remove(iso_debugfs);
2111 hci_unregister_cb(&iso_cb);
2113 bt_sock_unregister(BTPROTO_ISO);
2115 proto_unregister(&iso_proto);