Lines Matching refs:vdev

38 	struct virtual_nci_dev *vdev = nci_get_drvdata(ndev);  in virtual_nci_close()  local
40 mutex_lock(&vdev->mtx); in virtual_nci_close()
41 kfree_skb(vdev->send_buff); in virtual_nci_close()
42 vdev->send_buff = NULL; in virtual_nci_close()
43 mutex_unlock(&vdev->mtx); in virtual_nci_close()
50 struct virtual_nci_dev *vdev = nci_get_drvdata(ndev); in virtual_nci_send() local
52 mutex_lock(&vdev->mtx); in virtual_nci_send()
53 if (vdev->send_buff) { in virtual_nci_send()
54 mutex_unlock(&vdev->mtx); in virtual_nci_send()
58 vdev->send_buff = skb_copy(skb, GFP_KERNEL); in virtual_nci_send()
59 if (!vdev->send_buff) { in virtual_nci_send()
60 mutex_unlock(&vdev->mtx); in virtual_nci_send()
64 mutex_unlock(&vdev->mtx); in virtual_nci_send()
65 wake_up_interruptible(&vdev->wq); in virtual_nci_send()
80 struct virtual_nci_dev *vdev = file->private_data; in virtual_ncidev_read() local
83 mutex_lock(&vdev->mtx); in virtual_ncidev_read()
84 while (!vdev->send_buff) { in virtual_ncidev_read()
85 mutex_unlock(&vdev->mtx); in virtual_ncidev_read()
86 if (wait_event_interruptible(vdev->wq, vdev->send_buff)) in virtual_ncidev_read()
88 mutex_lock(&vdev->mtx); in virtual_ncidev_read()
91 actual_len = min_t(size_t, count, vdev->send_buff->len); in virtual_ncidev_read()
93 if (copy_to_user(buf, vdev->send_buff->data, actual_len)) { in virtual_ncidev_read()
94 mutex_unlock(&vdev->mtx); in virtual_ncidev_read()
98 skb_pull(vdev->send_buff, actual_len); in virtual_ncidev_read()
99 if (vdev->send_buff->len == 0) { in virtual_ncidev_read()
100 consume_skb(vdev->send_buff); in virtual_ncidev_read()
101 vdev->send_buff = NULL; in virtual_ncidev_read()
103 mutex_unlock(&vdev->mtx); in virtual_ncidev_read()
112 struct virtual_nci_dev *vdev = file->private_data; in virtual_ncidev_write() local
124 nci_recv_frame(vdev->ndev, skb); in virtual_ncidev_write()
131 struct virtual_nci_dev *vdev; in virtual_ncidev_open() local
133 vdev = kzalloc(sizeof(*vdev), GFP_KERNEL); in virtual_ncidev_open()
134 if (!vdev) in virtual_ncidev_open()
136 vdev->ndev = nci_allocate_device(&virtual_nci_ops, in virtual_ncidev_open()
138 if (!vdev->ndev) { in virtual_ncidev_open()
139 kfree(vdev); in virtual_ncidev_open()
143 mutex_init(&vdev->mtx); in virtual_ncidev_open()
144 init_waitqueue_head(&vdev->wq); in virtual_ncidev_open()
145 file->private_data = vdev; in virtual_ncidev_open()
146 nci_set_drvdata(vdev->ndev, vdev); in virtual_ncidev_open()
148 ret = nci_register_device(vdev->ndev); in virtual_ncidev_open()
150 nci_free_device(vdev->ndev); in virtual_ncidev_open()
151 mutex_destroy(&vdev->mtx); in virtual_ncidev_open()
152 kfree(vdev); in virtual_ncidev_open()
161 struct virtual_nci_dev *vdev = file->private_data; in virtual_ncidev_close() local
163 nci_unregister_device(vdev->ndev); in virtual_ncidev_close()
164 nci_free_device(vdev->ndev); in virtual_ncidev_close()
165 mutex_destroy(&vdev->mtx); in virtual_ncidev_close()
166 kfree(vdev); in virtual_ncidev_close()
174 struct virtual_nci_dev *vdev = file->private_data; in virtual_ncidev_ioctl() local
175 const struct nfc_dev *nfc_dev = vdev->ndev->nfc_dev; in virtual_ncidev_ioctl()