net/i40e: fix bitmap free
[dpdk.git] / drivers / crypto / octeontx / otx_cryptodev_mbox.h
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(c) 2018 Cavium, Inc
3  */
4
5 #ifndef _OTX_CRYPTODEV_MBOX_H_
6 #define _OTX_CRYPTODEV_MBOX_H_
7
8 #include <rte_byteorder.h>
9 #include <rte_common.h>
10
11 #include "cpt_common.h"
12 #include "cpt_pmd_logs.h"
13
14 #include "otx_cryptodev_hw_access.h"
15
16 #define OTX_CPT_MBOX_MSG_TIMEOUT    2000 /* In Milli Seconds */
17
18 /* CPT mailbox structure */
19 struct cpt_mbox {
20         /** Message type MBOX[0] */
21         uint64_t msg;
22         /** Data         MBOX[1] */
23         uint64_t data;
24 };
25
26 /* CPT PF types */
27 enum otx_cpt_pf_type {
28         OTX_CPT_PF_TYPE_INVALID = 0,
29         OTX_CPT_PF_TYPE_AE = 2,
30         OTX_CPT_PF_TYPE_SE,
31 };
32
33 /* CPT VF types */
34 enum otx_cpt_vf_type {
35         OTX_CPT_VF_TYPE_AE = 1,
36         OTX_CPT_VF_TYPE_SE,
37         OTX_CPT_VF_TYPE_INVALID,
38 };
39
40 /* PF-VF message opcodes */
41 enum otx_cpt_mbox_opcode {
42         OTX_CPT_MSG_VF_UP = 1,
43         OTX_CPT_MSG_VF_DOWN,
44         OTX_CPT_MSG_READY,
45         OTX_CPT_MSG_QLEN,
46         OTX_CPT_MSG_QBIND_GRP,
47         OTX_CPT_MSG_VQ_PRIORITY,
48         OTX_CPT_MSG_PF_TYPE,
49         OTX_CPT_MBOX_MSG_TYPE_ACK,
50         OTX_CPT_MBOX_MSG_TYPE_NACK
51 };
52
53 typedef union {
54         uint64_t u64;
55         struct {
56 #if RTE_BYTE_ORDER == RTE_BIG_ENDIAN
57                 uint32_t chip_id;
58                 uint8_t vfid;
59                 uint8_t reserved[3];
60 #else
61                 uint8_t reserved[3];
62                 uint8_t vfid;
63                 uint32_t chip_id;
64 #endif
65         } s;
66 } otx_cpt_chipid_vfid_t;
67
68 /* Poll handler to handle mailbox messages from VFs */
69 void
70 otx_cpt_handle_mbox_intr(struct cpt_vf *cptvf);
71
72 /*
73  * Checks if VF is able to comminicate with PF
74  * and also gets the CPT number this VF is associated to.
75  */
76 int
77 otx_cpt_check_pf_ready(struct cpt_vf *cptvf);
78
79 /*
80  * Communicate to PF to get VF type
81  */
82 int
83 otx_cpt_get_dev_type(struct cpt_vf *cptvf);
84
85 /*
86  * Communicate VQs size to PF to program CPT(0)_PF_Q(0-15)_CTL of the VF.
87  * Must be ACKed.
88  */
89 int
90 otx_cpt_send_vq_size_msg(struct cpt_vf *cptvf);
91
92 /*
93  * Communicate VF group required to PF and get the VQ binded to that group
94  */
95 int
96 otx_cpt_send_vf_grp_msg(struct cpt_vf *cptvf, uint32_t group);
97
98 /*
99  * Communicate to PF that VF is UP and running
100  */
101 int
102 otx_cpt_send_vf_up(struct cpt_vf *cptvf);
103
104 /*
105  * Communicate to PF that VF is DOWN and running
106  */
107 int
108 otx_cpt_send_vf_down(struct cpt_vf *cptvf);
109
110 #endif /* _OTX_CRYPTODEV_MBOX_H_ */