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