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