From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jingjing Wu Subject: [PATCH v5 16/21] ethdev: define structures for configuring flexible payload Date: Thu, 30 Oct 2014 15:26:41 +0800 Message-ID: <1414654006-7472-17-git-send-email-jingjing.wu@intel.com> References: <1413939687-11177-1-git-send-email-jingjing.wu@intel.com> <1414654006-7472-1-git-send-email-jingjing.wu@intel.com> To: dev-VfR2kkLFssw@public.gmane.org Return-path: In-Reply-To: <1414654006-7472-1-git-send-email-jingjing.wu-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org> List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces-VfR2kkLFssw@public.gmane.org Sender: "dev" New Structures are defined for configuring flexible payload Signed-off-by: Jingjing Wu --- lib/librte_ether/rte_eth_ctrl.h | 43 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/lib/librte_ether/rte_eth_ctrl.h b/lib/librte_ether/rte_eth_ctrl.h index 74a9c59..4a51c22 100644 --- a/lib/librte_ether/rte_eth_ctrl.h +++ b/lib/librte_ether/rte_eth_ctrl.h @@ -138,6 +138,24 @@ struct rte_eth_tunnel_filter_conf { */ /** + * A structure defined a field vector to specify each field. + */ +struct rte_eth_field_vector { + uint8_t offset; /**< Word offset in payload */ + 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 */ enum rte_eth_flow_type { @@ -153,6 +171,31 @@ 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 following fields */ + struct rte_eth_field_vector field[0]; + /**< Field vectors to constitute flexible payload */ +}; + +#define RTE_ETH_FDIR_CFG_FLX 0x0001 +/** + * A structure used to configure FDIR filter global set + * It supports RTE_ETH_FILTER_FDIR with RTE_ETH_FILTER_SET operation. + */ +struct rte_eth_fdir_cfg { + uint16_t cmd; /**< Sub command */ + /** + * 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