Lines Matching refs:sk

30 	struct sock	*sk;
42 static void iso_sock_close(struct sock *sk);
43 static void iso_sock_kill(struct sock *sk);
46 #define iso_pi(sk) ((struct iso_pinfo *)sk)
80 static bool iso_match_sid(struct sock *sk, void *data);
81 static bool iso_match_sync_handle(struct sock *sk, void *data);
82 static void iso_sock_disconn(struct sock *sk);
84 typedef bool (*iso_sock_match_t)(struct sock *sk, void *data);
97 struct sock *sk;
100 sk = conn->sk;
101 if (sk)
102 sock_hold(sk);
105 if (!sk)
108 BT_DBG("sock %p state %d", sk, sk->sk_state);
110 lock_sock(sk);
111 sk->sk_err = ETIMEDOUT;
112 sk->sk_state_change(sk);
113 release_sock(sk);
114 sock_put(sk);
117 static void iso_sock_set_timer(struct sock *sk, long timeout)
119 if (!iso_pi(sk)->conn)
122 BT_DBG("sock %p state %d timeout %ld", sk, sk->sk_state, timeout);
123 cancel_delayed_work(&iso_pi(sk)->conn->timeout_work);
124 schedule_delayed_work(&iso_pi(sk)->conn->timeout_work, timeout);
127 static void iso_sock_clear_timer(struct sock *sk)
129 if (!iso_pi(sk)->conn)
132 BT_DBG("sock %p state %d", sk, sk->sk_state);
133 cancel_delayed_work(&iso_pi(sk)->conn->timeout_work);
164 static void iso_chan_del(struct sock *sk, int err)
169 conn = iso_pi(sk)->conn;
171 BT_DBG("sk %p, conn %p, err %d", sk, conn, err);
175 conn->sk = NULL;
176 iso_pi(sk)->conn = NULL;
183 sk->sk_state = BT_CLOSED;
184 sk->sk_err = err;
186 parent = bt_sk(sk)->parent;
188 bt_accept_unlink(sk);
191 sk->sk_state_change(sk);
194 sock_set_flag(sk, SOCK_ZAPPED);
197 static bool iso_match_conn_sync_handle(struct sock *sk, void *data)
201 if (test_bit(BT_SK_PA_SYNC, &iso_pi(sk)->flags))
204 return hcon->sync_handle == iso_pi(sk)->sync_handle;
210 struct sock *sk;
220 sk = conn->sk;
221 if (sk)
222 sock_hold(sk);
225 if (sk) {
226 lock_sock(sk);
233 if (test_bit(BT_SK_PA_SYNC, &iso_pi(sk)->flags)) {
246 iso_sock_clear_timer(sk);
247 iso_chan_del(sk, err);
248 release_sock(sk);
249 sock_put(sk);
259 static int __iso_chan_add(struct iso_conn *conn, struct sock *sk,
264 if (iso_pi(sk)->conn == conn && conn->sk == sk)
267 if (conn->sk) {
268 BT_ERR("conn->sk already set");
272 iso_pi(sk)->conn = conn;
273 conn->sk = sk;
276 bt_accept_enqueue(parent, sk, true);
281 static int iso_chan_add(struct iso_conn *conn, struct sock *sk,
287 err = __iso_chan_add(conn, sk, parent);
301 static int iso_connect_bis(struct sock *sk)
308 BT_DBG("%pMR", &iso_pi(sk)->src);
310 hdev = hci_get_route(&iso_pi(sk)->dst, &iso_pi(sk)->src,
311 iso_pi(sk)->src_type);
323 if (iso_pi(sk)->qos_user_set && !check_bcast_qos(&iso_pi(sk)->qos)) {
324 iso_pi(sk)->qos = default_qos;
330 if (!iso_pi(sk)->qos.bcast.out.phy) {
336 if (test_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags)) {
337 hcon = hci_bind_bis(hdev, &iso_pi(sk)->dst,
338 &iso_pi(sk)->qos, iso_pi(sk)->base_len,
339 iso_pi(sk)->base);
345 hcon = hci_connect_bis(hdev, &iso_pi(sk)->dst,
346 le_addr_type(iso_pi(sk)->dst_type),
347 &iso_pi(sk)->qos, iso_pi(sk)->base_len,
348 iso_pi(sk)->base);
362 lock_sock(sk);
364 err = iso_chan_add(conn, sk, NULL);
366 release_sock(sk);
371 bacpy(&iso_pi(sk)->src, &hcon->src);
374 iso_sock_clear_timer(sk);
375 sk->sk_state = BT_CONNECTED;
376 } else if (test_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags)) {
377 iso_sock_clear_timer(sk);
378 sk->sk_state = BT_CONNECT;
380 sk->sk_state = BT_CONNECT;
381 iso_sock_set_timer(sk, sk->sk_sndtimeo);
384 release_sock(sk);
392 static int iso_connect_cis(struct sock *sk)
399 BT_DBG("%pMR -> %pMR", &iso_pi(sk)->src, &iso_pi(sk)->dst);
401 hdev = hci_get_route(&iso_pi(sk)->dst, &iso_pi(sk)->src,
402 iso_pi(sk)->src_type);
414 if (iso_pi(sk)->qos_user_set && !check_ucast_qos(&iso_pi(sk)->qos)) {
415 iso_pi(sk)->qos = default_qos;
421 if (!iso_pi(sk)->qos.ucast.in.phy && !iso_pi(sk)->qos.ucast.out.phy) {
427 if (test_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags)) {
428 hcon = hci_bind_cis(hdev, &iso_pi(sk)->dst,
429 le_addr_type(iso_pi(sk)->dst_type),
430 &iso_pi(sk)->qos);
436 hcon = hci_connect_cis(hdev, &iso_pi(sk)->dst,
437 le_addr_type(iso_pi(sk)->dst_type),
438 &iso_pi(sk)->qos);
452 lock_sock(sk);
454 err = iso_chan_add(conn, sk, NULL);
456 release_sock(sk);
461 bacpy(&iso_pi(sk)->src, &hcon->src);
464 iso_sock_clear_timer(sk);
465 sk->sk_state = BT_CONNECTED;
466 } else if (test_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags)) {
467 iso_sock_clear_timer(sk);
468 sk->sk_state = BT_CONNECT;
470 sk->sk_state = BT_CONNECT;
471 iso_sock_set_timer(sk, sk->sk_sndtimeo);
474 release_sock(sk);
482 static struct bt_iso_qos *iso_sock_get_qos(struct sock *sk)
484 if (sk->sk_state == BT_CONNECTED || sk->sk_state == BT_CONNECT2)
485 return &iso_pi(sk)->conn->hcon->iso_qos;
487 return &iso_pi(sk)->qos;
490 static int iso_send_frame(struct sock *sk, struct sk_buff *skb)
492 struct iso_conn *conn = iso_pi(sk)->conn;
493 struct bt_iso_qos *qos = iso_sock_get_qos(sk);
497 BT_DBG("sk %p len %d", sk, skb->len);
510 if (sk->sk_state == BT_CONNECTED)
520 struct sock *sk;
523 sk = conn->sk;
526 if (!sk)
529 BT_DBG("sk %p len %d", sk, skb->len);
531 if (sk->sk_state != BT_CONNECTED)
534 if (!sock_queue_rcv_skb(sk, skb))
544 struct sock *sk;
546 sk_for_each(sk, &iso_sk_list.head) {
547 if (sk->sk_state != BT_LISTEN)
550 if (bacmp(&iso_pi(sk)->dst, dst))
553 if (!bacmp(&iso_pi(sk)->src, src))
554 return sk;
563 struct sock *sk;
565 sk_for_each(sk, &iso_sk_list.head) {
566 if (sk->sk_state != BT_LISTEN)
569 if (bacmp(&iso_pi(sk)->src, ba))
572 if (bacmp(&iso_pi(sk)->dst, bc))
575 if (iso_pi(sk)->bc_sid == sid)
576 return sk;
592 struct sock *sk = NULL, *sk1 = NULL;
596 sk_for_each(sk, &iso_sk_list.head) {
597 if (sk->sk_state != BT_LISTEN)
601 if (bacmp(dst, BDADDR_ANY) && bacmp(&iso_pi(sk)->dst, dst))
605 if (match && !match(sk, data))
609 if (!bacmp(&iso_pi(sk)->src, src))
613 if (!bacmp(&iso_pi(sk)->src, BDADDR_ANY))
614 sk1 = sk;
619 return sk ? sk : sk1;
622 static void iso_sock_destruct(struct sock *sk)
624 BT_DBG("sk %p", sk);
626 skb_queue_purge(&sk->sk_receive_queue);
627 skb_queue_purge(&sk->sk_write_queue);
632 struct sock *sk;
637 while ((sk = bt_accept_dequeue(parent, NULL))) {
638 iso_sock_close(sk);
639 iso_sock_kill(sk);
658 static void iso_sock_kill(struct sock *sk)
660 if (!sock_flag(sk, SOCK_ZAPPED) || sk->sk_socket ||
661 sock_flag(sk, SOCK_DEAD))
664 BT_DBG("sk %p state %d", sk, sk->sk_state);
667 bt_sock_unlink(&iso_sk_list, sk);
668 sock_set_flag(sk, SOCK_DEAD);
669 sock_put(sk);
672 static void iso_sock_disconn(struct sock *sk)
674 sk->sk_state = BT_DISCONN;
675 iso_sock_set_timer(sk, ISO_DISCONN_TIMEOUT);
676 iso_conn_lock(iso_pi(sk)->conn);
677 hci_conn_drop(iso_pi(sk)->conn->hcon);
678 iso_pi(sk)->conn->hcon = NULL;
679 iso_conn_unlock(iso_pi(sk)->conn);
682 static void __iso_sock_close(struct sock *sk)
684 BT_DBG("sk %p state %d socket %p", sk, sk->sk_state, sk->sk_socket);
686 switch (sk->sk_state) {
688 iso_sock_cleanup_listen(sk);
694 if (iso_pi(sk)->conn->hcon)
695 iso_sock_disconn(sk);
697 iso_chan_del(sk, ECONNRESET);
701 if (iso_pi(sk)->conn->hcon &&
702 (test_bit(HCI_CONN_PA_SYNC, &iso_pi(sk)->conn->hcon->flags) ||
703 test_bit(HCI_CONN_PA_SYNC_FAILED, &iso_pi(sk)->conn->hcon->flags)))
704 iso_sock_disconn(sk);
706 iso_chan_del(sk, ECONNRESET);
709 iso_chan_del(sk, ECONNRESET);
713 sock_set_flag(sk, SOCK_ZAPPED);
719 static void iso_sock_close(struct sock *sk)
721 iso_sock_clear_timer(sk);
722 lock_sock(sk);
723 __iso_sock_close(sk);
724 release_sock(sk);
725 iso_sock_kill(sk);
728 static void iso_sock_init(struct sock *sk, struct sock *parent)
730 BT_DBG("sk %p", sk);
733 sk->sk_type = parent->sk_type;
734 bt_sk(sk)->flags = bt_sk(parent)->flags;
735 security_sk_clone(parent, sk);
777 struct sock *sk;
779 sk = bt_sock_alloc(net, sock, &iso_proto, proto, prio, kern);
780 if (!sk)
783 sk->sk_destruct = iso_sock_destruct;
784 sk->sk_sndtimeo = ISO_CONN_TIMEOUT;
787 iso_pi(sk)->src_type = BDADDR_LE_PUBLIC;
789 iso_pi(sk)->qos = default_qos;
791 bt_sock_link(&iso_sk_list, sk);
792 return sk;
798 struct sock *sk;
809 sk = iso_sock_alloc(net, sock, protocol, GFP_ATOMIC, kern);
810 if (!sk)
813 iso_sock_init(sk, NULL);
821 struct sock *sk = sock->sk;
824 BT_DBG("sk %p bc_sid %u bc_num_bis %u", sk, sa->iso_bc->bc_sid,
831 bacpy(&iso_pi(sk)->dst, &sa->iso_bc->bc_bdaddr);
832 iso_pi(sk)->dst_type = sa->iso_bc->bc_bdaddr_type;
833 iso_pi(sk)->sync_handle = -1;
834 iso_pi(sk)->bc_sid = sa->iso_bc->bc_sid;
835 iso_pi(sk)->bc_num_bis = sa->iso_bc->bc_num_bis;
837 for (i = 0; i < iso_pi(sk)->bc_num_bis; i++) {
842 memcpy(iso_pi(sk)->bc_bis, sa->iso_bc->bc_bis,
843 iso_pi(sk)->bc_num_bis);
853 struct sock *sk = sock->sk;
856 BT_DBG("sk %p %pMR type %u", sk, &sa->iso_bdaddr, sa->iso_bdaddr_type);
862 lock_sock(sk);
864 if (sk->sk_state != BT_OPEN) {
869 if (sk->sk_type != SOCK_SEQPACKET) {
880 bacpy(&iso_pi(sk)->src, &sa->iso_bdaddr);
881 iso_pi(sk)->src_type = sa->iso_bdaddr_type;
890 sk->sk_state = BT_BOUND;
893 release_sock(sk);
901 struct sock *sk = sock->sk;
904 BT_DBG("sk %p", sk);
910 if (sk->sk_state != BT_OPEN && sk->sk_state != BT_BOUND)
913 if (sk->sk_type != SOCK_SEQPACKET)
920 lock_sock(sk);
922 bacpy(&iso_pi(sk)->dst, &sa->iso_bdaddr);
923 iso_pi(sk)->dst_type = sa->iso_bdaddr_type;
925 release_sock(sk);
927 if (bacmp(&iso_pi(sk)->dst, BDADDR_ANY))
928 err = iso_connect_cis(sk);
930 err = iso_connect_bis(sk);
935 lock_sock(sk);
937 if (!test_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags)) {
938 err = bt_sock_wait_state(sk, BT_CONNECTED,
939 sock_sndtimeo(sk, flags & O_NONBLOCK));
942 release_sock(sk);
946 static int iso_listen_bis(struct sock *sk)
951 BT_DBG("%pMR -> %pMR (SID 0x%2.2x)", &iso_pi(sk)->src,
952 &iso_pi(sk)->dst, iso_pi(sk)->bc_sid);
956 if (__iso_get_sock_listen_by_sid(&iso_pi(sk)->src, &iso_pi(sk)->dst,
957 iso_pi(sk)->bc_sid))
965 hdev = hci_get_route(&iso_pi(sk)->dst, &iso_pi(sk)->src,
966 iso_pi(sk)->src_type);
971 if (iso_pi(sk)->qos_user_set && !check_bcast_qos(&iso_pi(sk)->qos)) {
972 iso_pi(sk)->qos = default_qos;
976 err = hci_pa_create_sync(hdev, &iso_pi(sk)->dst,
977 le_addr_type(iso_pi(sk)->dst_type),
978 iso_pi(sk)->bc_sid, &iso_pi(sk)->qos);
985 static int iso_listen_cis(struct sock *sk)
989 BT_DBG("%pMR", &iso_pi(sk)->src);
993 if (__iso_get_sock_listen_by_addr(&iso_pi(sk)->src, &iso_pi(sk)->dst))
1003 struct sock *sk = sock->sk;
1006 BT_DBG("sk %p backlog %d", sk, backlog);
1008 lock_sock(sk);
1010 if (sk->sk_state != BT_BOUND) {
1015 if (sk->sk_type != SOCK_SEQPACKET) {
1020 if (!bacmp(&iso_pi(sk)->dst, BDADDR_ANY))
1021 err = iso_listen_cis(sk);
1023 err = iso_listen_bis(sk);
1028 sk->sk_max_ack_backlog = backlog;
1029 sk->sk_ack_backlog = 0;
1031 sk->sk_state = BT_LISTEN;
1034 release_sock(sk);
1042 struct sock *sk = sock->sk, *ch;
1046 lock_sock(sk);
1048 timeo = sock_rcvtimeo(sk, flags & O_NONBLOCK);
1050 BT_DBG("sk %p timeo %ld", sk, timeo);
1053 add_wait_queue_exclusive(sk_sleep(sk), &wait);
1055 if (sk->sk_state != BT_LISTEN) {
1060 ch = bt_accept_dequeue(sk, newsock);
1074 release_sock(sk);
1077 lock_sock(sk);
1079 remove_wait_queue(sk_sleep(sk), &wait);
1089 release_sock(sk);
1097 struct sock *sk = sock->sk;
1099 BT_DBG("sock %p, sk %p", sock, sk);
1104 bacpy(&sa->iso_bdaddr, &iso_pi(sk)->dst);
1105 sa->iso_bdaddr_type = iso_pi(sk)->dst_type;
1107 bacpy(&sa->iso_bdaddr, &iso_pi(sk)->src);
1108 sa->iso_bdaddr_type = iso_pi(sk)->src_type;
1117 struct sock *sk = sock->sk;
1122 BT_DBG("sock %p, sk %p", sock, sk);
1124 err = sock_error(sk);
1131 lock_sock(sk);
1133 if (sk->sk_state != BT_CONNECTED) {
1134 release_sock(sk);
1138 mtu = iso_pi(sk)->conn->hcon->hdev->iso_mtu;
1140 release_sock(sk);
1142 skb = bt_skb_sendmsg(sk, msg, len, mtu, HCI_ISO_DATA_HDR_SIZE, 0);
1148 BT_DBG("skb %p len %d", sk, skb->len);
1155 tmp = bt_skb_sendmsg(sk, msg, len, mtu, 0, 0);
1173 lock_sock(sk);
1175 if (sk->sk_state == BT_CONNECTED)
1176 err = iso_send_frame(sk, skb);
1180 release_sock(sk);
1201 static void iso_conn_big_sync(struct sock *sk)
1206 hdev = hci_get_route(&iso_pi(sk)->dst, &iso_pi(sk)->src,
1207 iso_pi(sk)->src_type);
1212 if (!test_and_set_bit(BT_SK_BIG_SYNC, &iso_pi(sk)->flags)) {
1213 err = hci_le_big_create_sync(hdev, iso_pi(sk)->conn->hcon,
1214 &iso_pi(sk)->qos,
1215 iso_pi(sk)->sync_handle,
1216 iso_pi(sk)->bc_num_bis,
1217 iso_pi(sk)->bc_bis);
1227 struct sock *sk = sock->sk;
1228 struct iso_pinfo *pi = iso_pi(sk);
1230 BT_DBG("sk %p", sk);
1232 if (test_and_clear_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags)) {
1233 lock_sock(sk);
1234 switch (sk->sk_state) {
1238 iso_conn_big_sync(sk);
1239 sk->sk_state = BT_LISTEN;
1242 sk->sk_state = BT_CONFIG;
1244 release_sock(sk);
1247 release_sock(sk);
1248 return iso_connect_cis(sk);
1250 release_sock(sk);
1346 struct sock *sk = sock->sk;
1351 BT_DBG("sk %p", sk);
1353 lock_sock(sk);
1357 if (sk->sk_state != BT_BOUND && sk->sk_state != BT_LISTEN) {
1368 set_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags);
1370 clear_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags);
1380 set_bit(BT_SK_PKT_STATUS, &bt_sk(sk)->flags);
1382 clear_bit(BT_SK_PKT_STATUS, &bt_sk(sk)->flags);
1386 if (sk->sk_state != BT_OPEN && sk->sk_state != BT_BOUND &&
1387 sk->sk_state != BT_CONNECT2) {
1404 iso_pi(sk)->qos = qos;
1405 iso_pi(sk)->qos_user_set = true;
1410 if (sk->sk_state != BT_OPEN && sk->sk_state != BT_BOUND &&
1411 sk->sk_state != BT_CONNECT2) {
1416 if (optlen > sizeof(iso_pi(sk)->base)) {
1421 len = min_t(unsigned int, sizeof(iso_pi(sk)->base), optlen);
1423 if (copy_from_sockptr(iso_pi(sk)->base, optval, len)) {
1428 iso_pi(sk)->base_len = len;
1437 release_sock(sk);
1444 struct sock *sk = sock->sk;
1450 BT_DBG("sk %p", sk);
1455 lock_sock(sk);
1459 if (sk->sk_state == BT_CONNECTED) {
1464 if (put_user(test_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags),
1471 if (put_user(test_bit(BT_SK_PKT_STATUS, &bt_sk(sk)->flags),
1477 qos = iso_sock_get_qos(sk);
1486 if (sk->sk_state == BT_CONNECTED &&
1487 !bacmp(&iso_pi(sk)->dst, BDADDR_ANY)) {
1488 base_len = iso_pi(sk)->conn->hcon->le_per_adv_data_len;
1489 base = iso_pi(sk)->conn->hcon->le_per_adv_data;
1491 base_len = iso_pi(sk)->base_len;
1492 base = iso_pi(sk)->base;
1506 release_sock(sk);
1512 struct sock *sk = sock->sk;
1515 BT_DBG("sock %p, sk %p, how %d", sock, sk, how);
1517 if (!sk)
1520 sock_hold(sk);
1521 lock_sock(sk);
1525 if (sk->sk_shutdown & RCV_SHUTDOWN)
1527 sk->sk_shutdown |= RCV_SHUTDOWN;
1530 if (sk->sk_shutdown & SEND_SHUTDOWN)
1532 sk->sk_shutdown |= SEND_SHUTDOWN;
1535 if (sk->sk_shutdown & SHUTDOWN_MASK)
1537 sk->sk_shutdown |= SHUTDOWN_MASK;
1541 iso_sock_clear_timer(sk);
1542 __iso_sock_close(sk);
1544 if (sock_flag(sk, SOCK_LINGER) && sk->sk_lingertime &&
1546 err = bt_sock_wait_state(sk, BT_CLOSED, sk->sk_lingertime);
1549 release_sock(sk);
1550 sock_put(sk);
1557 struct sock *sk = sock->sk;
1560 BT_DBG("sock %p, sk %p", sock, sk);
1562 if (!sk)
1565 iso_sock_close(sk);
1567 if (sock_flag(sk, SOCK_LINGER) && READ_ONCE(sk->sk_lingertime) &&
1569 lock_sock(sk);
1570 err = bt_sock_wait_state(sk, BT_CLOSED, sk->sk_lingertime);
1571 release_sock(sk);
1574 sock_orphan(sk);
1575 iso_sock_kill(sk);
1579 static void iso_sock_ready(struct sock *sk)
1581 BT_DBG("sk %p", sk);
1583 if (!sk)
1586 lock_sock(sk);
1587 iso_sock_clear_timer(sk);
1588 sk->sk_state = BT_CONNECTED;
1589 sk->sk_state_change(sk);
1590 release_sock(sk);
1598 static bool iso_match_big(struct sock *sk, void *data)
1602 return ev->handle == iso_pi(sk)->qos.bcast.big;
1605 static bool iso_match_pa_sync_flag(struct sock *sk, void *data)
1607 return test_bit(BT_SK_PA_SYNC, &iso_pi(sk)->flags);
1613 struct sock *sk = conn->sk;
1621 if (sk) {
1622 iso_sock_ready(conn->sk);
1666 sk = iso_sock_alloc(sock_net(parent), NULL,
1668 if (!sk) {
1673 iso_sock_init(sk, parent);
1675 bacpy(&iso_pi(sk)->src, &hcon->src);
1679 iso_pi(sk)->src_type = BDADDR_LE_PUBLIC;
1681 iso_pi(sk)->src_type = BDADDR_LE_RANDOM;
1695 iso_pi(sk)->qos = iso_pi(parent)->qos;
1696 iso_pi(sk)->qos.bcast.encryption = ev3->encryption;
1697 hcon->iso_qos = iso_pi(sk)->qos;
1698 iso_pi(sk)->bc_num_bis = iso_pi(parent)->bc_num_bis;
1699 memcpy(iso_pi(sk)->bc_bis, iso_pi(parent)->bc_bis, ISO_MAX_NUM_BIS);
1700 set_bit(BT_SK_PA_SYNC, &iso_pi(sk)->flags);
1703 bacpy(&iso_pi(sk)->dst, &hcon->dst);
1704 iso_pi(sk)->dst_type = hcon->dst_type;
1705 iso_pi(sk)->sync_handle = iso_pi(parent)->sync_handle;
1706 memcpy(iso_pi(sk)->base, iso_pi(parent)->base, iso_pi(parent)->base_len);
1707 iso_pi(sk)->base_len = iso_pi(parent)->base_len;
1710 iso_chan_add(conn, sk, parent);
1715 sk->sk_err = ECONNREFUSED;
1716 sk->sk_error_report(sk);
1720 sk->sk_state = BT_CONNECT2;
1722 sk->sk_state = BT_CONNECTED;
1731 static bool iso_match_sid(struct sock *sk, void *data)
1735 return ev->sid == iso_pi(sk)->bc_sid;
1738 static bool iso_match_sync_handle(struct sock *sk, void *data)
1742 return le16_to_cpu(ev->sync_handle) == iso_pi(sk)->sync_handle;
1745 static bool iso_match_sync_handle_pa_report(struct sock *sk, void *data)
1749 return le16_to_cpu(ev->sync_handle) == iso_pi(sk)->sync_handle;
1759 struct sock *sk;
1769 * be stored in iso_pi(sk)->sync_handle so it can be matched once
1775 * in iso_pi(sk)->base so it can be passed up to user, in the case of a
1780 sk = iso_get_sock_listen(&hdev->bdaddr, bdaddr, iso_match_sid,
1782 if (sk && !ev1->status)
1783 iso_pi(sk)->sync_handle = le16_to_cpu(ev1->handle);
1791 sk = iso_get_sock_listen(&hdev->bdaddr, bdaddr,
1794 if (!sk) {
1795 sk = iso_get_sock_listen(&hdev->bdaddr, bdaddr,
1802 if (sk && test_bit(BT_SK_PA_SYNC_TERM,
1803 &iso_pi(sk)->flags))
1807 if (sk) {
1810 if (ev2->num_bis < iso_pi(sk)->bc_num_bis)
1811 iso_pi(sk)->bc_num_bis = ev2->num_bis;
1813 if (!test_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags) &&
1814 !test_and_set_bit(BT_SK_BIG_SYNC, &iso_pi(sk)->flags)) {
1816 &iso_pi(sk)->qos,
1817 iso_pi(sk)->sync_handle,
1818 iso_pi(sk)->bc_num_bis,
1819 iso_pi(sk)->bc_bis);
1823 sk = NULL;
1831 sk = iso_get_sock_listen(&hdev->bdaddr, bdaddr,
1834 if (sk) {
1835 memcpy(iso_pi(sk)->base, ev3->data, ev3->length);
1836 iso_pi(sk)->base_len = ev3->length;
1839 sk = iso_get_sock_listen(&hdev->bdaddr, BDADDR_ANY, NULL, NULL);
1843 if (!sk)
1848 if (test_bit(BT_SK_DEFER_SETUP, &bt_sk(sk)->flags))
2041 struct sock *sk;
2045 sk_for_each(sk, &iso_sk_list.head) {
2046 seq_printf(f, "%pMR %pMR %d\n", &iso_pi(sk)->src,
2047 &iso_pi(sk)->dst, sk->sk_state);