net/hns3: fix flow director lock
[dpdk.git] / drivers / net / hns3 / hns3_fdir.h
index f7b4216..fc62daa 100644 (file)
@@ -1,5 +1,5 @@
 /* SPDX-License-Identifier: BSD-3-Clause
- * Copyright(c) 2018-2019 Hisilicon Limited.
+ * Copyright(c) 2018-2021 HiSilicon Limited.
  */
 
 #ifndef _HNS3_FDIR_H_
@@ -104,8 +104,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;
@@ -141,7 +151,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;
 };
@@ -178,7 +199,6 @@ struct hns3_process_private {
  *  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;
@@ -199,7 +219,7 @@ 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);
+void hns3_flow_init(struct rte_eth_dev *dev);
 int hns3_restore_all_fdir_filter(struct hns3_adapter *hns);
 
 #endif /* _HNS3_FDIR_H_ */