i40e: enable port mirroring
[dpdk.git] / drivers / net / i40e / i40e_ethdev.h
index 587ee71..883ee06 100644 (file)
@@ -325,6 +325,27 @@ struct i40e_fdir_info {
        struct i40e_fdir_flex_mask flex_mask[I40E_FILTER_PCTYPE_MAX];
 };
 
+#define I40E_MIRROR_MAX_ENTRIES_PER_RULE   64
+#define I40E_MAX_MIRROR_RULES           64
+/*
+ * Mirror rule structure
+ */
+struct i40e_mirror_rule {
+       TAILQ_ENTRY(i40e_mirror_rule) rules;
+       uint8_t rule_type;
+       uint16_t index;          /* the sw index of mirror rule */
+       uint16_t id;             /* the rule id assigned by firmware */
+       uint16_t dst_vsi_seid;   /* destination vsi for this mirror rule. */
+       uint16_t num_entries;
+       /* the info stores depend on the rule type.
+           If type is I40E_MIRROR_TYPE_VLAN, vlan ids are stored here.
+           If type is I40E_MIRROR_TYPE_VPORT_*, vsi's seid are stored.
+        */
+       uint16_t entries[I40E_MIRROR_MAX_ENTRIES_PER_RULE];
+};
+
+TAILQ_HEAD(i40e_mirror_rule_list, i40e_mirror_rule);
+
 /*
  * Structure to store private data specific for PF instance.
  */
@@ -364,6 +385,8 @@ struct i40e_pf {
        struct i40e_vmdq_info *vmdq;
 
        struct i40e_fdir_info fdir; /* flow director info */
+       struct i40e_mirror_rule_list mirror_list;
+       uint16_t nb_mirror_rule;   /* The number of mirror rules */
 };
 
 enum pending_msg {