19d26e4fcSRobert Mustacchi /******************************************************************************
29d26e4fcSRobert Mustacchi 
3*df36e06dSRobert Mustacchi   Copyright (c) 2013-2018, Intel Corporation
49d26e4fcSRobert Mustacchi   All rights reserved.
59d26e4fcSRobert Mustacchi 
69d26e4fcSRobert Mustacchi   Redistribution and use in source and binary forms, with or without
79d26e4fcSRobert Mustacchi   modification, are permitted provided that the following conditions are met:
89d26e4fcSRobert Mustacchi 
99d26e4fcSRobert Mustacchi    1. Redistributions of source code must retain the above copyright notice,
109d26e4fcSRobert Mustacchi       this list of conditions and the following disclaimer.
119d26e4fcSRobert Mustacchi 
129d26e4fcSRobert Mustacchi    2. Redistributions in binary form must reproduce the above copyright
139d26e4fcSRobert Mustacchi       notice, this list of conditions and the following disclaimer in the
149d26e4fcSRobert Mustacchi       documentation and/or other materials provided with the distribution.
159d26e4fcSRobert Mustacchi 
169d26e4fcSRobert Mustacchi    3. Neither the name of the Intel Corporation nor the names of its
179d26e4fcSRobert Mustacchi       contributors may be used to endorse or promote products derived from
189d26e4fcSRobert Mustacchi       this software without specific prior written permission.
199d26e4fcSRobert Mustacchi 
209d26e4fcSRobert Mustacchi   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
219d26e4fcSRobert Mustacchi   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
229d26e4fcSRobert Mustacchi   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
239d26e4fcSRobert Mustacchi   ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
249d26e4fcSRobert Mustacchi   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
259d26e4fcSRobert Mustacchi   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
269d26e4fcSRobert Mustacchi   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
279d26e4fcSRobert Mustacchi   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
289d26e4fcSRobert Mustacchi   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
299d26e4fcSRobert Mustacchi   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
309d26e4fcSRobert Mustacchi   POSSIBILITY OF SUCH DAMAGE.
319d26e4fcSRobert Mustacchi 
329d26e4fcSRobert Mustacchi ******************************************************************************/
333d75a287SRobert Mustacchi /*$FreeBSD$*/
349d26e4fcSRobert Mustacchi 
359d26e4fcSRobert Mustacchi #ifndef _I40E_PROTOTYPE_H_
369d26e4fcSRobert Mustacchi #define _I40E_PROTOTYPE_H_
379d26e4fcSRobert Mustacchi 
389d26e4fcSRobert Mustacchi #include "i40e_type.h"
399d26e4fcSRobert Mustacchi #include "i40e_alloc.h"
4093f1cac5SPaul Winder #include "virtchnl.h"
419d26e4fcSRobert Mustacchi 
429d26e4fcSRobert Mustacchi /* Prototypes for shared code functions that are not in
439d26e4fcSRobert Mustacchi  * the standard function pointer structures.  These are
449d26e4fcSRobert Mustacchi  * mostly because they are needed even before the init
459d26e4fcSRobert Mustacchi  * has happened and will assist in the early SW and FW
469d26e4fcSRobert Mustacchi  * setup.
479d26e4fcSRobert Mustacchi  */
489d26e4fcSRobert Mustacchi 
499d26e4fcSRobert Mustacchi /* adminq functions */
509d26e4fcSRobert Mustacchi enum i40e_status_code i40e_init_adminq(struct i40e_hw *hw);
519d26e4fcSRobert Mustacchi enum i40e_status_code i40e_shutdown_adminq(struct i40e_hw *hw);
529d26e4fcSRobert Mustacchi enum i40e_status_code i40e_init_asq(struct i40e_hw *hw);
539d26e4fcSRobert Mustacchi enum i40e_status_code i40e_init_arq(struct i40e_hw *hw);
549d26e4fcSRobert Mustacchi enum i40e_status_code i40e_alloc_adminq_asq_ring(struct i40e_hw *hw);
559d26e4fcSRobert Mustacchi enum i40e_status_code i40e_alloc_adminq_arq_ring(struct i40e_hw *hw);
569d26e4fcSRobert Mustacchi enum i40e_status_code i40e_shutdown_asq(struct i40e_hw *hw);
579d26e4fcSRobert Mustacchi enum i40e_status_code i40e_shutdown_arq(struct i40e_hw *hw);
589d26e4fcSRobert Mustacchi u16 i40e_clean_asq(struct i40e_hw *hw);
599d26e4fcSRobert Mustacchi void i40e_free_adminq_asq(struct i40e_hw *hw);
609d26e4fcSRobert Mustacchi void i40e_free_adminq_arq(struct i40e_hw *hw);
619d26e4fcSRobert Mustacchi enum i40e_status_code i40e_validate_mac_addr(u8 *mac_addr);
629d26e4fcSRobert Mustacchi void i40e_adminq_init_ring_data(struct i40e_hw *hw);
639d26e4fcSRobert Mustacchi enum i40e_status_code i40e_clean_arq_element(struct i40e_hw *hw,
649d26e4fcSRobert Mustacchi 					     struct i40e_arq_event_info *e,
659d26e4fcSRobert Mustacchi 					     u16 *events_pending);
669d26e4fcSRobert Mustacchi enum i40e_status_code i40e_asq_send_command(struct i40e_hw *hw,
679d26e4fcSRobert Mustacchi 				struct i40e_aq_desc *desc,
689d26e4fcSRobert Mustacchi 				void *buff, /* can be NULL */
699d26e4fcSRobert Mustacchi 				u16  buff_size,
709d26e4fcSRobert Mustacchi 				struct i40e_asq_cmd_details *cmd_details);
71*df36e06dSRobert Mustacchi bool i40e_asq_done(struct i40e_hw *hw);
729d26e4fcSRobert Mustacchi 
739d26e4fcSRobert Mustacchi /* debug function for adminq */
749d26e4fcSRobert Mustacchi void i40e_debug_aq(struct i40e_hw *hw, enum i40e_debug_mask mask,
759d26e4fcSRobert Mustacchi 		   void *desc, void *buffer, u16 buf_len);
769d26e4fcSRobert Mustacchi 
779d26e4fcSRobert Mustacchi void i40e_idle_aq(struct i40e_hw *hw);
789d26e4fcSRobert Mustacchi bool i40e_check_asq_alive(struct i40e_hw *hw);
799d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_queue_shutdown(struct i40e_hw *hw, bool unloading);
809d26e4fcSRobert Mustacchi 
819d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_get_rss_lut(struct i40e_hw *hw, u16 seid,
829d26e4fcSRobert Mustacchi 					  bool pf_lut, u8 *lut, u16 lut_size);
839d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_set_rss_lut(struct i40e_hw *hw, u16 seid,
849d26e4fcSRobert Mustacchi 					  bool pf_lut, u8 *lut, u16 lut_size);
859d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_get_rss_key(struct i40e_hw *hw,
869d26e4fcSRobert Mustacchi 				     u16 seid,
879d26e4fcSRobert Mustacchi 				     struct i40e_aqc_get_set_rss_key_data *key);
889d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_set_rss_key(struct i40e_hw *hw,
899d26e4fcSRobert Mustacchi 				     u16 seid,
909d26e4fcSRobert Mustacchi 				     struct i40e_aqc_get_set_rss_key_data *key);
913d75a287SRobert Mustacchi const char *i40e_aq_str(struct i40e_hw *hw, enum i40e_admin_queue_err aq_err);
923d75a287SRobert Mustacchi const char *i40e_stat_str(struct i40e_hw *hw, enum i40e_status_code stat_err);
939d26e4fcSRobert Mustacchi 
949d26e4fcSRobert Mustacchi 
959d26e4fcSRobert Mustacchi u32 i40e_led_get(struct i40e_hw *hw);
969d26e4fcSRobert Mustacchi void i40e_led_set(struct i40e_hw *hw, u32 mode, bool blink);
973d75a287SRobert Mustacchi enum i40e_status_code i40e_led_set_phy(struct i40e_hw *hw, bool on,
983d75a287SRobert Mustacchi 				       u16 led_addr, u32 mode);
993d75a287SRobert Mustacchi enum i40e_status_code i40e_led_get_phy(struct i40e_hw *hw, u16 *led_addr,
1003d75a287SRobert Mustacchi 				       u16 *val);
1013d75a287SRobert Mustacchi enum i40e_status_code i40e_blink_phy_link_led(struct i40e_hw *hw,
1023d75a287SRobert Mustacchi 					      u32 time, u32 interval);
103*df36e06dSRobert Mustacchi enum i40e_status_code i40e_led_get_reg(struct i40e_hw *hw, u16 led_addr,
104*df36e06dSRobert Mustacchi 				       u32 *reg_val);
105*df36e06dSRobert Mustacchi enum i40e_status_code i40e_led_set_reg(struct i40e_hw *hw, u16 led_addr,
106*df36e06dSRobert Mustacchi 				       u32 reg_val);
107*df36e06dSRobert Mustacchi enum i40e_status_code i40e_get_phy_lpi_status(struct i40e_hw *hw,
108*df36e06dSRobert Mustacchi 					      struct i40e_hw_port_stats *stats);
109*df36e06dSRobert Mustacchi enum i40e_status_code i40e_get_lpi_counters(struct i40e_hw *hw, u32 *tx_counter,
110*df36e06dSRobert Mustacchi 					    u32 *rx_counter, bool *is_clear);
111*df36e06dSRobert Mustacchi enum i40e_status_code i40e_lpi_stat_update(struct i40e_hw *hw,
112*df36e06dSRobert Mustacchi 					   bool offset_loaded, u64 *tx_offset,
113*df36e06dSRobert Mustacchi 					   u64 *tx_stat, u64 *rx_offset,
114*df36e06dSRobert Mustacchi 					   u64 *rx_stat);
115*df36e06dSRobert Mustacchi enum i40e_status_code i40e_get_lpi_duration(struct i40e_hw *hw,
116*df36e06dSRobert Mustacchi 					    struct i40e_hw_port_stats *stat,
117*df36e06dSRobert Mustacchi 					    u64 *tx_duration, u64 *rx_duration);
1189d26e4fcSRobert Mustacchi /* admin send queue commands */
1199d26e4fcSRobert Mustacchi 
1209d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_get_firmware_version(struct i40e_hw *hw,
1219d26e4fcSRobert Mustacchi 				u16 *fw_major_version, u16 *fw_minor_version,
1229d26e4fcSRobert Mustacchi 				u32 *fw_build,
1239d26e4fcSRobert Mustacchi 				u16 *api_major_version, u16 *api_minor_version,
1249d26e4fcSRobert Mustacchi 				struct i40e_asq_cmd_details *cmd_details);
1259d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_debug_write_register(struct i40e_hw *hw,
1269d26e4fcSRobert Mustacchi 				u32 reg_addr, u64 reg_val,
1279d26e4fcSRobert Mustacchi 				struct i40e_asq_cmd_details *cmd_details);
1289d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_debug_read_register(struct i40e_hw *hw,
1299d26e4fcSRobert Mustacchi 				u32  reg_addr, u64 *reg_val,
1309d26e4fcSRobert Mustacchi 				struct i40e_asq_cmd_details *cmd_details);
1319d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_set_phy_debug(struct i40e_hw *hw, u8 cmd_flags,
1329d26e4fcSRobert Mustacchi 				struct i40e_asq_cmd_details *cmd_details);
1339d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_set_default_vsi(struct i40e_hw *hw, u16 vsi_id,
1349d26e4fcSRobert Mustacchi 				struct i40e_asq_cmd_details *cmd_details);
1353d75a287SRobert Mustacchi enum i40e_status_code i40e_aq_clear_default_vsi(struct i40e_hw *hw, u16 vsi_id,
1363d75a287SRobert Mustacchi 				struct i40e_asq_cmd_details *cmd_details);
1379d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_get_phy_capabilities(struct i40e_hw *hw,
1389d26e4fcSRobert Mustacchi 			bool qualified_modules, bool report_init,
1399d26e4fcSRobert Mustacchi 			struct i40e_aq_get_phy_abilities_resp *abilities,
1409d26e4fcSRobert Mustacchi 			struct i40e_asq_cmd_details *cmd_details);
1419d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_set_phy_config(struct i40e_hw *hw,
1429d26e4fcSRobert Mustacchi 				struct i40e_aq_set_phy_config *config,
1439d26e4fcSRobert Mustacchi 				struct i40e_asq_cmd_details *cmd_details);
1449d26e4fcSRobert Mustacchi enum i40e_status_code i40e_set_fc(struct i40e_hw *hw, u8 *aq_failures,
1459d26e4fcSRobert Mustacchi 				  bool atomic_reset);
1469d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_set_phy_int_mask(struct i40e_hw *hw, u16 mask,
1479d26e4fcSRobert Mustacchi 				struct i40e_asq_cmd_details *cmd_details);
1489d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_set_mac_config(struct i40e_hw *hw,
1499d26e4fcSRobert Mustacchi 				u16 max_frame_size, bool crc_en, u16 pacing,
150*df36e06dSRobert Mustacchi 				bool auto_drop_blocking_packets,
1519d26e4fcSRobert Mustacchi 				struct i40e_asq_cmd_details *cmd_details);
1529d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_get_local_advt_reg(struct i40e_hw *hw,
1539d26e4fcSRobert Mustacchi 				u64 *advt_reg,
1549d26e4fcSRobert Mustacchi 				struct i40e_asq_cmd_details *cmd_details);
1559d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_get_partner_advt(struct i40e_hw *hw,
1569d26e4fcSRobert Mustacchi 				u64 *advt_reg,
1579d26e4fcSRobert Mustacchi 				struct i40e_asq_cmd_details *cmd_details);
15893f1cac5SPaul Winder enum i40e_status_code
15993f1cac5SPaul Winder i40e_aq_set_lb_modes(struct i40e_hw *hw, u8 lb_level, u8 lb_type, u8 speed,
16093f1cac5SPaul Winder 		     struct i40e_asq_cmd_details *cmd_details);
1619d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_clear_pxe_mode(struct i40e_hw *hw,
1629d26e4fcSRobert Mustacchi 			struct i40e_asq_cmd_details *cmd_details);
1639d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_set_link_restart_an(struct i40e_hw *hw,
1649d26e4fcSRobert Mustacchi 		bool enable_link, struct i40e_asq_cmd_details *cmd_details);
1659d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_get_link_info(struct i40e_hw *hw,
1669d26e4fcSRobert Mustacchi 				bool enable_lse, struct i40e_link_status *link,
1679d26e4fcSRobert Mustacchi 				struct i40e_asq_cmd_details *cmd_details);
1689d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_set_local_advt_reg(struct i40e_hw *hw,
1699d26e4fcSRobert Mustacchi 				u64 advt_reg,
1709d26e4fcSRobert Mustacchi 				struct i40e_asq_cmd_details *cmd_details);
1719d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_send_driver_version(struct i40e_hw *hw,
1729d26e4fcSRobert Mustacchi 				struct i40e_driver_version *dv,
1739d26e4fcSRobert Mustacchi 				struct i40e_asq_cmd_details *cmd_details);
1749d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_add_vsi(struct i40e_hw *hw,
1759d26e4fcSRobert Mustacchi 				struct i40e_vsi_context *vsi_ctx,
1769d26e4fcSRobert Mustacchi 				struct i40e_asq_cmd_details *cmd_details);
1779d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_set_vsi_broadcast(struct i40e_hw *hw,
1789d26e4fcSRobert Mustacchi 				u16 vsi_id, bool set_filter,
1799d26e4fcSRobert Mustacchi 				struct i40e_asq_cmd_details *cmd_details);
1809d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_set_vsi_unicast_promiscuous(struct i40e_hw *hw,
1813d75a287SRobert Mustacchi 		u16 vsi_id, bool set, struct i40e_asq_cmd_details *cmd_details,
1823d75a287SRobert Mustacchi 		bool rx_only_promisc);
1839d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_set_vsi_multicast_promiscuous(struct i40e_hw *hw,
1849d26e4fcSRobert Mustacchi 		u16 vsi_id, bool set, struct i40e_asq_cmd_details *cmd_details);
185*df36e06dSRobert Mustacchi enum i40e_status_code i40e_aq_set_vsi_full_promiscuous(struct i40e_hw *hw,
186*df36e06dSRobert Mustacchi 				u16 seid, bool set,
187*df36e06dSRobert Mustacchi 				struct i40e_asq_cmd_details *cmd_details);
1889d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_set_vsi_mc_promisc_on_vlan(struct i40e_hw *hw,
1899d26e4fcSRobert Mustacchi 				u16 seid, bool enable, u16 vid,
1909d26e4fcSRobert Mustacchi 				struct i40e_asq_cmd_details *cmd_details);
1919d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_set_vsi_uc_promisc_on_vlan(struct i40e_hw *hw,
1929d26e4fcSRobert Mustacchi 				u16 seid, bool enable, u16 vid,
1939d26e4fcSRobert Mustacchi 				struct i40e_asq_cmd_details *cmd_details);
1943d75a287SRobert Mustacchi enum i40e_status_code i40e_aq_set_vsi_bc_promisc_on_vlan(struct i40e_hw *hw,
1953d75a287SRobert Mustacchi 				u16 seid, bool enable, u16 vid,
1963d75a287SRobert Mustacchi 				struct i40e_asq_cmd_details *cmd_details);
1973d75a287SRobert Mustacchi enum i40e_status_code i40e_aq_set_vsi_vlan_promisc(struct i40e_hw *hw,
1983d75a287SRobert Mustacchi 				u16 seid, bool enable,
1993d75a287SRobert Mustacchi 				struct i40e_asq_cmd_details *cmd_details);
2009d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_get_vsi_params(struct i40e_hw *hw,
2019d26e4fcSRobert Mustacchi 				struct i40e_vsi_context *vsi_ctx,
2029d26e4fcSRobert Mustacchi 				struct i40e_asq_cmd_details *cmd_details);
2039d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_update_vsi_params(struct i40e_hw *hw,
2049d26e4fcSRobert Mustacchi 				struct i40e_vsi_context *vsi_ctx,
2059d26e4fcSRobert Mustacchi 				struct i40e_asq_cmd_details *cmd_details);
2069d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_add_veb(struct i40e_hw *hw, u16 uplink_seid,
2079d26e4fcSRobert Mustacchi 				u16 downlink_seid, u8 enabled_tc,
2083d75a287SRobert Mustacchi 				bool default_port, u16 *pveb_seid,
2093d75a287SRobert Mustacchi 				bool enable_stats,
2109d26e4fcSRobert Mustacchi 				struct i40e_asq_cmd_details *cmd_details);
2119d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_get_veb_parameters(struct i40e_hw *hw,
2129d26e4fcSRobert Mustacchi 				u16 veb_seid, u16 *switch_id, bool *floating,
2139d26e4fcSRobert Mustacchi 				u16 *statistic_index, u16 *vebs_used,
2149d26e4fcSRobert Mustacchi 				u16 *vebs_free,
2159d26e4fcSRobert Mustacchi 				struct i40e_asq_cmd_details *cmd_details);
2169d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_add_macvlan(struct i40e_hw *hw, u16 vsi_id,
2179d26e4fcSRobert Mustacchi 			struct i40e_aqc_add_macvlan_element_data *mv_list,
2189d26e4fcSRobert Mustacchi 			u16 count, struct i40e_asq_cmd_details *cmd_details);
2199d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_remove_macvlan(struct i40e_hw *hw, u16 vsi_id,
2209d26e4fcSRobert Mustacchi 			struct i40e_aqc_remove_macvlan_element_data *mv_list,
2219d26e4fcSRobert Mustacchi 			u16 count, struct i40e_asq_cmd_details *cmd_details);
2223d75a287SRobert Mustacchi enum i40e_status_code i40e_aq_add_mirrorrule(struct i40e_hw *hw, u16 sw_seid,
2233d75a287SRobert Mustacchi 			u16 rule_type, u16 dest_vsi, u16 count, __le16 *mr_list,
2243d75a287SRobert Mustacchi 			struct i40e_asq_cmd_details *cmd_details,
2253d75a287SRobert Mustacchi 			u16 *rule_id, u16 *rules_used, u16 *rules_free);
2263d75a287SRobert Mustacchi enum i40e_status_code i40e_aq_delete_mirrorrule(struct i40e_hw *hw, u16 sw_seid,
2273d75a287SRobert Mustacchi 			u16 rule_type, u16 rule_id, u16 count, __le16 *mr_list,
2283d75a287SRobert Mustacchi 			struct i40e_asq_cmd_details *cmd_details,
2293d75a287SRobert Mustacchi 			u16 *rules_used, u16 *rules_free);
2303d75a287SRobert Mustacchi 
2319d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_add_vlan(struct i40e_hw *hw, u16 vsi_id,
2329d26e4fcSRobert Mustacchi 			struct i40e_aqc_add_remove_vlan_element_data *v_list,
2339d26e4fcSRobert Mustacchi 			u8 count, struct i40e_asq_cmd_details *cmd_details);
2349d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_remove_vlan(struct i40e_hw *hw, u16 vsi_id,
2359d26e4fcSRobert Mustacchi 			struct i40e_aqc_add_remove_vlan_element_data *v_list,
2369d26e4fcSRobert Mustacchi 			u8 count, struct i40e_asq_cmd_details *cmd_details);
2379d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_send_msg_to_vf(struct i40e_hw *hw, u16 vfid,
2389d26e4fcSRobert Mustacchi 				u32 v_opcode, u32 v_retval, u8 *msg, u16 msglen,
2399d26e4fcSRobert Mustacchi 				struct i40e_asq_cmd_details *cmd_details);
2409d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_get_switch_config(struct i40e_hw *hw,
2419d26e4fcSRobert Mustacchi 				struct i40e_aqc_get_switch_config_resp *buf,
2429d26e4fcSRobert Mustacchi 				u16 buf_size, u16 *start_seid,
2439d26e4fcSRobert Mustacchi 				struct i40e_asq_cmd_details *cmd_details);
2443d75a287SRobert Mustacchi enum i40e_status_code i40e_aq_set_switch_config(struct i40e_hw *hw,
24593f1cac5SPaul Winder 				u16 flags, u16 valid_flags, u8 mode,
2463d75a287SRobert Mustacchi 				struct i40e_asq_cmd_details *cmd_details);
2479d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_request_resource(struct i40e_hw *hw,
2489d26e4fcSRobert Mustacchi 				enum i40e_aq_resources_ids resource,
2499d26e4fcSRobert Mustacchi 				enum i40e_aq_resource_access_type access,
2509d26e4fcSRobert Mustacchi 				u8 sdp_number, u64 *timeout,
2519d26e4fcSRobert Mustacchi 				struct i40e_asq_cmd_details *cmd_details);
2529d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_release_resource(struct i40e_hw *hw,
2539d26e4fcSRobert Mustacchi 				enum i40e_aq_resources_ids resource,
2549d26e4fcSRobert Mustacchi 				u8 sdp_number,
2559d26e4fcSRobert Mustacchi 				struct i40e_asq_cmd_details *cmd_details);
2569d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_read_nvm(struct i40e_hw *hw, u8 module_pointer,
2579d26e4fcSRobert Mustacchi 				u32 offset, u16 length, void *data,
2589d26e4fcSRobert Mustacchi 				bool last_command,
2599d26e4fcSRobert Mustacchi 				struct i40e_asq_cmd_details *cmd_details);
2609d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_erase_nvm(struct i40e_hw *hw, u8 module_pointer,
2619d26e4fcSRobert Mustacchi 				u32 offset, u16 length, bool last_command,
2629d26e4fcSRobert Mustacchi 				struct i40e_asq_cmd_details *cmd_details);
2639d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_read_nvm_config(struct i40e_hw *hw,
2649d26e4fcSRobert Mustacchi 				u8 cmd_flags, u32 field_id, void *data,
2659d26e4fcSRobert Mustacchi 				u16 buf_size, u16 *element_count,
2669d26e4fcSRobert Mustacchi 				struct i40e_asq_cmd_details *cmd_details);
2679d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_write_nvm_config(struct i40e_hw *hw,
2689d26e4fcSRobert Mustacchi 				u8 cmd_flags, void *data, u16 buf_size,
2699d26e4fcSRobert Mustacchi 				u16 element_count,
2709d26e4fcSRobert Mustacchi 				struct i40e_asq_cmd_details *cmd_details);
2719d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_oem_post_update(struct i40e_hw *hw,
2729d26e4fcSRobert Mustacchi 				void *buff, u16 buff_size,
2739d26e4fcSRobert Mustacchi 				struct i40e_asq_cmd_details *cmd_details);
2749d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_discover_capabilities(struct i40e_hw *hw,
2759d26e4fcSRobert Mustacchi 				void *buff, u16 buff_size, u16 *data_size,
2769d26e4fcSRobert Mustacchi 				enum i40e_admin_queue_opc list_type_opc,
2779d26e4fcSRobert Mustacchi 				struct i40e_asq_cmd_details *cmd_details);
2789d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_update_nvm(struct i40e_hw *hw, u8 module_pointer,
2799d26e4fcSRobert Mustacchi 				u32 offset, u16 length, void *data,
28093f1cac5SPaul Winder 				bool last_command, u8 preservation_flags,
28193f1cac5SPaul Winder 				struct i40e_asq_cmd_details *cmd_details);
28293f1cac5SPaul Winder enum i40e_status_code i40e_aq_nvm_progress(struct i40e_hw *hw, u8 *progress,
2839d26e4fcSRobert Mustacchi 				struct i40e_asq_cmd_details *cmd_details);
2849d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_get_lldp_mib(struct i40e_hw *hw, u8 bridge_type,
2859d26e4fcSRobert Mustacchi 				u8 mib_type, void *buff, u16 buff_size,
2869d26e4fcSRobert Mustacchi 				u16 *local_len, u16 *remote_len,
2879d26e4fcSRobert Mustacchi 				struct i40e_asq_cmd_details *cmd_details);
2889d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_set_lldp_mib(struct i40e_hw *hw,
2899d26e4fcSRobert Mustacchi 				u8 mib_type, void *buff, u16 buff_size,
2909d26e4fcSRobert Mustacchi 				struct i40e_asq_cmd_details *cmd_details);
2919d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_cfg_lldp_mib_change_event(struct i40e_hw *hw,
2929d26e4fcSRobert Mustacchi 				bool enable_update,
2939d26e4fcSRobert Mustacchi 				struct i40e_asq_cmd_details *cmd_details);
294*df36e06dSRobert Mustacchi enum i40e_status_code
295*df36e06dSRobert Mustacchi i40e_aq_restore_lldp(struct i40e_hw *hw, u8 *setting, bool restore,
296*df36e06dSRobert Mustacchi 		     struct i40e_asq_cmd_details *cmd_details);
2979d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_stop_lldp(struct i40e_hw *hw, bool shutdown_agent,
298*df36e06dSRobert Mustacchi 				bool persist,
2999d26e4fcSRobert Mustacchi 				struct i40e_asq_cmd_details *cmd_details);
30093f1cac5SPaul Winder enum i40e_status_code i40e_aq_set_dcb_parameters(struct i40e_hw *hw,
30193f1cac5SPaul Winder 						 bool dcb_enable,
30293f1cac5SPaul Winder 						 struct i40e_asq_cmd_details
30393f1cac5SPaul Winder 						 *cmd_details);
3049d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_start_lldp(struct i40e_hw *hw,
305*df36e06dSRobert Mustacchi 				bool persist,
3069d26e4fcSRobert Mustacchi 				struct i40e_asq_cmd_details *cmd_details);
3079d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_get_cee_dcb_config(struct i40e_hw *hw,
3089d26e4fcSRobert Mustacchi 				void *buff, u16 buff_size,
3099d26e4fcSRobert Mustacchi 				struct i40e_asq_cmd_details *cmd_details);
3109d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_start_stop_dcbx(struct i40e_hw *hw,
3119d26e4fcSRobert Mustacchi 				bool start_agent,
3129d26e4fcSRobert Mustacchi 				struct i40e_asq_cmd_details *cmd_details);
3139d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_add_udp_tunnel(struct i40e_hw *hw,
3149d26e4fcSRobert Mustacchi 				u16 udp_port, u8 protocol_index,
3159d26e4fcSRobert Mustacchi 				u8 *filter_index,
3169d26e4fcSRobert Mustacchi 				struct i40e_asq_cmd_details *cmd_details);
3179d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_del_udp_tunnel(struct i40e_hw *hw, u8 index,
3189d26e4fcSRobert Mustacchi 				struct i40e_asq_cmd_details *cmd_details);
3199d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_get_switch_resource_alloc(struct i40e_hw *hw,
3209d26e4fcSRobert Mustacchi 			u8 *num_entries,
3219d26e4fcSRobert Mustacchi 			struct i40e_aqc_switch_resource_alloc_element_resp *buf,
3229d26e4fcSRobert Mustacchi 			u16 count,
3239d26e4fcSRobert Mustacchi 			struct i40e_asq_cmd_details *cmd_details);
3249d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_add_pvirt(struct i40e_hw *hw, u16 flags,
3259d26e4fcSRobert Mustacchi 				       u16 mac_seid, u16 vsi_seid,
3269d26e4fcSRobert Mustacchi 				       u16 *ret_seid);
3279d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_add_tag(struct i40e_hw *hw, bool direct_to_queue,
3289d26e4fcSRobert Mustacchi 				u16 vsi_seid, u16 tag, u16 queue_num,
3299d26e4fcSRobert Mustacchi 				u16 *tags_used, u16 *tags_free,
3309d26e4fcSRobert Mustacchi 				struct i40e_asq_cmd_details *cmd_details);
3319d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_remove_tag(struct i40e_hw *hw, u16 vsi_seid,
3329d26e4fcSRobert Mustacchi 				u16 tag, u16 *tags_used, u16 *tags_free,
3339d26e4fcSRobert Mustacchi 				struct i40e_asq_cmd_details *cmd_details);
3349d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_add_mcast_etag(struct i40e_hw *hw, u16 pe_seid,
3359d26e4fcSRobert Mustacchi 				u16 etag, u8 num_tags_in_buf, void *buf,
3369d26e4fcSRobert Mustacchi 				u16 *tags_used, u16 *tags_free,
3379d26e4fcSRobert Mustacchi 				struct i40e_asq_cmd_details *cmd_details);
3389d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_remove_mcast_etag(struct i40e_hw *hw, u16 pe_seid,
3399d26e4fcSRobert Mustacchi 				u16 etag, u16 *tags_used, u16 *tags_free,
3409d26e4fcSRobert Mustacchi 				struct i40e_asq_cmd_details *cmd_details);
3419d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_update_tag(struct i40e_hw *hw, u16 vsi_seid,
3429d26e4fcSRobert Mustacchi 				u16 old_tag, u16 new_tag, u16 *tags_used,
3439d26e4fcSRobert Mustacchi 				u16 *tags_free,
3449d26e4fcSRobert Mustacchi 				struct i40e_asq_cmd_details *cmd_details);
3459d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_add_statistics(struct i40e_hw *hw, u16 seid,
3469d26e4fcSRobert Mustacchi 				u16 vlan_id, u16 *stat_index,
3479d26e4fcSRobert Mustacchi 				struct i40e_asq_cmd_details *cmd_details);
3489d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_remove_statistics(struct i40e_hw *hw, u16 seid,
3499d26e4fcSRobert Mustacchi 				u16 vlan_id, u16 stat_index,
3509d26e4fcSRobert Mustacchi 				struct i40e_asq_cmd_details *cmd_details);
3519d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_set_port_parameters(struct i40e_hw *hw,
3529d26e4fcSRobert Mustacchi 				u16 bad_frame_vsi, bool save_bad_pac,
3539d26e4fcSRobert Mustacchi 				bool pad_short_pac, bool double_vlan,
3549d26e4fcSRobert Mustacchi 				struct i40e_asq_cmd_details *cmd_details);
3559d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_delete_element(struct i40e_hw *hw, u16 seid,
3569d26e4fcSRobert Mustacchi 				struct i40e_asq_cmd_details *cmd_details);
3579d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_mac_address_write(struct i40e_hw *hw,
3589d26e4fcSRobert Mustacchi 				    u16 flags, u8 *mac_addr,
3599d26e4fcSRobert Mustacchi 				    struct i40e_asq_cmd_details *cmd_details);
3609d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_config_vsi_bw_limit(struct i40e_hw *hw,
3619d26e4fcSRobert Mustacchi 				u16 seid, u16 credit, u8 max_credit,
3629d26e4fcSRobert Mustacchi 				struct i40e_asq_cmd_details *cmd_details);
3639d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_dcb_ignore_pfc(struct i40e_hw *hw,
3649d26e4fcSRobert Mustacchi 				u8 tcmap, bool request, u8 *tcmap_ret,
3659d26e4fcSRobert Mustacchi 				struct i40e_asq_cmd_details *cmd_details);
3669d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_config_switch_comp_ets_bw_limit(
3679d26e4fcSRobert Mustacchi 	struct i40e_hw *hw, u16 seid,
3689d26e4fcSRobert Mustacchi 	struct i40e_aqc_configure_switching_comp_ets_bw_limit_data *bw_data,
3699d26e4fcSRobert Mustacchi 	struct i40e_asq_cmd_details *cmd_details);
3709d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_config_vsi_ets_sla_bw_limit(struct i40e_hw *hw,
3719d26e4fcSRobert Mustacchi 			u16 seid,
3729d26e4fcSRobert Mustacchi 			struct i40e_aqc_configure_vsi_ets_sla_bw_data *bw_data,
3739d26e4fcSRobert Mustacchi 			struct i40e_asq_cmd_details *cmd_details);
3749d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_dcb_updated(struct i40e_hw *hw,
3759d26e4fcSRobert Mustacchi 				struct i40e_asq_cmd_details *cmd_details);
3769d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_config_switch_comp_bw_limit(struct i40e_hw *hw,
3779d26e4fcSRobert Mustacchi 				u16 seid, u16 credit, u8 max_bw,
3789d26e4fcSRobert Mustacchi 				struct i40e_asq_cmd_details *cmd_details);
3799d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_config_vsi_tc_bw(struct i40e_hw *hw, u16 seid,
3809d26e4fcSRobert Mustacchi 			struct i40e_aqc_configure_vsi_tc_bw_data *bw_data,
3819d26e4fcSRobert Mustacchi 			struct i40e_asq_cmd_details *cmd_details);
3829d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_query_vsi_bw_config(struct i40e_hw *hw,
3839d26e4fcSRobert Mustacchi 			u16 seid,
3849d26e4fcSRobert Mustacchi 			struct i40e_aqc_query_vsi_bw_config_resp *bw_data,
3859d26e4fcSRobert Mustacchi 			struct i40e_asq_cmd_details *cmd_details);
3869d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_query_vsi_ets_sla_config(struct i40e_hw *hw,
3879d26e4fcSRobert Mustacchi 			u16 seid,
3889d26e4fcSRobert Mustacchi 			struct i40e_aqc_query_vsi_ets_sla_config_resp *bw_data,
3899d26e4fcSRobert Mustacchi 			struct i40e_asq_cmd_details *cmd_details);
3909d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_query_switch_comp_ets_config(struct i40e_hw *hw,
3919d26e4fcSRobert Mustacchi 		u16 seid,
3929d26e4fcSRobert Mustacchi 		struct i40e_aqc_query_switching_comp_ets_config_resp *bw_data,
3939d26e4fcSRobert Mustacchi 		struct i40e_asq_cmd_details *cmd_details);
3949d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_query_port_ets_config(struct i40e_hw *hw,
3959d26e4fcSRobert Mustacchi 		u16 seid,
3969d26e4fcSRobert Mustacchi 		struct i40e_aqc_query_port_ets_config_resp *bw_data,
3979d26e4fcSRobert Mustacchi 		struct i40e_asq_cmd_details *cmd_details);
3989d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_query_switch_comp_bw_config(struct i40e_hw *hw,
3999d26e4fcSRobert Mustacchi 		u16 seid,
4009d26e4fcSRobert Mustacchi 		struct i40e_aqc_query_switching_comp_bw_config_resp *bw_data,
4019d26e4fcSRobert Mustacchi 		struct i40e_asq_cmd_details *cmd_details);
4029d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_resume_port_tx(struct i40e_hw *hw,
4039d26e4fcSRobert Mustacchi 				struct i40e_asq_cmd_details *cmd_details);
404*df36e06dSRobert Mustacchi enum i40e_status_code
405*df36e06dSRobert Mustacchi i40e_aq_add_cloud_filters_bb(struct i40e_hw *hw, u16 seid,
406*df36e06dSRobert Mustacchi 			     struct i40e_aqc_cloud_filters_element_bb *filters,
407*df36e06dSRobert Mustacchi 			     u8 filter_count);
408*df36e06dSRobert Mustacchi enum i40e_status_code
409*df36e06dSRobert Mustacchi i40e_aq_add_cloud_filters(struct i40e_hw *hw, u16 vsi,
410*df36e06dSRobert Mustacchi 			  struct i40e_aqc_cloud_filters_element_data *filters,
411*df36e06dSRobert Mustacchi 			  u8 filter_count);
412*df36e06dSRobert Mustacchi enum i40e_status_code
413*df36e06dSRobert Mustacchi i40e_aq_rem_cloud_filters(struct i40e_hw *hw, u16 vsi,
414*df36e06dSRobert Mustacchi 			  struct i40e_aqc_cloud_filters_element_data *filters,
415*df36e06dSRobert Mustacchi 			  u8 filter_count);
416*df36e06dSRobert Mustacchi enum i40e_status_code
417*df36e06dSRobert Mustacchi i40e_aq_rem_cloud_filters_bb(struct i40e_hw *hw, u16 seid,
418*df36e06dSRobert Mustacchi 			     struct i40e_aqc_cloud_filters_element_bb *filters,
419*df36e06dSRobert Mustacchi 			     u8 filter_count);
4209d26e4fcSRobert Mustacchi enum i40e_status_code i40e_read_lldp_cfg(struct i40e_hw *hw,
4219d26e4fcSRobert Mustacchi 					struct i40e_lldp_variables *lldp_cfg);
422*df36e06dSRobert Mustacchi enum i40e_status_code i40e_aq_replace_cloud_filters(struct i40e_hw *hw,
423*df36e06dSRobert Mustacchi 		struct i40e_aqc_replace_cloud_filters_cmd *filters,
424*df36e06dSRobert Mustacchi 		struct i40e_aqc_replace_cloud_filters_cmd_buf *cmd_buf);
4259d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_alternate_read(struct i40e_hw *hw,
4269d26e4fcSRobert Mustacchi 				u32 reg_addr0, u32 *reg_val0,
4279d26e4fcSRobert Mustacchi 				u32 reg_addr1, u32 *reg_val1);
4289d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_alternate_read_indirect(struct i40e_hw *hw,
4299d26e4fcSRobert Mustacchi 				u32 addr, u32 dw_count, void *buffer);
4309d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_alternate_write(struct i40e_hw *hw,
4319d26e4fcSRobert Mustacchi 				u32 reg_addr0, u32 reg_val0,
4329d26e4fcSRobert Mustacchi 				u32 reg_addr1, u32 reg_val1);
4339d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_alternate_write_indirect(struct i40e_hw *hw,
4349d26e4fcSRobert Mustacchi 				u32 addr, u32 dw_count, void *buffer);
4359d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_alternate_clear(struct i40e_hw *hw);
4369d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_alternate_write_done(struct i40e_hw *hw,
4379d26e4fcSRobert Mustacchi 				u8 bios_mode, bool *reset_needed);
4389d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_set_oem_mode(struct i40e_hw *hw,
4399d26e4fcSRobert Mustacchi 				u8 oem_mode);
4409d26e4fcSRobert Mustacchi 
4419d26e4fcSRobert Mustacchi /* i40e_common */
4429d26e4fcSRobert Mustacchi enum i40e_status_code i40e_init_shared_code(struct i40e_hw *hw);
4439d26e4fcSRobert Mustacchi enum i40e_status_code i40e_pf_reset(struct i40e_hw *hw);
4449d26e4fcSRobert Mustacchi void i40e_clear_hw(struct i40e_hw *hw);
4459d26e4fcSRobert Mustacchi void i40e_clear_pxe_mode(struct i40e_hw *hw);
4469d26e4fcSRobert Mustacchi enum i40e_status_code i40e_get_link_status(struct i40e_hw *hw, bool *link_up);
4479d26e4fcSRobert Mustacchi enum i40e_status_code i40e_update_link_info(struct i40e_hw *hw);
4489d26e4fcSRobert Mustacchi enum i40e_status_code i40e_get_mac_addr(struct i40e_hw *hw, u8 *mac_addr);
4499d26e4fcSRobert Mustacchi enum i40e_status_code i40e_read_bw_from_alt_ram(struct i40e_hw *hw,
4509d26e4fcSRobert Mustacchi 		u32 *max_bw, u32 *min_bw, bool *min_valid, bool *max_valid);
4519d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_configure_partition_bw(struct i40e_hw *hw,
4529d26e4fcSRobert Mustacchi 			struct i40e_aqc_configure_partition_bw_data *bw_data,
4539d26e4fcSRobert Mustacchi 			struct i40e_asq_cmd_details *cmd_details);
4549d26e4fcSRobert Mustacchi enum i40e_status_code i40e_get_port_mac_addr(struct i40e_hw *hw, u8 *mac_addr);
4559d26e4fcSRobert Mustacchi enum i40e_status_code i40e_read_pba_string(struct i40e_hw *hw, u8 *pba_num,
4569d26e4fcSRobert Mustacchi 					    u32 pba_num_size);
4579d26e4fcSRobert Mustacchi void i40e_pre_tx_queue_cfg(struct i40e_hw *hw, u32 queue, bool enable);
4589d26e4fcSRobert Mustacchi enum i40e_aq_link_speed i40e_get_link_speed(struct i40e_hw *hw);
4599d26e4fcSRobert Mustacchi /* prototype for functions used for NVM access */
4609d26e4fcSRobert Mustacchi enum i40e_status_code i40e_init_nvm(struct i40e_hw *hw);
4619d26e4fcSRobert Mustacchi enum i40e_status_code i40e_acquire_nvm(struct i40e_hw *hw,
4629d26e4fcSRobert Mustacchi 				      enum i40e_aq_resource_access_type access);
4639d26e4fcSRobert Mustacchi void i40e_release_nvm(struct i40e_hw *hw);
4649d26e4fcSRobert Mustacchi enum i40e_status_code i40e_read_nvm_word(struct i40e_hw *hw, u16 offset,
4659d26e4fcSRobert Mustacchi 					 u16 *data);
466*df36e06dSRobert Mustacchi enum i40e_status_code
467*df36e06dSRobert Mustacchi i40e_read_nvm_module_data(struct i40e_hw *hw, u8 module_ptr, u16 module_offset,
468*df36e06dSRobert Mustacchi 			  u16 data_offset, u16 words_data_size, u16 *data_ptr);
4699d26e4fcSRobert Mustacchi enum i40e_status_code i40e_read_nvm_buffer(struct i40e_hw *hw, u16 offset,
4709d26e4fcSRobert Mustacchi 					   u16 *words, u16 *data);
4719d26e4fcSRobert Mustacchi enum i40e_status_code i40e_write_nvm_aq(struct i40e_hw *hw, u8 module,
4729d26e4fcSRobert Mustacchi 					u32 offset, u16 words, void *data,
4739d26e4fcSRobert Mustacchi 					bool last_command);
4743d75a287SRobert Mustacchi enum i40e_status_code __i40e_read_nvm_word(struct i40e_hw *hw, u16 offset,
4753d75a287SRobert Mustacchi 					   u16 *data);
4763d75a287SRobert Mustacchi enum i40e_status_code __i40e_read_nvm_buffer(struct i40e_hw *hw, u16 offset,
4773d75a287SRobert Mustacchi 					     u16 *words, u16 *data);
4783d75a287SRobert Mustacchi enum i40e_status_code __i40e_write_nvm_word(struct i40e_hw *hw, u32 offset,
4799d26e4fcSRobert Mustacchi 					  void *data);
4803d75a287SRobert Mustacchi enum i40e_status_code __i40e_write_nvm_buffer(struct i40e_hw *hw, u8 module,
4819d26e4fcSRobert Mustacchi 					    u32 offset, u16 words, void *data);
4829d26e4fcSRobert Mustacchi enum i40e_status_code i40e_calc_nvm_checksum(struct i40e_hw *hw, u16 *checksum);
4839d26e4fcSRobert Mustacchi enum i40e_status_code i40e_update_nvm_checksum(struct i40e_hw *hw);
4849d26e4fcSRobert Mustacchi enum i40e_status_code i40e_validate_nvm_checksum(struct i40e_hw *hw,
4859d26e4fcSRobert Mustacchi 						 u16 *checksum);
4869d26e4fcSRobert Mustacchi enum i40e_status_code i40e_nvmupd_command(struct i40e_hw *hw,
4879d26e4fcSRobert Mustacchi 					  struct i40e_nvm_access *cmd,
4889d26e4fcSRobert Mustacchi 					  u8 *bytes, int *);
48993f1cac5SPaul Winder void i40e_nvmupd_check_wait_event(struct i40e_hw *hw, u16 opcode,
49093f1cac5SPaul Winder 				  struct i40e_aq_desc *desc);
49193f1cac5SPaul Winder void i40e_nvmupd_clear_wait_state(struct i40e_hw *hw);
4929d26e4fcSRobert Mustacchi void i40e_set_pci_config_data(struct i40e_hw *hw, u16 link_status);
493*df36e06dSRobert Mustacchi enum i40e_status_code i40e_enable_eee(struct i40e_hw *hw, bool enable);
494*df36e06dSRobert Mustacchi 
495*df36e06dSRobert Mustacchi enum i40e_status_code i40e_set_mac_type(struct i40e_hw *hw);
4969d26e4fcSRobert Mustacchi 
4979d26e4fcSRobert Mustacchi extern struct i40e_rx_ptype_decoded i40e_ptype_lookup[];
4989d26e4fcSRobert Mustacchi 
decode_rx_desc_ptype(u8 ptype)4999d26e4fcSRobert Mustacchi static INLINE struct i40e_rx_ptype_decoded decode_rx_desc_ptype(u8 ptype)
5009d26e4fcSRobert Mustacchi {
5019d26e4fcSRobert Mustacchi 	return i40e_ptype_lookup[ptype];
5029d26e4fcSRobert Mustacchi }
5039d26e4fcSRobert Mustacchi 
50493f1cac5SPaul Winder /**
50593f1cac5SPaul Winder  * i40e_virtchnl_link_speed - Convert AdminQ link_speed to virtchnl definition
50693f1cac5SPaul Winder  * @link_speed: the speed to convert
50793f1cac5SPaul Winder  *
50893f1cac5SPaul Winder  * Returns the link_speed in terms of the virtchnl interface, for use in
50993f1cac5SPaul Winder  * converting link_speed as reported by the AdminQ into the format used for
51093f1cac5SPaul Winder  * talking to virtchnl devices. If we can't represent the link speed properly,
51193f1cac5SPaul Winder  * report LINK_SPEED_UNKNOWN.
51293f1cac5SPaul Winder  **/
51393f1cac5SPaul Winder static INLINE enum virtchnl_link_speed
i40e_virtchnl_link_speed(enum i40e_aq_link_speed link_speed)51493f1cac5SPaul Winder i40e_virtchnl_link_speed(enum i40e_aq_link_speed link_speed)
51593f1cac5SPaul Winder {
51693f1cac5SPaul Winder 	switch (link_speed) {
51793f1cac5SPaul Winder 	case I40E_LINK_SPEED_100MB:
51893f1cac5SPaul Winder 		return VIRTCHNL_LINK_SPEED_100MB;
51993f1cac5SPaul Winder 	case I40E_LINK_SPEED_1GB:
52093f1cac5SPaul Winder 		return VIRTCHNL_LINK_SPEED_1GB;
521*df36e06dSRobert Mustacchi 	case I40E_LINK_SPEED_2_5GB:
522*df36e06dSRobert Mustacchi 		return VIRTCHNL_LINK_SPEED_2_5GB;
523*df36e06dSRobert Mustacchi 	case I40E_LINK_SPEED_5GB:
524*df36e06dSRobert Mustacchi 		return VIRTCHNL_LINK_SPEED_5GB;
52593f1cac5SPaul Winder 	case I40E_LINK_SPEED_10GB:
52693f1cac5SPaul Winder 		return VIRTCHNL_LINK_SPEED_10GB;
52793f1cac5SPaul Winder 	case I40E_LINK_SPEED_40GB:
52893f1cac5SPaul Winder 		return VIRTCHNL_LINK_SPEED_40GB;
52993f1cac5SPaul Winder 	case I40E_LINK_SPEED_20GB:
53093f1cac5SPaul Winder 		return VIRTCHNL_LINK_SPEED_20GB;
53193f1cac5SPaul Winder 	case I40E_LINK_SPEED_25GB:
53293f1cac5SPaul Winder 		return VIRTCHNL_LINK_SPEED_25GB;
53393f1cac5SPaul Winder 	case I40E_LINK_SPEED_UNKNOWN:
53493f1cac5SPaul Winder 	default:
53593f1cac5SPaul Winder 		return VIRTCHNL_LINK_SPEED_UNKNOWN;
53693f1cac5SPaul Winder 	}
53793f1cac5SPaul Winder }
53893f1cac5SPaul Winder 
5399d26e4fcSRobert Mustacchi /* prototype for functions used for SW spinlocks */
5409d26e4fcSRobert Mustacchi void i40e_init_spinlock(struct i40e_spinlock *sp);
5419d26e4fcSRobert Mustacchi void i40e_acquire_spinlock(struct i40e_spinlock *sp);
5429d26e4fcSRobert Mustacchi void i40e_release_spinlock(struct i40e_spinlock *sp);
5439d26e4fcSRobert Mustacchi void i40e_destroy_spinlock(struct i40e_spinlock *sp);
5449d26e4fcSRobert Mustacchi 
5459d26e4fcSRobert Mustacchi /* i40e_common for VF drivers*/
5469d26e4fcSRobert Mustacchi void i40e_vf_parse_hw_config(struct i40e_hw *hw,
54793f1cac5SPaul Winder 			     struct virtchnl_vf_resource *msg);
5489d26e4fcSRobert Mustacchi enum i40e_status_code i40e_vf_reset(struct i40e_hw *hw);
5499d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_send_msg_to_pf(struct i40e_hw *hw,
55093f1cac5SPaul Winder 				enum virtchnl_ops v_opcode,
5519d26e4fcSRobert Mustacchi 				enum i40e_status_code v_retval,
5529d26e4fcSRobert Mustacchi 				u8 *msg, u16 msglen,
5539d26e4fcSRobert Mustacchi 				struct i40e_asq_cmd_details *cmd_details);
5549d26e4fcSRobert Mustacchi enum i40e_status_code i40e_set_filter_control(struct i40e_hw *hw,
5559d26e4fcSRobert Mustacchi 				struct i40e_filter_control_settings *settings);
5569d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_add_rem_control_packet_filter(struct i40e_hw *hw,
5579d26e4fcSRobert Mustacchi 				u8 *mac_addr, u16 ethtype, u16 flags,
5589d26e4fcSRobert Mustacchi 				u16 vsi_seid, u16 queue, bool is_add,
5599d26e4fcSRobert Mustacchi 				struct i40e_control_filter_stats *stats,
5609d26e4fcSRobert Mustacchi 				struct i40e_asq_cmd_details *cmd_details);
5619d26e4fcSRobert Mustacchi enum i40e_status_code i40e_aq_debug_dump(struct i40e_hw *hw, u8 cluster_id,
5629d26e4fcSRobert Mustacchi 				u8 table_id, u32 start_index, u16 buff_size,
5639d26e4fcSRobert Mustacchi 				void *buff, u16 *ret_buff_size,
5649d26e4fcSRobert Mustacchi 				u8 *ret_next_table, u32 *ret_next_index,
5659d26e4fcSRobert Mustacchi 				struct i40e_asq_cmd_details *cmd_details);
5663d75a287SRobert Mustacchi void i40e_add_filter_to_drop_tx_flow_control_frames(struct i40e_hw *hw,
5673d75a287SRobert Mustacchi 						    u16 vsi_seid);
568396505afSPaul Winder enum i40e_status_code i40e_aq_rx_ctl_read_register(struct i40e_hw *hw,
569396505afSPaul Winder 				u32 reg_addr, u32 *reg_val,
570396505afSPaul Winder 				struct i40e_asq_cmd_details *cmd_details);
571396505afSPaul Winder u32 i40e_read_rx_ctl(struct i40e_hw *hw, u32 reg_addr);
572396505afSPaul Winder enum i40e_status_code i40e_aq_rx_ctl_write_register(struct i40e_hw *hw,
573396505afSPaul Winder 				u32 reg_addr, u32 reg_val,
574396505afSPaul Winder 				struct i40e_asq_cmd_details *cmd_details);
575396505afSPaul Winder void i40e_write_rx_ctl(struct i40e_hw *hw, u32 reg_addr, u32 reg_val);
576*df36e06dSRobert Mustacchi enum i40e_status_code
577*df36e06dSRobert Mustacchi i40e_aq_set_phy_register_ext(struct i40e_hw *hw,
578*df36e06dSRobert Mustacchi 			     u8 phy_select, u8 dev_addr, bool page_change,
579*df36e06dSRobert Mustacchi 			     bool set_mdio, u8 mdio_num,
580*df36e06dSRobert Mustacchi 			     u32 reg_addr, u32 reg_val,
581*df36e06dSRobert Mustacchi 			     struct i40e_asq_cmd_details *cmd_details);
582*df36e06dSRobert Mustacchi enum i40e_status_code
583*df36e06dSRobert Mustacchi i40e_aq_get_phy_register_ext(struct i40e_hw *hw,
584*df36e06dSRobert Mustacchi 			     u8 phy_select, u8 dev_addr, bool page_change,
585*df36e06dSRobert Mustacchi 			     bool set_mdio, u8 mdio_num,
586*df36e06dSRobert Mustacchi 			     u32 reg_addr, u32 *reg_val,
587*df36e06dSRobert Mustacchi 			     struct i40e_asq_cmd_details *cmd_details);
588*df36e06dSRobert Mustacchi 
589*df36e06dSRobert Mustacchi /* Convenience wrappers for most common use case */
590*df36e06dSRobert Mustacchi #define i40e_aq_set_phy_register(hw, ps, da, pc, ra, rv, cd) \
591*df36e06dSRobert Mustacchi 	i40e_aq_set_phy_register_ext(hw, ps, da, pc, FALSE, 0, ra, rv, cd)
592*df36e06dSRobert Mustacchi #define i40e_aq_get_phy_register(hw, ps, da, pc, ra, rv, cd) \
593*df36e06dSRobert Mustacchi 	i40e_aq_get_phy_register_ext(hw, ps, da, pc, FALSE, 0, ra, rv, cd)
594*df36e06dSRobert Mustacchi 
595*df36e06dSRobert Mustacchi enum i40e_status_code
596*df36e06dSRobert Mustacchi i40e_aq_run_phy_activity(struct i40e_hw *hw, u16 activity_id, u32 opcode,
597*df36e06dSRobert Mustacchi 			 u32 *cmd_status, u32 *data0, u32 *data1,
598*df36e06dSRobert Mustacchi 			 struct i40e_asq_cmd_details *cmd_details);
599286d309cSRobert Mustacchi 
6003d75a287SRobert Mustacchi enum i40e_status_code i40e_aq_set_arp_proxy_config(struct i40e_hw *hw,
6013d75a287SRobert Mustacchi 			struct i40e_aqc_arp_proxy_data *proxy_config,
6023d75a287SRobert Mustacchi 			struct i40e_asq_cmd_details *cmd_details);
6033d75a287SRobert Mustacchi enum i40e_status_code i40e_aq_set_ns_proxy_table_entry(struct i40e_hw *hw,
6043d75a287SRobert Mustacchi 			struct i40e_aqc_ns_proxy_data *ns_proxy_table_entry,
6053d75a287SRobert Mustacchi 			struct i40e_asq_cmd_details *cmd_details);
6063d75a287SRobert Mustacchi enum i40e_status_code i40e_aq_set_clear_wol_filter(struct i40e_hw *hw,
6073d75a287SRobert Mustacchi 			u8 filter_index,
6083d75a287SRobert Mustacchi 			struct i40e_aqc_set_wol_filter_data *filter,
6093d75a287SRobert Mustacchi 			bool set_filter, bool no_wol_tco,
6103d75a287SRobert Mustacchi 			bool filter_valid, bool no_wol_tco_valid,
6113d75a287SRobert Mustacchi 			struct i40e_asq_cmd_details *cmd_details);
6123d75a287SRobert Mustacchi enum i40e_status_code i40e_aq_get_wake_event_reason(struct i40e_hw *hw,
6133d75a287SRobert Mustacchi 			u16 *wake_reason,
6143d75a287SRobert Mustacchi 			struct i40e_asq_cmd_details *cmd_details);
615*df36e06dSRobert Mustacchi enum i40e_status_code i40e_aq_clear_all_wol_filters(struct i40e_hw *hw,
616*df36e06dSRobert Mustacchi 			struct i40e_asq_cmd_details *cmd_details);
6173d75a287SRobert Mustacchi enum i40e_status_code i40e_read_phy_register_clause22(struct i40e_hw *hw,
6183d75a287SRobert Mustacchi 					u16 reg, u8 phy_addr, u16 *value);
6193d75a287SRobert Mustacchi enum i40e_status_code i40e_write_phy_register_clause22(struct i40e_hw *hw,
6203d75a287SRobert Mustacchi 					u16 reg, u8 phy_addr, u16 value);
6213d75a287SRobert Mustacchi enum i40e_status_code i40e_read_phy_register_clause45(struct i40e_hw *hw,
6223d75a287SRobert Mustacchi 				u8 page, u16 reg, u8 phy_addr, u16 *value);
6233d75a287SRobert Mustacchi enum i40e_status_code i40e_write_phy_register_clause45(struct i40e_hw *hw,
6243d75a287SRobert Mustacchi 				u8 page, u16 reg, u8 phy_addr, u16 value);
6253d75a287SRobert Mustacchi enum i40e_status_code i40e_read_phy_register(struct i40e_hw *hw,
6263d75a287SRobert Mustacchi 				u8 page, u16 reg, u8 phy_addr, u16 *value);
6273d75a287SRobert Mustacchi enum i40e_status_code i40e_write_phy_register(struct i40e_hw *hw,
6283d75a287SRobert Mustacchi 				u8 page, u16 reg, u8 phy_addr, u16 value);
6293d75a287SRobert Mustacchi u8 i40e_get_phy_address(struct i40e_hw *hw, u8 dev_num);
6309d26e4fcSRobert Mustacchi #endif /* _I40E_PROTOTYPE_H_ */
631