net: add macro for VLAN header length
[dpdk.git] / drivers / net / hns3 / hns3_fdir.h
index c1137b7..f9efff3 100644 (file)
@@ -1,12 +1,10 @@
 /* SPDX-License-Identifier: BSD-3-Clause
- * Copyright(c) 2018-2019 Hisilicon Limited.
+ * Copyright(c) 2018-2021 HiSilicon Limited.
  */
 
 #ifndef _HNS3_FDIR_H_
 #define _HNS3_FDIR_H_
 
-#include <rte_flow.h>
-
 struct hns3_fd_key_cfg {
        uint8_t key_sel;
        uint8_t inner_sipv6_word_en;
@@ -104,8 +102,18 @@ struct hns3_fd_rule_tuples {
 struct hns3_fd_ad_data {
        uint16_t ad_id;
        uint8_t drop_packet;
-       uint8_t forward_to_direct_queue;
+       /*
+        * equal 0 when action is drop.
+        * index of queue when action is queue.
+        * index of first queue of queue region when action is queue region.
+        */
        uint16_t queue_id;
+       /*
+        * equal 0 when action is drop.
+        * equal 1 when action is queue.
+        * numbers of queues of queue region when action is queue region.
+        */
+       uint16_t nb_queues;
        uint8_t use_counter;
        uint8_t counter_id;
        uint8_t use_next_stage;
@@ -114,14 +122,6 @@ struct hns3_fd_ad_data {
        uint16_t rule_id;
 };
 
-struct hns3_flow_counter {
-       LIST_ENTRY(hns3_flow_counter) next; /* Pointer to the next counter. */
-       uint32_t shared:1;   /* Share counter ID with other flow rules. */
-       uint32_t ref_cnt:31; /* Reference counter. */
-       uint16_t id;   /* Counter ID. */
-       uint64_t hits; /* Number of packets matched by the rule. */
-};
-
 #define HNS3_RULE_FLAG_FDID            0x1
 #define HNS3_RULE_FLAG_VF_ID           0x2
 #define HNS3_RULE_FLAG_COUNTER         0x4
@@ -141,7 +141,18 @@ struct hns3_fdir_rule {
        uint8_t action;
        /* VF id, avaiblable when flags with HNS3_RULE_FLAG_VF_ID. */
        uint8_t vf_id;
+       /*
+        * equal 0 when action is drop.
+        * index of queue when action is queue.
+        * index of first queue of queue region when action is queue region.
+        */
        uint16_t queue_id;
+       /*
+        * equal 0 when action is drop.
+        * equal 1 when action is queue.
+        * numbers of queues of queue region when action is queue region.
+        */
+       uint16_t nb_queues;
        uint16_t location;
        struct rte_flow_action_count act_cnt;
 };
@@ -152,36 +163,18 @@ struct hns3_fdir_rule_ele {
        struct hns3_fdir_rule fdir_conf;
 };
 
-/* hns3_flow memory list structure */
-struct hns3_flow_mem {
-       TAILQ_ENTRY(hns3_flow_mem) entries;
-       struct rte_flow *flow;
-};
-
 TAILQ_HEAD(hns3_fdir_rule_list, hns3_fdir_rule_ele);
-TAILQ_HEAD(hns3_flow_mem_list, hns3_flow_mem);
-
-struct hns3_process_private {
-       struct hns3_fdir_rule_list fdir_list;
-       struct hns3_flow_mem_list flow_list;
-};
 
 /*
  *  A structure used to define fields of a FDIR related info.
  */
 struct hns3_fdir_info {
-       rte_spinlock_t flows_lock;
        struct hns3_fdir_rule_list fdir_list;
        struct hns3_fdir_rule_ele **hash_map;
        struct rte_hash *hash_handle;
        struct hns3_fd_cfg fd_cfg;
 };
 
-struct rte_flow {
-       enum rte_filter_type filter_type;
-       void *rule;
-       uint32_t counter_id;
-};
 struct hns3_adapter;
 
 int hns3_init_fd_config(struct hns3_adapter *hns);
@@ -191,7 +184,6 @@ int hns3_fdir_filter_program(struct hns3_adapter *hns,
                             struct hns3_fdir_rule *rule, bool del);
 int hns3_clear_all_fdir_filter(struct hns3_adapter *hns);
 int hns3_get_count(struct hns3_hw *hw, uint32_t id, uint64_t *value);
-void hns3_filterlist_init(struct rte_eth_dev *dev);
 int hns3_restore_all_fdir_filter(struct hns3_adapter *hns);
 
 #endif /* _HNS3_FDIR_H_ */