Lines Matching refs:conn
70 struct sco_conn *conn;
79 struct sco_conn *conn = container_of(work, struct sco_conn, timeout_work.work);
82 sco_conn_lock(conn);
83 sk = conn->sk;
87 sco_conn_unlock(conn);
105 if (!sco_pi(sk)->conn) {
110 cancel_delayed_work(&sco_pi(sk)->conn->timeout_work);
111 schedule_delayed_work(&sco_pi(sk)->conn->timeout_work, timeout);
116 if (!sco_pi(sk)->conn) {
121 cancel_delayed_work(&sco_pi(sk)->conn->timeout_work);
128 struct sco_conn *conn = hcon->sco_data;
130 if (conn) {
131 return conn;
134 conn = kzalloc(sizeof(struct sco_conn), GFP_KERNEL);
135 if (!conn) {
139 spin_lock_init(&conn->lock);
140 INIT_DELAYED_WORK(&conn->timeout_work, sco_sock_timeout);
142 hcon->sco_data = conn;
143 conn->hcon = hcon;
146 conn->mtu = hdev->sco_mtu;
148 conn->mtu = 0x3c;
151 BT_DBG("hcon %p conn %p", hcon, conn);
153 return conn;
160 struct sco_conn *conn;
162 conn = sco_pi(sk)->conn;
164 BT_DBG("sk %p, conn %p, err %d", sk, conn, err);
166 if (conn) {
167 sco_conn_lock(conn);
168 conn->sk = NULL;
169 sco_pi(sk)->conn = NULL;
170 sco_conn_unlock(conn);
172 if (conn->hcon) {
173 hci_conn_drop(conn->hcon);
186 struct sco_conn *conn = hcon->sco_data;
189 if (!conn) {
193 BT_DBG("hcon %p conn %p, err %d", hcon, conn, err);
196 sco_conn_lock(conn);
197 sk = conn->sk;
198 sco_conn_unlock(conn);
208 /* Ensure no more work items will run before freeing conn. */
209 cancel_delayed_work_sync(&conn->timeout_work);
213 kfree(conn);
216 static void __sco_chan_add(struct sco_conn *conn, struct sock *sk, struct sock *parent)
218 BT_DBG("conn %p", conn);
220 sco_pi(sk)->conn = conn;
221 conn->sk = sk;
228 static int sco_chan_add(struct sco_conn *conn, struct sock *sk, struct sock *parent)
232 sco_conn_lock(conn);
233 if (conn->sk) {
236 __sco_chan_add(conn, sk, parent);
239 sco_conn_unlock(conn);
245 struct sco_conn *conn;
266 conn = sco_conn_add(hcon);
267 if (!conn) {
275 err = sco_chan_add(conn, sk, NULL);
293 struct sco_conn *conn = sco_pi(sk)->conn;
297 if (len > conn->mtu) {
303 hci_send_sco(conn->hcon, skb);
308 static void sco_recv_frame(struct sco_conn *conn, struct sk_buff *skb)
312 sco_conn_lock(conn);
313 sk = conn->sk;
314 sco_conn_unlock(conn);
436 if (sco_pi(sk)->conn->hcon) {
439 sco_conn_lock(sco_pi(sk)->conn);
440 hci_conn_drop(sco_pi(sk)->conn->hcon);
441 sco_pi(sk)->conn->hcon = NULL;
442 sco_conn_unlock(sco_pi(sk)->conn);
772 static void sco_conn_defer_accept(struct hci_conn *conn, u16 setting)
774 struct hci_dev *hdev = conn->hdev;
776 BT_DBG("conn %p", conn);
778 conn->state = BT_CONFIG;
783 bacpy(&cp.bdaddr, &conn->dst);
790 bacpy(&cp.bdaddr, &conn->dst);
791 cp.pkt_type = cpu_to_le16(conn->pkt_type);
799 if (conn->pkt_type & ESCO_2EV3) {
829 sco_conn_defer_accept(pi->conn->hcon, pi->setting);
939 opts.mtu = sco_pi(sk)->conn->mtu;
958 cinfo.hci_handle = sco_pi(sk)->conn->hcon->handle;
959 memcpy(cinfo.dev_class, sco_pi(sk)->conn->hcon->dev_class, 3);
1027 phys = hci_conn_get_phy(sco_pi(sk)->conn->hcon);
1049 if (put_user(sco_pi(sk)->conn->mtu, (u32 __user *)optval)) {
1117 static void sco_conn_ready(struct sco_conn *conn)
1120 struct sock *sk = conn->sk;
1122 BT_DBG("conn %p", conn);
1131 sco_conn_lock(conn);
1133 if (!conn->hcon) {
1134 sco_conn_unlock(conn);
1138 parent = sco_get_sock_listen(&conn->hcon->src);
1140 sco_conn_unlock(conn);
1149 sco_conn_unlock(conn);
1155 bacpy(&sco_pi(sk)->src, &conn->hcon->src);
1156 bacpy(&sco_pi(sk)->dst, &conn->hcon->dst);
1158 hci_conn_hold(conn->hcon);
1159 __sco_chan_add(conn, sk, parent);
1172 sco_conn_unlock(conn);
1215 struct sco_conn *conn;
1217 conn = sco_conn_add(hcon);
1218 if (conn) {
1219 sco_conn_ready(conn);
1239 struct sco_conn *conn = hcon->sco_data;
1241 if (!conn) {
1245 BT_DBG("conn %p len %d", conn, skb->len);
1248 sco_recv_frame(conn, skb);