brintos

brintos / linux-shallow public Read only

0
0
Text · 4.8 KiB · 96549ca Raw
169 lines · c
1/* SPDX-License-Identifier: GPL-2.0 */2/* Copyright (c) 2018, Intel Corporation. */3 4#ifndef _ICE_SRIOV_H_5#define _ICE_SRIOV_H_6#include "ice_virtchnl_fdir.h"7#include "ice_vf_lib.h"8#include "ice_virtchnl.h"9 10/* Static VF transaction/status register def */11#define VF_DEVICE_STATUS		0xAA12#define VF_TRANS_PENDING_M		0x2013 14/* wait defines for polling PF_PCI_CIAD register status */15#define ICE_PCI_CIAD_WAIT_COUNT		10016#define ICE_PCI_CIAD_WAIT_DELAY_US	117 18/* VF resource constraints */19#define ICE_MIN_QS_PER_VF		120#define ICE_NONQ_VECS_VF		121#define ICE_NUM_VF_MSIX_MED		1722#define ICE_NUM_VF_MSIX_SMALL		523#define ICE_NUM_VF_MSIX_MULTIQ_MIN	324#define ICE_MIN_INTR_PER_VF		(ICE_MIN_QS_PER_VF + 1)25#define ICE_MAX_VF_RESET_TRIES		4026#define ICE_MAX_VF_RESET_SLEEP_MS	2027 28#ifdef CONFIG_PCI_IOV29void ice_process_vflr_event(struct ice_pf *pf);30int ice_sriov_configure(struct pci_dev *pdev, int num_vfs);31int __ice_set_vf_mac(struct ice_pf *pf, u16 vf_id, const u8 *mac);32int ice_set_vf_mac(struct net_device *netdev, int vf_id, u8 *mac);33int34ice_get_vf_cfg(struct net_device *netdev, int vf_id, struct ifla_vf_info *ivi);35 36void ice_free_vfs(struct ice_pf *pf);37void ice_restore_all_vfs_msi_state(struct ice_pf *pf);38 39int40ice_set_vf_port_vlan(struct net_device *netdev, int vf_id, u16 vlan_id, u8 qos,41		     __be16 vlan_proto);42 43int44ice_set_vf_bw(struct net_device *netdev, int vf_id, int min_tx_rate,45	      int max_tx_rate);46 47int ice_set_vf_trust(struct net_device *netdev, int vf_id, bool trusted);48 49int ice_set_vf_link_state(struct net_device *netdev, int vf_id, int link_state);50 51int ice_set_vf_spoofchk(struct net_device *netdev, int vf_id, bool ena);52 53void ice_calc_vf_reg_idx(struct ice_vf *vf, struct ice_q_vector *q_vector);54 55int56ice_get_vf_stats(struct net_device *netdev, int vf_id,57		 struct ifla_vf_stats *vf_stats);58void59ice_vf_lan_overflow_event(struct ice_pf *pf, struct ice_rq_event_info *event);60void ice_print_vfs_mdd_events(struct ice_pf *pf);61void ice_print_vf_rx_mdd_event(struct ice_vf *vf);62void ice_print_vf_tx_mdd_event(struct ice_vf *vf);63bool64ice_vc_validate_pattern(struct ice_vf *vf, struct virtchnl_proto_hdrs *proto);65u32 ice_sriov_get_vf_total_msix(struct pci_dev *pdev);66int ice_sriov_set_msix_vec_count(struct pci_dev *vf_dev, int msix_vec_count);67#else /* CONFIG_PCI_IOV */68static inline void ice_process_vflr_event(struct ice_pf *pf) { }69static inline void ice_free_vfs(struct ice_pf *pf) { }70static inline71void ice_vf_lan_overflow_event(struct ice_pf *pf, struct ice_rq_event_info *event) { }72static inline void ice_print_vfs_mdd_events(struct ice_pf *pf) { }73static inline void ice_print_vf_rx_mdd_event(struct ice_vf *vf) { }74static inline void ice_print_vf_tx_mdd_event(struct ice_vf *vf) { }75static inline void ice_restore_all_vfs_msi_state(struct ice_pf *pf) { }76 77static inline int78ice_sriov_configure(struct pci_dev __always_unused *pdev,79		    int __always_unused num_vfs)80{81	return -EOPNOTSUPP;82}83 84static inline int85__ice_set_vf_mac(struct ice_pf __always_unused *pf,86		 u16 __always_unused vf_id, const u8 __always_unused *mac)87{88	return -EOPNOTSUPP;89}90 91static inline int92ice_set_vf_mac(struct net_device __always_unused *netdev,93	       int __always_unused vf_id, u8 __always_unused *mac)94{95	return -EOPNOTSUPP;96}97 98static inline int99ice_get_vf_cfg(struct net_device __always_unused *netdev,100	       int __always_unused vf_id,101	       struct ifla_vf_info __always_unused *ivi)102{103	return -EOPNOTSUPP;104}105 106static inline int107ice_set_vf_trust(struct net_device __always_unused *netdev,108		 int __always_unused vf_id, bool __always_unused trusted)109{110	return -EOPNOTSUPP;111}112 113static inline int114ice_set_vf_port_vlan(struct net_device __always_unused *netdev,115		     int __always_unused vf_id, u16 __always_unused vid,116		     u8 __always_unused qos, __be16 __always_unused v_proto)117{118	return -EOPNOTSUPP;119}120 121static inline int122ice_set_vf_spoofchk(struct net_device __always_unused *netdev,123		    int __always_unused vf_id, bool __always_unused ena)124{125	return -EOPNOTSUPP;126}127 128static inline int129ice_set_vf_link_state(struct net_device __always_unused *netdev,130		      int __always_unused vf_id, int __always_unused link_state)131{132	return -EOPNOTSUPP;133}134 135static inline int136ice_set_vf_bw(struct net_device __always_unused *netdev,137	      int __always_unused vf_id, int __always_unused min_tx_rate,138	      int __always_unused max_tx_rate)139{140	return -EOPNOTSUPP;141}142 143static inline void144ice_calc_vf_reg_idx(struct ice_vf __always_unused *vf,145		    struct ice_q_vector __always_unused *q_vector)146{147}148 149static inline int150ice_get_vf_stats(struct net_device __always_unused *netdev,151		 int __always_unused vf_id,152		 struct ifla_vf_stats __always_unused *vf_stats)153{154	return -EOPNOTSUPP;155}156 157static inline u32 ice_sriov_get_vf_total_msix(struct pci_dev *pdev)158{159	return 0;160}161 162static inline int163ice_sriov_set_msix_vec_count(struct pci_dev *vf_dev, int msix_vec_count)164{165	return -EOPNOTSUPP;166}167#endif /* CONFIG_PCI_IOV */168#endif /* _ICE_SRIOV_H_ */169