dev: new device driver infra
[vpp.git] / src / vnet / dev / types.h
1 /* SPDX-License-Identifier: Apache-2.0
2  * Copyright (c) 2023 Cisco Systems, Inc.
3  */
4
5 #ifndef _VNET_DEV_TYPES_H_
6 #define _VNET_DEV_TYPES_H_
7
8 #include <vppinfra/types.h>
9 #include <vnet/dev/errors.h>
10
11 typedef char vnet_dev_device_id_t[32];
12 typedef char vnet_dev_if_name_t[32];
13 typedef char vnet_dev_driver_name_t[16];
14 typedef char vnet_dev_bus_name_t[8];
15 typedef u16 vnet_dev_port_id_t;
16 typedef struct vnet_dev vnet_dev_t;
17 typedef struct vnet_dev_port vnet_dev_port_t;
18 typedef struct vnet_dev_rx_queue vnet_dev_rx_queue_t;
19 typedef struct vnet_dev_tx_queue vnet_dev_tx_queue_t;
20
21 typedef enum
22 {
23   VNET_DEV_MINUS_OK = 0,
24 #define _(n, d) VNET_DEV_ERR_MINUS_##n,
25   foreach_vnet_dev_rv_type
26 #undef _
27 } vnet_dev_minus_rv_t;
28
29 typedef enum
30 {
31   VNET_DEV_OK = 0,
32 #define _(n, d) VNET_DEV_ERR_##n = -(VNET_DEV_ERR_MINUS_##n),
33   foreach_vnet_dev_rv_type
34 #undef _
35 } vnet_dev_rv_t;
36
37 /* do not change bit assignments - API dependency */
38 #define foreach_vnet_dev_flag _ (3, NO_STATS, "don't poll device stats")
39
40 typedef union
41 {
42   enum
43   {
44 #define _(b, n, d) VNET_DEV_F_##n = 1ull << (b),
45     foreach_vnet_dev_flag
46 #undef _
47   } e;
48   u64 n;
49 } vnet_dev_flags_t;
50
51 /* do not change bit assignments - API dependency */
52 #define foreach_vnet_dev_port_flag                                            \
53   _ (3, INTERRUPT_MODE, "enable interrupt mode")
54
55 typedef union
56 {
57   enum
58   {
59 #define _(b, n, d) VNET_DEV_PORT_F_##n = 1ull << (b),
60     foreach_vnet_dev_port_flag
61 #undef _
62   } e;
63   u64 n;
64 } vnet_dev_port_flags_t;
65
66 #endif /* _VNET_DEV_TYPES_H_ */