Lines Matching refs:data

66 	struct vhci_data *data = hci_get_drvdata(hdev);  in vhci_close_dev()  local
71 skb_queue_purge(&data->readq); in vhci_close_dev()
78 struct vhci_data *data = hci_get_drvdata(hdev); in vhci_flush() local
80 skb_queue_purge(&data->readq); in vhci_flush()
87 struct vhci_data *data = hci_get_drvdata(hdev); in vhci_send_frame() local
93 skb_queue_tail(&data->readq, skb); in vhci_send_frame()
95 wake_up_interruptible(&data->read_wait); in vhci_send_frame()
99 static int __vhci_create_device(struct vhci_data *data, __u8 opcode) in __vhci_create_device() argument
105 if (data->hdev) in __vhci_create_device()
128 data->hdev = hdev; in __vhci_create_device()
132 hci_set_drvdata(hdev, data); in __vhci_create_device()
150 data->hdev = NULL; in __vhci_create_device()
160 skb_queue_tail(&data->readq, skb); in __vhci_create_device()
162 wake_up_interruptible(&data->read_wait); in __vhci_create_device()
166 static int vhci_create_device(struct vhci_data *data, __u8 opcode) in vhci_create_device() argument
170 mutex_lock(&data->open_mutex); in vhci_create_device()
171 err = __vhci_create_device(data, opcode); in vhci_create_device()
172 mutex_unlock(&data->open_mutex); in vhci_create_device()
177 static inline ssize_t vhci_get_user(struct vhci_data *data, in vhci_get_user() argument
197 pkt_type = *((__u8 *) skb->data); in vhci_get_user()
204 if (!data->hdev) { in vhci_get_user()
211 ret = hci_recv_frame(data->hdev, skb); in vhci_get_user()
215 cancel_delayed_work_sync(&data->open_timeout); in vhci_get_user()
217 opcode = *((__u8 *) skb->data); in vhci_get_user()
227 ret = vhci_create_device(data, opcode); in vhci_get_user()
238 static inline ssize_t vhci_put_user(struct vhci_data *data, in vhci_put_user() argument
247 if (copy_to_user(ptr, skb->data, len)) in vhci_put_user()
250 if (!data->hdev) in vhci_put_user()
253 data->hdev->stat.byte_tx += len; in vhci_put_user()
257 data->hdev->stat.cmd_tx++; in vhci_put_user()
260 data->hdev->stat.acl_tx++; in vhci_put_user()
263 data->hdev->stat.sco_tx++; in vhci_put_user()
273 struct vhci_data *data = file->private_data; in vhci_read() local
278 skb = skb_dequeue(&data->readq); in vhci_read()
280 ret = vhci_put_user(data, skb, buf, count); in vhci_read()
282 skb_queue_head(&data->readq, skb); in vhci_read()
293 ret = wait_event_interruptible(data->read_wait, in vhci_read()
294 !skb_queue_empty(&data->readq)); in vhci_read()
305 struct vhci_data *data = file->private_data; in vhci_write() local
307 return vhci_get_user(data, from); in vhci_write()
312 struct vhci_data *data = file->private_data; in vhci_poll() local
314 poll_wait(file, &data->read_wait, wait); in vhci_poll()
316 if (!skb_queue_empty(&data->readq)) in vhci_poll()
324 struct vhci_data *data = container_of(work, struct vhci_data, in vhci_open_timeout() local
327 vhci_create_device(data, amp ? HCI_AMP : HCI_BREDR); in vhci_open_timeout()
332 struct vhci_data *data; in vhci_open() local
334 data = kzalloc(sizeof(struct vhci_data), GFP_KERNEL); in vhci_open()
335 if (!data) in vhci_open()
338 skb_queue_head_init(&data->readq); in vhci_open()
339 init_waitqueue_head(&data->read_wait); in vhci_open()
341 mutex_init(&data->open_mutex); in vhci_open()
342 INIT_DELAYED_WORK(&data->open_timeout, vhci_open_timeout); in vhci_open()
344 file->private_data = data; in vhci_open()
347 schedule_delayed_work(&data->open_timeout, msecs_to_jiffies(1000)); in vhci_open()
354 struct vhci_data *data = file->private_data; in vhci_release() local
357 cancel_delayed_work_sync(&data->open_timeout); in vhci_release()
359 hdev = data->hdev; in vhci_release()
366 skb_queue_purge(&data->readq); in vhci_release()
368 kfree(data); in vhci_release()