This patch removes the VXLAN and NVGRE encapsulation commands. Those commands are subset of the TUNNEL_ENCAP command so there is no need to keep both versions.
Signed-off-by: Ori Kam <or...@mellanox.com> Acked-by: Mohammad Abdul Awal <mohammad.abdul.a...@intel.com> --- doc/guides/prog_guide/rte_flow.rst | 107 ------------------------------------- lib/librte_ethdev/rte_flow.c | 37 ------------- lib/librte_ethdev/rte_flow.h | 103 ----------------------------------- 3 files changed, 247 deletions(-) diff --git a/doc/guides/prog_guide/rte_flow.rst b/doc/guides/prog_guide/rte_flow.rst index 497afc2..126e5d3 100644 --- a/doc/guides/prog_guide/rte_flow.rst +++ b/doc/guides/prog_guide/rte_flow.rst @@ -1969,113 +1969,6 @@ Implements ``OFPAT_PUSH_MPLS`` ("push a new MPLS tag") as defined by the | ``ethertype`` | EtherType | +---------------+-----------+ -Action: ``VXLAN_ENCAP`` -^^^^^^^^^^^^^^^^^^^^^^^ - -Performs a VXLAN encapsulation action by encapsulating the matched flow in the -VXLAN tunnel as defined in the``rte_flow_action_vxlan_encap`` flow items -definition. - -This action modifies the payload of matched flows. The flow definition specified -in the ``rte_flow_action_tunnel_encap`` action structure must define a valid -VLXAN network overlay which conforms with RFC 7348 (Virtual eXtensible Local -Area Network (VXLAN): A Framework for Overlaying Virtualized Layer 2 Networks -over Layer 3 Networks). The pattern must be terminated with the -RTE_FLOW_ITEM_TYPE_END item type. - -.. _table_rte_flow_action_vxlan_encap: - -.. table:: VXLAN_ENCAP - - +----------------+-------------------------------------+ - | Field | Value | - +================+=====================================+ - | ``definition`` | Tunnel end-point overlay definition | - +----------------+-------------------------------------+ - -.. _table_rte_flow_action_vxlan_encap_example: - -.. table:: IPv4 VxLAN flow pattern example. - - +-------+----------+ - | Index | Item | - +=======+==========+ - | 0 | Ethernet | - +-------+----------+ - | 1 | IPv4 | - +-------+----------+ - | 2 | UDP | - +-------+----------+ - | 3 | VXLAN | - +-------+----------+ - | 4 | END | - +-------+----------+ - -Action: ``VXLAN_DECAP`` -^^^^^^^^^^^^^^^^^^^^^^^ - -Performs a decapsulation action by stripping all headers of the VXLAN tunnel -network overlay from the matched flow. - -The flow items pattern defined for the flow rule with which a ``VXLAN_DECAP`` -action is specified, must define a valid VXLAN tunnel as per RFC7348. If the -flow pattern does not specify a valid VXLAN tunnel then a -RTE_FLOW_ERROR_TYPE_ACTION error should be returned. - -This action modifies the payload of matched flows. - -Action: ``NVGRE_ENCAP`` -^^^^^^^^^^^^^^^^^^^^^^^ - -Performs a NVGRE encapsulation action by encapsulating the matched flow in the -NVGRE tunnel as defined in the``rte_flow_action_tunnel_encap`` flow item -definition. - -This action modifies the payload of matched flows. The flow definition specified -in the ``rte_flow_action_tunnel_encap`` action structure must defined a valid -NVGRE network overlay which conforms with RFC 7637 (NVGRE: Network -Virtualization Using Generic Routing Encapsulation). The pattern must be -terminated with the RTE_FLOW_ITEM_TYPE_END item type. - -.. _table_rte_flow_action_nvgre_encap: - -.. table:: NVGRE_ENCAP - - +----------------+-------------------------------------+ - | Field | Value | - +================+=====================================+ - | ``definition`` | NVGRE end-point overlay definition | - +----------------+-------------------------------------+ - -.. _table_rte_flow_action_nvgre_encap_example: - -.. table:: IPv4 NVGRE flow pattern example. - - +-------+----------+ - | Index | Item | - +=======+==========+ - | 0 | Ethernet | - +-------+----------+ - | 1 | IPv4 | - +-------+----------+ - | 2 | NVGRE | - +-------+----------+ - | 3 | END | - +-------+----------+ - -Action: ``NVGRE_DECAP`` -^^^^^^^^^^^^^^^^^^^^^^^ - -Performs a decapsulation action by stripping all headers of the NVGRE tunnel -network overlay from the matched flow. - -The flow items pattern defined for the flow rule with which a ``NVGRE_DECAP`` -action is specified, must define a valid NVGRE tunnel as per RFC7637. If the -flow pattern does not specify a valid NVGRE tunnel then a -RTE_FLOW_ERROR_TYPE_ACTION error should be returned. - -This action modifies the payload of matched flows. - Action: ``TUNNEL_ENCAP`` ^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/lib/librte_ethdev/rte_flow.c b/lib/librte_ethdev/rte_flow.c index 4b548b8..8a2e074 100644 --- a/lib/librte_ethdev/rte_flow.c +++ b/lib/librte_ethdev/rte_flow.c @@ -119,10 +119,6 @@ struct rte_flow_desc_data { sizeof(struct rte_flow_action_of_pop_mpls)), MK_FLOW_ACTION(OF_PUSH_MPLS, sizeof(struct rte_flow_action_of_push_mpls)), - MK_FLOW_ACTION(VXLAN_ENCAP, sizeof(struct rte_flow_action_vxlan_encap)), - MK_FLOW_ACTION(VXLAN_DECAP, 0), - MK_FLOW_ACTION(NVGRE_ENCAP, sizeof(struct rte_flow_action_vxlan_encap)), - MK_FLOW_ACTION(NVGRE_DECAP, 0), MK_FLOW_ACTION(TUNNEL_ENCAP, sizeof(struct rte_flow_action_tunnel_encap)), MK_FLOW_ACTION(TUNNEL_DECAP, 0), @@ -427,16 +423,11 @@ enum rte_flow_conv_item_spec_type { switch (action->type) { union { const struct rte_flow_action_rss *rss; - const struct rte_flow_action_vxlan_encap *vxlan_encap; - const struct rte_flow_action_nvgre_encap *nvgre_encap; } src; union { struct rte_flow_action_rss *rss; - struct rte_flow_action_vxlan_encap *vxlan_encap; - struct rte_flow_action_nvgre_encap *nvgre_encap; } dst; size_t tmp; - int ret; case RTE_FLOW_ACTION_TYPE_RSS: src.rss = action->conf; @@ -470,34 +461,6 @@ enum rte_flow_conv_item_spec_type { off += tmp; } break; - case RTE_FLOW_ACTION_TYPE_VXLAN_ENCAP: - case RTE_FLOW_ACTION_TYPE_NVGRE_ENCAP: - src.vxlan_encap = action->conf; - dst.vxlan_encap = buf; - RTE_BUILD_BUG_ON(sizeof(*src.vxlan_encap) != - sizeof(*src.nvgre_encap) || - offsetof(struct rte_flow_action_vxlan_encap, - definition) != - offsetof(struct rte_flow_action_nvgre_encap, - definition)); - off = sizeof(*dst.vxlan_encap); - if (src.vxlan_encap->definition) { - off = RTE_ALIGN_CEIL - (off, sizeof(*dst.vxlan_encap->definition)); - ret = rte_flow_conv - (RTE_FLOW_CONV_OP_PATTERN, - (void *)((uintptr_t)dst.vxlan_encap + off), - size > off ? size - off : 0, - src.vxlan_encap->definition, NULL); - if (ret < 0) - return 0; - if (size >= off + ret) - dst.vxlan_encap->definition = - (void *)((uintptr_t)dst.vxlan_encap + - off); - off += ret; - } - break; default: off = rte_flow_desc_action[action->type].size; rte_memcpy(buf, action->conf, (size > off ? off : size)); diff --git a/lib/librte_ethdev/rte_flow.h b/lib/librte_ethdev/rte_flow.h index 76b4759..0e7e0a2 100644 --- a/lib/librte_ethdev/rte_flow.h +++ b/lib/librte_ethdev/rte_flow.h @@ -1474,40 +1474,6 @@ enum rte_flow_action_type { RTE_FLOW_ACTION_TYPE_OF_PUSH_MPLS, /** - * Encapsulate flow in VXLAN tunnel as defined in - * rte_flow_action_vxlan_encap action structure. - * - * See struct rte_flow_action_vxlan_encap. - */ - RTE_FLOW_ACTION_TYPE_VXLAN_ENCAP, - - /** - * Decapsulate outer most VXLAN tunnel from matched flow. - * - * If flow pattern does not define a valid VXLAN tunnel (as specified by - * RFC7348) then the PMD should return a RTE_FLOW_ERROR_TYPE_ACTION - * error. - */ - RTE_FLOW_ACTION_TYPE_VXLAN_DECAP, - - /** - * Encapsulate flow in NVGRE tunnel defined in the - * rte_flow_action_nvgre_encap action structure. - * - * See struct rte_flow_action_nvgre_encap. - */ - RTE_FLOW_ACTION_TYPE_NVGRE_ENCAP, - - /** - * Decapsulate outer most NVGRE tunnel from matched flow. - * - * If flow pattern does not define a valid NVGRE tunnel (as specified by - * RFC7637) then the PMD should return a RTE_FLOW_ERROR_TYPE_ACTION - * error. - */ - RTE_FLOW_ACTION_TYPE_NVGRE_DECAP, - - /** * Encapsulate the packet with tunnel header as defined in * rte_flow_action_tunnel_encap action structure. * @@ -1838,75 +1804,6 @@ struct rte_flow_action_of_push_mpls { * @warning * @b EXPERIMENTAL: this structure may change without prior notice * - * RTE_FLOW_ACTION_TYPE_VXLAN_ENCAP - * - * VXLAN tunnel end-point encapsulation data definition - * - * The tunnel definition is provided through the flow item pattern, the - * provided pattern must conform to RFC7348 for the tunnel specified. The flow - * definition must be provided in order from the RTE_FLOW_ITEM_TYPE_ETH - * definition up the end item which is specified by RTE_FLOW_ITEM_TYPE_END. - * - * The mask field allows user to specify which fields in the flow item - * definitions can be ignored and which have valid data and can be used - * verbatim. - * - * Note: the last field is not used in the definition of a tunnel and can be - * ignored. - * - * Valid flow definition for RTE_FLOW_ACTION_TYPE_VXLAN_ENCAP include: - * - * - ETH / IPV4 / UDP / VXLAN / END - * - ETH / IPV6 / UDP / VXLAN / END - * - ETH / VLAN / IPV4 / UDP / VXLAN / END - * - */ -struct rte_flow_action_vxlan_encap { - /** - * Encapsulating vxlan tunnel definition - * (terminated by the END pattern item). - */ - struct rte_flow_item *definition; -}; - -/** - * @warning - * @b EXPERIMENTAL: this structure may change without prior notice - * - * RTE_FLOW_ACTION_TYPE_NVGRE_ENCAP - * - * NVGRE tunnel end-point encapsulation data definition - * - * The tunnel definition is provided through the flow item pattern the - * provided pattern must conform with RFC7637. The flow definition must be - * provided in order from the RTE_FLOW_ITEM_TYPE_ETH definition up the end item - * which is specified by RTE_FLOW_ITEM_TYPE_END. - * - * The mask field allows user to specify which fields in the flow item - * definitions can be ignored and which have valid data and can be used - * verbatim. - * - * Note: the last field is not used in the definition of a tunnel and can be - * ignored. - * - * Valid flow definition for RTE_FLOW_ACTION_TYPE_NVGRE_ENCAP include: - * - * - ETH / IPV4 / NVGRE / END - * - ETH / VLAN / IPV6 / NVGRE / END - * - */ -struct rte_flow_action_nvgre_encap { - /** - * Encapsulating vxlan tunnel definition - * (terminated by the END pattern item). - */ - struct rte_flow_item *definition; -}; - -/** - * @warning - * @b EXPERIMENTAL: this structure may change without prior notice - * * RTE_FLOW_ACTION_TYPE_TUNNEL_ENCAP * * Tunnel end-point encapsulation data definition -- 1.8.3.1