1d775155aSJacob Keller /* SPDX-License-Identifier: GPL-2.0 */
2d775155aSJacob Keller /* Copyright (c) 2018, Intel Corporation. */
3d775155aSJacob Keller 
4d775155aSJacob Keller #ifndef _ICE_VF_MBX_H_
5d775155aSJacob Keller #define _ICE_VF_MBX_H_
6d775155aSJacob Keller 
7d775155aSJacob Keller #include "ice_type.h"
8d775155aSJacob Keller #include "ice_controlq.h"
9d775155aSJacob Keller 
10d775155aSJacob Keller /* Defining the mailbox message threshold as 63 asynchronous
11d775155aSJacob Keller  * pending messages. Normal VF functionality does not require
12d775155aSJacob Keller  * sending more than 63 asynchronous pending message.
13d775155aSJacob Keller  */
14d775155aSJacob Keller #define ICE_ASYNC_VF_MSG_THRESHOLD	63
15d775155aSJacob Keller 
16d775155aSJacob Keller #ifdef CONFIG_PCI_IOV
17d775155aSJacob Keller int
18d775155aSJacob Keller ice_aq_send_msg_to_vf(struct ice_hw *hw, u16 vfid, u32 v_opcode, u32 v_retval,
19d775155aSJacob Keller 		      u8 *msg, u16 msglen, struct ice_sq_cd *cd);
20d775155aSJacob Keller 
21d775155aSJacob Keller u32 ice_conv_link_speed_to_virtchnl(bool adv_link_support, u16 link_speed);
22d775155aSJacob Keller int
23d775155aSJacob Keller ice_mbx_vf_state_handler(struct ice_hw *hw, struct ice_mbx_data *mbx_data,
2407cc1a94SJacob Keller 			 struct ice_mbx_vf_info *vf_info, bool *report_malvf);
258cd8a6b1SJacob Keller void ice_mbx_clear_malvf(struct ice_mbx_vf_info *vf_info);
26e4eaf893SJacob Keller void ice_mbx_init_vf_info(struct ice_hw *hw, struct ice_mbx_vf_info *vf_info);
278cd8a6b1SJacob Keller void ice_mbx_init_snapshot(struct ice_hw *hw);
28d775155aSJacob Keller #else /* CONFIG_PCI_IOV */
29d775155aSJacob Keller static inline int
ice_aq_send_msg_to_vf(struct ice_hw __always_unused * hw,u16 __always_unused vfid,u32 __always_unused v_opcode,u32 __always_unused v_retval,u8 __always_unused * msg,u16 __always_unused msglen,struct ice_sq_cd __always_unused * cd)30d775155aSJacob Keller ice_aq_send_msg_to_vf(struct ice_hw __always_unused *hw,
31d775155aSJacob Keller 		      u16 __always_unused vfid, u32 __always_unused v_opcode,
32d775155aSJacob Keller 		      u32 __always_unused v_retval, u8 __always_unused *msg,
33d775155aSJacob Keller 		      u16 __always_unused msglen,
34d775155aSJacob Keller 		      struct ice_sq_cd __always_unused *cd)
35d775155aSJacob Keller {
36d775155aSJacob Keller 	return 0;
37d775155aSJacob Keller }
38d775155aSJacob Keller 
39d775155aSJacob Keller static inline u32
ice_conv_link_speed_to_virtchnl(bool __always_unused adv_link_support,u16 __always_unused link_speed)40d775155aSJacob Keller ice_conv_link_speed_to_virtchnl(bool __always_unused adv_link_support,
41d775155aSJacob Keller 				u16 __always_unused link_speed)
42d775155aSJacob Keller {
43d775155aSJacob Keller 	return 0;
44d775155aSJacob Keller }
45d775155aSJacob Keller 
ice_mbx_init_snapshot(struct ice_hw * hw)46*dde7db63SJacob Keller static inline void ice_mbx_init_snapshot(struct ice_hw *hw)
47*dde7db63SJacob Keller {
48*dde7db63SJacob Keller }
49*dde7db63SJacob Keller 
50d775155aSJacob Keller #endif /* CONFIG_PCI_IOV */
51d775155aSJacob Keller #endif /* _ICE_VF_MBX_H_ */
52