xref: /dpdk/drivers/net/gve/base/gve.h (revision 179f293b4e6de14b4f05e6bb531670d34a9a09a9)
1 /* SPDX-License-Identifier: MIT
2  * Google Virtual Ethernet (gve) driver
3  * Copyright (C) 2015-2022 Google, Inc.
4  */
5 
6 #ifndef _GVE_H_
7 #define _GVE_H_
8 
9 #include "gve_desc.h"
10 #include "gve_desc_dqo.h"
11 
12 #ifndef GOOGLE_VENDOR_ID
13 #define GOOGLE_VENDOR_ID	0x1ae0
14 #endif
15 
16 #define GVE_DEV_ID		0x0042
17 
18 #define GVE_REG_BAR		0
19 #define GVE_DB_BAR		2
20 
21 /* 1 for management, 1 for rx, 1 for tx */
22 #define GVE_MIN_MSIX		3
23 
24 /* PTYPEs are always 10 bits. */
25 #define GVE_NUM_PTYPES		1024
26 
27 struct gve_irq_db {
28 	rte_be32_t id;
29 } ____cacheline_aligned;
30 
31 struct gve_ptype {
32 	uint8_t l3_type;  /* `gve_l3_type` in gve_adminq.h */
33 	uint8_t l4_type;  /* `gve_l4_type` in gve_adminq.h */
34 };
35 
36 struct gve_ptype_lut {
37 	struct gve_ptype ptypes[GVE_NUM_PTYPES];
38 };
39 
40 enum gve_queue_format {
41 	GVE_QUEUE_FORMAT_UNSPECIFIED = 0x0, /* default unspecified */
42 	GVE_GQI_RDA_FORMAT	     = 0x1, /* GQI Raw Addressing */
43 	GVE_GQI_QPL_FORMAT	     = 0x2, /* GQI Queue Page List */
44 	GVE_DQO_RDA_FORMAT	     = 0x3, /* DQO Raw Addressing */
45 };
46 
47 enum gve_state_flags_bit {
48 	GVE_PRIV_FLAGS_ADMIN_QUEUE_OK		= 1,
49 	GVE_PRIV_FLAGS_DEVICE_RESOURCES_OK	= 2,
50 	GVE_PRIV_FLAGS_DEVICE_RINGS_OK		= 3,
51 	GVE_PRIV_FLAGS_NAPI_ENABLED		= 4,
52 };
53 
54 enum gve_rss_hash_algorithm {
55 	GVE_RSS_HASH_UNDEFINED = 0,
56 	GVE_RSS_HASH_TOEPLITZ = 1,
57 };
58 
59 struct gve_rss_config {
60 	uint16_t hash_types;
61 	enum gve_rss_hash_algorithm alg;
62 	uint16_t key_size;
63 	uint16_t indir_size;
64 	uint8_t *key;
65 	uint32_t *indir;
66 };
67 
68 
69 #endif /* _GVE_H_ */
70