1 /* SPDX-License-Identifier: GPL-2.0 */ 2 /* Copyright(c) 2013 - 2018 Intel Corporation. */ 3 4 #ifndef _IAVF_PROTOTYPE_H_ 5 #define _IAVF_PROTOTYPE_H_ 6 7 #include "iavf_type.h" 8 #include "iavf_alloc.h" 9 #include <linux/avf/virtchnl.h> 10 11 /* Prototypes for shared code functions that are not in 12 * the standard function pointer structures. These are 13 * mostly because they are needed even before the init 14 * has happened and will assist in the early SW and FW 15 * setup. 16 */ 17 18 /* adminq functions */ 19 iavf_status iavf_init_adminq(struct iavf_hw *hw); 20 iavf_status iavf_shutdown_adminq(struct iavf_hw *hw); 21 void i40e_adminq_init_ring_data(struct iavf_hw *hw); 22 iavf_status iavf_clean_arq_element(struct iavf_hw *hw, 23 struct i40e_arq_event_info *e, 24 u16 *events_pending); 25 iavf_status iavf_asq_send_command(struct iavf_hw *hw, struct i40e_aq_desc *desc, 26 void *buff, /* can be NULL */ 27 u16 buff_size, 28 struct i40e_asq_cmd_details *cmd_details); 29 bool iavf_asq_done(struct iavf_hw *hw); 30 31 /* debug function for adminq */ 32 void iavf_debug_aq(struct iavf_hw *hw, enum iavf_debug_mask mask, 33 void *desc, void *buffer, u16 buf_len); 34 35 void i40e_idle_aq(struct iavf_hw *hw); 36 void iavf_resume_aq(struct iavf_hw *hw); 37 bool iavf_check_asq_alive(struct iavf_hw *hw); 38 iavf_status iavf_aq_queue_shutdown(struct iavf_hw *hw, bool unloading); 39 const char *iavf_aq_str(struct iavf_hw *hw, enum i40e_admin_queue_err aq_err); 40 const char *iavf_stat_str(struct iavf_hw *hw, iavf_status stat_err); 41 42 iavf_status iavf_aq_get_rss_lut(struct iavf_hw *hw, u16 seid, 43 bool pf_lut, u8 *lut, u16 lut_size); 44 iavf_status iavf_aq_set_rss_lut(struct iavf_hw *hw, u16 seid, 45 bool pf_lut, u8 *lut, u16 lut_size); 46 iavf_status iavf_aq_get_rss_key(struct iavf_hw *hw, u16 seid, 47 struct i40e_aqc_get_set_rss_key_data *key); 48 iavf_status iavf_aq_set_rss_key(struct iavf_hw *hw, u16 seid, 49 struct i40e_aqc_get_set_rss_key_data *key); 50 51 iavf_status iavf_set_mac_type(struct iavf_hw *hw); 52 53 extern struct iavf_rx_ptype_decoded iavf_ptype_lookup[]; 54 55 static inline struct iavf_rx_ptype_decoded decode_rx_desc_ptype(u8 ptype) 56 { 57 return iavf_ptype_lookup[ptype]; 58 } 59 60 void iavf_vf_parse_hw_config(struct iavf_hw *hw, 61 struct virtchnl_vf_resource *msg); 62 iavf_status iavf_vf_reset(struct iavf_hw *hw); 63 iavf_status iavf_aq_send_msg_to_pf(struct iavf_hw *hw, 64 enum virtchnl_ops v_opcode, 65 iavf_status v_retval, u8 *msg, u16 msglen, 66 struct i40e_asq_cmd_details *cmd_details); 67 #endif /* _IAVF_PROTOTYPE_H_ */ 68