define structures for configuring flexible payload Signed-off-by: Jingjing Wu <jingjing.wu at intel.com> Acked-by: Chen Jing D(Mark) <jing.d.chen at intel.com> Acked-by: Helin Zhang <helin.zhang at intel.com> --- lib/librte_ether/rte_eth_ctrl.h | 42 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+)
diff --git a/lib/librte_ether/rte_eth_ctrl.h b/lib/librte_ether/rte_eth_ctrl.h index 208082e..e412471 100644 --- a/lib/librte_ether/rte_eth_ctrl.h +++ b/lib/librte_ether/rte_eth_ctrl.h @@ -75,6 +75,25 @@ enum rte_filter_op { * Define all structures for Flow Director Filter type corresponding with specific operations. */ + +/** + * A structure defined a field vector to specify each field. + */ +struct rte_eth_field_vector { + uint8_t offset; /**< Source word offset */ + uint8_t size; /**< Field Size defined in word units */ +}; + +/** + * payload type + */ +enum rte_eth_payload_type { + RTE_ETH_PAYLOAD_UNKNOWN = 0, + RTE_ETH_L2_PAYLOAD, + RTE_ETH_L3_PAYLOAD, + RTE_ETH_L4_PAYLOAD, +}; + /** * flow type */ @@ -91,6 +110,29 @@ enum rte_eth_flow_type { }; /** + * A structure used to select fields extracted from the protocol layers to + * the Field Vector as flexible payload for filter + */ +struct rte_eth_flex_payload_cfg { + enum rte_eth_payload_type type; /**< payload type */ + uint8_t nb_field; /**< the number of folloing fieds */ + struct rte_eth_field_vector field[0]; +}; + +#define RTE_ETH_FDIR_CFG_FLX 0x0001 +/** + * A structure used to config FDIR filter global set + * to support RTE_ETH_FILTER_FDIR with RTE_ETH_FILTER_OP_SET operation. + */ +struct rte_eth_fdir_cfg { + uint16_t cmd; /**< define sub command in the generic OP_SET */ + /** + * A pointer to structure for the configuration e.g. + * struct rte_eth_flex_payload_cfg for FDIR_CFG_FLX + */ + void *cfg; +}; +/** * A structure used to define the input for IPV4 UDP flow */ struct rte_eth_udpv4_flow { -- 1.8.1.4