Lines Matching defs:vi
97 static int virtcrypto_find_vqs(struct virtio_crypto *vi)
103 struct device *dev = &vi->vdev->dev;
110 total_vqs = vi->max_data_queues + 1;
125 for (i = 0; i < vi->max_data_queues; i++) {
127 snprintf(vi->data_vq[i].name, sizeof(vi->data_vq[i].name),
129 vqs_info[i].name = vi->data_vq[i].name;
132 ret = virtio_find_vqs(vi->vdev, total_vqs, vqs, vqs_info, NULL);
136 vi->ctrl_vq = vqs[total_vqs - 1];
138 for (i = 0; i < vi->max_data_queues; i++) {
139 spin_lock_init(&vi->data_vq[i].lock);
140 vi->data_vq[i].vq = vqs[i];
142 vi->data_vq[i].engine = crypto_engine_alloc_init_and_set(dev, true, true,
144 if (!vi->data_vq[i].engine) {
148 tasklet_init(&vi->data_vq[i].done_task, virtcrypto_done_task,
149 (unsigned long)&vi->data_vq[i]);
166 static int virtcrypto_alloc_queues(struct virtio_crypto *vi)
168 vi->data_vq = kcalloc(vi->max_data_queues, sizeof(*vi->data_vq),
170 if (!vi->data_vq)
176 static void virtcrypto_clean_affinity(struct virtio_crypto *vi, long hcpu)
180 if (vi->affinity_hint_set) {
181 for (i = 0; i < vi->max_data_queues; i++)
182 virtqueue_set_affinity(vi->data_vq[i].vq, NULL);
184 vi->affinity_hint_set = false;
217 static void virtcrypto_free_queues(struct virtio_crypto *vi)
219 kfree(vi->data_vq);
222 static int virtcrypto_init_vqs(struct virtio_crypto *vi)
227 ret = virtcrypto_alloc_queues(vi);
231 ret = virtcrypto_find_vqs(vi);
236 virtcrypto_set_affinity(vi);
242 virtcrypto_free_queues(vi);