2 * Copyright (c) 2016 QLogic Corporation.
6 * See LICENSE.qede_pmd for copyright and licensing details.
9 #ifndef __ECORE_VF_API_H__
10 #define __ECORE_VF_API_H__
12 #include "ecore_sp_api.h"
13 #include "ecore_mcp_api.h"
15 #ifdef CONFIG_ECORE_SRIOV
17 * @brief Read the VF bulletin and act on it if needed
20 * @param p_change - ecore fills 1 iff bulletin board has changed, 0 otherwise.
22 * @return enum _ecore_status
24 enum _ecore_status_t ecore_vf_read_bulletin(struct ecore_hwfn *p_hwfn,
28 * @brief Get link parameters for VF from ecore
31 * @param params - the link params structure to be filled for the VF
33 void ecore_vf_get_link_params(struct ecore_hwfn *p_hwfn,
34 struct ecore_mcp_link_params *params);
37 * @brief Get link state for VF from ecore
40 * @param link - the link state structure to be filled for the VF
42 void ecore_vf_get_link_state(struct ecore_hwfn *p_hwfn,
43 struct ecore_mcp_link_state *link);
46 * @brief Get link capabilities for VF from ecore
49 * @param p_link_caps - the link capabilities structure to be filled for the VF
51 void ecore_vf_get_link_caps(struct ecore_hwfn *p_hwfn,
52 struct ecore_mcp_link_capabilities *p_link_caps);
55 * @brief Get number of Rx queues allocated for VF by ecore
58 * @param num_rxqs - allocated RX queues
60 void ecore_vf_get_num_rxqs(struct ecore_hwfn *p_hwfn, u8 *num_rxqs);
63 * @brief Get port mac address for VF
66 * @param port_mac - destination location for port mac
68 void ecore_vf_get_port_mac(struct ecore_hwfn *p_hwfn, u8 *port_mac);
71 * @brief Get number of VLAN filters allocated for VF by ecore
74 * @param num_rxqs - allocated VLAN filters
76 void ecore_vf_get_num_vlan_filters(struct ecore_hwfn *p_hwfn,
77 u8 *num_vlan_filters);
80 * @brief Get number of MAC filters allocated for VF by ecore
83 * @param num_mac - allocated MAC filters
85 void ecore_vf_get_num_mac_filters(struct ecore_hwfn *p_hwfn,
86 u32 *num_mac_filters);
89 * @brief Check if VF can set a MAC address
96 bool ecore_vf_check_mac(struct ecore_hwfn *p_hwfn, u8 *mac);
99 * @brief Copy forced MAC address from bulletin board
103 * @param p_is_forced - out param which indicate in case mac
104 * exist if it forced or not.
106 * @return bool - return true if mac exist and false if
109 bool ecore_vf_bulletin_get_forced_mac(struct ecore_hwfn *hwfn, u8 *dst_mac,
113 * @brief Check if force vlan is set and copy the forced vlan
114 * from bulletin board
120 bool ecore_vf_bulletin_get_forced_vlan(struct ecore_hwfn *hwfn, u16 *dst_pvid);
123 * @brief Set firmware version information in dev_info from VFs acquire response
132 void ecore_vf_get_fw_version(struct ecore_hwfn *p_hwfn,
134 u16 *fw_minor, u16 *fw_rev, u16 *fw_eng);
136 static OSAL_INLINE enum _ecore_status_t ecore_vf_read_bulletin(struct ecore_hwfn
143 static OSAL_INLINE void ecore_vf_get_link_params(struct ecore_hwfn *p_hwfn,
144 struct ecore_mcp_link_params
149 static OSAL_INLINE void ecore_vf_get_link_state(struct ecore_hwfn *p_hwfn,
150 struct ecore_mcp_link_state
155 static OSAL_INLINE void ecore_vf_get_link_caps(struct ecore_hwfn *p_hwfn,
157 ecore_mcp_link_capabilities
162 static OSAL_INLINE void ecore_vf_get_num_rxqs(struct ecore_hwfn *p_hwfn,
167 static OSAL_INLINE void ecore_vf_get_port_mac(struct ecore_hwfn *p_hwfn,
172 static OSAL_INLINE void ecore_vf_get_num_vlan_filters(struct ecore_hwfn *p_hwfn,
173 u8 *num_vlan_filters)
177 static OSAL_INLINE void ecore_vf_get_num_mac_filters(struct ecore_hwfn *p_hwfn,
182 static OSAL_INLINE bool ecore_vf_check_mac(struct ecore_hwfn *p_hwfn, u8 *mac)
187 static OSAL_INLINE bool ecore_vf_bulletin_get_forced_mac(struct ecore_hwfn
194 static OSAL_INLINE void ecore_vf_get_fw_version(struct ecore_hwfn *p_hwfn,
195 u16 *fw_major, u16 *fw_minor,
196 u16 *fw_rev, u16 *fw_eng)