5eaa6f1f319dbf2c143628702d96915a794ad982
[dpdk.git] / drivers / crypto / virtio / virtio_cryptodev.h
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(c) 2018 HUAWEI TECHNOLOGIES CO., LTD.
3  */
4
5 #ifndef _VIRTIO_CRYPTODEV_H_
6 #define _VIRTIO_CRYPTODEV_H_
7
8 #include "virtio_crypto.h"
9 #include "virtio_pci.h"
10 #include "virtio_ring.h"
11
12 /* Features desired/implemented by this driver. */
13 #define VIRTIO_CRYPTO_PMD_GUEST_FEATURES (1ULL << VIRTIO_F_VERSION_1)
14
15 #define CRYPTODEV_NAME_VIRTIO_PMD crypto_virtio
16
17 #define NUM_ENTRY_VIRTIO_CRYPTO_OP 7
18
19 enum virtio_crypto_cmd_id {
20         VIRTIO_CRYPTO_CMD_CIPHER = 0,
21         VIRTIO_CRYPTO_CMD_AUTH = 1,
22         VIRTIO_CRYPTO_CMD_CIPHER_HASH = 2,
23         VIRTIO_CRYPTO_CMD_HASH_CIPHER = 3
24 };
25
26 struct virtio_crypto_op_cookie {
27         struct virtio_crypto_op_data_req data_req;
28         struct virtio_crypto_inhdr inhdr;
29         struct vring_desc desc[NUM_ENTRY_VIRTIO_CRYPTO_OP];
30 };
31
32 /*
33  * Control queue function prototype
34  */
35 void virtio_crypto_ctrlq_start(struct rte_cryptodev *dev);
36
37 /*
38  * Data queue function prototype
39  */
40 void virtio_crypto_dataq_start(struct rte_cryptodev *dev);
41
42 int virtio_crypto_queue_setup(struct rte_cryptodev *dev,
43                 int queue_type,
44                 uint16_t vtpci_queue_idx,
45                 uint16_t nb_desc,
46                 int socket_id,
47                 struct virtqueue **pvq);
48
49 void virtio_crypto_queue_release(struct virtqueue *vq);
50
51 uint16_t virtio_crypto_pkt_tx_burst(void *tx_queue,
52                 struct rte_crypto_op **tx_pkts,
53                 uint16_t nb_pkts);
54
55 uint16_t virtio_crypto_pkt_rx_burst(void *tx_queue,
56                 struct rte_crypto_op **tx_pkts,
57                 uint16_t nb_pkts);
58
59 #endif /* _VIRTIO_CRYPTODEV_H_ */