Lines Matching refs:vbt

29 static int virtbt_add_inbuf(struct virtio_bluetooth *vbt)  in virtbt_add_inbuf()  argument
31 struct virtqueue *vq = vbt->vqs[VIRTBT_VQ_RX]; in virtbt_add_inbuf()
56 static int virtbt_open_vdev(struct virtio_bluetooth *vbt) in virtbt_open_vdev() argument
58 if (virtbt_add_inbuf(vbt) < 0) in virtbt_open_vdev()
61 virtqueue_kick(vbt->vqs[VIRTBT_VQ_RX]); in virtbt_open_vdev()
70 static int virtbt_close_vdev(struct virtio_bluetooth *vbt) in virtbt_close_vdev() argument
74 cancel_work_sync(&vbt->rx); in virtbt_close_vdev()
76 for (i = 0; i < ARRAY_SIZE(vbt->vqs); i++) { in virtbt_close_vdev()
77 struct virtqueue *vq = vbt->vqs[i]; in virtbt_close_vdev()
95 struct virtio_bluetooth *vbt = hci_get_drvdata(hdev); in virtbt_send_frame() local
102 err = virtqueue_add_outbuf(vbt->vqs[VIRTBT_VQ_TX], sg, 1, skb, in virtbt_send_frame()
109 virtqueue_kick(vbt->vqs[VIRTBT_VQ_TX]); in virtbt_send_frame()
198 static void virtbt_rx_handle(struct virtio_bluetooth *vbt, struct sk_buff *skb) in virtbt_rx_handle() argument
211 hci_recv_frame(vbt->hdev, skb); in virtbt_rx_handle()
221 struct virtio_bluetooth *vbt = container_of(work, in virtbt_rx_work() local
226 skb = virtqueue_get_buf(vbt->vqs[VIRTBT_VQ_RX], &len); in virtbt_rx_work()
231 virtbt_rx_handle(vbt, skb); in virtbt_rx_work()
233 if (virtbt_add_inbuf(vbt) < 0) in virtbt_rx_work()
236 virtqueue_kick(vbt->vqs[VIRTBT_VQ_RX]); in virtbt_rx_work()
250 struct virtio_bluetooth *vbt = vq->vdev->priv; in virtbt_rx_done() local
252 schedule_work(&vbt->rx); in virtbt_rx_done()
265 struct virtio_bluetooth *vbt; in virtbt_probe() local
283 vbt = kzalloc(sizeof(*vbt), GFP_KERNEL); in virtbt_probe()
284 if (!vbt) in virtbt_probe()
287 vdev->priv = vbt; in virtbt_probe()
288 vbt->vdev = vdev; in virtbt_probe()
290 INIT_WORK(&vbt->rx, virtbt_rx_work); in virtbt_probe()
292 err = virtio_find_vqs(vdev, VIRTBT_NUM_VQS, vbt->vqs, callbacks, in virtbt_probe()
303 vbt->hdev = hdev; in virtbt_probe()
307 hci_set_drvdata(hdev, vbt); in virtbt_probe()
375 err = virtbt_open_vdev(vbt); in virtbt_probe()
390 struct virtio_bluetooth *vbt = vdev->priv; in virtbt_remove() local
391 struct hci_dev *hdev = vbt->hdev; in virtbt_remove()
395 virtbt_close_vdev(vbt); in virtbt_remove()
398 vbt->hdev = NULL; in virtbt_remove()
401 kfree(vbt); in virtbt_remove()