Lines Matching refs:conn

68 	struct sco_conn	*conn;  member
106 struct sco_conn *conn = hcon->sco_data; in sco_conn_add() local
108 if (conn) in sco_conn_add()
109 return conn; in sco_conn_add()
111 conn = kzalloc(sizeof(struct sco_conn), GFP_KERNEL); in sco_conn_add()
112 if (!conn) in sco_conn_add()
115 spin_lock_init(&conn->lock); in sco_conn_add()
117 hcon->sco_data = conn; in sco_conn_add()
118 conn->hcon = hcon; in sco_conn_add()
121 conn->mtu = hdev->sco_mtu; in sco_conn_add()
123 conn->mtu = 60; in sco_conn_add()
125 BT_DBG("hcon %p conn %p", hcon, conn); in sco_conn_add()
127 return conn; in sco_conn_add()
134 struct sco_conn *conn; in sco_chan_del() local
136 conn = sco_pi(sk)->conn; in sco_chan_del()
138 BT_DBG("sk %p, conn %p, err %d", sk, conn, err); in sco_chan_del()
140 if (conn) { in sco_chan_del()
141 sco_conn_lock(conn); in sco_chan_del()
142 conn->sk = NULL; in sco_chan_del()
143 sco_pi(sk)->conn = NULL; in sco_chan_del()
144 sco_conn_unlock(conn); in sco_chan_del()
146 if (conn->hcon) in sco_chan_del()
147 hci_conn_drop(conn->hcon); in sco_chan_del()
159 struct sco_conn *conn = hcon->sco_data; in sco_conn_del() local
162 if (!conn) in sco_conn_del()
165 BT_DBG("hcon %p conn %p, err %d", hcon, conn, err); in sco_conn_del()
168 sco_conn_lock(conn); in sco_conn_del()
169 sk = conn->sk; in sco_conn_del()
170 sco_conn_unlock(conn); in sco_conn_del()
183 kfree(conn); in sco_conn_del()
186 static void __sco_chan_add(struct sco_conn *conn, struct sock *sk, in __sco_chan_add() argument
189 BT_DBG("conn %p", conn); in __sco_chan_add()
191 sco_pi(sk)->conn = conn; in __sco_chan_add()
192 conn->sk = sk; in __sco_chan_add()
198 static int sco_chan_add(struct sco_conn *conn, struct sock *sk, in sco_chan_add() argument
203 sco_conn_lock(conn); in sco_chan_add()
204 if (conn->sk) in sco_chan_add()
207 __sco_chan_add(conn, sk, parent); in sco_chan_add()
209 sco_conn_unlock(conn); in sco_chan_add()
215 struct sco_conn *conn; in sco_connect() local
246 conn = sco_conn_add(hcon); in sco_connect()
247 if (!conn) { in sco_connect()
256 err = sco_chan_add(conn, sk, NULL); in sco_connect()
276 struct sco_conn *conn = sco_pi(sk)->conn; in sco_send_frame() local
281 if (len > conn->mtu) in sco_send_frame()
295 hci_send_sco(conn->hcon, skb); in sco_send_frame()
300 static void sco_recv_frame(struct sco_conn *conn, struct sk_buff *skb) in sco_recv_frame() argument
304 sco_conn_lock(conn); in sco_recv_frame()
305 sk = conn->sk; in sco_recv_frame()
306 sco_conn_unlock(conn); in sco_recv_frame()
417 if (sco_pi(sk)->conn->hcon) { in __sco_sock_close()
420 sco_conn_lock(sco_pi(sk)->conn); in __sco_sock_close()
421 hci_conn_drop(sco_pi(sk)->conn->hcon); in __sco_sock_close()
422 sco_pi(sk)->conn->hcon = NULL; in __sco_sock_close()
423 sco_conn_unlock(sco_pi(sk)->conn); in __sco_sock_close()
728 static void sco_conn_defer_accept(struct hci_conn *conn, u16 setting) in sco_conn_defer_accept() argument
730 struct hci_dev *hdev = conn->hdev; in sco_conn_defer_accept()
732 BT_DBG("conn %p", conn); in sco_conn_defer_accept()
734 conn->state = BT_CONFIG; in sco_conn_defer_accept()
739 bacpy(&cp.bdaddr, &conn->dst); in sco_conn_defer_accept()
746 bacpy(&cp.bdaddr, &conn->dst); in sco_conn_defer_accept()
747 cp.pkt_type = cpu_to_le16(conn->pkt_type); in sco_conn_defer_accept()
755 if (conn->pkt_type & ESCO_2EV3) in sco_conn_defer_accept()
782 sco_conn_defer_accept(pi->conn->hcon, pi->setting); in sco_sock_recvmsg()
883 opts.mtu = sco_pi(sk)->conn->mtu; in sco_sock_getsockopt_old()
902 cinfo.hci_handle = sco_pi(sk)->conn->hcon->handle; in sco_sock_getsockopt_old()
903 memcpy(cinfo.dev_class, sco_pi(sk)->conn->hcon->dev_class, 3); in sco_sock_getsockopt_old()
1023 static void sco_conn_ready(struct sco_conn *conn) in sco_conn_ready() argument
1026 struct sock *sk = conn->sk; in sco_conn_ready()
1028 BT_DBG("conn %p", conn); in sco_conn_ready()
1037 sco_conn_lock(conn); in sco_conn_ready()
1039 if (!conn->hcon) { in sco_conn_ready()
1040 sco_conn_unlock(conn); in sco_conn_ready()
1044 parent = sco_get_sock_listen(&conn->hcon->src); in sco_conn_ready()
1046 sco_conn_unlock(conn); in sco_conn_ready()
1056 sco_conn_unlock(conn); in sco_conn_ready()
1062 bacpy(&sco_pi(sk)->src, &conn->hcon->src); in sco_conn_ready()
1063 bacpy(&sco_pi(sk)->dst, &conn->hcon->dst); in sco_conn_ready()
1065 hci_conn_hold(conn->hcon); in sco_conn_ready()
1066 __sco_chan_add(conn, sk, parent); in sco_conn_ready()
1078 sco_conn_unlock(conn); in sco_conn_ready()
1118 struct sco_conn *conn; in sco_connect_cfm() local
1120 conn = sco_conn_add(hcon); in sco_connect_cfm()
1121 if (conn) in sco_connect_cfm()
1122 sco_conn_ready(conn); in sco_connect_cfm()
1139 struct sco_conn *conn = hcon->sco_data; in sco_recv_scodata() local
1141 if (!conn) in sco_recv_scodata()
1144 BT_DBG("conn %p len %d", conn, skb->len); in sco_recv_scodata()
1147 sco_recv_frame(conn, skb); in sco_recv_scodata()