xref: /dpdk/drivers/net/hns3/hns3_common.h (revision ac72aae60f71b8716f65d1e2daf531a5ca38c998)
1a4c7152dSHuisong Li /* SPDX-License-Identifier: BSD-3-Clause
2a4c7152dSHuisong Li  * Copyright(C) 2021 HiSilicon Limited
3a4c7152dSHuisong Li  */
4a4c7152dSHuisong Li 
52ad146efSChengwen Feng #ifndef HNS3_COMMON_H
62ad146efSChengwen Feng #define HNS3_COMMON_H
7a4c7152dSHuisong Li 
8a4c7152dSHuisong Li #include <sys/time.h>
9a4c7152dSHuisong Li 
10a4c7152dSHuisong Li #include "hns3_ethdev.h"
11a4c7152dSHuisong Li 
12e6a27020SHuisong Li #define HNS3_CONVERT_TO_DECIMAL 10
13e6a27020SHuisong Li #define HNS3_CONVERT_TO_HEXADECIMAL 16
14e6a27020SHuisong Li 
15a4c7152dSHuisong Li enum {
16a4c7152dSHuisong Li 	HNS3_IO_FUNC_HINT_NONE = 0,
17a4c7152dSHuisong Li 	HNS3_IO_FUNC_HINT_VEC,
18a4c7152dSHuisong Li 	HNS3_IO_FUNC_HINT_SVE,
19a4c7152dSHuisong Li 	HNS3_IO_FUNC_HINT_SIMPLE,
20a4c7152dSHuisong Li 	HNS3_IO_FUNC_HINT_COMMON
21a4c7152dSHuisong Li };
22a4c7152dSHuisong Li 
23a4c7152dSHuisong Li #define HNS3_DEVARG_RX_FUNC_HINT	"rx_func_hint"
24a4c7152dSHuisong Li #define HNS3_DEVARG_TX_FUNC_HINT	"tx_func_hint"
25a4c7152dSHuisong Li 
26a4c7152dSHuisong Li #define HNS3_DEVARG_DEV_CAPS_MASK	"dev_caps_mask"
27a4c7152dSHuisong Li 
28a4c7152dSHuisong Li #define HNS3_DEVARG_MBX_TIME_LIMIT_MS	"mbx_time_limit_ms"
29a4c7152dSHuisong Li 
30bf16032eSChengwen Feng #define HNS3_DEVARG_FDIR_VLAN_MATCH_MODE	"fdir_vlan_match_mode"
31a4732847SChengwen Feng #define HNS3_DEVARG_FDIR_TUPLE_CONFIG	"fdir_tuple_config"
32*ac72aae6SDengdui Huang #define HNS3_DEVARG_FDIR_INDEX_CONFIG	"fdir_index_config"
3306b9ee34SHuisong Li 
34a4c7152dSHuisong Li #define MSEC_PER_SEC              1000L
35a4c7152dSHuisong Li #define USEC_PER_MSEC             1000L
36a4c7152dSHuisong Li 
37247f0ce2SChengwen Feng int hns3_fw_version_get(struct rte_eth_dev *eth_dev, char *fw_version,
38247f0ce2SChengwen Feng 			size_t fw_size);
39247f0ce2SChengwen Feng int hns3_dev_infos_get(struct rte_eth_dev *eth_dev,
40247f0ce2SChengwen Feng 		       struct rte_eth_dev_info *info);
41247f0ce2SChengwen Feng 
42a4c7152dSHuisong Li void hns3_clock_gettime(struct timeval *tv);
43a4c7152dSHuisong Li uint64_t hns3_clock_calctime_ms(struct timeval *tv);
44a4c7152dSHuisong Li uint64_t hns3_clock_gettime_ms(void);
45a4c7152dSHuisong Li 
46a4c7152dSHuisong Li void hns3_parse_devargs(struct rte_eth_dev *dev);
47a4c7152dSHuisong Li 
48a4c7152dSHuisong Li int hns3_configure_all_mc_mac_addr(struct hns3_adapter *hns, bool del);
49a4c7152dSHuisong Li int hns3_configure_all_mac_addr(struct hns3_adapter *hns, bool del);
50a4c7152dSHuisong Li int hns3_add_mac_addr(struct rte_eth_dev *dev, struct rte_ether_addr *mac_addr,
51a4c7152dSHuisong Li 		      __rte_unused uint32_t idx, __rte_unused uint32_t pool);
52a4c7152dSHuisong Li 
53a4c7152dSHuisong Li void hns3_remove_mac_addr(struct rte_eth_dev *dev, uint32_t idx);
54a4c7152dSHuisong Li int hns3_set_mc_mac_addr_list(struct rte_eth_dev *dev,
55a4c7152dSHuisong Li 			      struct rte_ether_addr *mc_addr_set,
56a4c7152dSHuisong Li 			      uint32_t nb_mc_addr);
57a4c7152dSHuisong Li void hns3_ether_format_addr(char *buf, uint16_t size,
58a4c7152dSHuisong Li 			    const struct rte_ether_addr *ether_addr);
592665a920SHuisong Li int hns3_init_mac_addrs(struct rte_eth_dev *dev);
60a4c7152dSHuisong Li 
61247f0ce2SChengwen Feng int hns3_init_ring_with_vector(struct hns3_hw *hw);
62247f0ce2SChengwen Feng int hns3_map_rx_interrupt(struct rte_eth_dev *dev);
63247f0ce2SChengwen Feng void hns3_unmap_rx_interrupt(struct rte_eth_dev *dev);
64247f0ce2SChengwen Feng int hns3_restore_rx_interrupt(struct hns3_hw *hw);
65247f0ce2SChengwen Feng 
66f5ed7d99SHuisong Li int hns3_get_pci_revision_id(struct hns3_hw *hw, uint8_t *revision_id);
6752a4e960SHuisong Li void hns3_set_default_dev_specifications(struct hns3_hw *hw);
6852a4e960SHuisong Li int hns3_query_dev_specifications(struct hns3_hw *hw);
69f5ed7d99SHuisong Li 
702ad146efSChengwen Feng #endif /* HNS3_COMMON_H */
71