Lines Matching refs:vcrypto
33 struct virtio_crypto *vcrypto; member
135 struct virtio_crypto *vcrypto = ctx->vcrypto; in virtio_crypto_alg_ablkcipher_init_session() local
151 spin_lock(&vcrypto->ctrl_lock); in virtio_crypto_alg_ablkcipher_init_session()
153 vcrypto->ctrl.header.opcode = in virtio_crypto_alg_ablkcipher_init_session()
155 vcrypto->ctrl.header.algo = cpu_to_le32(alg); in virtio_crypto_alg_ablkcipher_init_session()
157 vcrypto->ctrl.header.queue_id = 0; in virtio_crypto_alg_ablkcipher_init_session()
159 vcrypto->input.status = cpu_to_le32(VIRTIO_CRYPTO_ERR); in virtio_crypto_alg_ablkcipher_init_session()
161 vcrypto->ctrl.u.sym_create_session.op_type = in virtio_crypto_alg_ablkcipher_init_session()
163 vcrypto->ctrl.u.sym_create_session.u.cipher.para.algo = in virtio_crypto_alg_ablkcipher_init_session()
164 vcrypto->ctrl.header.algo; in virtio_crypto_alg_ablkcipher_init_session()
165 vcrypto->ctrl.u.sym_create_session.u.cipher.para.keylen = in virtio_crypto_alg_ablkcipher_init_session()
167 vcrypto->ctrl.u.sym_create_session.u.cipher.para.op = in virtio_crypto_alg_ablkcipher_init_session()
170 sg_init_one(&outhdr, &vcrypto->ctrl, sizeof(vcrypto->ctrl)); in virtio_crypto_alg_ablkcipher_init_session()
178 sg_init_one(&inhdr, &vcrypto->input, sizeof(vcrypto->input)); in virtio_crypto_alg_ablkcipher_init_session()
181 err = virtqueue_add_sgs(vcrypto->ctrl_vq, sgs, num_out, in virtio_crypto_alg_ablkcipher_init_session()
182 num_in, vcrypto, GFP_ATOMIC); in virtio_crypto_alg_ablkcipher_init_session()
184 spin_unlock(&vcrypto->ctrl_lock); in virtio_crypto_alg_ablkcipher_init_session()
188 virtqueue_kick(vcrypto->ctrl_vq); in virtio_crypto_alg_ablkcipher_init_session()
194 while (!virtqueue_get_buf(vcrypto->ctrl_vq, &tmp) && in virtio_crypto_alg_ablkcipher_init_session()
195 !virtqueue_is_broken(vcrypto->ctrl_vq)) in virtio_crypto_alg_ablkcipher_init_session()
198 if (le32_to_cpu(vcrypto->input.status) != VIRTIO_CRYPTO_OK) { in virtio_crypto_alg_ablkcipher_init_session()
199 spin_unlock(&vcrypto->ctrl_lock); in virtio_crypto_alg_ablkcipher_init_session()
201 le32_to_cpu(vcrypto->input.status)); in virtio_crypto_alg_ablkcipher_init_session()
208 le64_to_cpu(vcrypto->input.session_id); in virtio_crypto_alg_ablkcipher_init_session()
211 le64_to_cpu(vcrypto->input.session_id); in virtio_crypto_alg_ablkcipher_init_session()
213 spin_unlock(&vcrypto->ctrl_lock); in virtio_crypto_alg_ablkcipher_init_session()
226 struct virtio_crypto *vcrypto = ctx->vcrypto; in virtio_crypto_alg_ablkcipher_close_session() local
230 spin_lock(&vcrypto->ctrl_lock); in virtio_crypto_alg_ablkcipher_close_session()
231 vcrypto->ctrl_status.status = VIRTIO_CRYPTO_ERR; in virtio_crypto_alg_ablkcipher_close_session()
233 vcrypto->ctrl.header.opcode = in virtio_crypto_alg_ablkcipher_close_session()
236 vcrypto->ctrl.header.queue_id = 0; in virtio_crypto_alg_ablkcipher_close_session()
238 destroy_session = &vcrypto->ctrl.u.destroy_session; in virtio_crypto_alg_ablkcipher_close_session()
247 sg_init_one(&outhdr, &vcrypto->ctrl, sizeof(vcrypto->ctrl)); in virtio_crypto_alg_ablkcipher_close_session()
251 sg_init_one(&status_sg, &vcrypto->ctrl_status.status, in virtio_crypto_alg_ablkcipher_close_session()
252 sizeof(vcrypto->ctrl_status.status)); in virtio_crypto_alg_ablkcipher_close_session()
255 err = virtqueue_add_sgs(vcrypto->ctrl_vq, sgs, num_out, in virtio_crypto_alg_ablkcipher_close_session()
256 num_in, vcrypto, GFP_ATOMIC); in virtio_crypto_alg_ablkcipher_close_session()
258 spin_unlock(&vcrypto->ctrl_lock); in virtio_crypto_alg_ablkcipher_close_session()
261 virtqueue_kick(vcrypto->ctrl_vq); in virtio_crypto_alg_ablkcipher_close_session()
263 while (!virtqueue_get_buf(vcrypto->ctrl_vq, &tmp) && in virtio_crypto_alg_ablkcipher_close_session()
264 !virtqueue_is_broken(vcrypto->ctrl_vq)) in virtio_crypto_alg_ablkcipher_close_session()
267 if (vcrypto->ctrl_status.status != VIRTIO_CRYPTO_OK) { in virtio_crypto_alg_ablkcipher_close_session()
268 spin_unlock(&vcrypto->ctrl_lock); in virtio_crypto_alg_ablkcipher_close_session()
270 vcrypto->ctrl_status.status, in virtio_crypto_alg_ablkcipher_close_session()
275 spin_unlock(&vcrypto->ctrl_lock); in virtio_crypto_alg_ablkcipher_close_session()
286 struct virtio_crypto *vcrypto = ctx->vcrypto; in virtio_crypto_alg_ablkcipher_init_sessions() local
288 if (keylen > vcrypto->max_cipher_key_len) { in virtio_crypto_alg_ablkcipher_init_sessions()
328 if (!ctx->vcrypto) { in virtio_crypto_ablkcipher_setkey()
331 struct virtio_crypto *vcrypto = in virtio_crypto_ablkcipher_setkey() local
334 if (!vcrypto) { in virtio_crypto_ablkcipher_setkey()
339 ctx->vcrypto = vcrypto; in virtio_crypto_ablkcipher_setkey()
348 virtcrypto_dev_put(ctx->vcrypto); in virtio_crypto_ablkcipher_setkey()
349 ctx->vcrypto = NULL; in virtio_crypto_ablkcipher_setkey()
366 struct virtio_crypto *vcrypto = ctx->vcrypto; in __virtio_crypto_ablkcipher_do_req() local
387 dev_to_node(&vcrypto->vdev->dev)); in __virtio_crypto_ablkcipher_do_req()
392 dev_to_node(&vcrypto->vdev->dev)); in __virtio_crypto_ablkcipher_do_req()
428 sizeof(vc_req->status) > vcrypto->max_size)) { in __virtio_crypto_ablkcipher_do_req()
448 dev_to_node(&vcrypto->vdev->dev)); in __virtio_crypto_ablkcipher_do_req()
497 struct virtio_crypto *vcrypto = ctx->vcrypto; in virtio_crypto_ablkcipher_encrypt() local
499 struct data_queue *data_vq = &vcrypto->data_vq[0]; in virtio_crypto_ablkcipher_encrypt()
517 struct virtio_crypto *vcrypto = ctx->vcrypto; in virtio_crypto_ablkcipher_decrypt() local
519 struct data_queue *data_vq = &vcrypto->data_vq[0]; in virtio_crypto_ablkcipher_decrypt()
547 if (!ctx->vcrypto) in virtio_crypto_ablkcipher_exit()
552 virtcrypto_dev_put(ctx->vcrypto); in virtio_crypto_ablkcipher_exit()
553 ctx->vcrypto = NULL; in virtio_crypto_ablkcipher_exit()
614 int virtio_crypto_algs_register(struct virtio_crypto *vcrypto) in virtio_crypto_algs_register() argument
626 if (!virtcrypto_algo_is_supported(vcrypto, service, algonum)) in virtio_crypto_algs_register()
636 dev_info(&vcrypto->vdev->dev, "Registered algo %s\n", in virtio_crypto_algs_register()
645 void virtio_crypto_algs_unregister(struct virtio_crypto *vcrypto) in virtio_crypto_algs_unregister() argument
657 !virtcrypto_algo_is_supported(vcrypto, service, algonum)) in virtio_crypto_algs_unregister()