111e9eae4SChaoyong He /* SPDX-License-Identifier: BSD-3-Clause 211e9eae4SChaoyong He * Copyright (c) 2014-2018 Netronome Systems, Inc. 311e9eae4SChaoyong He * All rights reserved. 411e9eae4SChaoyong He */ 511e9eae4SChaoyong He 611e9eae4SChaoyong He #ifndef __NFP_NET_COMMON_H__ 711e9eae4SChaoyong He #define __NFP_NET_COMMON_H__ 811e9eae4SChaoyong He 911e9eae4SChaoyong He #include <bus_pci_driver.h> 1011e9eae4SChaoyong He #include <ethdev_driver.h> 11503ac807SChaoyong He #include <nfp_common.h> 124967a1c8SChaoyong He #include <nfp_dev.h> 1311e9eae4SChaoyong He #include <rte_spinlock.h> 1411e9eae4SChaoyong He 156b4273a0SLong Wu #include "nfpcore/nfp_sync.h" 16e2018e37SChaoyong He #include "nfp_net_ctrl.h" 17600f6d2cSLong Wu #include "nfp_service.h" 18ddcd598fSLong Wu #include "nfp_net_meta.h" 1911e9eae4SChaoyong He 2011e9eae4SChaoyong He /* Interrupt definitions */ 2111e9eae4SChaoyong He #define NFP_NET_IRQ_LSC_IDX 0 2211e9eae4SChaoyong He 2311e9eae4SChaoyong He /* Default values for RX/TX configuration */ 2411e9eae4SChaoyong He #define DEFAULT_RX_FREE_THRESH 32 2511e9eae4SChaoyong He #define DEFAULT_RX_PTHRESH 8 2611e9eae4SChaoyong He #define DEFAULT_RX_HTHRESH 8 2711e9eae4SChaoyong He #define DEFAULT_RX_WTHRESH 0 2811e9eae4SChaoyong He 2911e9eae4SChaoyong He #define DEFAULT_TX_RS_THRESH 32 3011e9eae4SChaoyong He #define DEFAULT_TX_FREE_THRESH 32 3111e9eae4SChaoyong He #define DEFAULT_TX_PTHRESH 32 3211e9eae4SChaoyong He #define DEFAULT_TX_HTHRESH 0 3311e9eae4SChaoyong He #define DEFAULT_TX_WTHRESH 0 3411e9eae4SChaoyong He #define DEFAULT_TX_RSBIT_THRESH 32 3511e9eae4SChaoyong He 3611e9eae4SChaoyong He /* Alignment for dma zones */ 3711e9eae4SChaoyong He #define NFP_MEMZONE_ALIGN 128 3811e9eae4SChaoyong He 3911e9eae4SChaoyong He /* Number of supported physical ports */ 4011e9eae4SChaoyong He #define NFP_MAX_PHYPORTS 12 4111e9eae4SChaoyong He 428ba461d1SPeng Zhang #define NFP_BEAT_LENGTH 8 438ba461d1SPeng Zhang 44b458a2a0SLong Wu /* RSS capability*/ 45b458a2a0SLong Wu #define NFP_NET_RSS_CAP (RTE_ETH_RSS_IPV4 | RTE_ETH_RSS_IPV6 | \ 46b458a2a0SLong Wu RTE_ETH_RSS_NONFRAG_IPV4_TCP | \ 47b458a2a0SLong Wu RTE_ETH_RSS_NONFRAG_IPV4_UDP | \ 48b458a2a0SLong Wu RTE_ETH_RSS_NONFRAG_IPV4_SCTP | \ 49b458a2a0SLong Wu RTE_ETH_RSS_NONFRAG_IPV6_TCP | \ 50b458a2a0SLong Wu RTE_ETH_RSS_NONFRAG_IPV6_UDP | \ 51b458a2a0SLong Wu RTE_ETH_RSS_NONFRAG_IPV6_SCTP) 52b458a2a0SLong Wu 53b7adbb2eSZerun Fu /* The length of firmware version string */ 54b7adbb2eSZerun Fu #define FW_VER_LEN 32 55b7adbb2eSZerun Fu 568ba461d1SPeng Zhang /* 578ba461d1SPeng Zhang * Each PF has corresponding word to beat: 588ba461d1SPeng Zhang * Offset | Usage 598ba461d1SPeng Zhang * 0 | magic number 608ba461d1SPeng Zhang * 8 | beat of Pf0 618ba461d1SPeng Zhang * 16 | beat of Pf1 628ba461d1SPeng Zhang * 24 | beat of Pf2 638ba461d1SPeng Zhang * 32 | beat of Pf3 648ba461d1SPeng Zhang */ 658ba461d1SPeng Zhang #define NFP_BEAT_OFFSET(_x) (((_x) + 1) * NFP_BEAT_LENGTH) 668ba461d1SPeng Zhang 6711e9eae4SChaoyong He /* Firmware application ID's */ 6811e9eae4SChaoyong He enum nfp_app_fw_id { 6911e9eae4SChaoyong He NFP_APP_FW_CORE_NIC = 0x1, 7011e9eae4SChaoyong He NFP_APP_FW_FLOWER_NIC = 0x3, 7111e9eae4SChaoyong He }; 7211e9eae4SChaoyong He 7311e9eae4SChaoyong He /* Parsed control BAR TLV capabilities */ 7411e9eae4SChaoyong He struct nfp_net_tlv_caps { 7511e9eae4SChaoyong He uint32_t mbox_off; /**< VNIC mailbox area offset */ 7611e9eae4SChaoyong He uint32_t mbox_len; /**< VNIC mailbox area length */ 7711e9eae4SChaoyong He uint32_t mbox_cmsg_types; /**< Cmsgs which can be passed through the mailbox */ 7811e9eae4SChaoyong He }; 7911e9eae4SChaoyong He 808ad2cc8fSPeng Zhang struct nfp_multi_pf { 818ad2cc8fSPeng Zhang /** Support multiple PF */ 828ad2cc8fSPeng Zhang bool enabled; 833b00109dSPeng Zhang /** Function index */ 843b00109dSPeng Zhang uint8_t function_id; 858ba461d1SPeng Zhang /** Pointer to CPP area for beat to keepalive */ 868ba461d1SPeng Zhang struct nfp_cpp_area *beat_area; 878ba461d1SPeng Zhang /** Pointer to mapped beat address used for keepalive */ 888ba461d1SPeng Zhang uint8_t *beat_addr; 898ad2cc8fSPeng Zhang }; 908ad2cc8fSPeng Zhang 91ff9f5a56SChaoyong He struct nfp_flower_service; 92ff9f5a56SChaoyong He 9342f603aaSLong Wu struct nfp_process_share { 9442f603aaSLong Wu struct nfp_flower_service *fl_service; 9542f603aaSLong Wu }; 9642f603aaSLong Wu 97b301fd73SPeng Zhang struct nfp_devargs { 98b301fd73SPeng Zhang /** Force reload firmware */ 99b301fd73SPeng Zhang bool force_reload_fw; 100c50bf4f0SLong Wu 101c50bf4f0SLong Wu /** Enable CPP bridge service */ 102c50bf4f0SLong Wu bool cpp_service_enable; 103b301fd73SPeng Zhang }; 104b301fd73SPeng Zhang 10511e9eae4SChaoyong He struct nfp_pf_dev { 10611e9eae4SChaoyong He /** Backpointer to associated pci device */ 10711e9eae4SChaoyong He struct rte_pci_device *pci_dev; 10811e9eae4SChaoyong He 10911e9eae4SChaoyong He enum nfp_app_fw_id app_fw_id; 11011e9eae4SChaoyong He 111000feb4cSChaoyong He struct nfp_net_fw_ver ver; 112000feb4cSChaoyong He 11311e9eae4SChaoyong He /** Pointer to the app running on the PF */ 11411e9eae4SChaoyong He void *app_fw_priv; 11511e9eae4SChaoyong He 11611e9eae4SChaoyong He /** The eth table reported by firmware */ 11711e9eae4SChaoyong He struct nfp_eth_table *nfp_eth_table; 11811e9eae4SChaoyong He 11911e9eae4SChaoyong He uint8_t *ctrl_bar; 12019bd7cceSChaoyong He uint32_t ctrl_bar_size; 12111e9eae4SChaoyong He 12211e9eae4SChaoyong He struct nfp_cpp *cpp; 12311e9eae4SChaoyong He struct nfp_cpp_area *ctrl_area; 12411e9eae4SChaoyong He struct nfp_cpp_area *qc_area; 12511e9eae4SChaoyong He 12619542093SPeng Zhang /** Pointer to the CPP area for the VF configuration BAR */ 12719542093SPeng Zhang struct nfp_cpp_area *vf_area; 12819542093SPeng Zhang /** Pointer to mapped VF configuration area */ 12919542093SPeng Zhang uint8_t *vf_bar; 13019542093SPeng Zhang /** Pointer to the CPP area for the VF config table */ 13119542093SPeng Zhang struct nfp_cpp_area *vf_cfg_tbl_area; 13219542093SPeng Zhang /** Pointer to mapped VF config table */ 13319542093SPeng Zhang uint8_t *vf_cfg_tbl_bar; 13419542093SPeng Zhang 13511e9eae4SChaoyong He uint8_t *qc_bar; 13611e9eae4SChaoyong He 137e54d68a0SChaoyong He struct nfp_cpp_area *mac_stats_area; 138e54d68a0SChaoyong He uint8_t *mac_stats_bar; 139e54d68a0SChaoyong He 14011e9eae4SChaoyong He struct nfp_hwinfo *hwinfo; 14111e9eae4SChaoyong He struct nfp_rtsym_table *sym_tbl; 14211e9eae4SChaoyong He 143600f6d2cSLong Wu /** Service info of cpp bridge service */ 144600f6d2cSLong Wu struct nfp_service_info cpp_service_info; 1458ad2cc8fSPeng Zhang 1468ad2cc8fSPeng Zhang /** Multiple PF configuration */ 1478ad2cc8fSPeng Zhang struct nfp_multi_pf multi_pf; 1483110ab73SZerun Fu 1493110ab73SZerun Fu /** Supported speeds bitmap */ 1503110ab73SZerun Fu uint32_t speed_capa; 1516b4273a0SLong Wu 1526b4273a0SLong Wu /** Synchronized info */ 1536b4273a0SLong Wu struct nfp_sync *sync; 15442f603aaSLong Wu struct nfp_process_share process_share; 155b301fd73SPeng Zhang 156b301fd73SPeng Zhang /** NFP devarg param */ 157b301fd73SPeng Zhang struct nfp_devargs devargs; 1586408420cSPeng Zhang 15920086cb8SPeng Zhang /** Number of VFs supported by firmware shared by all PFs */ 16020086cb8SPeng Zhang uint16_t max_vfs; 16120086cb8SPeng Zhang /** Number of VFs supported by firmware for this PF */ 16220086cb8SPeng Zhang uint16_t sriov_vf; 16320086cb8SPeng Zhang 1646408420cSPeng Zhang uint8_t total_phyports; 165d4e160acSPeng Zhang /** Id of first VF that belongs to this PF */ 166d4e160acSPeng Zhang uint8_t vf_base_id; 167bb24eb38SPeng Zhang /** Number of queues per VF */ 168bb24eb38SPeng Zhang uint32_t queue_per_vf; 169aaa57548SZerun Fu 170aaa57548SZerun Fu /** Record the speed uptade */ 171aaa57548SZerun Fu bool speed_updated; 172636e133eSPeng Zhang 173636e133eSPeng Zhang /** Function pointer used to check the metadata of recv pkts. */ 174636e133eSPeng Zhang bool (*recv_pkt_meta_check_t)(struct nfp_net_meta_parsed *meta); 17511e9eae4SChaoyong He }; 17611e9eae4SChaoyong He 177849a9ffbSLong Wu #define NFP_NET_ETH_FLOW_LIMIT 8 178849a9ffbSLong Wu #define NFP_NET_IPV4_FLOW_LIMIT 1024 179849a9ffbSLong Wu #define NFP_NET_IPV6_FLOW_LIMIT 1024 180849a9ffbSLong Wu 181849a9ffbSLong Wu #define NFP_NET_FLOW_LIMIT ((NFP_NET_ETH_FLOW_LIMIT) + \ 182849a9ffbSLong Wu (NFP_NET_IPV4_FLOW_LIMIT) + \ 183849a9ffbSLong Wu (NFP_NET_IPV6_FLOW_LIMIT)) 184849a9ffbSLong Wu 185849a9ffbSLong Wu struct nfp_net_flow_count { 186849a9ffbSLong Wu uint16_t eth_count; 187849a9ffbSLong Wu uint16_t ipv4_count; 188849a9ffbSLong Wu uint16_t ipv6_count; 189849a9ffbSLong Wu }; 1908153bc6fSChaoyong He 19150c033c2SLong Wu #define NFP_NET_HASH_REDUNDANCE (1.2) 19250c033c2SLong Wu 1938153bc6fSChaoyong He struct nfp_net_priv { 1948153bc6fSChaoyong He uint32_t hash_seed; /**< Hash seed for hash tables in this structure. */ 1958153bc6fSChaoyong He struct rte_hash *flow_table; /**< Hash table to store flow rules. */ 196849a9ffbSLong Wu struct nfp_net_flow_count flow_count; /**< Flow count in hash table */ 19766df893fSChaoyong He uint32_t flow_limit; /**< Flow limit of hash table */ 19866df893fSChaoyong He bool *flow_position; /**< Flow position array */ 1998153bc6fSChaoyong He }; 2008153bc6fSChaoyong He 20111e9eae4SChaoyong He struct nfp_app_fw_nic { 20211e9eae4SChaoyong He /** 20311e9eae4SChaoyong He * Array of physical ports belonging to this CoreNIC app. 20411e9eae4SChaoyong He * This is really a list of vNIC's, one for each physical port. 20511e9eae4SChaoyong He */ 20611e9eae4SChaoyong He struct nfp_net_hw *ports[NFP_MAX_PHYPORTS]; 20711e9eae4SChaoyong He 20811e9eae4SChaoyong He bool multiport; 20911e9eae4SChaoyong He }; 21011e9eae4SChaoyong He 211ff9f5a56SChaoyong He struct nfp_net_hw_priv { 212ff9f5a56SChaoyong He struct nfp_pf_dev *pf_dev; 213d81e2b51SChaoyong He 214d81e2b51SChaoyong He /** NFP ASIC params */ 215d81e2b51SChaoyong He const struct nfp_dev_info *dev_info; 216c2b4f0d5SChaoyong He 217c2b4f0d5SChaoyong He bool is_pf; 218ff9f5a56SChaoyong He }; 219ff9f5a56SChaoyong He 22011e9eae4SChaoyong He struct nfp_net_hw { 22175a76c73SChaoyong He /** The parent class */ 22275a76c73SChaoyong He struct nfp_hw super; 22375a76c73SChaoyong He 224ff9da649SLong Wu /** TX pointer ring write back memzone */ 225ff9da649SLong Wu const struct rte_memzone *txrwb_mz; 226ff9da649SLong Wu 22711e9eae4SChaoyong He /** Info from the firmware */ 22811e9eae4SChaoyong He uint32_t max_mtu; 22911e9eae4SChaoyong He uint32_t mtu; 23011e9eae4SChaoyong He uint32_t rx_offset; 23111e9eae4SChaoyong He enum nfp_net_meta_format meta_format; 23211e9eae4SChaoyong He 23311e9eae4SChaoyong He uint8_t *tx_bar; 23411e9eae4SChaoyong He uint8_t *rx_bar; 23511e9eae4SChaoyong He 23611e9eae4SChaoyong He int stride_rx; 23711e9eae4SChaoyong He int stride_tx; 23811e9eae4SChaoyong He 23911e9eae4SChaoyong He uint16_t vxlan_ports[NFP_NET_N_VXLAN_PORTS]; 24011e9eae4SChaoyong He uint8_t vxlan_usecnt[NFP_NET_N_VXLAN_PORTS]; 24111e9eae4SChaoyong He 24211e9eae4SChaoyong He uint32_t max_tx_queues; 24311e9eae4SChaoyong He uint32_t max_rx_queues; 24411e9eae4SChaoyong He uint16_t flbufsz; 245b5fae3a5SLong Wu bool flbufsz_set_flag; 24611e9eae4SChaoyong He uint16_t device_id; 24711e9eae4SChaoyong He uint16_t vendor_id; 24811e9eae4SChaoyong He uint16_t subsystem_device_id; 24911e9eae4SChaoyong He uint16_t subsystem_vendor_id; 25011e9eae4SChaoyong He 25111e9eae4SChaoyong He /** Records starting point for counters */ 25211e9eae4SChaoyong He struct rte_eth_stats eth_stats_base; 25311e9eae4SChaoyong He struct rte_eth_xstat *eth_xstats_base; 25411e9eae4SChaoyong He 25511e9eae4SChaoyong He struct nfp_cpp_area *ctrl_area; 25611e9eae4SChaoyong He uint8_t *mac_stats; 25711e9eae4SChaoyong He 25811e9eae4SChaoyong He /** Sequential physical port number, only valid for CoreNIC firmware */ 25911e9eae4SChaoyong He uint8_t idx; 26011e9eae4SChaoyong He /** Internal port number as seen from NFP */ 26111e9eae4SChaoyong He uint8_t nfp_idx; 26211e9eae4SChaoyong He 26311e9eae4SChaoyong He struct nfp_net_tlv_caps tlv_caps; 26411e9eae4SChaoyong He 26511e9eae4SChaoyong He struct nfp_net_ipsec_data *ipsec_data; 2668153bc6fSChaoyong He 2678153bc6fSChaoyong He /** Used for rte_flow of CoreNIC firmware */ 2688153bc6fSChaoyong He struct nfp_net_priv *priv; 269b7adbb2eSZerun Fu 270b7adbb2eSZerun Fu /** Used for firmware version */ 271b7adbb2eSZerun Fu char fw_version[FW_VER_LEN]; 27211e9eae4SChaoyong He }; 27311e9eae4SChaoyong He 27411e9eae4SChaoyong He static inline uint32_t 27511e9eae4SChaoyong He nfp_qcp_queue_offset(const struct nfp_dev_info *dev_info, 27611e9eae4SChaoyong He uint16_t queue) 27711e9eae4SChaoyong He { 27811e9eae4SChaoyong He return dev_info->qc_addr_offset + NFP_QCP_QUEUE_ADDR_SZ * 27911e9eae4SChaoyong He (queue & dev_info->qc_idx_mask); 28011e9eae4SChaoyong He } 28111e9eae4SChaoyong He 28211e9eae4SChaoyong He /* Prototypes for common NFP functions */ 28311e9eae4SChaoyong He int nfp_net_mbox_reconfig(struct nfp_net_hw *hw, uint32_t mbox_cmd); 28411e9eae4SChaoyong He int nfp_net_configure(struct rte_eth_dev *dev); 285000feb4cSChaoyong He int nfp_net_common_init(struct nfp_pf_dev *pf_dev, struct nfp_net_hw *hw); 286000feb4cSChaoyong He void nfp_net_log_device_information(const struct nfp_net_hw *hw, 287000feb4cSChaoyong He struct nfp_pf_dev *pf_dev); 28811e9eae4SChaoyong He void nfp_net_enable_queues(struct rte_eth_dev *dev); 28911e9eae4SChaoyong He void nfp_net_disable_queues(struct rte_eth_dev *dev); 29011e9eae4SChaoyong He void nfp_net_params_setup(struct nfp_net_hw *hw); 29111e9eae4SChaoyong He int nfp_net_set_mac_addr(struct rte_eth_dev *dev, struct rte_ether_addr *mac_addr); 29211e9eae4SChaoyong He int nfp_configure_rx_interrupt(struct rte_eth_dev *dev, 29311e9eae4SChaoyong He struct rte_intr_handle *intr_handle); 29411e9eae4SChaoyong He uint32_t nfp_check_offloads(struct rte_eth_dev *dev); 29511e9eae4SChaoyong He int nfp_net_promisc_enable(struct rte_eth_dev *dev); 29611e9eae4SChaoyong He int nfp_net_promisc_disable(struct rte_eth_dev *dev); 2974a86c36bSQin Ke int nfp_net_allmulticast_enable(struct rte_eth_dev *dev); 2984a86c36bSQin Ke int nfp_net_allmulticast_disable(struct rte_eth_dev *dev); 299c4de52ecSChaoyong He int nfp_net_link_update_common(struct rte_eth_dev *dev, 300c4de52ecSChaoyong He struct rte_eth_link *link, 301c4de52ecSChaoyong He uint32_t link_status); 30211e9eae4SChaoyong He int nfp_net_link_update(struct rte_eth_dev *dev, 30311e9eae4SChaoyong He __rte_unused int wait_to_complete); 30411e9eae4SChaoyong He int nfp_net_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *stats); 30511e9eae4SChaoyong He int nfp_net_stats_reset(struct rte_eth_dev *dev); 30611e9eae4SChaoyong He uint32_t nfp_net_xstats_size(const struct rte_eth_dev *dev); 30711e9eae4SChaoyong He int nfp_net_xstats_get_names(struct rte_eth_dev *dev, 30811e9eae4SChaoyong He struct rte_eth_xstat_name *xstats_names, 30911e9eae4SChaoyong He unsigned int size __rte_unused); 31011e9eae4SChaoyong He int nfp_net_xstats_get(struct rte_eth_dev *dev, 31111e9eae4SChaoyong He struct rte_eth_xstat *xstats, 31211e9eae4SChaoyong He unsigned int n __rte_unused); 31311e9eae4SChaoyong He int nfp_net_xstats_get_names_by_id(struct rte_eth_dev *dev, 31411e9eae4SChaoyong He const uint64_t *ids, 31511e9eae4SChaoyong He struct rte_eth_xstat_name *xstats_names, 31611e9eae4SChaoyong He unsigned int size); 31711e9eae4SChaoyong He int nfp_net_xstats_get_by_id(struct rte_eth_dev *dev, 31811e9eae4SChaoyong He const uint64_t *ids, 31911e9eae4SChaoyong He uint64_t *values, 32011e9eae4SChaoyong He unsigned int n); 32111e9eae4SChaoyong He int nfp_net_xstats_reset(struct rte_eth_dev *dev); 32211e9eae4SChaoyong He int nfp_net_infos_get(struct rte_eth_dev *dev, 32311e9eae4SChaoyong He struct rte_eth_dev_info *dev_info); 324ba6a168aSSivaramakrishnan Venkat const uint32_t *nfp_net_supported_ptypes_get(struct rte_eth_dev *dev, 325ba6a168aSSivaramakrishnan Venkat size_t *no_of_elements); 326a498019dSLong Wu int nfp_net_ptypes_set(struct rte_eth_dev *dev, uint32_t ptype_mask); 32711e9eae4SChaoyong He int nfp_rx_queue_intr_enable(struct rte_eth_dev *dev, uint16_t queue_id); 32811e9eae4SChaoyong He int nfp_rx_queue_intr_disable(struct rte_eth_dev *dev, uint16_t queue_id); 32911e9eae4SChaoyong He void nfp_net_params_setup(struct nfp_net_hw *hw); 33011e9eae4SChaoyong He void nfp_net_cfg_queue_setup(struct nfp_net_hw *hw); 33194d0631aSPeng Zhang void nfp_net_irq_unmask(struct rte_eth_dev *dev); 33211e9eae4SChaoyong He void nfp_net_dev_interrupt_handler(void *param); 33311e9eae4SChaoyong He void nfp_net_dev_interrupt_delayed_handler(void *param); 33411e9eae4SChaoyong He int nfp_net_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu); 33511e9eae4SChaoyong He int nfp_net_vlan_offload_set(struct rte_eth_dev *dev, int mask); 33611e9eae4SChaoyong He int nfp_net_reta_update(struct rte_eth_dev *dev, 33711e9eae4SChaoyong He struct rte_eth_rss_reta_entry64 *reta_conf, 33811e9eae4SChaoyong He uint16_t reta_size); 33911e9eae4SChaoyong He int nfp_net_reta_query(struct rte_eth_dev *dev, 34011e9eae4SChaoyong He struct rte_eth_rss_reta_entry64 *reta_conf, 34111e9eae4SChaoyong He uint16_t reta_size); 34211e9eae4SChaoyong He int nfp_net_rss_hash_update(struct rte_eth_dev *dev, 34311e9eae4SChaoyong He struct rte_eth_rss_conf *rss_conf); 34411e9eae4SChaoyong He int nfp_net_rss_hash_conf_get(struct rte_eth_dev *dev, 34511e9eae4SChaoyong He struct rte_eth_rss_conf *rss_conf); 34611e9eae4SChaoyong He int nfp_net_rss_config_default(struct rte_eth_dev *dev); 34711e9eae4SChaoyong He void nfp_net_stop_rx_queue(struct rte_eth_dev *dev); 34811e9eae4SChaoyong He void nfp_net_close_rx_queue(struct rte_eth_dev *dev); 34911e9eae4SChaoyong He void nfp_net_stop_tx_queue(struct rte_eth_dev *dev); 35011e9eae4SChaoyong He void nfp_net_close_tx_queue(struct rte_eth_dev *dev); 3515b81c1e2SLong Wu int nfp_net_set_vxlan_port(struct nfp_net_hw *hw, 3525b81c1e2SLong Wu size_t idx, 3535b81c1e2SLong Wu uint16_t port, 3545b81c1e2SLong Wu uint32_t ctrl); 355d81e2b51SChaoyong He void nfp_net_rx_desc_limits(struct nfp_net_hw_priv *hw_priv, 35611e9eae4SChaoyong He uint16_t *min_rx_desc, 35711e9eae4SChaoyong He uint16_t *max_rx_desc); 358000feb4cSChaoyong He void nfp_net_tx_desc_limits(struct nfp_net_hw_priv *hw_priv, 35911e9eae4SChaoyong He uint16_t *min_tx_desc, 36011e9eae4SChaoyong He uint16_t *max_tx_desc); 361000feb4cSChaoyong He int nfp_net_check_dma_mask(struct nfp_pf_dev *pf_dev, char *name); 36211e9eae4SChaoyong He int nfp_net_firmware_version_get(struct rte_eth_dev *dev, char *fw_version, size_t fw_size); 36311e9eae4SChaoyong He bool nfp_net_is_valid_nfd_version(struct nfp_net_fw_ver version); 36419bd7cceSChaoyong He bool nfp_net_is_valid_version_class(struct nfp_net_fw_ver version); 365b12d2b2eSChaoyong He struct nfp_net_hw *nfp_net_get_hw(const struct rte_eth_dev *dev); 366441839f1SQin Ke uint8_t nfp_net_get_idx(const struct rte_eth_dev *dev); 367c4de52ecSChaoyong He int nfp_net_stop(struct rte_eth_dev *dev); 36851d15e82SZerun Fu int nfp_net_flow_ctrl_get(struct rte_eth_dev *dev, 36951d15e82SZerun Fu struct rte_eth_fc_conf *fc_conf); 37068aa3537SZerun Fu int nfp_net_flow_ctrl_set(struct rte_eth_dev *dev, 37168aa3537SZerun Fu struct rte_eth_fc_conf *fc_conf); 372ff9f5a56SChaoyong He void nfp_pf_uninit(struct nfp_net_hw_priv *hw_priv); 3730786add9SZerun Fu int nfp_net_fec_get_capability(struct rte_eth_dev *dev, 3740786add9SZerun Fu struct rte_eth_fec_capa *speed_fec_capa, 3750786add9SZerun Fu unsigned int num); 376c6835a32SZerun Fu int nfp_net_fec_get(struct rte_eth_dev *dev, 377c6835a32SZerun Fu uint32_t *fec_capa); 37837bd1b84SZerun Fu int nfp_net_fec_set(struct rte_eth_dev *dev, 37937bd1b84SZerun Fu uint32_t fec_capa); 380b3c21344SChaoyong He void nfp_net_get_fw_version(struct nfp_cpp *cpp, 381a2bc299dSPeng Zhang uint32_t *fw_version); 382ff9da649SLong Wu int nfp_net_txrwb_alloc(struct rte_eth_dev *eth_dev); 383ff9da649SLong Wu void nfp_net_txrwb_free(struct rte_eth_dev *eth_dev); 384eac7eda4SChaoyong He uint32_t nfp_net_get_phyports_from_nsp(struct nfp_pf_dev *pf_dev); 385eac7eda4SChaoyong He uint32_t nfp_net_get_phyports_from_fw(struct nfp_pf_dev *pf_dev); 386a807bcebSPeng Zhang uint8_t nfp_function_id_get(const struct nfp_pf_dev *pf_dev, 387a807bcebSPeng Zhang uint8_t port_id); 38887abbaf9SPeng Zhang int nfp_net_vf_config_app_init(struct nfp_net_hw *net_hw, 38987abbaf9SPeng Zhang struct nfp_pf_dev *pf_dev); 390000feb4cSChaoyong He bool nfp_net_version_check(struct nfp_hw *hw, 391000feb4cSChaoyong He struct nfp_pf_dev *pf_dev); 39219bd7cceSChaoyong He void nfp_net_ctrl_bar_size_set(struct nfp_pf_dev *pf_dev); 39322548137SZerun Fu void nfp_net_notify_port_speed(struct nfp_net_hw *hw, 39422548137SZerun Fu struct rte_eth_link *link); 395636e133eSPeng Zhang bool nfp_net_recv_pkt_meta_check_register(struct nfp_net_hw_priv *hw_priv); 39611e9eae4SChaoyong He 3977f693813SChaoyong He int nfp_net_get_eeprom_len(struct rte_eth_dev *dev); 3987f693813SChaoyong He int nfp_net_get_eeprom(struct rte_eth_dev *dev, struct rte_dev_eeprom_info *eeprom); 3997f693813SChaoyong He int nfp_net_set_eeprom(struct rte_eth_dev *dev, struct rte_dev_eeprom_info *eeprom); 4007f693813SChaoyong He int nfp_net_get_module_info(struct rte_eth_dev *dev, struct rte_eth_dev_module_info *info); 4017f693813SChaoyong He int nfp_net_get_module_eeprom(struct rte_eth_dev *dev, struct rte_dev_eeprom_info *info); 402*8bd6f540SChaoyong He int nfp_net_led_on(struct rte_eth_dev *dev); 403*8bd6f540SChaoyong He int nfp_net_led_off(struct rte_eth_dev *dev); 4047f693813SChaoyong He 40511e9eae4SChaoyong He #define NFP_PRIV_TO_APP_FW_NIC(app_fw_priv)\ 40611e9eae4SChaoyong He ((struct nfp_app_fw_nic *)app_fw_priv) 40711e9eae4SChaoyong He 40811e9eae4SChaoyong He #define NFP_PRIV_TO_APP_FW_FLOWER(app_fw_priv)\ 40911e9eae4SChaoyong He ((struct nfp_app_fw_flower *)app_fw_priv) 41011e9eae4SChaoyong He 41111e9eae4SChaoyong He #endif /* __NFP_NET_COMMON_H__ */ 412