avf: introduce program flow event
[vpp.git] / src / plugins / avf / virtchnl.h
index 1bdecbc..32d2ea0 100644 (file)
 #define VIRTCHNL_VERSION_MAJOR 1
 #define VIRTCHNL_VERSION_MINOR 1
 
+#define foreach_avf_promisc_flags \
+  _(0, UNICAST_PROMISC, "unicast") \
+  _(1, MULTICAST_PROMISC, "multicast")
+
+enum
+{
+#define _(a, b, c) FLAG_VF_ ##b = (1 << a),
+  foreach_avf_promisc_flags
+#undef _
+};
 
 #define AVFINT_DYN_CTLN(x)  (0x00003800 + (0x4 * x))
 #define AVFINT_ICR0         0x00004800
 #define AVF_AQ_F_EI  (1 << 14)
 #define AVF_AQ_F_FE  (1 << 15)
 
-
-#define foreach_virtchnl_op \
-  _(0, UNKNOWN)                                        \
-  _(1, VERSION)                                        \
-  _(2, RESET_VF)                               \
-  _(3, GET_VF_RESOURCES)                       \
-  _(4, CONFIG_TX_QUEUE)                                \
-  _(5, CONFIG_RX_QUEUE)                                \
-  _(6, CONFIG_VSI_QUEUES)                      \
-  _(7, CONFIG_IRQ_MAP)                         \
-  _(8, ENABLE_QUEUES)                          \
-  _(9, DISABLE_QUEUES)                         \
-  _(10, ADD_ETH_ADDR)                          \
-  _(11, DEL_ETH_ADDR)                          \
-  _(12, ADD_VLAN)                              \
-  _(13, DEL_VLAN)                              \
-  _(14, CONFIG_PROMISCUOUS_MODE)               \
-  _(15, GET_STATS)                             \
-  _(16, RSVD)                                  \
-  _(17, EVENT)                                 \
-  _(18, UNDEF_18)                              \
-  _(19, UNDEF_19)                              \
-  _(20, IWARP)                                 \
-  _(21, CONFIG_IWARP_IRQ_MAP)                  \
-  _(22, RELEASE_IWARP_IRQ_MAP)                 \
-  _(23, CONFIG_RSS_KEY)                                \
-  _(24, CONFIG_RSS_LUT)                                \
-  _(25, GET_RSS_HENA_CAPS)                     \
-  _(26, SET_RSS_HENA)                          \
-  _(27, ENABLE_VLAN_STRIPPING)                 \
-  _(28, DISABLE_VLAN_STRIPPING)                        \
-  _(29, REQUEST_QUEUES)                                \
-  _(30, ENABLE_CHANNELS)                       \
-  _(31, DISABLE_CHANNELS)                      \
-  _(32, ADD_CLOUD_FILTER)                      \
-  _(33, DEL_CLOUD_FILTER)
-
+#define foreach_virtchnl_op                                                   \
+  _ (0, UNKNOWN)                                                              \
+  _ (1, VERSION)                                                              \
+  _ (2, RESET_VF)                                                             \
+  _ (3, GET_VF_RESOURCES)                                                     \
+  _ (4, CONFIG_TX_QUEUE)                                                      \
+  _ (5, CONFIG_RX_QUEUE)                                                      \
+  _ (6, CONFIG_VSI_QUEUES)                                                    \
+  _ (7, CONFIG_IRQ_MAP)                                                       \
+  _ (8, ENABLE_QUEUES)                                                        \
+  _ (9, DISABLE_QUEUES)                                                       \
+  _ (10, ADD_ETH_ADDR)                                                        \
+  _ (11, DEL_ETH_ADDR)                                                        \
+  _ (12, ADD_VLAN)                                                            \
+  _ (13, DEL_VLAN)                                                            \
+  _ (14, CONFIG_PROMISCUOUS_MODE)                                             \
+  _ (15, GET_STATS)                                                           \
+  _ (16, RSVD)                                                                \
+  _ (17, EVENT)                                                               \
+  _ (18, UNDEF_18)                                                            \
+  _ (19, UNDEF_19)                                                            \
+  _ (20, IWARP)                                                               \
+  _ (21, CONFIG_IWARP_IRQ_MAP)                                                \
+  _ (22, RELEASE_IWARP_IRQ_MAP)                                               \
+  _ (23, CONFIG_RSS_KEY)                                                      \
+  _ (24, CONFIG_RSS_LUT)                                                      \
+  _ (25, GET_RSS_HENA_CAPS)                                                   \
+  _ (26, SET_RSS_HENA)                                                        \
+  _ (27, ENABLE_VLAN_STRIPPING)                                               \
+  _ (28, DISABLE_VLAN_STRIPPING)                                              \
+  _ (29, REQUEST_QUEUES)                                                      \
+  _ (30, ENABLE_CHANNELS)                                                     \
+  _ (31, DISABLE_CHANNELS)                                                    \
+  _ (32, ADD_CLOUD_FILTER)                                                    \
+  _ (33, DEL_CLOUD_FILTER)                                                    \
+  _ (47, ADD_FDIR_FILTER)                                                     \
+  _ (48, DEL_FDIR_FILTER)                                                     \
+  _ (49, QUERY_FDIR_FILTER)
 
 typedef enum
 {
@@ -169,21 +180,28 @@ typedef struct
   virtchnl_vsi_resource_t vsi_res[1];
 } virtchnl_vf_resource_t;
 
+#define foreach_virtchnl_event_code \
+  _(0, UNKNOWN)                                \
+  _(1, LINK_CHANGE)                    \
+  _(2, RESET_IMPENDING)                        \
+  _(3, PF_DRIVER_CLOSE)
+
 typedef enum
 {
-  VIRTCHNL_EVENT_UNKNOWN = 0,
-  VIRTCHNL_EVENT_LINK_CHANGE,
-  VIRTCHNL_EVENT_RESET_IMPENDING,
-  VIRTCHNL_EVENT_PF_DRIVER_CLOSE,
+#define _(a,b) VIRTCHNL_EVENT_##b = (a),
+  foreach_virtchnl_event_code
+#undef _
 } virtchnl_event_codes_t;
 
 #define foreach_virtchnl_link_speed \
+  _(0, 2_5GB, "2.5 Gbps")              \
   _(1, 100MB, "100 Mbps")              \
   _(2, 1GB, "1 Gbps")                  \
   _(3, 10GB, "10 Gbps")                        \
   _(4, 40GB, "40 Gbps")                        \
   _(5, 20GB, "20 Gbps")                        \
-  _(6, 25GB, "25 Gbps")
+  _(6, 25GB, "25 Gbps")                        \
+  _(7, 5GB, "5 Gbps")
 
 typedef enum
 {