ethdev: support GRE optional fields
Add flow pattern items and header format for matching optional fields (checksum/key/sequence) in GRE header. And the flags in gre item should be correspondingly set with the new added items. Signed-off-by: Sean Zhang <xiazhang@nvidia.com> Acked-by: Ori Kam <orika@nvidia.com>
This commit is contained in:
parent
7786991fae
commit
f61490bdf2
@ -1106,6 +1106,7 @@ Matches a GRE header.
|
||||
|
||||
Item: ``GRE_KEY``
|
||||
^^^^^^^^^^^^^^^^^
|
||||
This action is deprecated. Consider `Item: GRE_OPTION`.
|
||||
|
||||
Matches a GRE key field.
|
||||
This should be preceded by item ``GRE``.
|
||||
@ -1113,6 +1114,22 @@ This should be preceded by item ``GRE``.
|
||||
- Value to be matched is a big-endian 32 bit integer.
|
||||
- When this item present it implicitly match K bit in default mask as "1"
|
||||
|
||||
Item: ``GRE_OPTION``
|
||||
^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Matches a GRE optional fields (checksum/key/sequence).
|
||||
This should be preceded by item ``GRE``.
|
||||
|
||||
- ``checksum``: checksum.
|
||||
- ``key``: key.
|
||||
- ``sequence``: sequence.
|
||||
- The items in GRE_OPTION do not change bit flags(c_bit/k_bit/s_bit) in GRE
|
||||
item. The bit flags need be set with GRE item by application. When the items
|
||||
present, the corresponding bits in GRE spec and mask should be set "1" by
|
||||
application, it means to match specified value of the fields. When the items
|
||||
no present, but the corresponding bits in GRE spec and mask is "1", it means
|
||||
to match any value of the fields.
|
||||
|
||||
Item: ``FUZZY``
|
||||
^^^^^^^^^^^^^^^
|
||||
|
||||
|
@ -71,6 +71,11 @@ New Features
|
||||
- ``rte_ipv6_udptcp_cksum_mbuf()``
|
||||
- ``rte_ipv6_udptcp_cksum_mbuf_verify()``
|
||||
|
||||
* **Added rte_flow support for matching GRE optional fields.**
|
||||
|
||||
Added ``gre_option`` item in rte_flow to support checksum/key/sequence
|
||||
matching in GRE packets.
|
||||
|
||||
* **Added new RSS offload types for L2TPv2 in RSS flow.**
|
||||
|
||||
Added macro RTE_ETH_RSS_L2TPV2, now L2TPv2 session ID field can be used as
|
||||
|
@ -139,6 +139,7 @@ static const struct rte_flow_desc_data rte_flow_desc_item[] = {
|
||||
MK_FLOW_ITEM(META, sizeof(struct rte_flow_item_meta)),
|
||||
MK_FLOW_ITEM(TAG, sizeof(struct rte_flow_item_tag)),
|
||||
MK_FLOW_ITEM(GRE_KEY, sizeof(rte_be32_t)),
|
||||
MK_FLOW_ITEM(GRE_OPTION, sizeof(struct rte_flow_item_gre_opt)),
|
||||
MK_FLOW_ITEM(GTP_PSC, sizeof(struct rte_flow_item_gtp_psc)),
|
||||
MK_FLOW_ITEM(PPPOES, sizeof(struct rte_flow_item_pppoe)),
|
||||
MK_FLOW_ITEM(PPPOED, sizeof(struct rte_flow_item_pppoe)),
|
||||
|
@ -37,6 +37,7 @@
|
||||
#include <rte_gtp.h>
|
||||
#include <rte_l2tpv2.h>
|
||||
#include <rte_ppp.h>
|
||||
#include <rte_gre.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
@ -660,6 +661,13 @@ enum rte_flow_item_type {
|
||||
* See struct rte_flow_item_ppp.
|
||||
*/
|
||||
RTE_FLOW_ITEM_TYPE_PPP,
|
||||
|
||||
/**
|
||||
* Matches GRE optional fields.
|
||||
*
|
||||
* See struct rte_flow_item_gre_opt.
|
||||
*/
|
||||
RTE_FLOW_ITEM_TYPE_GRE_OPTION,
|
||||
};
|
||||
|
||||
/**
|
||||
@ -1195,6 +1203,17 @@ static const struct rte_flow_item_gre rte_flow_item_gre_mask = {
|
||||
};
|
||||
#endif
|
||||
|
||||
/**
|
||||
* RTE_FLOW_ITEM_TYPE_GRE_OPTION.
|
||||
*
|
||||
* Matches GRE optional fields in header.
|
||||
*/
|
||||
struct rte_flow_item_gre_opt {
|
||||
struct rte_gre_hdr_opt_checksum_rsvd checksum_rsvd;
|
||||
struct rte_gre_hdr_opt_key key;
|
||||
struct rte_gre_hdr_opt_sequence sequence;
|
||||
};
|
||||
|
||||
/**
|
||||
* RTE_FLOW_ITEM_TYPE_FUZZY
|
||||
*
|
||||
|
Loading…
x
Reference in New Issue
Block a user