As flow field relevant data structures will be used by both actions and
items, this commit moves the relevant data structures up to item parts.

Signed-off-by: Suanming Mou <suanmi...@nvidia.com>
---
 lib/ethdev/rte_flow.h | 290 +++++++++++++++++++++---------------------
 1 file changed, 145 insertions(+), 145 deletions(-)

diff --git a/lib/ethdev/rte_flow.h b/lib/ethdev/rte_flow.h
index eb46cfe09e..958eb01a80 100644
--- a/lib/ethdev/rte_flow.h
+++ b/lib/ethdev/rte_flow.h
@@ -2365,6 +2365,151 @@ static const struct rte_flow_item_ptype 
rte_flow_item_ptype_mask = {
 };
 #endif
 
+/**
+ * Packet header field IDs, used by RTE_FLOW_ACTION_TYPE_MODIFY_FIELD.
+ */
+enum rte_flow_field_id {
+       RTE_FLOW_FIELD_START = 0,       /**< Start of a packet. */
+       RTE_FLOW_FIELD_MAC_DST,         /**< Destination MAC Address. */
+       RTE_FLOW_FIELD_MAC_SRC,         /**< Source MAC Address. */
+       RTE_FLOW_FIELD_VLAN_TYPE,       /**< VLAN Tag Identifier. */
+       RTE_FLOW_FIELD_VLAN_ID,         /**< VLAN Identifier. */
+       RTE_FLOW_FIELD_MAC_TYPE,        /**< EtherType. */
+       RTE_FLOW_FIELD_IPV4_DSCP,       /**< IPv4 DSCP. */
+       RTE_FLOW_FIELD_IPV4_TTL,        /**< IPv4 Time To Live. */
+       RTE_FLOW_FIELD_IPV4_SRC,        /**< IPv4 Source Address. */
+       RTE_FLOW_FIELD_IPV4_DST,        /**< IPv4 Destination Address. */
+       RTE_FLOW_FIELD_IPV6_DSCP,       /**< IPv6 DSCP. */
+       RTE_FLOW_FIELD_IPV6_HOPLIMIT,   /**< IPv6 Hop Limit. */
+       RTE_FLOW_FIELD_IPV6_SRC,        /**< IPv6 Source Address. */
+       RTE_FLOW_FIELD_IPV6_DST,        /**< IPv6 Destination Address. */
+       RTE_FLOW_FIELD_TCP_PORT_SRC,    /**< TCP Source Port Number. */
+       RTE_FLOW_FIELD_TCP_PORT_DST,    /**< TCP Destination Port Number. */
+       RTE_FLOW_FIELD_TCP_SEQ_NUM,     /**< TCP Sequence Number. */
+       RTE_FLOW_FIELD_TCP_ACK_NUM,     /**< TCP Acknowledgment Number. */
+       RTE_FLOW_FIELD_TCP_FLAGS,       /**< TCP Flags. */
+       RTE_FLOW_FIELD_UDP_PORT_SRC,    /**< UDP Source Port Number. */
+       RTE_FLOW_FIELD_UDP_PORT_DST,    /**< UDP Destination Port Number. */
+       RTE_FLOW_FIELD_VXLAN_VNI,       /**< VXLAN Network Identifier. */
+       RTE_FLOW_FIELD_GENEVE_VNI,      /**< GENEVE Network Identifier. */
+       RTE_FLOW_FIELD_GTP_TEID,        /**< GTP Tunnel Endpoint Identifier. */
+       RTE_FLOW_FIELD_TAG,             /**< Tag value. */
+       RTE_FLOW_FIELD_MARK,            /**< Mark value. */
+       RTE_FLOW_FIELD_META,            /**< Metadata value. */
+       RTE_FLOW_FIELD_POINTER,         /**< Memory pointer. */
+       RTE_FLOW_FIELD_VALUE,           /**< Immediate value. */
+       RTE_FLOW_FIELD_IPV4_ECN,        /**< IPv4 ECN. */
+       RTE_FLOW_FIELD_IPV6_ECN,        /**< IPv6 ECN. */
+       RTE_FLOW_FIELD_GTP_PSC_QFI,     /**< GTP QFI. */
+       RTE_FLOW_FIELD_METER_COLOR,     /**< Meter color marker. */
+       RTE_FLOW_FIELD_IPV6_PROTO,      /**< IPv6 next header. */
+       RTE_FLOW_FIELD_FLEX_ITEM,       /**< Flex item. */
+       RTE_FLOW_FIELD_HASH_RESULT,     /**< Hash result. */
+       RTE_FLOW_FIELD_GENEVE_OPT_TYPE, /**< GENEVE option type. */
+       RTE_FLOW_FIELD_GENEVE_OPT_CLASS,/**< GENEVE option class. */
+       RTE_FLOW_FIELD_GENEVE_OPT_DATA, /**< GENEVE option data. */
+       RTE_FLOW_FIELD_MPLS,            /**< MPLS header. */
+       RTE_FLOW_FIELD_TCP_DATA_OFFSET, /**< TCP data offset. */
+       RTE_FLOW_FIELD_IPV4_IHL,        /**< IPv4 IHL. */
+       RTE_FLOW_FIELD_IPV4_TOTAL_LEN,  /**< IPv4 total length. */
+       RTE_FLOW_FIELD_IPV6_PAYLOAD_LEN,/**< IPv6 payload length. */
+       RTE_FLOW_FIELD_RANDOM           /**< Random value. */
+};
+
+/**
+ * @warning
+ * @b EXPERIMENTAL: this structure may change without prior notice
+ *
+ * Packet header field descriptions, used by RTE_FLOW_ACTION_TYPE_MODIFY_FIELD.
+ */
+struct rte_flow_field_data {
+       enum rte_flow_field_id field; /**< Field or memory type ID. */
+       union {
+               struct {
+                       /** Encapsulation level and tag index or flex item 
handle. */
+                       union {
+                               struct {
+                                       /**
+                                        * Packet encapsulation level containing
+                                        * the field to modify.
+                                        *
+                                        * - @p 0 requests the default behavior.
+                                        *   Depending on the packet type, it
+                                        *   can mean outermost, innermost or
+                                        *   anything in between.
+                                        *
+                                        *   It basically stands for the
+                                        *   innermost encapsulation level.
+                                        *   Modification can be performed
+                                        *   according to PMD and device
+                                        *   capabilities.
+                                        *
+                                        * - @p 1 requests modification to be
+                                        *   performed on the outermost packet
+                                        *   encapsulation level.
+                                        *
+                                        * - @p 2 and subsequent values request
+                                        *   modification to be performed on
+                                        *   the specified inner packet
+                                        *   encapsulation level, from
+                                        *   outermost to innermost (lower to
+                                        *   higher values).
+                                        *
+                                        * Values other than @p 0 are not
+                                        * necessarily supported.
+                                        *
+                                        * @note that for MPLS field,
+                                        * encapsulation level also include
+                                        * tunnel since MPLS may appear in
+                                        * outer, inner or tunnel.
+                                        */
+                                       uint8_t level;
+                                       union {
+                                               /**
+                                                * Tag index array inside
+                                                * encapsulation level.
+                                                * Used for VLAN, MPLS or TAG 
types.
+                                                */
+                                               uint8_t tag_index;
+                                               /**
+                                                * Geneve option identifier.
+                                                * Relevant only for
+                                                * 
RTE_FLOW_FIELD_GENEVE_OPT_XXXX
+                                                * modification type.
+                                                */
+                                               struct {
+                                                       /**
+                                                        * Geneve option type.
+                                                        */
+                                                       uint8_t type;
+                                                       /**
+                                                        * Geneve option class.
+                                                        */
+                                                       rte_be16_t class_id;
+                                               };
+                                       };
+                               };
+                               struct rte_flow_item_flex_handle *flex_handle;
+                       };
+                       /** Number of bits to skip from a field. */
+                       uint32_t offset;
+               };
+               /**
+                * Immediate value for RTE_FLOW_FIELD_VALUE, presented in the
+                * same byte order and length as in relevant rte_flow_item_xxx.
+                * The immediate source bitfield offset is inherited from
+                * the destination's one.
+                */
+               uint8_t value[16];
+               /**
+                * Memory address for RTE_FLOW_FIELD_POINTER, memory layout
+                * should be the same as for relevant field in the
+                * rte_flow_item_xxx structure.
+                */
+               void *pvalue;
+       };
+};
+
 /**
  * Action types.
  *
@@ -3892,151 +4037,6 @@ struct rte_flow_action_ethdev {
        uint16_t port_id; /**< ethdev port ID */
 };
 
-/**
- * Packet header field IDs, used by RTE_FLOW_ACTION_TYPE_MODIFY_FIELD.
- */
-enum rte_flow_field_id {
-       RTE_FLOW_FIELD_START = 0,       /**< Start of a packet. */
-       RTE_FLOW_FIELD_MAC_DST,         /**< Destination MAC Address. */
-       RTE_FLOW_FIELD_MAC_SRC,         /**< Source MAC Address. */
-       RTE_FLOW_FIELD_VLAN_TYPE,       /**< VLAN Tag Identifier. */
-       RTE_FLOW_FIELD_VLAN_ID,         /**< VLAN Identifier. */
-       RTE_FLOW_FIELD_MAC_TYPE,        /**< EtherType. */
-       RTE_FLOW_FIELD_IPV4_DSCP,       /**< IPv4 DSCP. */
-       RTE_FLOW_FIELD_IPV4_TTL,        /**< IPv4 Time To Live. */
-       RTE_FLOW_FIELD_IPV4_SRC,        /**< IPv4 Source Address. */
-       RTE_FLOW_FIELD_IPV4_DST,        /**< IPv4 Destination Address. */
-       RTE_FLOW_FIELD_IPV6_DSCP,       /**< IPv6 DSCP. */
-       RTE_FLOW_FIELD_IPV6_HOPLIMIT,   /**< IPv6 Hop Limit. */
-       RTE_FLOW_FIELD_IPV6_SRC,        /**< IPv6 Source Address. */
-       RTE_FLOW_FIELD_IPV6_DST,        /**< IPv6 Destination Address. */
-       RTE_FLOW_FIELD_TCP_PORT_SRC,    /**< TCP Source Port Number. */
-       RTE_FLOW_FIELD_TCP_PORT_DST,    /**< TCP Destination Port Number. */
-       RTE_FLOW_FIELD_TCP_SEQ_NUM,     /**< TCP Sequence Number. */
-       RTE_FLOW_FIELD_TCP_ACK_NUM,     /**< TCP Acknowledgment Number. */
-       RTE_FLOW_FIELD_TCP_FLAGS,       /**< TCP Flags. */
-       RTE_FLOW_FIELD_UDP_PORT_SRC,    /**< UDP Source Port Number. */
-       RTE_FLOW_FIELD_UDP_PORT_DST,    /**< UDP Destination Port Number. */
-       RTE_FLOW_FIELD_VXLAN_VNI,       /**< VXLAN Network Identifier. */
-       RTE_FLOW_FIELD_GENEVE_VNI,      /**< GENEVE Network Identifier. */
-       RTE_FLOW_FIELD_GTP_TEID,        /**< GTP Tunnel Endpoint Identifier. */
-       RTE_FLOW_FIELD_TAG,             /**< Tag value. */
-       RTE_FLOW_FIELD_MARK,            /**< Mark value. */
-       RTE_FLOW_FIELD_META,            /**< Metadata value. */
-       RTE_FLOW_FIELD_POINTER,         /**< Memory pointer. */
-       RTE_FLOW_FIELD_VALUE,           /**< Immediate value. */
-       RTE_FLOW_FIELD_IPV4_ECN,        /**< IPv4 ECN. */
-       RTE_FLOW_FIELD_IPV6_ECN,        /**< IPv6 ECN. */
-       RTE_FLOW_FIELD_GTP_PSC_QFI,     /**< GTP QFI. */
-       RTE_FLOW_FIELD_METER_COLOR,     /**< Meter color marker. */
-       RTE_FLOW_FIELD_IPV6_PROTO,      /**< IPv6 next header. */
-       RTE_FLOW_FIELD_FLEX_ITEM,       /**< Flex item. */
-       RTE_FLOW_FIELD_HASH_RESULT,     /**< Hash result. */
-       RTE_FLOW_FIELD_GENEVE_OPT_TYPE, /**< GENEVE option type. */
-       RTE_FLOW_FIELD_GENEVE_OPT_CLASS,/**< GENEVE option class. */
-       RTE_FLOW_FIELD_GENEVE_OPT_DATA, /**< GENEVE option data. */
-       RTE_FLOW_FIELD_MPLS,            /**< MPLS header. */
-       RTE_FLOW_FIELD_TCP_DATA_OFFSET, /**< TCP data offset. */
-       RTE_FLOW_FIELD_IPV4_IHL,        /**< IPv4 IHL. */
-       RTE_FLOW_FIELD_IPV4_TOTAL_LEN,  /**< IPv4 total length. */
-       RTE_FLOW_FIELD_IPV6_PAYLOAD_LEN,/**< IPv6 payload length. */
-       RTE_FLOW_FIELD_RANDOM           /**< Random value. */
-};
-
-/**
- * @warning
- * @b EXPERIMENTAL: this structure may change without prior notice
- *
- * Packet header field descriptions, used by RTE_FLOW_ACTION_TYPE_MODIFY_FIELD.
- */
-struct rte_flow_field_data {
-       enum rte_flow_field_id field; /**< Field or memory type ID. */
-       union {
-               struct {
-                       /** Encapsulation level and tag index or flex item 
handle. */
-                       union {
-                               struct {
-                                       /**
-                                        * Packet encapsulation level containing
-                                        * the field to modify.
-                                        *
-                                        * - @p 0 requests the default behavior.
-                                        *   Depending on the packet type, it
-                                        *   can mean outermost, innermost or
-                                        *   anything in between.
-                                        *
-                                        *   It basically stands for the
-                                        *   innermost encapsulation level.
-                                        *   Modification can be performed
-                                        *   according to PMD and device
-                                        *   capabilities.
-                                        *
-                                        * - @p 1 requests modification to be
-                                        *   performed on the outermost packet
-                                        *   encapsulation level.
-                                        *
-                                        * - @p 2 and subsequent values request
-                                        *   modification to be performed on
-                                        *   the specified inner packet
-                                        *   encapsulation level, from
-                                        *   outermost to innermost (lower to
-                                        *   higher values).
-                                        *
-                                        * Values other than @p 0 are not
-                                        * necessarily supported.
-                                        *
-                                        * @note that for MPLS field,
-                                        * encapsulation level also include
-                                        * tunnel since MPLS may appear in
-                                        * outer, inner or tunnel.
-                                        */
-                                       uint8_t level;
-                                       union {
-                                               /**
-                                                * Tag index array inside
-                                                * encapsulation level.
-                                                * Used for VLAN, MPLS or TAG 
types.
-                                                */
-                                               uint8_t tag_index;
-                                               /**
-                                                * Geneve option identifier.
-                                                * Relevant only for
-                                                * 
RTE_FLOW_FIELD_GENEVE_OPT_XXXX
-                                                * modification type.
-                                                */
-                                               struct {
-                                                       /**
-                                                        * Geneve option type.
-                                                        */
-                                                       uint8_t type;
-                                                       /**
-                                                        * Geneve option class.
-                                                        */
-                                                       rte_be16_t class_id;
-                                               };
-                                       };
-                               };
-                               struct rte_flow_item_flex_handle *flex_handle;
-                       };
-                       /** Number of bits to skip from a field. */
-                       uint32_t offset;
-               };
-               /**
-                * Immediate value for RTE_FLOW_FIELD_VALUE, presented in the
-                * same byte order and length as in relevant rte_flow_item_xxx.
-                * The immediate source bitfield offset is inherited from
-                * the destination's one.
-                */
-               uint8_t value[16];
-               /**
-                * Memory address for RTE_FLOW_FIELD_POINTER, memory layout
-                * should be the same as for relevant field in the
-                * rte_flow_item_xxx structure.
-                */
-               void *pvalue;
-       };
-};
-
 /**
  * Operation types for MODIFY_FIELD action.
  */
-- 
2.34.1

Reply via email to