diff mbox

[dpdk-dev,v3,15/20] lib/librte_ether: define structures for configuring flexible payload

Message ID 1411711418-12881-16-git-send-email-jingjing.wu@intel.com (mailing list archive)
State Superseded, archived
Headers show

Commit Message

Wu, Jingjing Sept. 26, 2014, 6:03 a.m. UTC
define structures for configuring flexible payload

Signed-off-by: Jingjing Wu <jingjing.wu@intel.com>
Acked-by: Chen Jing D(Mark) <jing.d.chen@intel.com>
Acked-by: Helin Zhang <helin.zhang@intel.com>
---
 lib/librte_ether/rte_eth_ctrl.h | 42 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 42 insertions(+)
diff mbox

Patch

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 {