Lines Matching defs:conn
73 struct iso_conn *conn;
95 struct iso_conn *conn = container_of(work, struct iso_conn,
99 iso_conn_lock(conn);
100 sk = conn->sk;
103 iso_conn_unlock(conn);
119 if (!iso_pi(sk)->conn)
123 cancel_delayed_work(&iso_pi(sk)->conn->timeout_work);
124 schedule_delayed_work(&iso_pi(sk)->conn->timeout_work, timeout);
129 if (!iso_pi(sk)->conn)
133 cancel_delayed_work(&iso_pi(sk)->conn->timeout_work);
139 struct iso_conn *conn = hcon->iso_data;
141 if (conn) {
142 if (!conn->hcon)
143 conn->hcon = hcon;
144 return conn;
147 conn = kzalloc(sizeof(*conn), GFP_KERNEL);
148 if (!conn)
151 spin_lock_init(&conn->lock);
152 INIT_DELAYED_WORK(&conn->timeout_work, iso_sock_timeout);
154 hcon->iso_data = conn;
155 conn->hcon = hcon;
156 conn->tx_sn = 0;
158 BT_DBG("hcon %p conn %p", hcon, conn);
160 return conn;
166 struct iso_conn *conn;
169 conn = iso_pi(sk)->conn;
171 BT_DBG("sk %p, conn %p, err %d", sk, conn, err);
173 if (conn) {
174 iso_conn_lock(conn);
175 conn->sk = NULL;
176 iso_pi(sk)->conn = NULL;
177 iso_conn_unlock(conn);
179 if (conn->hcon)
180 hci_conn_drop(conn->hcon);
209 struct iso_conn *conn = hcon->iso_data;
213 if (!conn)
216 BT_DBG("hcon %p conn %p, err %d", hcon, conn, err);
219 iso_conn_lock(conn);
220 sk = conn->sk;
223 iso_conn_unlock(conn);
252 /* Ensure no more work items will run before freeing conn. */
253 cancel_delayed_work_sync(&conn->timeout_work);
256 kfree(conn);
259 static int __iso_chan_add(struct iso_conn *conn, struct sock *sk,
262 BT_DBG("conn %p", conn);
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;
281 static int iso_chan_add(struct iso_conn *conn, struct sock *sk,
286 iso_conn_lock(conn);
287 err = __iso_chan_add(conn, sk, parent);
288 iso_conn_unlock(conn);
303 struct iso_conn *conn;
355 conn = iso_conn_add(hcon);
356 if (!conn) {
364 err = iso_chan_add(conn, sk, NULL);
394 struct iso_conn *conn;
445 conn = iso_conn_add(hcon);
446 if (!conn) {
454 err = iso_chan_add(conn, sk, NULL);
485 return &iso_pi(sk)->conn->hcon->iso_qos;
492 struct iso_conn *conn = iso_pi(sk)->conn;
506 hdr->sn = cpu_to_le16(conn->tx_sn++);
511 hci_send_iso(conn->hcon, skb);
518 static void iso_recv_frame(struct iso_conn *conn, struct sk_buff *skb)
522 iso_conn_lock(conn);
523 sk = conn->sk;
524 iso_conn_unlock(conn);
645 if (iso_pi(parent)->conn && iso_pi(parent)->conn->hcon &&
646 test_bit(HCI_CONN_PA_SYNC, &iso_pi(parent)->conn->hcon->flags)) {
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);
694 if (iso_pi(sk)->conn->hcon)
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)))
1138 mtu = iso_pi(sk)->conn->hcon->hdev->iso_mtu;
1187 static void iso_conn_defer_accept(struct hci_conn *conn)
1190 struct hci_dev *hdev = conn->hdev;
1192 BT_DBG("conn %p", conn);
1194 conn->state = BT_CONFIG;
1196 cp.handle = cpu_to_le16(conn->handle);
1213 err = hci_le_big_create_sync(hdev, iso_pi(sk)->conn->hcon,
1236 if (pi->conn->hcon &&
1237 test_bit(HCI_CONN_PA_SYNC, &pi->conn->hcon->flags)) {
1241 iso_conn_defer_accept(pi->conn->hcon);
1488 base_len = iso_pi(sk)->conn->hcon->le_per_adv_data_len;
1489 base = iso_pi(sk)->conn->hcon->le_per_adv_data;
1610 static void iso_conn_ready(struct iso_conn *conn)
1613 struct sock *sk = conn->sk;
1619 BT_DBG("conn %p", conn);
1622 iso_sock_ready(conn->sk);
1624 hcon = conn->hcon;
1710 iso_chan_add(conn, sk, parent);
1866 iso_conn_del(link->conn, bt_to_errno(status));
1885 struct iso_conn *conn;
1887 conn = iso_conn_add(hcon);
1888 if (conn)
1889 iso_conn_ready(conn);
1907 struct iso_conn *conn = hcon->iso_data;
1910 if (!conn)
1916 BT_DBG("conn %p len %d pb 0x%x ts 0x%x", conn, skb->len, pb, ts);
1921 if (conn->rx_len) {
1923 kfree_skb(conn->rx_skb);
1924 conn->rx_skb = NULL;
1925 conn->rx_len = 0;
1960 iso_recv_frame(conn, skb);
1977 conn->rx_skb = bt_skb_alloc(len, GFP_KERNEL);
1978 if (!conn->rx_skb)
1981 hci_skb_pkt_status(conn->rx_skb) = flags & 0x03;
1982 skb_copy_from_linear_data(skb, skb_put(conn->rx_skb, skb->len),
1984 conn->rx_len = len - skb->len;
1989 conn->rx_len);
1991 if (!conn->rx_len) {
1997 if (skb->len > conn->rx_len) {
1999 skb->len, conn->rx_len);
2000 kfree_skb(conn->rx_skb);
2001 conn->rx_skb = NULL;
2002 conn->rx_len = 0;
2006 skb_copy_from_linear_data(skb, skb_put(conn->rx_skb, skb->len),
2008 conn->rx_len -= skb->len;
2012 skb_copy_from_linear_data(skb, skb_put(conn->rx_skb, skb->len),
2014 conn->rx_len -= skb->len;
2016 if (!conn->rx_len) {
2017 struct sk_buff *rx_skb = conn->rx_skb;
2023 conn->rx_skb = NULL;
2024 iso_recv_frame(conn, rx_skb);