1 /* SPDX-License-Identifier: BSD-3-Clause 2 * Copyright(c) 2016-2020 Intel Corporation 3 */ 4 5 #ifndef __DLB2_MAIN_H 6 #define __DLB2_MAIN_H 7 8 #include <rte_debug.h> 9 #include <rte_log.h> 10 #include <rte_spinlock.h> 11 #include <rte_pci.h> 12 #include <rte_bus_pci.h> 13 #include <rte_eal_paging.h> 14 15 #include "base/dlb2_hw_types.h" 16 #include "../dlb2_user.h" 17 18 #define DLB2_DEFAULT_UNREGISTER_TIMEOUT_S 5 19 20 struct dlb2_dev; 21 22 struct dlb2_port_memory { 23 struct dlb2_list_head list; 24 void *cq_base; 25 bool valid; 26 }; 27 28 struct dlb2_dev { 29 struct rte_pci_device *pdev; 30 struct dlb2_hw hw; 31 /* struct list_head list; */ 32 struct device *dlb2_device; 33 bool domain_reset_failed; 34 /* The resource mutex serializes access to driver data structures and 35 * hardware registers. 36 */ 37 rte_spinlock_t resource_mutex; 38 bool worker_launched; 39 u8 revision; 40 }; 41 42 struct dlb2_dev *dlb2_probe(struct rte_pci_device *pdev); 43 44 int dlb2_pf_reset(struct dlb2_dev *dlb2_dev); 45 int dlb2_pf_create_sched_domain(struct dlb2_hw *hw, 46 struct dlb2_create_sched_domain_args *args, 47 struct dlb2_cmd_response *resp); 48 int dlb2_pf_create_ldb_queue(struct dlb2_hw *hw, 49 u32 domain_id, 50 struct dlb2_create_ldb_queue_args *args, 51 struct dlb2_cmd_response *resp); 52 int dlb2_pf_create_dir_queue(struct dlb2_hw *hw, 53 u32 domain_id, 54 struct dlb2_create_dir_queue_args *args, 55 struct dlb2_cmd_response *resp); 56 int dlb2_pf_create_ldb_port(struct dlb2_hw *hw, 57 u32 domain_id, 58 struct dlb2_create_ldb_port_args *args, 59 uintptr_t cq_dma_base, 60 struct dlb2_cmd_response *resp); 61 int dlb2_pf_create_dir_port(struct dlb2_hw *hw, 62 u32 domain_id, 63 struct dlb2_create_dir_port_args *args, 64 uintptr_t cq_dma_base, 65 struct dlb2_cmd_response *resp); 66 int dlb2_pf_start_domain(struct dlb2_hw *hw, 67 u32 domain_id, 68 struct dlb2_start_domain_args *args, 69 struct dlb2_cmd_response *resp); 70 int dlb2_pf_enable_ldb_port(struct dlb2_hw *hw, 71 u32 domain_id, 72 struct dlb2_enable_ldb_port_args *args, 73 struct dlb2_cmd_response *resp); 74 int dlb2_pf_disable_ldb_port(struct dlb2_hw *hw, 75 u32 domain_id, 76 struct dlb2_disable_ldb_port_args *args, 77 struct dlb2_cmd_response *resp); 78 int dlb2_pf_enable_dir_port(struct dlb2_hw *hw, 79 u32 domain_id, 80 struct dlb2_enable_dir_port_args *args, 81 struct dlb2_cmd_response *resp); 82 int dlb2_pf_disable_dir_port(struct dlb2_hw *hw, 83 u32 domain_id, 84 struct dlb2_disable_dir_port_args *args, 85 struct dlb2_cmd_response *resp); 86 int dlb2_pf_reset_domain(struct dlb2_hw *hw, u32 domain_id); 87 int dlb2_pf_ldb_port_owned_by_domain(struct dlb2_hw *hw, 88 u32 domain_id, 89 u32 port_id); 90 int dlb2_pf_dir_port_owned_by_domain(struct dlb2_hw *hw, 91 u32 domain_id, 92 u32 port_id); 93 94 #endif /* __DLB2_MAIN_H */ 95